]> _ Git - odl.git/commitdiff
wip #5181 @1
authorvincent <vincent@enhydra.fr>
Sat, 26 Mar 2022 14:28:33 +0000 (15:28 +0100)
committervincent <vincent@enhydra.fr>
Sat, 26 Mar 2022 14:28:33 +0000 (15:28 +0100)
resources/js/alpine.js
resources/js/search.js
resources/views/components/search.blade.php

index 87e1ef24d61924c773ca8851687e0d1c6f4a672a..956f35ada38fd37fd23a25ae28b01d29f3636a25 100644 (file)
@@ -3,7 +3,6 @@ import Alpine from 'alpinejs';
 import intersect from '@alpinejs/intersect';
 import media_library from './media-library';
 import search from './search';
-
 window.Alpine = Alpine;
 
 // Plugins
@@ -14,9 +13,3 @@ Alpine.data('media_library', media_library);
 Alpine.data('search', search);
 
 Alpine.start();
-
-setInterval(function () {
-    Alpine.discoverUninitializedComponents(function (el) {
-        Alpine.initializeComponent(el)
-    })
-}, 1000);
index 209c33859588d28023aba721f33f9de431bc5271..311427e2615a5424e24a3cd2ee290b0d10e437cd 100644 (file)
@@ -32,7 +32,7 @@ export default () => ({
         // Result links have differing attributes, so we need this function to be able to generate the HTML correctly
         // This can't be done directly in the x-for template loop
         let URL = result.url;
-        let attributes = '';
+        let click = 'return true;';
 
         // Media items get displayed on the media library page (simpler this way so extra JSON object isn't needed)
         if (result.type === 'video' || result.type === 'audio') {
@@ -41,10 +41,9 @@ export default () => ({
 
         // PDFs can be opened directly
         if (result.type === 'pdf') {
-            attributes = '@click.prevent="console.log($el.attributes.href.value); openPDF($el.attributes.href.value); closeSearch();"';
+            click = 'console.log($el.attributes.href.value); openPDF($el.attributes.href.value); closeSearch(); return false;';
         }
-
-        return `<a href="${URL}" class="${classes}" ${attributes}>${result.displayedTitle}</a>`;
+        return {url: URL, click: click, classes: classes, displayedTitle: result.displayedTitle};
     },
 
     get results() {
@@ -53,6 +52,7 @@ export default () => ({
         }
 
         var res = this.miniSearch.search(this.query);
+
         return res;
     },
 
index b4aba50da5dbe505b9d95cd34b064e21e3e3827e..3b68a99776244f45655d10c8a054c4a3b1b69cdd 100644 (file)
@@ -70,7 +70,9 @@
             <div class="h-full max-h-full overflow-y-auto">
                 <template x-for="result in results" :key="result.id">
                     <div class="py-8 border-b border-black border-opacity-20">
-                        <div x-html="makeResultLink(result, 'text-2xl text-blue')"></div>
+                        <div x-model="makeResultLink(result, 'text-2xl text-blue')">
+                            <a x-bind:href="url" x-bind:class="classes" x-text="displayedTitle" @click="click"></a>
+                        </div>
                         <p x-text="result.text" class="mt-2 line-clamp-1"></p>
                     </div>
                 </template>