import { ChangeDetectionStrategy, Component, model, signal, } from '@angular/core'; import { AccordionModule } from 'primeng/accordion'; import { Column } from '../duckdb.service'; import { Checkbox } from 'primeng/checkbox'; import { FormsModule } from '@angular/forms'; import { Button } from 'primeng/button'; import { Tooltip } from 'primeng/tooltip'; import { Dialog } from 'primeng/dialog'; import { FloatLabel } from 'primeng/floatlabel'; import { InputText } from 'primeng/inputtext'; import { Select } from 'primeng/select'; import { Field, form } from '@angular/forms/signals'; @Component({ selector: 'app-column-editor', standalone: true, imports: [ AccordionModule, Checkbox, FormsModule, Button, Tooltip, Dialog, FloatLabel, InputText, Select, Field, ], template: ` Columns
    @for (column of columns(); track $index) {
  • }
`, changeDetection: ChangeDetectionStrategy.OnPush, }) export class ColumnEditorComponent { columns = model(); protected editDialogVisible = signal(false); protected currentColumn = signal({ name: '', enabled: true, type: 'string', }); protected editingColumn = form(this.currentColumn); protected checkboxChanged(index: number) { this.columns.update((columns) => { if (columns) { let enabledColumns = columns?.slice(); enabledColumns[index] = { ...enabledColumns[index], enabled: !enabledColumns[index].enabled, }; return enabledColumns; } return columns; }); } protected editColumn(index: number) { const columns = this.columns(); if (columns) { this.currentColumn.set(columns[index]); this.editDialogVisible.set(true); } } }