import { IListable } from '../interfaces/listable-interface'; export abstract class DefaultListable implements IListable { private isForSearch: boolean; private isForDelete: boolean; private _elements: Array; private _selectedIndex: number; constructor( ) { this.isForSearch = false; this.isForDelete = false; this._elements = []; this._selectedIndex = -1; } /** * */ set elements(_elements: Array) { this._elements = _elements; } /** * */ set selectedIndex(_selectedIndex: number) { this._selectedIndex = _selectedIndex; } /** * */ get elements() { return this._elements; } /** * */ get selectedIndex(): number { return this._selectedIndex; } /** * */ add(T: any): void { this._elements.push(T); } /** * */ remove(T: any): void { let index = this.elements.indexOf(T); this._elements.slice(index, 1); } /** * */ get(T: any): T { let index = this.elements.indexOf(T); return this._elements[index]; } /** * */ list(): Array { return this._elements; } /** * */ search(by: string): Array { return null; } /** * */ toggleSearch(): void { this.isForSearch = !this.isForSearch; } /** * */ toggleDelete(index: number): void { this.selectedIndex = index; if (this.selectedIndex != -1) { this.isForDelete = true; } else { this.isForDelete = !this.isForDelete; } } /** * */ isSearching(): boolean { return this.isForSearch; } /** * */ isDeleting(): boolean { return this.isForDelete; } }