-
+/**
+ * Entity Selector Popup
+ * @extends {Component}
+ */
class EntitySelectorPopup {
- constructor(elem) {
- this.elem = elem;
+ setup() {
+ this.elem = this.$el;
+ this.selectButton = this.$refs.select;
+
window.EntitySelectorPopup = this;
+ this.selectorEl = this.$refs.selector;
this.callback = null;
this.selection = null;
- this.selectButton = elem.querySelector('.entity-link-selector-confirm');
this.selectButton.addEventListener('click', this.onSelectButtonClick.bind(this));
-
window.$events.listen('entity-select-change', this.onSelectionChange.bind(this));
- window.$events.listen('entity-select-confirm', this.onSelectionConfirm.bind(this));
+ window.$events.listen('entity-select-confirm', this.handleConfirmedSelection.bind(this));
}
show(callback) {
this.callback = callback;
- this.elem.components.overlay.show();
+ this.elem.components.popup.show();
+ this.getSelector().focusSearch();
}
hide() {
- this.elem.components.overlay.hide();
+ this.elem.components.popup.hide();
}
- onSelectButtonClick() {
- this.hide();
- if (this.selection !== null && this.callback) this.callback(this.selection);
+ getSelector() {
+ return this.selectorEl.components['entity-selector'];
}
- onSelectionConfirm(entity) {
- this.hide();
- if (this.callback && entity) this.callback(entity);
+ onSelectButtonClick() {
+ this.handleConfirmedSelection(this.selection);
}
onSelectionChange(entity) {
this.selectButton.removeAttribute('disabled');
}
}
+
+ handleConfirmedSelection(entity) {
+ this.hide();
+ this.getSelector().reset();
+ if (this.callback && entity) this.callback(entity);
+ }
}
export default EntitySelectorPopup;
\ No newline at end of file