]> BookStack Code Mirror - bookstack/blobdiff - resources/js/components/user-select.js
ESLINT: Added GH action and details to dev docs
[bookstack] / resources / js / components / user-select.js
index 477c11d6b5d0e3184fad6ed5144fbb472bc9482e..e6adc3c23c82d4e163c12c4f4c42adfc1d80d249 100644 (file)
@@ -1,24 +1,28 @@
-import {onChildEvent} from "../services/dom";
+import {onChildEvent} from '../services/dom';
+import {Component} from './component';
 
-class UserSelect {
+export class UserSelect extends Component {
 
     setup() {
-
+        this.container = this.$el;
         this.input = this.$refs.input;
         this.userInfoContainer = this.$refs.userInfo;
 
-        this.hide = this.$el.components.dropdown.hide;
-
-        onChildEvent(this.$el, 'a.dropdown-search-item', 'click', this.selectUser.bind(this));
+        onChildEvent(this.container, 'a.dropdown-search-item', 'click', this.selectUser.bind(this));
     }
 
     selectUser(event, userEl) {
-        const id = userEl.getAttribute('data-id');
-        this.input.value = id;
+        event.preventDefault();
+        this.input.value = userEl.getAttribute('data-id');
         this.userInfoContainer.innerHTML = userEl.innerHTML;
+        this.input.dispatchEvent(new Event('change', {bubbles: true}));
         this.hide();
     }
 
-}
+    hide() {
+        /** @var {Dropdown} * */
+        const dropdown = window.$components.firstOnElement(this.container, 'dropdown');
+        dropdown.hide();
+    }
 
-export default UserSelect;
\ No newline at end of file
+}