setup() {
this.elem = this.$el;
this.selectButton = this.$refs.select;
- this.searchInput = this.$refs.searchInput;
window.EntitySelectorPopup = this;
+ this.selectorEl = this.$refs.selector;
this.callback = null;
this.selection = null;
show(callback) {
this.callback = callback;
this.elem.components.popup.show();
- this.searchInput.focus();
+ this.getSelector().focusSearch();
}
hide() {
this.elem.components.popup.hide();
}
+ getSelector() {
+ return this.selectorEl.components['entity-selector'];
+ }
+
onSelectButtonClick() {
this.hide();
if (this.selection !== null && this.callback) this.callback(this.selection);
onSelectionConfirm(entity) {
this.hide();
+ this.getSelector().reset();
if (this.callback && entity) this.callback(entity);
}
}
}
+ reset() {
+ this.searchInput.value = '';
+ this.showLoading();
+ this.initialLoad();
+ }
+
+ focusSearch() {
+ this.searchInput.focus();
+ }
+
showLoading() {
this.loading.style.display = 'block';
this.resultsContainer.style.display = 'none';
<div class="form-group entity-selector-container">
<div component="entity-selector"
+ refs="entity-selector-popup@selector"
class="entity-selector {{$selectorSize ?? ''}}"
option:entity-selector:entity-types="{{ $entityTypes ?? 'book,chapter,page' }}"
option:entity-selector:entity-permission="{{ $entityPermission ?? 'view' }}">
<input refs="entity-selector@input" type="hidden" name="{{$name}}" value="">
- <input refs="entity-selector@search entity-selector-popup@searchInput" type="text" placeholder="{{ trans('common.search') }}" @if($autofocus ?? false) autofocus @endif>
+ <input refs="entity-selector@search" type="text" placeholder="{{ trans('common.search') }}" @if($autofocus ?? false) autofocus @endif>
<div class="text-center loading" refs="entity-selector@loading">@include('common.loading-icon')</div>
<div refs="entity-selector@results"></div>
@if($showAdd ?? false)