2 | @if (store.currentTasks(); as tasks) {
3 |
4 |
5 |
6 | {{ store.currentTaskState() | taskState }}
7 | ()
9 |
10 |
13 |
14 | @defer { @if (searchOpened()) {
15 |
16 | } } @if (tasks.length) {
17 |
23 |
24 |
36 |
42 |
43 | {{ task.name }}
44 |
45 |
46 |
47 |
48 |
49 |
50 |
59 | } @else { @defer { @if (searchOpened() === false) {
60 |
61 |
62 | No tasks
63 |
64 | @switch (store.currentTaskState()) { @case ('all') { Create a task and it will show up here } @case
65 | (taskState.active) { Create a task and it will show up here } @case (taskState.finished) { You didn't finish any
66 | tasks yet } @case (taskState.dropped) { You didn't abandon any tasks yet } }
67 |
68 |
78 |
79 | } @else {
80 |
81 |
82 | Nothing found
83 | Could not find tasks matching the criteria
84 |
85 |
86 | } } }
87 |
88 | } @if (store.isCurrentTaskOpened()) {
89 |
92 | }
93 |
94 |
--------------------------------------------------------------------------------
/src/app/app.ts:
--------------------------------------------------------------------------------
1 | import { DragDropModule } from '@angular/cdk/drag-drop';
2 | import { ChangeDetectionStrategy, Component, DestroyRef, computed, effect, inject } from '@angular/core';
3 | import { MatIcon } from '@angular/material/icon';
4 | import { MatActionList, MatListItem, MatNavList } from '@angular/material/list';
5 | import { MatMenu, MatMenuItem, MatMenuTrigger } from '@angular/material/menu';
6 | import { MatDrawer, MatDrawerContainer, MatDrawerContent } from '@angular/material/sidenav';
7 | import { MatTooltip } from '@angular/material/tooltip';
8 | import { DomSanitizer } from '@angular/platform-browser';
9 | import { Router, RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
10 | import { HotkeysService } from 'angular2-hotkeys';
11 | import { ButtonThemeSwitcherComponent } from './button-theme-switcher/button-theme-switcher';
12 | import { KEYS_GO_ACTIVE, KEYS_GO_ALL, KEYS_GO_FINISHED, hotkey } from './domain/hotkeys';
13 | import { toStoredTasks } from './domain/storage';
14 | import { TaskState } from './domain/task';
15 | import { TaskStateIconPipe } from './pipes/task-state-icon';
16 | import { FaviconService } from './providers/favicon';
17 | import { ImportExportService } from './providers/import-export';
18 | import { RoutedDialogs } from './providers/routed-dialogs';
19 | import { AppStore } from './providers/state';
20 |
21 | @Component({
22 | selector: 'app-root',
23 | templateUrl: './app.html',
24 | styleUrls: ['./app.scss'],
25 | changeDetection: ChangeDetectionStrategy.OnPush,
26 | imports: [
27 | MatDrawerContainer,
28 | MatDrawer,
29 | MatDrawerContent,
30 | MatMenuTrigger,
31 | MatMenu,
32 | MatMenuItem,
33 | MatNavList,
34 | MatListItem,
35 | MatActionList,
36 | MatIcon,
37 | MatTooltip,
38 | TaskStateIconPipe,
39 | DragDropModule,
40 | RouterLink,
41 | RouterLinkActive,
42 | RouterOutlet,
43 | ButtonThemeSwitcherComponent,
44 | ],
45 | })
46 | export class AppComponent {
47 | public keys = inject