-
Notifications
You must be signed in to change notification settings - Fork 1.5k
/
accordion-overview.component.ts
112 lines (101 loc) · 3.13 KB
/
accordion-overview.component.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
import { ChangeDetectionStrategy, Component, inject, Input } from '@angular/core';
import { Snippet } from '../../../services/snippet';
import { CodeComponent } from '../../../shared/code.component';
import { NgbAlertModule } from '@ng-bootstrap/ng-bootstrap';
import { NgbdApiDocsBadge } from '../../../shared/api-docs';
import { RouterLink } from '@angular/router';
import { NgbdAccordionDemoComponent } from './demo/accordion-overview-demo.component';
import { PageHeaderComponent } from '../../../shared/page-header.component';
import { LIB_VERSIONS } from '../../../tokens';
@Component({
selector: 'ngbd-accordion-overview',
standalone: true,
imports: [
CodeComponent,
NgbAlertModule,
NgbdApiDocsBadge,
RouterLink,
NgbdAccordionDemoComponent,
PageHeaderComponent,
],
templateUrl: './accordion-overview.component.html',
changeDetection: ChangeDetectionStrategy.OnPush,
host: { '[class.overview]': 'true' },
})
export class NgbdAccordionOverviewComponent {
bootstrapVersion = inject(LIB_VERSIONS).bootstrap;
@Input() overview: { fragment: string; title: string };
BASIC_ACCORDION = Snippet({
lang: 'html',
code: `
<div ngbAccordion>
<div ngbAccordionItem>
<h2 ngbAccordionHeader>
<button ngbAccordionButton>First</button>
</h2>
<div ngbAccordionCollapse>
<div ngbAccordionBody>
<ng-template>Content for the first item</ng-template>
</div>
</div>
</div>
</div>
`,
});
API_TPL = Snippet({
lang: 'html',
code: `
<div ngbAccordion #accordion="NgbAccordion">
<div ngbAccordionItem="first" #first="ngbAccordionItem" [collapsed]="false"> ... </div>
</div>
`,
});
API_CODE = Snippet({
lang: 'typescript',
code: `
accordion.toggle('first'); // toggle the first item
accordion.closeAll(); // close all items
first.toggle(); // toggle the first item
first.collapsed; // true if collapsed
first.collapsed = true; // collapse the first item
first.disabled; // true if disabled
first.disabled = true; // disable the first item
first.id; // 'first'
`,
});
HIDE_OTHERS = Snippet({
lang: 'html',
code: `<div ngbAccordion [closeOthers]="true"> ... </div>`,
});
KEEP_DOM = Snippet({
lang: 'html',
code: `
<div ngbAccordion [destroyOnHide]="true">
<div ngbAccordionItem [destroyOnHide]="false"> ... </div>
</div>`,
});
EVENTS = Snippet({
lang: 'html',
code: `
<div ngbAccordion (shown)="onShow($event)" (hidden)="onHide($event)">
<div ngbAccordionItem (shown)="onItemShow()" (hidden)="onItemHide()"> ... </div>
</div>`,
});
CUSTOM_HEADER = Snippet({
lang: 'html',
code: `
<style>
.my-custom-header::after {
content: none;
}
</style>
<div ngbAccordionHeader class="accordion-button my-custom-header">
<p>Custom header</p>
<div>
<button ngbAccordionToggle class="my-toggle-button">Toggle this panel</button>
<button class="my-close-all-button">Close all</button>
</div>
</div>
`,
});
}