Don't allow the deletion of the last keymap

Closes #178
This commit is contained in:
Farkas József
2016-11-26 23:36:17 +01:00
parent 780d1219f2
commit 7c0035c971
4 changed files with 9 additions and 2 deletions

View File

@@ -1,5 +1,5 @@
<template [ngIf]="keymap$ | async"> <template [ngIf]="keymap$ | async">
<keymap-header [keymap]="keymap$ | async"></keymap-header> <keymap-header [keymap]="keymap$ | async" [deletable]="deletable$ | async"></keymap-header>
<svg-keyboard-wrap [keymap]="keymap$ | async"></svg-keyboard-wrap> <svg-keyboard-wrap [keymap]="keymap$ | async"></svg-keyboard-wrap>
</template> </template>

View File

@@ -12,7 +12,7 @@ import { ConnectableObservable } from 'rxjs/observable/ConnectableObservable';
import { Keymap } from '../../../config-serializer/config-items/Keymap'; import { Keymap } from '../../../config-serializer/config-items/Keymap';
import { AppState } from '../../../store'; import { AppState } from '../../../store';
import { getKeymap } from '../../../store/reducers/keymap'; import { getKeymap, getKeymapEntities } from '../../../store/reducers/keymap';
@Component({ @Component({
selector: 'keymap-edit', selector: 'keymap-edit',
@@ -24,6 +24,7 @@ import { getKeymap } from '../../../store/reducers/keymap';
}) })
export class KeymapEditComponent { export class KeymapEditComponent {
private keymap$: Observable<Keymap>; private keymap$: Observable<Keymap>;
private deletable$: Observable<boolean>;
constructor( constructor(
private store: Store<AppState>, private store: Store<AppState>,
@@ -37,5 +38,8 @@ export class KeymapEditComponent {
this.keymap$ = keymapConnectable; this.keymap$ = keymapConnectable;
keymapConnectable.connect(); keymapConnectable.connect();
this.deletable$ = store.let(getKeymapEntities())
.map((keymaps: Keymap[]) => keymaps.length > 1);
} }
} }

View File

@@ -22,6 +22,7 @@
(click)="setDefault()" (click)="setDefault()"
></i> ></i>
<i class="glyphicon glyphicon-trash keymap__remove pull-right" title="" <i class="glyphicon glyphicon-trash keymap__remove pull-right" title=""
*ngIf="deletable"
data-toggle="tooltip" data-toggle="tooltip"
data-placement="left" data-placement="left"
data-original-title="Remove keymap" data-original-title="Remove keymap"

View File

@@ -15,6 +15,8 @@ import { KeymapActions } from '../../../store/actions';
}) })
export class KeymapHeaderComponent implements OnChanges { export class KeymapHeaderComponent implements OnChanges {
@Input() keymap: Keymap; @Input() keymap: Keymap;
@Input() deletable: boolean;
@ViewChild('name') keymapName: ElementRef; @ViewChild('name') keymapName: ElementRef;
@ViewChild('abbr') keymapAbbr: ElementRef; @ViewChild('abbr') keymapAbbr: ElementRef;