@@ -568,38 +568,40 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
568568 }
569569
570570 /**
571+ * @param {Example } example
572+ * @param {number } index
571573 * Collapse the current example panel
572574 */
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
580581 }
581582
582583 /**
583584 * @param {Example } example
584- * @returns {TemplateResult|string }
585+ * @param {number } index
586+ * @returns {TemplateResult|string }
585587 */
586- _titleTemplate ( example ) {
588+ _titleTemplate ( example , index ) {
587589 if ( example . isScalar ) {
588590 return '' ;
589591 }
590592 const label = this . _computeExampleTitle ( example ) ;
591593 return html `< div
592594 class ="example-title "
593- @click ="${ this . _handleCollapsePanel } "
594- @keyup ="${ this . _handleCollapsePanel } "
595+ @click ="${ ( ) => this . _handleCollapsePanel ( example , index ) } "
596+ @keyup ="${ ( ) => this . _handleCollapsePanel ( example , index ) } "
595597 >
596598 < span > ${ label } </ span >
597599 < anypoint-icon-button
598600 class ="expand-icon-wrapper "
599601 data-action ="collapse "
600602 title ="Collapse panel "
601603 >
602- < arc-icon class ="expand-icon " icon ="expandLess "> </ arc-icon >
604+ < arc-icon class ="expand-icon " icon ="expandLess "> </ arc-icon >
603605 </ anypoint-icon-button >
604606 </ div > ` ;
605607 }
@@ -630,7 +632,7 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
630632
631633 /**
632634 * Returns title to render for example
633- * @param {Example } example
635+ * @param {Example } example
634636 * @returns {String } 'Example' or the example's title
635637 */
636638 _computeExampleTitle ( example ) {
@@ -643,7 +645,7 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
643645 /**
644646 * Determines whether an example's title is just a variation
645647 * of the current media type + a number
646- * @param {Example } example
648+ * @param {Example } example
647649 * @returns {Boolean }
648650 */
649651 _exampleTitleIsMediaType ( example ) {
@@ -653,23 +655,27 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
653655 }
654656
655657 /**
656- * @param {Example[] } examples
657- * @returns {TemplateResult[] }
658+ * @param {Example[] } initialExamples
659+ * @returns {TemplateResult[] }
658660 */
659- _examplesTemplate ( examples ) {
661+ _examplesTemplate ( initialExamples ) {
662+ const examples = initialExamples . map ( example => {
663+ example . opened = ! ! this . _collapseExamplePanel
664+ return example
665+ } ) ;
660666 let parts = 'content-action-button, code-content-action-button, content-action-button-disabled, ' ;
661667 parts += 'code-content-action-button-disabled content-action-button-active, ' ;
662668 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 `
664670 < div class ="item-container ">
665- ${ this . _titleTemplate ( item ) }
666- ${ this . _descriptionTemplate ( item ) }
671+ ${ this . _titleTemplate ( example , index ) }
672+ ${ this . _descriptionTemplate ( example ) }
667673 < div class ="renderer ">
668674 < arc-icon class ="info-icon " icon ="code "> </ arc-icon >
669675 < api-example-render
670676 exportParts ="${ parts } "
671677 class ="example "
672- .example ="${ item } "
678+ .example ="${ example } "
673679 .mediaType ="${ this . mediaType } "
674680 ?isJson ="${ this . isJson } "
675681 ?table ="${ this . table } "
0 commit comments