diff options
Diffstat (limited to 'source/js/script.js')
-rw-r--r-- | source/js/script.js | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/source/js/script.js b/source/js/script.js new file mode 100644 index 0000000..eb6bff5 --- /dev/null +++ b/source/js/script.js @@ -0,0 +1,66 @@ +"use strict"; +/* Add elements listener */ +window.addEventListener("load", function () { + // Menubar burgers click listenr + var burgers = Array.prototype.slice.call(document.querySelectorAll(".navbar-burger"), 0); + if (burgers.length > 0) { + burgers.forEach(function (element) { + element.addEventListener("click", function () { + var idstr = element.getAttribute("data-target"); + element.classList.toggle("is-active"); + if (!idstr) + return; + var target = document.getElementById(idstr); + target === null || target === void 0 ? void 0 : target.classList.toggle("is-active"); + }, false); + }); + } + // Add header hover page class changer + darklistener.add(function (mode) { + var page = document.getElementById("header-page"); + if (mode === SystemDarkmodePrefrence.dark) { + page === null || page === void 0 ? void 0 : page.classList.add("is-dark"); + page === null || page === void 0 ? void 0 : page.classList.remove("is-light"); + } + else { + page === null || page === void 0 ? void 0 : page.classList.add("is-light"); + page === null || page === void 0 ? void 0 : page.classList.remove("is-dark"); + } + }); +}); +/* Darkmode listener */ +var SystemDarkmodePrefrence; +(function (SystemDarkmodePrefrence) { + SystemDarkmodePrefrence[SystemDarkmodePrefrence["dark"] = 0] = "dark"; + SystemDarkmodePrefrence[SystemDarkmodePrefrence["light"] = 1] = "light"; +})(SystemDarkmodePrefrence || (SystemDarkmodePrefrence = {})); +; +var DarkmodeListener = /** @class */ (function () { + function DarkmodeListener() { + var darking = window.matchMedia('(prefers-color-scheme: dark)').matches; + this._mode = darking ? SystemDarkmodePrefrence.dark : SystemDarkmodePrefrence.light; + this._handlers = []; + this._listen(); + } + DarkmodeListener.prototype._listen = function () { + var _this = this; + var media = window.matchMedia('(prefers-color-scheme: dark)'); + var callback = function (event) { + var mode = event.matches ? SystemDarkmodePrefrence.dark : SystemDarkmodePrefrence.light; + _this._handlers.forEach(function (handler) { + handler(mode); + }); + _this._mode = mode; + }; + media.addEventListener("change", callback); + }; + DarkmodeListener.prototype.add = function (callback) { + this._handlers.push(callback); + }; + DarkmodeListener.prototype.mode = function () { + return this._mode; + }; + return DarkmodeListener; +}()); +; +var darklistener = new DarkmodeListener(); |