Skip to content

Commit 3a700bb

Browse files
committed
chore: fixing chrome extension support
1 parent c564eff commit 3a700bb

2 files changed

Lines changed: 84 additions & 83 deletions

File tree

src/ApiConsole.js

Lines changed: 83 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import '@anypoint-web-components/anypoint-button/anypoint-button.js';
2121
import '@polymer/paper-toast/paper-toast.js';
2222
import '@api-components/api-console-ext-comm/api-console-ext-comm.js';
2323
import attributionTpl from './attribution-template.js';
24+
import { close } from '@advanced-rest-client/arc-icons/ArcIcons.js';
2425

2526
export const isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
2627
/**
@@ -127,6 +128,25 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
127128
max-width: var(--api-console-main-max-width, 1600px);
128129
}
129130
131+
.extension-banner {
132+
align-items: center;
133+
display: none;
134+
border-bottom: 1px var(--api-console-extension-banner-border-bottom-color, rgba(0,0,0,0.12)) solid;
135+
border-top: 1px var(--api-console-extension-banner-border-bottom-color, rgba(0,0,0,0.12)) solid;
136+
margin-bottom: 12px;
137+
box-sizing: border-box;
138+
color: var(--api-console-extension-banner-color, rgba(0,0,0,0.54));
139+
}
140+
141+
.extension-banner[active] {
142+
display: flex;
143+
flex-direction: row;
144+
}
145+
146+
.extension-banner {
147+
max-width: var(--api-console-main-max-width, 1600px);
148+
}
149+
130150
.method-title {
131151
flex: 1;
132152
font-size: var(--arc-font-headline-font-size);
@@ -150,6 +170,13 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
150170
overflow: auto;
151171
height: 100%;
152172
}
173+
174+
.icon {
175+
fill: currentColor;
176+
width: 24px;
177+
height: 24px;
178+
display: block;
179+
}
153180
`;
154181
}
155182

@@ -161,7 +188,29 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
161188
}
162189
}
163190

164-
_bannerMessage() {}
191+
_bannerMessage() {
192+
if (!this.allowExtensionBanner) {
193+
return '';
194+
}
195+
return html`
196+
<div class="extension-banner" ?active="${this._extensionBannerActive}">
197+
<p>
198+
For better experience install API console extension.
199+
Get it from <a target="_blank"
200+
class="store-link"
201+
href="https://chrome.google.com/webstore/detail/olkpohecoakpkpinafnpppponcfojioa"
202+
>
203+
Chrome Web Store
204+
</a>
205+
</p>
206+
<anypoint-icon-button
207+
aria-label="Activate to close the message"
208+
@click="${this.dismissExtensionBanner}"
209+
>
210+
<span class="icon">${close}</span>
211+
</anypoint-icon-button>
212+
</div>`;
213+
}
165214

166215
_getRequestTemplate() {
167216
const {
@@ -245,7 +294,7 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
245294
.redirectUri="${redirectUri}"
246295
.scrollTarget="${scrollTarget}"
247296
@api-navigation-selection-changed="${this._apiNavigationOcurred}"
248-
@tryit-requested="${this._tryitHandler}"></api-documentation>`;
297+
></api-documentation>`;
249298
}
250299

251300
_navigationTemplate() {
@@ -294,7 +343,7 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
294343
*/
295344
_helpersTemplate() {
296345
return html`<paper-toast class="error-toast" id="apiLoadErrorToast"></paper-toast>
297-
<api-console-ext-comm @has-extension-changed="${this._hasExtensionHandler}"></api-console-ext-comm>
346+
<api-console-ext-comm @api-console-extension-installed="${this._hasExtensionHandler}"></api-console-ext-comm>
298347
`;
299348
}
300349

@@ -503,6 +552,20 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
503552
};
504553
}
505554

555+
get allowExtensionBanner() {
556+
return this._allowExtensionBanner;
557+
}
558+
559+
set allowExtensionBanner(value) {
560+
const old = this._allowExtensionBanner;
561+
/* istanbul ignore if */
562+
if (old === value) {
563+
return;
564+
}
565+
this._allowExtensionBanner = value;
566+
this._allowExtensionBannerChanged(value);
567+
}
568+
506569
get selectedShape() {
507570
return this._selectedShape;
508571
}
@@ -653,16 +716,18 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
653716
return;
654717
}
655718
this.amf = data;
719+
this.dispatchEvent(new CustomEvent('model-load-success'));
656720
}
657721
/**
658722
* Called by `_modelLocationChanged` when error occurred when getting API data.
659723
* @param {Error} error
660724
*/
661725
_apiLoadErrorHandler(error) {
662-
const message = 'Unable to load API model data. ' + (error.message ? error.message : '');
726+
const message = `Unable to load API model data. ${error.message || ''}`;
663727
const toast = this.shadowRoot.querySelector('#apiLoadErrorToast');
664728
toast.text = message;
665729
toast.opened = true;
730+
this.dispatchEvent(new CustomEvent('model-load-error'));
666731
}
667732
/**
668733
* Handler for the `tryit-requested` event. Sets current screen to
@@ -731,12 +796,6 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
731796
composed: true
732797
}));
733798
}
734-
735-
_hasCorsExtensionChanged(value) {
736-
if (value && this._extensionBannerActive) {
737-
this._extensionBannerActive = false;
738-
}
739-
}
740799
/**
741800
* Computes method name for not-wide view, where the request panel
742801
* has close button.
@@ -770,12 +829,24 @@ export class ApiConsole extends AmfHelperMixin(LitElement) {
770829
}
771830

772831
_hasExtensionHandler(e) {
773-
this._hasApicCorsExtension = e.detail.value;
774-
this._hasCorsExtensionChanged(e.detail.value);
832+
this._hasApicCorsExtension = true;
833+
this._extensionBannerActive = false;
775834
}
776835

777836
_closeDrawer() {
778837
this.navigationOpened = false;
779838
this.dispatchEvent(new CustomEvent('navigation-close'));
780839
}
840+
841+
/**
842+
* Controls behavior if the extension banner.
843+
* @param {Boolean} value Current value of `allowExtensionBanner` property
844+
*/
845+
_allowExtensionBannerChanged(value) {
846+
if (!value && this._extensionBannerActive) {
847+
this._extensionBannerActive = false;
848+
} else if (value && !this._hasApicCorsExtension) {
849+
this._extensionBannerActive = true;
850+
}
851+
}
781852
}

src/ApiConsoleApp.js

Lines changed: 1 addition & 71 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import '@advanced-rest-client/oauth-authorization/oauth1-authorization.js';
1010
import '@advanced-rest-client/oauth-authorization/oauth2-authorization.js';
1111
import '@anypoint-web-components/anypoint-button/anypoint-icon-button.js';
1212
import '@polymer/iron-media-query/iron-media-query.js';
13-
import { menu, close } from '@advanced-rest-client/arc-icons/ArcIcons.js';
13+
import { menu } from '@advanced-rest-client/arc-icons/ArcIcons.js';
1414

1515
export class ApiConsoleApp extends ApiConsole {
1616
static get styles() {
@@ -35,25 +35,6 @@ export class ApiConsoleApp extends ApiConsole {
3535
color: var(--api-console-toolbar-color, #fff);
3636
}
3737
38-
.extension-banner {
39-
align-items: center;
40-
display: none;
41-
border-bottom: 1px var(--api-console-extension-banner-border-bottom-color, rgba(0,0,0,0.12)) solid;
42-
border-top: 1px var(--api-console-extension-banner-border-bottom-color, rgba(0,0,0,0.12)) solid;
43-
margin-bottom: 12px;
44-
box-sizing: border-box;
45-
color: var(--api-console-extension-banner-color, rgba(0,0,0,0.54));
46-
}
47-
48-
.extension-banner[active] {
49-
display: flex;
50-
flex-direction: row;
51-
}
52-
53-
.extension-banner {
54-
max-width: var(--api-console-main-max-width, 1600px);
55-
}
56-
5738
.nav-content {
5839
display: flex;
5940
flex-direction: row;
@@ -109,13 +90,6 @@ export class ApiConsoleApp extends ApiConsole {
10990
box-sizing: border-box;
11091
flex: 1;
11192
}
112-
113-
.icon {
114-
fill: currentColor;
115-
width: 24px;
116-
height: 24px;
117-
display: block;
118-
}
11993
`
12094
];
12195
}
@@ -216,20 +190,6 @@ export class ApiConsoleApp extends ApiConsole {
216190
this._updateRenderInlineTyit();
217191
}
218192

219-
get allowExtensionBanner() {
220-
return this._allowExtensionBanner;
221-
}
222-
223-
set allowExtensionBanner(value) {
224-
const old = this._allowExtensionBanner;
225-
/* istanbul ignore if */
226-
if (old === value) {
227-
return;
228-
}
229-
this._allowExtensionBanner = value;
230-
this._allowExtensionBannerChanged(value);
231-
}
232-
233193
get selectedShapeType() {
234194
return this._selectedShapeType;
235195
}
@@ -269,16 +229,6 @@ export class ApiConsoleApp extends ApiConsole {
269229
this.shadowRoot.querySelector('app-drawer-layout').notifyResize();
270230
}
271231

272-
/**
273-
* Controls behavior if the extension banner.
274-
* @param {Boolean} value Current value of `allowExtensionBanner` property
275-
*/
276-
_allowExtensionBannerChanged(value) {
277-
if (!value && this._extensionBannerActive) {
278-
this._extensionBannerActive = false;
279-
}
280-
}
281-
282232
/**
283233
* Computes value for `_renderInlineTyit` property.
284234
* @param {Boolean} wideLayout
@@ -340,26 +290,6 @@ export class ApiConsoleApp extends ApiConsole {
340290
</app-header>`;
341291
}
342292

343-
_bannerMessage() {
344-
return html`
345-
<div class="extension-banner" ?active="${this._extensionBannerActive}">
346-
<p>
347-
For better experience install API console extension.
348-
Get it from <a target="_blank"
349-
class="store-link"
350-
href="https://chrome.google.com/webstore/detail/olkpohecoakpkpinafnpppponcfojioa">
351-
Chrome Web Store
352-
</a>
353-
</p>
354-
<anypoint-icon-button
355-
aria-label="Activate to close the message"
356-
@click="${this.dismissExtensionBanner}"
357-
>
358-
<span class="icon">${close}</span>
359-
</anypoint-icon-button>
360-
</div>`;
361-
}
362-
363293
_apiDocumentationTemplate() {
364294
return html`<section class="api-docs">
365295
${super._apiDocumentationTemplate()}

0 commit comments

Comments
 (0)