+import {Component} from "./component";
-class EntitySelectorPopup {
+export class EntitySelectorPopup extends Component {
- constructor(elem) {
- this.elem = elem;
- window.EntitySelectorPopup = this;
+ setup() {
+ this.container = this.$el;
+ this.selectButton = this.$refs.select;
+ 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.getPopup().show();
+ this.getSelector().focusSearch();
}
hide() {
- this.elem.components.overlay.hide();
+ this.getPopup().hide();
}
- onSelectButtonClick() {
- this.hide();
- if (this.selection !== null && this.callback) this.callback(this.selection);
+ /**
+ * @returns {Popup}
+ */
+ getPopup() {
+ return window.$components.firstOnElement(this.container, 'popup');
}
- onSelectionConfirm(entity) {
- this.hide();
- if (this.callback && entity) this.callback(entity);
+ /**
+ * @returns {EntitySelector}
+ */
+ getSelector() {
+ return window.$components.firstOnElement(this.selectorEl, 'entity-selector');
+ }
+
+ onSelectButtonClick() {
+ this.handleConfirmedSelection(this.selection);
}
onSelectionChange(entity) {
this.selectButton.removeAttribute('disabled');
}
}
-}
-export default EntitySelectorPopup;
\ No newline at end of file
+ handleConfirmedSelection(entity) {
+ this.hide();
+ this.getSelector().reset();
+ if (this.callback && entity) this.callback(entity);
+ }
+}
\ No newline at end of file