From b070a8101802c91203c575257be914127ff654a8 Mon Sep 17 00:00:00 2001 From: zlexif Date: Sat, 17 Jan 2026 20:55:51 +0200 Subject: [PATCH] revamp: redesigned menu for cleaner look --- client/main.lua | 28 ++-- fxmanifest.lua | 3 +- html/audio/press.wav | Bin 0 -> 145618 bytes html/index.html | 1 + html/script.js | 182 +++++++++++++---------- html/style.css | 347 ++++++++++++++++++++----------------------- 6 files changed, 285 insertions(+), 276 deletions(-) create mode 100644 html/audio/press.wav diff --git a/client/main.lua b/client/main.lua index b394a6b..90a3cdb 100644 --- a/client/main.lua +++ b/client/main.lua @@ -1,3 +1,4 @@ +---@diagnostic disable: missing-parameter, param-type-mismatch local QBCore = exports['qb-core']:GetCoreObject() RegisterNetEvent('QBCore:Client:UpdateObject', function() QBCore = exports['qb-core']:GetCoreObject() end) @@ -79,19 +80,17 @@ RegisterNUICallback('clickedButton', function(option, cb) cb('ok') return end - if data then - if data.params.event then - if data.params.isServer then - TriggerServerEvent(data.params.event, data.params.args) - elseif data.params.isCommand then - ExecuteCommand(data.params.event) - elseif data.params.isQBCommand then - TriggerServerEvent('QBCore:CallCommand', data.params.event, data.params.args) - elseif data.params.isAction then - data.params.event(data.params.args) - else - TriggerEvent(data.params.event, data.params.args) - end + if data and data.params and data.params.event then + if data.params.isServer then + TriggerServerEvent(data.params.event, data.params.args) + elseif data.params.isCommand then + ExecuteCommand(data.params.event) + elseif data.params.isQBCommand then + TriggerServerEvent('QBCore:CallCommand', data.params.event, data.params.args) + elseif data.params.isAction then + data.params.event(data.params.args) + else + TriggerEvent(data.params.event, data.params.args) end end end @@ -117,8 +116,7 @@ end) RegisterKeyMapping('playerFocus', 'Give Menu Focus', 'keyboard', 'LMENU') --- Exports exports('openMenu', openMenu) exports('closeMenu', closeMenu) -exports('showHeader', showHeader) +exports('showHeader', showHeader) \ No newline at end of file diff --git a/fxmanifest.lua b/fxmanifest.lua index 3f27cd6..f54353a 100644 --- a/fxmanifest.lua +++ b/fxmanifest.lua @@ -12,5 +12,6 @@ ui_page 'html/index.html' files { 'html/index.html', 'html/script.js', - 'html/style.css' + 'html/style.css', + 'html/audio/press.wav' } diff --git a/html/audio/press.wav b/html/audio/press.wav new file mode 100644 index 0000000000000000000000000000000000000000..d5c791579a5d7795a0719c1299fd61ffcfd2b3a4 GIT binary patch literal 145618 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 z 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
+
diff --git a/html/script.js b/html/script.js index 2a53e85..56d2d30 100644 --- a/html/script.js +++ b/html/script.js @@ -1,95 +1,123 @@ -let buttonParams = []; -let images = []; +let images = [] const openMenu = (data = null) => { - let html = ""; - data.forEach((item, index) => { - if(!item.hidden) { - let header = item.header; - let message = item.txt || item.text; - let isMenuHeader = item.isMenuHeader; - let isDisabled = item.disabled; - let icon = item.icon; - images[index] = item; - html += getButtonRender(header, message, index, isMenuHeader, isDisabled, icon); - if (item.params) buttonParams[index] = item.params; - } - }); + let html = "" + let titleHtml = "" + let startIndex = 0 - $("#buttons").html(html); + if (data[0] && data[0].isMenuTitle) { + titleHtml = `
${data[0].header}
` + startIndex = 1 + $("#menuTitle").show() + } else { + $("#menuTitle").hide() + } - $('.button').click(function() { - const target = $(this) - if (!target.hasClass('title') && !target.hasClass('disabled')) { - postData(target.attr('id')); - } - }); -}; + $("#menuTitle").html(titleHtml) + + for (let i = startIndex; i < data.length; i++) { + const item = data[i] + if (!item.hidden) { + const header = item.header + const message = item.txt || item.text + const isMenuHeader = item.isMenuHeader + const isDisabled = item.disabled + const icon = item.icon + images[i] = item + html += getButtonRender(header, message, i, isMenuHeader, isDisabled, icon) + } + } + + $("#buttons").html(html) + + $(".button").click(function () { + const target = $(this) + if (!target.hasClass("title") && !target.hasClass("disabled")) { + const audio = new Audio("./audio/press.wav"); + audio.volume = 0.7; + audio.play(); + postData(target.attr("id")) + } + }) +} + +// so nobody can inject weird stuff into the menu. +// I know it's basic, but it does the job +function escapeHtml(text) { + // If it's not a string, just return it as-is. + if (typeof text !== 'string') return text; + // Replace all the usual suspects with their HTML entities. + return text + .replace(/&/g, "&") + .replace(//g, ">") + .replace(/"/g, """) + .replace(/'/g, "'"); +} const getButtonRender = (header, message = null, id, isMenuHeader, isDisabled, icon) => { - return ` -
-
-
-
${header}
- ${message ? `
${message}
` : ""} -
-
- `; -}; + const safeHeader = escapeHtml(header); + const safeMessage = message ? escapeHtml(message) : null; + return ` +
+
+
+
${safeHeader}
+ ${safeMessage ? `
${safeMessage}
` : ""} +
+
+ ` +} const closeMenu = () => { - $("#buttons").html(" "); - $('#imageHover').css('display' , 'none'); - buttonParams = []; - images = []; -}; + $("#menuTitle").html("").hide() + $("#buttons").html(" ") + $("#imageHover").css("display", "none") + images = [] +} const postData = (id) => { - $.post(`https://${GetParentResourceName()}/clickedButton`, JSON.stringify(parseInt(id) + 1)); - return closeMenu(); -}; + $.post(`https://${GetParentResourceName()}/clickedButton`, JSON.stringify(Number.parseInt(id) + 1)) + return closeMenu() +} const cancelMenu = () => { - $.post(`https://${GetParentResourceName()}/closeMenu`); - return closeMenu(); -}; - - + $.post(`https://${GetParentResourceName()}/closeMenu`) + return closeMenu() +} window.addEventListener("message", (event) => { - const data = event.data; - const buttons = data.data; - const action = data.action; - switch (action) { - case "OPEN_MENU": - case "SHOW_HEADER": - return openMenu(buttons); - case "CLOSE_MENU": - return closeMenu(); - default: - return; - } -}); + const data = event.data + const buttons = data.data + const action = data.action + switch (action) { + case "OPEN_MENU": + case "SHOW_HEADER": + return openMenu(buttons) + case "CLOSE_MENU": + return closeMenu() + default: + return + } +}) -window.addEventListener('mousemove', (event) => { - let $target = $(event.target); - if ($target.closest('.button:hover').length && $('.button').is(":visible")) { - let id = event.target.id; - if (!images[id]) return - if (images[id].image) { - $('#image').attr('src', images[id].image); - $('#imageHover').css('display' , 'block'); - } - } - else { - $('#imageHover').css('display' , 'none'); +window.addEventListener("mousemove", (event) => { + const $target = $(event.target) + if ($target.closest(".button:hover").length && $(".button").is(":visible")) { + const id = event.target.id + if (!images[id]) return + if (images[id].image) { + $("#image").attr("src", images[id].image) + $("#imageHover").css("display", "block") } + } else { + $("#imageHover").css("display", "none") + } }) -document.onkeyup = function (event) { - const charCode = event.key; - if (charCode == "Escape") { - cancelMenu(); - } -}; +document.onkeyup = (event) => { + const charCode = event.key + if (charCode == "Escape") { + cancelMenu() + } +} diff --git a/html/style.css b/html/style.css index 76cd744..10f6de6 100644 --- a/html/style.css +++ b/html/style.css @@ -1,242 +1,223 @@ -@import url("https://fonts.googleapis.com/css2?family=Exo+2:wght@300;400;500;600;700&display=swap"); - -:root { - /* Colors */ - --md-primary: #f44336; - --md-on-primary: #ffffff; - --md-primary-container: #ffdad6; - --md-on-primary-container: #410002; - --md-secondary: #d32f2f; - --md-on-secondary: #ffffff; - --md-secondary-container: #ffdad5; - --md-on-secondary-container: #410001; - --md-tertiary: #ff8a65; - --md-on-tertiary: #ffffff; - --md-tertiary-container: #ffdacc; - --md-on-tertiary-container: #410002; - --md-surface: #1c1b1f; - --md-on-surface: #e6e1e5; - --md-surface-container-lowest: #0f0d13; - --md-surface-container-low: #1d1b20; - --md-surface-container: #211f26; - --md-surface-container-high: #2b2930; - --md-surface-container-highest: #36343b; - --md-error: #b3261e; - --md-on-error: #ffffff; - --md-error-container: #93000a; - --md-on-error-container: #ffdad5; - --md-outline: #79747e; - --md-outline-variant: #49454f; - --md-inverse-surface: #e6e1e5; - --md-inverse-on-surface: #1c1b1f; - --md-scrim: rgba(0, 0, 0, 0.6); - --md-shadow: rgba(0, 0, 0, 0.15); - - /* Typography */ - --md-typescale-body-large-size: 16px; - --md-typescale-body-medium-size: 14px; - --md-typescale-body-small-size: 12px; - --md-typescale-label-large-size: 14px; - --md-typescale-label-medium-size: 12px; - - /* Shapes */ - --md-radius-small: 8px; - --md-radius-medium: 12px; - - /* Elevation */ - --md-elevation-1: 0px 1px 3px 1px rgba(0, 0, 0, 0.15); - --md-elevation-2: 0px 2px 6px 2px rgba(0, 0, 0, 0.15); - - /* Font */ - --font-primary: "Exo 2", sans-serif; - --font-weight-regular: 400; - --font-weight-medium: 500; -} +@import url("https://fonts.googleapis.com/css2?family=Poppins:wght@300;500&display=swap"); * { - padding: 0; - margin: 0; - font-family: var(--font-primary); - font-weight: 300; + padding: 0; + margin: 0; + font-family: "Poppins", sans-serif; + font-weight: 300; } @media (width: 3840px) and (height: 2160px) { - #container { - position: absolute; - font-size: 25px !important; - height: auto; - top: 20%; - right: 20%; - background: transparent !important; - } - - #buttons { - font-size: 25px !important; - max-height: 75vh; - width: 300px; - overflow-x: none; - overflow-y: auto; - padding: 10px; - } - - div > .text { - flex-direction: column; - font-size: 25px !important; - overflow: hidden; - } - - div > .header { - width: 100%; - max-width: 100%; - display: flex; - align-items: center; - position: relative; - justify-content: left; - overflow: wrap; - color: var(--md-on-surface); - font-size: 25px !important; - font-weight: var(--font-weight-medium); - overflow: hidden; - } -} - -/* width */ + #container { + position: absolute; + font-size: 25px !important; + height: auto; + top: 20%; + right: 20%; + border-radius: 5px; + background: transparent !important; + } + + #buttons { + font-size: 25px !important; + max-height: 75vh; + width: 300px; + overflow-x: none; + overflow-y: auto; + padding: 10px; + } + + div > .text { + flex-direction: column; + font-size: 25px !important; + overflow: hidden; + } + + div > .header { + width: 100%; + max-width: 100%; + display: flex; + align-items: center; + position: relative; + justify-content: left; + overflow: wrap; + color: white; + font-size: 25px !important; + font-weight: 400; + overflow: hidden; + } +} + ::-webkit-scrollbar { - width: 10px; + width: 10px; } -/* Track */ ::-webkit-scrollbar-track { - background: var(--md-surface-container-low); + background: rgba(255, 255, 255, 0.05); + border-radius: 10px; } -/* Handle */ ::-webkit-scrollbar-thumb { - background: var(--md-surface-container-high); + background: rgba(255, 255, 255, 0.2); + border-radius: 10px; + border: 1px solid rgba(255, 255, 255, 0.1); + transition: background 0.3s ease; +} + +::-webkit-scrollbar-thumb:hover { + background: rgba(255, 255, 255, 0.3); } #container { - position: absolute; - height: auto; - top: 20%; - right: 20%; - background: transparent !important; + position: absolute; + height: auto; + top: 20%; + right: 20%; + border-radius: 5px; + background: transparent !important; } .button { - cursor: pointer; - display: flex; - flex-direction: row !important; - gap: 10px; + cursor: pointer; + display: flex; + flex-direction: row !important; + gap: 10px; } .title { - cursor: default; - gap: 10px; - display: flex; - flex-direction: row !important; + cursor: default; + gap: 10px; + display: flex; + flex-direction: row !important; } #buttons { - max-height: 75vh; - width: 300px; - overflow-x: none; - overflow-y: auto; - padding: 10px; + max-height: 75vh; + width: 300px; + overflow-x: none; + overflow-y: auto; + padding: 10px; } html, body { - background: transparent !important; + background: transparent !important; +} + +#menuTitle { + width: 100%; + padding: 0.75rem 0.45rem; + margin-bottom: 0.5rem; + border-bottom: 2px solid #dc143c; + color: #dc143c; + font-size: 1.1rem; + font-weight: 500; + letter-spacing: 0.5px; + text-transform: uppercase; +} + +.menu-title { + color: #dc143c; + font-weight: 500; + text-shadow: 0 0 10px rgba(220, 20, 60, 0.3); } .button { - width: auto; - height: 10%; - background: var(--md-surface-container); - color: var(--md-on-surface); - margin: auto; - position: relative; - top: 10%; - margin-top: 0.5rem; - overflow: hidden; - padding: 0.45rem; - display: flex; - flex-direction: column; - box-shadow: var(--md-elevation-1); - cursor: pointer; + width: auto; + height: 10%; + background: rgba(255, 255, 255, 0.08); + color: rgba(255, 255, 255, 0.95); + margin: auto; + position: relative; + top: 10%; + margin-top: 0.5rem; + overflow: hidden; + padding: 0.45rem; + border-radius: 0.15rem; + display: flex; + flex-direction: column; + border: 1px solid rgba(255, 255, 255, 0.15); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.1); + cursor: pointer; + transition: all 0.3s ease; } .icon { - display: flex; - align-items: center; - position: relative; - justify-content: left; + display: flex; + align-items: center; + position: relative; + justify-content: left; } .button:hover { - background-color: var(--md-primary); + background: rgba(255, 255, 255, 0.12); + border-color: #dc143c; + box-shadow: 0 4px 16px rgba(220, 20, 60, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.15); + color: #dc143c; } .title { - width: auto; - height: 10%; - background: var(--md-surface-container-high); - color: var(--md-on-surface); - margin: auto; - position: relative; - top: 10%; - margin-top: 0.5rem; - overflow: hidden; - padding: 0.45rem; - display: flex; - flex-direction: column; - box-shadow: var(--md-elevation-1); + width: auto; + height: 10%; + background: rgba(255, 255, 255, 0.1); + color: rgba(255, 255, 255, 0.95); + margin: auto; + position: relative; + top: 10%; + margin-top: 0.5rem; + overflow: hidden; + padding: 0.45rem; + border-radius: 0.15rem; + display: flex; + flex-direction: column; + border: 1px solid rgba(255, 255, 255, 0.2); + box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15), inset 0 1px 0 rgba(255, 255, 255, 0.12); + transition: all 0.3s ease; } .title > div.column > div.header { - text-decoration: underline !important; - font-family: var(--font-primary); - font-weight: var(--font-weight-medium); + text-decoration: underline !important; + color: #dc143c; } .disabled { - background: var(--md-surface-container-lowest) !important; - color: var(--md-outline); - cursor: default; + background: rgba(255, 255, 255, 0.04) !important; + border-color: rgba(255, 255, 255, 0.08) !important; + color: rgba(255, 255, 255, 0.5) !important; + cursor: default; + box-shadow: 0 2px 6px rgba(0, 0, 0, 0.08), inset 0 1px 0 rgba(255, 255, 255, 0.05) !important; } div > .text { - flex-direction: column; - font-size: var(--md-typescale-body-small-size); - overflow: hidden; + flex-direction: column; + font-size: 0.75rem; + overflow: hidden; + color: rgba(255, 255, 255, 0.75); } div > .header { - width: 100%; - max-width: 100%; - display: flex; - align-items: center; - position: relative; - justify-content: left; - overflow: wrap; - color: var(--md-on-surface); - font-size: var(--md-typescale-body-medium-size); - font-weight: var(--font-weight-medium); - font-family: var(--font-primary); - overflow: hidden; + width: 100%; + max-width: 100%; + display: flex; + align-items: center; + position: relative; + justify-content: left; + overflow: wrap; + color: rgba(255, 255, 255, 0.95); + font-size: 0.9rem; + font-weight: 400; + overflow: hidden; } #imageHover { - position: absolute; - top: 10%; - right: 25em; + position: absolute; + top: 10%; + right: 25em; } #image { - src: ""; - max-height: 40vh; - max-width: 40vw; - object-fit: scale-down; - box-shadow: var(--md-elevation-2); + src: ""; + max-height: 40vh; + max-width: 40vw; + object-fit: scale-down; }