mirror of
				https://github.com/BookStackApp/BookStack.git
				synced 2025-11-03 02:13:16 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import {onSelect} from '../services/dom';
 | 
						|
import {Component} from './component';
 | 
						|
 | 
						|
export class EntitySearch extends Component {
 | 
						|
 | 
						|
    setup() {
 | 
						|
        this.entityId = this.$opts.entityId;
 | 
						|
        this.entityType = this.$opts.entityType;
 | 
						|
 | 
						|
        this.contentView = this.$refs.contentView;
 | 
						|
        this.searchView = this.$refs.searchView;
 | 
						|
        this.searchResults = this.$refs.searchResults;
 | 
						|
        this.searchInput = this.$refs.searchInput;
 | 
						|
        this.searchForm = this.$refs.searchForm;
 | 
						|
        this.clearButton = this.$refs.clearButton;
 | 
						|
        this.loadingBlock = this.$refs.loadingBlock;
 | 
						|
 | 
						|
        this.setupListeners();
 | 
						|
    }
 | 
						|
 | 
						|
    setupListeners() {
 | 
						|
        this.searchInput.addEventListener('change', this.runSearch.bind(this));
 | 
						|
        this.searchForm.addEventListener('submit', e => {
 | 
						|
            e.preventDefault();
 | 
						|
            this.runSearch();
 | 
						|
        });
 | 
						|
 | 
						|
        onSelect(this.clearButton, this.clearSearch.bind(this));
 | 
						|
    }
 | 
						|
 | 
						|
    runSearch() {
 | 
						|
        const term = this.searchInput.value.trim();
 | 
						|
        if (term.length === 0) {
 | 
						|
            this.clearSearch();
 | 
						|
            return;
 | 
						|
        }
 | 
						|
 | 
						|
        this.searchView.classList.remove('hidden');
 | 
						|
        this.contentView.classList.add('hidden');
 | 
						|
        this.loadingBlock.classList.remove('hidden');
 | 
						|
 | 
						|
        const url = window.baseUrl(`/search/${this.entityType}/${this.entityId}`);
 | 
						|
        window.$http.get(url, {term}).then(resp => {
 | 
						|
            this.searchResults.innerHTML = resp.data;
 | 
						|
        }).catch(console.error).then(() => {
 | 
						|
            this.loadingBlock.classList.add('hidden');
 | 
						|
        });
 | 
						|
    }
 | 
						|
 | 
						|
    clearSearch() {
 | 
						|
        this.searchView.classList.add('hidden');
 | 
						|
        this.contentView.classList.remove('hidden');
 | 
						|
        this.loadingBlock.classList.add('hidden');
 | 
						|
        this.searchInput.value = '';
 | 
						|
    }
 | 
						|
 | 
						|
}
 |