Feature/task list #1
+2
-1
@@ -21,8 +21,9 @@ import { RouterOutlet } from '@angular/router';
|
|||||||
main {
|
main {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
background: var(--color-surface);
|
background: var(--color-surface);
|
||||||
padding: 1rem;
|
padding: 0.5rem;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
flex-grow: 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
|
|||||||
@@ -4,18 +4,30 @@ import { RouterLink } from '@angular/router';
|
|||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ksk-crm-task-item',
|
selector: 'ksk-crm-task-item',
|
||||||
imports: [
|
imports: [RouterLink],
|
||||||
RouterLink
|
|
||||||
],
|
|
||||||
template: `
|
template: `
|
||||||
<p>{{ task().name }}</p>
|
<a [routerLink]="['/details', task().id]">
|
||||||
<p>{{ task().city }}, {{ task().streetAddress }}</p>
|
<p>{{ task().name }}</p>
|
||||||
<p><a [routerLink]="['/details', task().id]">Подробнее...</a></p>
|
<p>{{ task().city }}, {{ task().streetAddress }}</p>
|
||||||
|
</a>
|
||||||
`,
|
`,
|
||||||
styles: `
|
styles: `
|
||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
margin-bottom: 20px;
|
padding: 1rem;
|
||||||
|
cursor: pointer;
|
||||||
|
transition: all 0.2s;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background: color-mix(in oklch, var(--color-primary) 25%, transparent);
|
||||||
|
}
|
||||||
|
&:active {
|
||||||
|
background: color-mix(in oklch, var(--color-primary) 25%, transparent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: var(--color-gray);
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -24,15 +24,19 @@ import { lucideCircleX, lucideSquarePlus } from '@ng-icons/lucide';
|
|||||||
</a>
|
</a>
|
||||||
</section>
|
</section>
|
||||||
<section class="result">
|
<section class="result">
|
||||||
@for (task of filteredTasks(); track $index) {
|
@for (task of filteredTasks(); track task.id) {
|
||||||
<ksk-crm-task-item [task]="task" />
|
<ksk-crm-task-item [task]="task" />
|
||||||
|
@if (!$last) {
|
||||||
|
<hr />
|
||||||
|
}
|
||||||
|
} @empty {
|
||||||
|
<p>Список пуст</p>
|
||||||
}
|
}
|
||||||
</section>
|
</section>
|
||||||
`,
|
`,
|
||||||
styles: `
|
styles: `
|
||||||
.topBar {
|
.topBar {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding-top: 1rem;
|
|
||||||
|
|
||||||
.input-wrapper {
|
.input-wrapper {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
@@ -70,6 +74,17 @@ import { lucideCircleX, lucideSquarePlus } from '@ng-icons/lucide';
|
|||||||
|
|
||||||
.result {
|
.result {
|
||||||
margin-top: 20px;
|
margin-top: 20px;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
|
||||||
|
> p {
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hr {
|
||||||
|
border: 1px solid var(--color-primary);
|
||||||
|
opacity: 0.3;
|
||||||
}
|
}
|
||||||
`,
|
`,
|
||||||
})
|
})
|
||||||
@@ -77,7 +92,6 @@ export class TaskList {
|
|||||||
taskService: TaskService = inject(TaskService);
|
taskService: TaskService = inject(TaskService);
|
||||||
|
|
||||||
tasks = resource<Task[], null>({
|
tasks = resource<Task[], null>({
|
||||||
params: signal(null),
|
|
||||||
loader: () => this.taskService.getAllTasks(),
|
loader: () => this.taskService.getAllTasks(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user