Browse Source

Fix preview button.

pull/426/head
Sebastian Stehle 7 years ago
parent
commit
61cc9bfa7f
  1. 10
      src/Squidex/app/features/content/shared/preview-button.component.html
  2. 18
      src/Squidex/app/features/content/shared/preview-button.component.ts

10
src/Squidex/app/features/content/shared/preview-button.component.html

@ -1,17 +1,17 @@
<ng-container *ngIf="snapshot.selectedName">
<ng-container *ngIf="snapshot.previewNameSelected">
<span>Preview: </span>
<div class="btn-group ml-1" #buttonGroup>
<button type="button" class="btn btn-secondary" (click)="follow(snapshot.selectedName)">
<i class="icon-external-link"></i> {{snapshot.selectedName}}
<button type="button" class="btn btn-secondary" (click)="follow(snapshot.previewNameSelected)">
<i class="icon-external-link"></i> {{snapshot.previewNameSelected}}
</button>
<div class="btn-group" *ngIf="snapshot.alternativeNames.length > 0">
<div class="btn-group" *ngIf="snapshot.previewNamesMore.length > 0">
<button type="button" class="btn btn-secondary dropdown-toggle" (click)="dropdown.toggle()"></button>
<ng-container *sqxModal="dropdown;closeAlways:true">
<div class="dropdown-menu" [sqxAnchoredTo]="buttonGroup" @fade>
<a *ngFor="let name of snapshot.alternativeNames" class="dropdown-item" (click)="follow(name)">{{name}}</a>
<a *ngFor="let name of snapshot.previewNamesMore" class="dropdown-item" (click)="follow(name)">{{name}}</a>
</div>
</ng-container>
</div>

18
src/Squidex/app/features/content/shared/preview-button.component.ts

@ -18,9 +18,9 @@ import {
} from '@app/shared';
interface State {
selectedName?: string;
previewNameSelected?: string;
alternativeNames: ReadonlyArray<string>;
previewNamesMore: ReadonlyArray<string>;
}
@Component({
@ -45,7 +45,7 @@ export class PreviewButtonComponent extends StatefulComponent<State> implements
private readonly localStore: LocalStoreService
) {
super(changeDetector, {
alternativeNames: []
previewNamesMore: []
});
}
@ -62,6 +62,12 @@ export class PreviewButtonComponent extends StatefulComponent<State> implements
public follow(name: string) {
this.selectUrl(name);
this.navigateTo(name);
this.dropdown.hide();
}
private navigateTo(name: string) {
const url = interpolate(this.schema.previewUrls[name], this.content, 'iv');
window.open(url, '_blank');
@ -69,15 +75,15 @@ export class PreviewButtonComponent extends StatefulComponent<State> implements
private selectUrl(selectedName: string) {
this.next(s => {
if (selectedName === s.selectedName) {
if (selectedName === s.previewNameSelected) {
return s;
}
const state = { ...s };
const keys = Object.keys(this.schema.previewUrls);
state.selectedName = selectedName;
state.alternativeNames = keys.removed(s.selectedName).sorted();
state.previewNameSelected = selectedName;
state.previewNamesMore = keys.removed(selectedName).sorted();
this.localStore.set(this.configKey(), selectedName);

Loading…
Cancel
Save