Skip to content

Commit 2dec19f

Browse files
authored
Support optional extra content in accordion item header (#726)
1 parent 43e78f3 commit 2dec19f

File tree

6 files changed

+79
-5
lines changed

6 files changed

+79
-5
lines changed

CHANGELOG.md

+6
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,9 @@
1+
# 2.67.4 (2024-08-30)
2+
3+
### Improvements
4+
5+
- **Accordion**: Support extra description content in accordion items.
6+
17
# 2.67.3 (2024-08-29)
28

39
### Bug fix

projects/demo/src/app/demo/pages/accordion-page/accordion-item-page.component.html

+34-2
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,40 @@
2828
</p>
2929
</pa-accordion-item-body>
3030
</pa-accordion-item>
31+
<pa-accordion-item
32+
id="item2"
33+
itemTitle="Another accordion item with some extra content in its description"
34+
description="Some description also visible in the header"
35+
[(expanded)]="expanded2">
36+
<pa-accordion-item-extra-description>
37+
<p>
38+
Any extra content can be added within
39+
<code>pa-accordion-item-extra-description</code>
40+
directive.
41+
</p>
42+
<pa-button (click)="$event.preventDefault(); $event.stopPropagation()">Some button</pa-button>
43+
</pa-accordion-item-extra-description>
44+
<pa-accordion-item-body>
45+
<p>Some content</p>
46+
<p>Some content that can be long or short.</p>
47+
<p>
48+
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore
49+
magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
50+
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla
51+
pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id
52+
est laborum.
53+
</p>
54+
</pa-accordion-item-body>
55+
</pa-accordion-item>
3156
</pa-demo-examples>
3257

3358
<pa-demo-usage>
3459
<h3>Inputs</h3>
3560
<dl>
3661
<dt>description</dt>
37-
<dd>Optional description to be displayed below the title in the item’s header.</dd>
62+
<!-- prettier-ignore -->
63+
<dd>Optional description to be displayed below the title in the item’s header.
64+
The description is displayed with an <code>innerHTML</code> block, so it can contain simple HTML markup.</dd>
3865
<dt>expanded</dt>
3966
<dd>
4067
Boolean controlling the state of the item: expanded when true.
@@ -57,15 +84,20 @@ <h3>Outputs</h3>
5784
</dd>
5885
</dl>
5986

60-
<h3>Directive</h3>
87+
<h3>Directives</h3>
6188
<!-- prettier-ignore -->
6289
<p>The item content must be wrapped in <code>pa-accordion-item-body</code> tag.</p>
90+
<!-- prettier-ignore -->
91+
<p>Whenever you need to display some components in the accordion item description, you can use the <code>pa-accordion-item-extra-description</code> directive.</p>
6392
</pa-demo-usage>
6493

6594
<pa-demo-code>
6695
<h4>Static accordion item:</h4>
6796
<pre><code>{{code}}</code></pre>
6897

98+
<h4>Static accordion item with extra content in its description:</h4>
99+
<pre><code>{{codeWithExtraContent}}</code></pre>
100+
69101
<h4>updateContentHeight method</h4>
70102
<!-- prettier-ignore -->
71103
<p>

projects/demo/src/app/demo/pages/accordion-page/accordion-item-page.component.ts

+29-2
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,29 @@
11
import { ChangeDetectionStrategy, Component } from '@angular/core';
22
import { PaDemoModule } from '../../demo.module';
3-
import { AccordionBodyDirective, AccordionItemComponent } from '@guillotinaweb/pastanaga-angular';
3+
import {
4+
AccordionBodyDirective,
5+
AccordionExtraDescriptionDirective,
6+
AccordionItemComponent,
7+
PaButtonModule,
8+
} from '@guillotinaweb/pastanaga-angular';
49
import { RouterLink } from '@angular/router';
510

611
@Component({
712
standalone: true,
8-
imports: [PaDemoModule, AccordionItemComponent, AccordionBodyDirective, RouterLink],
13+
imports: [
14+
PaDemoModule,
15+
AccordionItemComponent,
16+
AccordionBodyDirective,
17+
RouterLink,
18+
AccordionExtraDescriptionDirective,
19+
PaButtonModule,
20+
],
921
templateUrl: './accordion-item-page.component.html',
1022
changeDetection: ChangeDetectionStrategy.OnPush,
1123
})
1224
export class AccordionItemPageComponent {
1325
expanded = false;
26+
expanded2 = false;
1427

1528
code = `<pa-accordion-item
1629
id="item1"
@@ -22,6 +35,20 @@ export class AccordionItemPageComponent {
2235
</pa-accordion-item-body>
2336
</pa-accordion-item>`;
2437

38+
codeWithExtraContent = `<pa-accordion-item
39+
id="item2"
40+
itemTitle="Another accordion item with some extra content in its description"
41+
description="Some description also visible in the header"
42+
[(expanded)]="expanded2">
43+
<pa-accordion-item-extra-description>
44+
<p>Some extra description content</p>
45+
<pa-button (click)="$event.preventDefault(); $event.stopPropagation()">Some button</pa-button>
46+
</pa-accordion-item-extra-description>
47+
<pa-accordion-item-body>
48+
<p>Some content</p>
49+
</pa-accordion-item-body>
50+
</pa-accordion-item>`;
51+
2552
conditionalExampleTemplate = `<pa-accordion-item
2653
#myAccordionItem
2754
id="item1"

projects/pastanaga-angular/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "@guillotinaweb/pastanaga-angular",
33
"description": "Provides Pastanaga UI elements as Angular components",
4-
"version": "2.67.3",
4+
"version": "2.67.4",
55
"license": "MIT",
66
"keywords": [
77
"angular",

projects/pastanaga-angular/src/lib/accordion/accordion-item/accordion-item.component.html

+3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,9 @@
1313
<div
1414
class="body-s"
1515
[innerHTML]="description"></div>
16+
<div>
17+
<ng-content select="pa-accordion-item-extra-description"></ng-content>
18+
</div>
1619
</div>
1720
</div>
1821

projects/pastanaga-angular/src/lib/accordion/accordion-item/accordion-item.component.ts

+6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,12 @@ import { PaTranslateModule } from '../../translate';
2222
})
2323
export class AccordionBodyDirective {}
2424

25+
@Directive({
26+
selector: 'pa-accordion-item-extra-description',
27+
standalone: true,
28+
})
29+
export class AccordionExtraDescriptionDirective {}
30+
2531
@Component({
2632
selector: 'pa-accordion-item',
2733
standalone: true,

0 commit comments

Comments
 (0)