obsidian-media-db-sync/src/modals/MediaDbSearchResultModal.ts
2022-05-05 20:55:54 +02:00

31 lines
1 KiB
TypeScript

import {App, SuggestModal} from 'obsidian';
import {MediaTypeModel} from '../models/MediaTypeModel';
export class MediaDbSearchResultModal extends SuggestModal<MediaTypeModel> {
suggestion: MediaTypeModel[];
onChoose: (error: Error, result?: MediaTypeModel) => void;
constructor(app: App, suggestion: MediaTypeModel[], onChoose: (error: Error, result?: MediaTypeModel) => void) {
super(app);
this.suggestion = suggestion;
this.onChoose = onChoose;
}
getSuggestions(query: string): MediaTypeModel[] {
return this.suggestion.filter(item => {
const searchQuery = query.toLowerCase();
return item.title.toLowerCase().includes(searchQuery);
});
}
// Renders each suggestion item.
renderSuggestion(item: MediaTypeModel, el: HTMLElement) {
el.createEl('div', {text: item.title});
el.createEl('small', {text: `${item.type} from ${item.dataSource}`});
}
// Perform action on the selected suggestion.
onChooseSuggestion(item: MediaTypeModel, evt: MouseEvent | KeyboardEvent) {
this.onChoose(null, item);
}
}