{"version":3,"file":"kif-lib-checkbox-group.mjs","sources":["../../../projects/kif-lib/checkbox-group/checkbox-group.component.ts","../../../projects/kif-lib/checkbox-group/checkbox-group.component.html","../../../projects/kif-lib/checkbox-group/checkbox-group.module.ts","../../../projects/kif-lib/checkbox-group/public-api.ts","../../../projects/kif-lib/checkbox-group/kif-lib-checkbox-group.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, Output, signal, SimpleChanges } from '@angular/core';\nimport { FormControl, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\n\nexport interface Task {\n    name: string;\n    code?: string;\n    completed: boolean;\n    subtasks?: Task[];\n}\n@Component({\n    selector: 'kit-checkbox-group',\n    standalone: true,\n    templateUrl: './checkbox-group.component.html',\n    styleUrls: ['./checkbox-group.component.css'],\n    changeDetection: ChangeDetectionStrategy.OnPush,\n    imports: [\n        MatCheckboxModule,\n        FormsModule,\n        ReactiveFormsModule,\n        MatFormFieldModule,\n        MatInputModule,\n    ]\n})\nexport class CheckboxGroupComponent implements  OnChanges{\n    @Input() options: any[] = [];\n    @Input() defaultOptions: string[] = [];\n    @Input() disabled: boolean = false;\n    @Input() control: FormControl | any;\n    @Input() direction: string | null = 'HORIZONTAL'; //HORIZONTAL, VERTICAL\n    @Input() style: string = 'empty'; //empty, filled\n    @Output() changeCheck = new EventEmitter<any>();\n\n    readonly task = signal<Task>({\n        name: 'Parent task',\n        completed: false,\n        subtasks: [],\n    });\n \n\n\n\n    constructor() {}\n\n\n    ngOnChanges(changes: SimpleChanges) {\n        if (changes['options']) {\n            this.task.update(task => ({\n                ...task,\n                subtasks: this.options.map(option => ({\n                    name: option.name,\n                    code: option.code,\n                    completed: option.completed || this.defaultOptions.includes(option.code)\n                }))\n            }));\n            this.control.markAsUntouched();\n        }\n    }\n\n    update(completed: boolean, index?: number) {\n        this.task.update(task => {\n            if (index === undefined) {\n                task.completed = completed;\n                task.subtasks?.forEach(t => (t.completed = completed));\n            } else {\n                task.subtasks![index].completed = completed;\n                task.completed = task.subtasks?.every(t => t.completed) ?? true;\n            }\n            const selecteds: any = this.task().subtasks?.filter(option => option.completed).map(({ name, code }) => ({ name, code }));\n\n            if (selecteds.length === 0) {\n                this.control.setValue(null)\n                this.control.setErrors({ required: true }); \n            } else {\n                this.control.setErrors(null);\n                this.control.setValue(selecteds)\n            }\n          \n            this.changeCheck.emit(selecteds);\n            \n            return {...task};\n        });\n    }\n}\n","\n<div class=\"container d-flex flex-column justify-content-center align-items-start\" >\n\n    @for (subtask of task().subtasks; track subtask; let i = $index) {\n        <div \n        [class]=\"direction === 'VERTICAL'? 'd-flex flex-column justify-content-center align-items-center gap-3':'d-flex flex-row justify-content-center align-items-center gap-3'\"\n        >\n        \n        <li class=\"list-unstyled\">\n            <div \n        [class]=\"disabled ? 'check-content-disabel':'check-content'\"\n        >\n        <mat-checkbox [disabled]=\"disabled\" [checked]=\"subtask.completed\" (change)=\"update($event.checked, i)\"   class=\"{{style  === 'filled'? 'check-filled' : ''}}\">\n            {{subtask.name}}\n          </mat-checkbox></div>\n          \n        </li> \n    </div>\n      }\n     \n\n</div> \n@if (control && control?.hasError('required')  && !control?.touched){\n            <mat-error class=\"mat-error\"\n                > Debes seleccionar al menos una opción.</mat-error\n            >\n}","import { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { CheckboxGroupComponent } from './checkbox-group.component';\n\n@NgModule({\n    imports: [\n        CommonModule,\n        CheckboxGroupComponent\n    ],\n    exports: [CheckboxGroupComponent],\n})\nexport class KifCheckboxGroupModule {}\n","/*\n * Public API Surface of kif-lib-input\n */\n\nexport * from './checkbox-group.component';\nexport * from './checkbox-group.module';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}