./webpack: use vanilla js instead of jquery
This commit is contained in:
parent
c31d457506
commit
1674bcaaeb
|
@ -1,53 +1,59 @@
|
||||||
// @ts-check
|
// @ts-check
|
||||||
|
|
||||||
require("bootstrap");
|
import "bootstrap";
|
||||||
|
|
||||||
function initDownloadButton() {
|
function initDownloadButton() {
|
||||||
const buttons = $(".download-btn");
|
const downloadButton = document.querySelector(".download-btn");
|
||||||
if (buttons.length <= 0) {
|
if (downloadButton) {
|
||||||
return;
|
fetch("https://api.github.com/repos/lektor/lektor/releases", {
|
||||||
}
|
|
||||||
|
|
||||||
$.ajax({
|
|
||||||
method: "GET",
|
method: "GET",
|
||||||
url: "https://api.github.com/repos/lektor/lektor/releases",
|
})
|
||||||
crossDomain: true,
|
.then((res) => res.json())
|
||||||
}).then((releases) => {
|
.then((releases) => {
|
||||||
updateDownloadButtons(buttons.toArray(), releases);
|
const tag = releases[0].tag_name;
|
||||||
|
const link = downloadButton.querySelector("a");
|
||||||
|
if (link) {
|
||||||
|
const span = document.createElement("span");
|
||||||
|
span.className = "version";
|
||||||
|
span.innerText = tag;
|
||||||
|
link.append(span);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.catch((err) => {
|
||||||
|
console.error(
|
||||||
|
"fetching the latest Lektor version from the Github API failed: ",
|
||||||
|
err
|
||||||
|
);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateDownloadButtons(buttons, releases) {
|
|
||||||
let tag = releases[0].tag_name;
|
|
||||||
|
|
||||||
buttons.forEach((button) => {
|
|
||||||
let link = $("a", button);
|
|
||||||
|
|
||||||
link.attr("href", "/downloads/");
|
|
||||||
link.append($('<span class="version"></span>').text(tag));
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function initGoogleSearch() {
|
function initGoogleSearch() {
|
||||||
var container = $(".google-custom-search");
|
const container = document.querySelector(".google-custom-search");
|
||||||
if (container.length == 0) {
|
if (!container) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
var cx = "012722186170730423054:utwznhnrrmi";
|
const cx = "012722186170730423054:utwznhnrrmi";
|
||||||
var gcse = document.createElement("script");
|
const gcse = document.createElement("script");
|
||||||
gcse.type = "text/javascript";
|
gcse.type = "text/javascript";
|
||||||
gcse.async = true;
|
gcse.async = true;
|
||||||
gcse.src =
|
gcse.src =
|
||||||
(document.location.protocol == "https:" ? "https:" : "http:") +
|
(document.location.protocol == "https:" ? "https:" : "http:") +
|
||||||
"//cse.google.com/cse.js?cx=" +
|
"//cse.google.com/cse.js?cx=" +
|
||||||
cx;
|
cx;
|
||||||
var s = document.getElementsByTagName("script")[0];
|
const firstScript = document.getElementsByTagName("script")[0];
|
||||||
s.parentNode.insertBefore(gcse, s);
|
if (!firstScript || !firstScript.parentNode) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
firstScript.parentNode.insertBefore(gcse, firstScript);
|
||||||
|
|
||||||
$(`
|
container.insertAdjacentHTML(
|
||||||
<gcse:searchresults-only linktarget="_parent"></gcse:searchresults-only>
|
"beforeend",
|
||||||
`).appendTo(container);
|
`<gcse:searchresults-only linktarget="_parent"></gcse:searchresults-only>`
|
||||||
$(`
|
);
|
||||||
|
container.insertAdjacentHTML(
|
||||||
|
"beforeend",
|
||||||
|
`
|
||||||
<div style="display: none">
|
<div style="display: none">
|
||||||
<div id="base_webResult">
|
<div id="base_webResult">
|
||||||
<div class="gs-webResult gs-result"
|
<div class="gs-webResult gs-result"
|
||||||
|
@ -69,16 +75,20 @@ function initGoogleSearch() {
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
`).appendTo(container);
|
`
|
||||||
|
);
|
||||||
|
|
||||||
const params = new URLSearchParams(location.search);
|
const params = new URLSearchParams(location.search);
|
||||||
const query = params.get("q");
|
const query = params.get("q");
|
||||||
if (query) {
|
if (query) {
|
||||||
$('input[name="q"]', container).val(query);
|
const input = container.querySelector('input[name="q"]');
|
||||||
|
if (input instanceof HTMLInputElement) {
|
||||||
|
input.value = query;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$(function () {
|
window.addEventListener("DOMContentLoaded", () => {
|
||||||
initDownloadButton();
|
initDownloadButton();
|
||||||
initGoogleSearch();
|
initGoogleSearch();
|
||||||
});
|
});
|
||||||
|
|
|
@ -43,7 +43,6 @@ const options = {
|
||||||
},
|
},
|
||||||
plugins: [
|
plugins: [
|
||||||
new webpack.ProvidePlugin({
|
new webpack.ProvidePlugin({
|
||||||
$: "jquery",
|
|
||||||
jQuery: "jquery",
|
jQuery: "jquery",
|
||||||
}),
|
}),
|
||||||
new MiniCssExtractPlugin(),
|
new MiniCssExtractPlugin(),
|
||||||
|
|
Loading…
Reference in New Issue