@@ -117,6 +117,10 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
117117 * read-only properties to the example
118118 */
119119 renderReadOnly : { type : Boolean } ,
120+ /**
121+ * If enabled, the example panel would be closed
122+ */
123+ _collapseExamplePanel : { type : Boolean , reflect : true } ,
120124 } ;
121125 }
122126
@@ -313,6 +317,19 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
313317 } ) ) ;
314318 }
315319
320+ get _collapseExamplePanel ( ) {
321+ return this . __collapseExamplePanel
322+ }
323+
324+ set _collapseExamplePanel ( value ) {
325+ const old = this . __collapseExamplePanel ;
326+ if ( old === value ) {
327+ return ;
328+ }
329+ this . __collapseExamplePanel = value ;
330+ this . requestUpdate ( '_collapseExamplePanel' , old ) ;
331+ }
332+
316333 constructor ( ) {
317334 super ( ) ;
318335 this . _onStorageChanged = this . _onStorageChanged . bind ( this ) ;
@@ -324,6 +341,7 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
324341 this . hasExamples = false ;
325342 this . compatibility = false ;
326343 this . renderReadOnly = false ;
344+ this . _collapseExamplePanel = false ;
327345 this . _ensureJsonTable ( ) ;
328346 }
329347
@@ -549,16 +567,44 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
549567 this . table = e . detail . value ;
550568 }
551569
570+ /**
571+ * Collapse the current example panel
572+ */
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
580+ }
581+
552582 /**
553583 * @param {Example } example
554584 * @returns {TemplateResult|string }
555585 */
556586 _titleTemplate ( example ) {
587+ const { compatibility } = this ;
588+
557589 if ( example . isScalar ) {
558590 return '' ;
559591 }
560592 const label = this . _computeExampleTitle ( example ) ;
561- return html `< div class ="example-title "> ${ label } </ div > ` ;
593+ return html `< div
594+ class ="example-title "
595+ @click ="${ this . _handleCollapsePanel } "
596+ @keyup ="${ this . _handleCollapsePanel } "
597+ ?compatibility ="${ compatibility } "
598+ >
599+ < span > ${ label } </ span >
600+ < anypoint-icon-button
601+ class ="expand-icon-wrapper "
602+ data-action ="collapse "
603+ title ="Collapse panel "
604+ >
605+ < arc-icon class ="expand-icon " icon ="expandLess "> </ arc-icon >
606+ </ anypoint-icon-button >
607+ </ div > ` ;
562608 }
563609
564610 /**
@@ -622,7 +668,6 @@ export class ApiResourceExampleDocument extends AmfHelperMixin(LitElement) {
622668 ${ this . _titleTemplate ( item ) }
623669 ${ this . _descriptionTemplate ( item ) }
624670 < div class ="renderer ">
625- < arc-icon class ="info-icon " icon ="code "> </ arc-icon >
626671 < api-example-render
627672 exportParts ="${ parts } "
628673 class ="example "
0 commit comments