import { Component, computed, inject, resource, signal } from '@angular/core'; import { TaskItem } from './task-item'; import { Task } from './task'; import { TaskService } from './task-service'; import { RouterLink } from '@angular/router'; import { FormsModule } from '@angular/forms'; import { NgIcon, provideIcons } from '@ng-icons/core'; import { lucideCircleX, lucideSquarePlus } from '@ng-icons/lucide'; @Component({ selector: 'ksk-crm-home-page', imports: [TaskItem, RouterLink, FormsModule, NgIcon], providers: [provideIcons({ lucideSquarePlus, lucideCircleX })], template: `
@for (task of filteredTasks(); track task.id) { @if (!$last) {
} } @empty {

Список пуст

}
`, styles: ` .topBar { display: flex; .input-wrapper { display: inline-flex; flex-grow: 1; position: relative; input { width: 100%; margin: auto 0; } button { border: none; background: none; position: absolute; top: 55%; right: 1em; transform: translateY(-50%); cursor: pointer; color: var(--color-primary); } input:placeholder-shown + button { display: none; } } a { display: inline-flex; align-items: center; justify-content: center; margin-left: 0.5em; } } .result { margin-top: 20px; display: flex; flex-direction: column; > p { text-align: center; } } hr { border: 1px solid var(--color-primary); opacity: 0.3; } `, }) export class TaskList { taskService: TaskService = inject(TaskService); tasks = resource({ loader: () => this.taskService.getAllTasks(), }); filterInput = signal(''); filteredTasks = computed(() => { const s = this.filterInput(); const tasks = this.tasks.value(); if (!tasks) return []; if (s === '') return tasks; return tasks.filter( (task) => task.name.includes(s) || task.city.includes(s) || task.streetAddress.includes(s) || task.numberPhone.includes(s), ); }); }