1import { Controller } from "@hotwired/stimulus"; 2 3export default class extends Controller { 4 static get targets() { 5 return [ 6 "searchPopup", 7 "talentPreview", 8 "wishlist", 9 "talentContactForm", 10 "talentContactName", 11 "talentContactSlug", 12 "talentContactTag", 13 "formSuccess", 14 ]; 15 } 16 17 toggleTalentContactPopup(event) { 18 this.talentContactNameTarget.innerText = 19 this.talentContactFormTarget.getAttribute("data-talent-hidden-name"); 20 this.talentContactSlugTarget.innerText = 21 this.talentContactFormTarget.getAttribute("data-talent-slug"); 22 this.talentContactTagTarget.innerText = 23 this.talentContactFormTarget.getAttribute("data-talent-tag"); 24 if (this.talentContactFormTarget.classList.contains("hidden")) { 25 this.talentContactFormTarget.classList.remove("hidden"); 26 } else if (event.type == "click") { 27 this.talentContactFormTarget.classList.add("hidden"); 28 frame.innerHTML = '<div class="spinner"></div>'; 29 frame.reload(); 30 } else { 31 if (event.detail.success) { 32 this.talentContactFormTarget.classList.add("hidden"); 33 this.formSuccessTarget.classList.remove("hidden"); 34 setTimeout(() => { 35 this.formSuccessTarget.classList.add("hidden"); 36 }, 5000); 37 38 frame.innerHTML = '<div class="spinner"></div>'; 39 frame.reload(); 40 } else { 41 event.detail.fetchResponse.response.json().then((response) => { 42 Object.keys(response).forEach((key) => { 43 var newError = document.createElement("div"); 44 newError.innerHTML = `<span style="color: #ac1a2f">${response[key]}</span>`; 45 event.detail.formSubmission.formElement 46 .querySelector("#errors") 47 .appendChild(newError); 48 }); 49 }); 50 } 51 } 52 } 53 54 toggleWishlistPopup(event) { 55 const frame = document.getElementById("turbo-wishlist"); 56 console.log(event); 57 if (this.wishlistTarget.classList.contains("hidden")) { 58 this.wishlistTarget.classList.remove("hidden"); 59 frame.innerHTML = '<div class="spinner"></div>'; 60 frame.reload(); 61 } else if (event.type == "click") { 62 this.wishlistTarget.classList.add("hidden"); 63 frame.innerHTML = '<div class="spinner"></div>'; 64 frame.reload(); 65 } else { 66 if (event.detail.success) { 67 this.wishlistTarget.classList.add("hidden"); 68 this.formSuccessTarget.classList.remove("hidden"); 69 setTimeout(() => { 70 this.formSuccessTarget.classList.add("hidden"); 71 }, 5000); 72 73 frame.innerHTML = '<div class="spinner"></div>'; 74 frame.reload(); 75 } else { 76 event.detail.fetchResponse.response.json().then((response) => { 77 Object.keys(response).forEach((key) => { 78 var newError = document.createElement("div"); 79 newError.innerHTML = `<span style="color: #ac1a2f">${response[key]}</span>`; 80 event.detail.formSubmission.formElement 81 .querySelector("#errors") 82 .appendChild(newError); 83 }); 84 }); 85 } 86 } 87 } 88 89 formSuccessTargetConnected() { 90 console.log("formSuccessTargetConnected"); 91 } 92 93 closeFormSuccess() { 94 this.formSuccessTarget.classList.add("hidden"); 95 } 96 97 toggleSearchPopup() { 98 if (this.searchPopupTarget.classList.contains("hidden")) { 99 this.searchPopupTarget.classList.remove("hidden"); 100 } else { 101 this.searchPopupTarget.classList.add("hidden"); 102 } 103 } 104 105 togglePreviewPopup(event) { 106 event.stopPropagation(); 107 event.preventDefault(); 108 109 const frame = document.getElementById("preview-model"); 110 frame.innerHTML = '<div class="spinner"></div>'; 111 const slug = event.currentTarget.getAttribute("data-talent-slug"); 112 const path = event.currentTarget.getAttribute("data-talent-preview-path"); 113 114 if (this.talentPreviewTarget.classList.contains("hidden")) { 115 frame.setAttribute("src", `${path}${slug}`); 116 this.talentPreviewTarget.classList.remove("hidden"); 117 } else { 118 this.talentPreviewTarget.classList.add("hidden"); 119 } 120 } 121};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.