]> git.ipfire.org Git - thirdparty/paperless-ngx.git/blob
a5b3f4e31aba5c246819bb7d26786328e1ac67a5
[thirdparty/paperless-ngx.git] /
1 import { Component, EventEmitter, Input, Output } from '@angular/core'
2 import { MatchingModel } from 'src/app/data/matching-model'
3
4 export enum ToggleableItemState {
5 NotSelected = 0,
6 Selected = 1,
7 PartiallySelected = 2,
8 Excluded = 3,
9 }
10
11 @Component({
12 selector: 'pngx-toggleable-dropdown-button',
13 templateUrl: './toggleable-dropdown-button.component.html',
14 styleUrls: ['./toggleable-dropdown-button.component.scss'],
15 })
16 export class ToggleableDropdownButtonComponent {
17 @Input()
18 item: MatchingModel
19
20 @Input()
21 state: ToggleableItemState
22
23 @Input()
24 count: number
25
26 @Input()
27 disabled: boolean = false
28
29 @Input()
30 hideCount: boolean = false
31
32 @Input()
33 opacifyCount: boolean = true
34
35 @Output()
36 toggled = new EventEmitter()
37
38 @Output()
39 exclude = new EventEmitter()
40
41 get isTag(): boolean {
42 return 'is_inbox_tag' in this.item
43 }
44
45 get currentCount(): number {
46 return this.count ?? this.item.document_count
47 }
48
49 toggleItem(event: MouseEvent): void {
50 if (this.state == ToggleableItemState.Selected) {
51 this.exclude.emit()
52 } else {
53 this.toggled.emit()
54 }
55 }
56
57 isChecked() {
58 return this.state == ToggleableItemState.Selected
59 }
60
61 isPartiallyChecked() {
62 return this.state == ToggleableItemState.PartiallySelected
63 }
64
65 isExcluded() {
66 return this.state == ToggleableItemState.Excluded
67 }
68 }