mirror of
https://github.com/Eugeny/tabby.git
synced 2025-06-21 03:49:57 +00:00
50 lines
1.5 KiB
TypeScript
50 lines
1.5 KiB
TypeScript
import { Component, Input, Output, EventEmitter, ChangeDetectionStrategy } from '@angular/core'
|
|
import { NgbModal } from '@ng-bootstrap/ng-bootstrap'
|
|
import { HotkeyInputModalComponent } from './hotkeyInputModal'
|
|
|
|
|
|
@Component({
|
|
selector: 'multi-hotkey-input',
|
|
template: require('./multiHotkeyInput.pug'),
|
|
styles: [require('./multiHotkeyInput.scss')],
|
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
})
|
|
export class MultiHotkeyInputComponent {
|
|
constructor (
|
|
private ngbModal: NgbModal,
|
|
) { }
|
|
|
|
ngOnInit () {
|
|
if (!this.model) {
|
|
this.model = []
|
|
}
|
|
if (typeof this.model == 'string') {
|
|
this.model = [this.model]
|
|
}
|
|
this.model = this.model.map(item => (typeof item == 'string') ? [item] : item)
|
|
}
|
|
|
|
editItem (item) {
|
|
this.ngbModal.open(HotkeyInputModalComponent).result.then((value: string[]) => {
|
|
this.model[this.model.findIndex(x => x === item)] = value
|
|
this.model = this.model.slice()
|
|
this.modelChange.emit(this.model)
|
|
})
|
|
}
|
|
|
|
addItem () {
|
|
this.ngbModal.open(HotkeyInputModalComponent).result.then((value: string[]) => {
|
|
this.model = this.model.concat([value])
|
|
this.modelChange.emit(this.model)
|
|
})
|
|
}
|
|
|
|
removeItem (item) {
|
|
this.model = this.model.filter(x => x !== item)
|
|
this.modelChange.emit(this.model)
|
|
}
|
|
|
|
@Input() model: string[][]
|
|
@Output() modelChange = new EventEmitter()
|
|
}
|