@@ -568,38 +568,40 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
568
568
}
569
569
570
570
/**
571
+ * @param {Example } example
572
+ * @param {number } index
571
573
* Collapse the current example panel
572
574
*/
573
- _handleCollapsePanel ( ) {
574
- const examplePanel = this . shadowRoot . querySelector ( '.renderer' )
575
- const icon = this . shadowRoot . querySelector ( '.expand-icon' )
576
- icon . classList . toggle ( 'expand-icon-collapse' )
577
- examplePanel . classList . toggle ( 'collapse' )
578
-
579
- this . _collapseExamplePanel = ! this . _collapseExamplePanel
575
+ _handleCollapsePanel ( example , index ) {
576
+ const examplePanels = this . shadowRoot . querySelectorAll ( '.renderer' )
577
+ const icons = this . shadowRoot . querySelectorAll ( '.expand-icon' )
578
+ icons [ index ] . classList . toggle ( 'expand-icon-collapse' )
579
+ examplePanels [ index ] . classList . toggle ( 'collapse' )
580
+ example . opened = ! example . opened
580
581
}
581
582
582
583
/**
583
584
* @param {Example } example
584
- * @returns {TemplateResult|string }
585
+ * @param {number } index
586
+ * @returns {TemplateResult|string }
585
587
*/
586
- _titleTemplate ( example ) {
588
+ _titleTemplate ( example , index ) {
587
589
if ( example . isScalar ) {
588
590
return '' ;
589
591
}
590
592
const label = this . _computeExampleTitle ( example ) ;
591
593
return html `< div
592
594
class ="example-title "
593
- @click ="${ this . _handleCollapsePanel } "
594
- @keyup ="${ this . _handleCollapsePanel } "
595
+ @click ="${ ( ) => this . _handleCollapsePanel ( example , index ) } "
596
+ @keyup ="${ ( ) => this . _handleCollapsePanel ( example , index ) } "
595
597
>
596
598
< span > ${ label } </ span >
597
599
< anypoint-icon-button
598
600
class ="expand-icon-wrapper "
599
601
data-action ="collapse "
600
602
title ="Collapse panel "
601
603
>
602
- < arc-icon class ="expand-icon " icon ="expandLess "> </ arc-icon >
604
+ < arc-icon class ="expand-icon " icon ="expandLess "> </ arc-icon >
603
605
</ anypoint-icon-button >
604
606
</ div > ` ;
605
607
}
@@ -630,7 +632,7 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
630
632
631
633
/**
632
634
* Returns title to render for example
633
- * @param {Example } example
635
+ * @param {Example } example
634
636
* @returns {String } 'Example' or the example's title
635
637
*/
636
638
_computeExampleTitle ( example ) {
@@ -643,7 +645,7 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
643
645
/**
644
646
* Determines whether an example's title is just a variation
645
647
* of the current media type + a number
646
- * @param {Example } example
648
+ * @param {Example } example
647
649
* @returns {Boolean }
648
650
*/
649
651
_exampleTitleIsMediaType ( example ) {
@@ -653,23 +655,27 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
653
655
}
654
656
655
657
/**
656
- * @param {Example[] } examples
657
- * @returns {TemplateResult[] }
658
+ * @param {Example[] } initialExamples
659
+ * @returns {TemplateResult[] }
658
660
*/
659
- _examplesTemplate ( examples ) {
661
+ _examplesTemplate ( initialExamples ) {
662
+ const examples = initialExamples . map ( example => {
663
+ example . opened = ! ! this . _collapseExamplePanel
664
+ return example
665
+ } ) ;
660
666
let parts = 'content-action-button, code-content-action-button, content-action-button-disabled, ' ;
661
667
parts += 'code-content-action-button-disabled content-action-button-active, ' ;
662
668
parts += 'code-content-action-button-active, code-wrapper, example-code-wrapper, markdown-html' ;
663
- return examples . map ( ( item ) => html `
669
+ return examples . map ( ( example , index ) => html `
664
670
< div class ="item-container ">
665
- ${ this . _titleTemplate ( item ) }
666
- ${ this . _descriptionTemplate ( item ) }
671
+ ${ this . _titleTemplate ( example , index ) }
672
+ ${ this . _descriptionTemplate ( example ) }
667
673
< div class ="renderer ">
668
674
< arc-icon class ="info-icon " icon ="code "> </ arc-icon >
669
675
< api-example-render
670
676
exportParts ="${ parts } "
671
677
class ="example "
672
- .example ="${ item } "
678
+ .example ="${ example } "
673
679
.mediaType ="${ this . mediaType } "
674
680
?isJson ="${ this . isJson } "
675
681
?table ="${ this . table } "
0 commit comments