]> BookStack Code Mirror - bookstack/blobdiff - resources/assets/js/components/entity-selector.js
Rolled tri-layout to page edit and book-create
[bookstack] / resources / assets / js / components / entity-selector.js
index 57b2499cc5bd48284375d7d613980498e551b3e5..461bf73217e0567a71b02a0a3645065bc219bf63 100644 (file)
@@ -7,7 +7,8 @@ class EntitySelector {
         this.lastClick = 0;
 
         let entityTypes = elem.hasAttribute('entity-types') ? elem.getAttribute('entity-types') : 'page,book,chapter';
-        this.searchUrl = window.baseUrl(`/ajax/search/entities?types=${encodeURIComponent(entityTypes)}`);
+        let entityPermission = elem.hasAttribute('entity-permission') ? elem.getAttribute('entity-permission') : 'view';
+        this.searchUrl = window.baseUrl(`/ajax/search/entities?types=${encodeURIComponent(entityTypes)}&permission=${encodeURIComponent(entityPermission)}`);
 
         this.input = elem.querySelector('[entity-selector-input]');
         this.searchInput = elem.querySelector('[entity-selector-search]');
@@ -69,7 +70,7 @@ class EntitySelector {
     onClick(event) {
         let t = event.target;
 
-        if (t.matches('.entity-list a')) {
+        if (t.matches('.entity-list-item  *')) {
             event.preventDefault();
             event.stopPropagation();
             let item = t.closest('[data-entity-type]');
@@ -84,12 +85,16 @@ class EntitySelector {
         let isDblClick = this.isDoubleClick();
         let type = item.getAttribute('data-entity-type');
         let id = item.getAttribute('data-entity-id');
-        let isSelected = item.classList.contains('selected') || isDblClick;
+        let isSelected = !item.classList.contains('selected') || isDblClick;
 
         this.unselectAll();
         this.input.value = isSelected ? `${type}:${id}` : '';
 
         if (!isSelected) window.$events.emit('entity-select-change', null);
+        if (isSelected) {
+            item.classList.add('selected');
+            item.classList.add('primary-background');
+        }
         if (!isDblClick && !isSelected) return;
 
         let link = item.querySelector('.entity-list-item-link').getAttribute('href');
@@ -110,4 +115,4 @@ class EntitySelector {
 
 }
 
-module.exports = EntitySelector;
\ No newline at end of file
+export default EntitySelector;
\ No newline at end of file