mirror of https://github.com/Squidex/squidex.git
33 changed files with 318 additions and 84 deletions
@ -0,0 +1,16 @@ |
|||
<div class="btn-group btn-group-{{size}}" *ngIf="isSmallMode"> |
|||
<button type="button" class="btn btn-secondary" *ngFor="let language of languages" [attr.title]="language.englishName" [class.active]="language == languageSelected" (click)="selectLanguage(language)"> |
|||
<span class="iso-code">{{language.iso2Code}}</span> |
|||
</button> |
|||
</div> |
|||
|
|||
<div class="dropdown-options btn-group btn-group-{{size}}" *ngIf="isLargeMode"> |
|||
<button type="button" class="btn btn-secondary dropdown-toggle" [attr.title]="selectedLanguage.englishName" (click)="dropdown.toggle(); $event.stopPropagation()"> |
|||
{{selectedLanguage.iso2Code}} |
|||
</button> |
|||
<div class="dropdown-menu" *sqxModalView="dropdown" closeAlways="true" [@fade]> |
|||
<div class="dropdown-item" *ngFor="let language of languages" [class.active]="language == selectedLanguage" (click)="selectLanguage(language)"> |
|||
<strong class="iso-code">{{language.iso2Code}}</strong> ({{language.englishName}}) |
|||
</div> |
|||
</div> |
|||
</div> |
|||
@ -0,0 +1,18 @@ |
|||
@import '_vars'; |
|||
@import '_mixins'; |
|||
|
|||
.btn { |
|||
font-family: monospace; |
|||
} |
|||
|
|||
.active { |
|||
color: $color-accent-dark; |
|||
} |
|||
|
|||
.dropdown-item { |
|||
cursor: pointer; |
|||
} |
|||
|
|||
.iso-code { |
|||
font-family: monospace; |
|||
} |
|||
@ -0,0 +1,59 @@ |
|||
/* |
|||
* Squidex Headless CMS |
|||
* |
|||
* @license |
|||
* Copyright (c) Sebastian Stehle. All rights reserved |
|||
*/ |
|||
|
|||
import { Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; |
|||
|
|||
import { fadeAnimation, ModalView } from 'framework'; |
|||
|
|||
export interface Language { iso2Code: string; englishName: string; isMasterLanguage: true; } |
|||
|
|||
@Component({ |
|||
selector: 'sqx-language-selector', |
|||
styleUrls: ['./language-selector.component.scss'], |
|||
templateUrl: './language-selector.component.html', |
|||
animations: [ |
|||
fadeAnimation |
|||
] |
|||
}) |
|||
export class LanguageSelectorComponent implements OnInit { |
|||
public dropdown = new ModalView(false, true); |
|||
|
|||
@Input() |
|||
public size: string; |
|||
|
|||
@Input() |
|||
public languages: Language[] = []; |
|||
|
|||
@Input() |
|||
public selectedLanguage: Language; |
|||
|
|||
@Output() |
|||
public selectedLanguageChanged = new EventEmitter<Language>(); |
|||
|
|||
public get isSmallMode(): boolean { |
|||
return this.languages && this.languages.length > 0 && this.languages.length <= 0; |
|||
} |
|||
|
|||
public get isLargeMode(): boolean { |
|||
return this.languages && this.languages.length > 3; |
|||
} |
|||
|
|||
public ngOnInit() { |
|||
if (this.languages && this.languages.length > 0 && !this.selectedLanguage) { |
|||
const selectedLanguage = |
|||
this.languages.find(l => l.isMasterLanguage) || |
|||
this.languages[0]; |
|||
|
|||
this.selectLanguage(selectedLanguage); |
|||
} |
|||
} |
|||
|
|||
public selectLanguage(language: Language) { |
|||
this.selectedLanguage = language; |
|||
this.selectedLanguageChanged.emit(language); |
|||
} |
|||
} |
|||
Binary file not shown.
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
Binary file not shown.
Binary file not shown.
Loading…
Reference in new issue