From c3f639315d6919a33bcccb4e57fd1eb49e38e4f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Munsch?= Date: Wed, 10 Jan 2024 18:14:33 +0100 Subject: [PATCH] Some Layout + successfull pass data between main and render + Toast system --- app.vue | 61 ++++++++------ assets/.gitkeep | 0 assets/Logo-LDC.jpg | Bin 0 -> 6961 bytes assets/layout/ldc-intl.png | Bin 0 -> 95171 bytes classes/AppState.ts | 25 +++++- classes/Toast.ts | 42 ++++++++++ components/ToastContainer.vue | 74 +++++++++++++++++ components/layout/AppFooter.vue | 54 +++++++++++++ components/layout/AppHeader.vue | 81 +++++++++++++++++++ electron/BrowserWinHandler.ts | 12 +-- electron/main.ts | 28 +++++-- electron/preload.ts | 22 +++++ electron/preload/versions.ts | 9 --- index.d.ts | 5 ++ nuxt.config.ts | 9 ++- package-lock.json | 139 +++++++++++++++++++++++++++++++- package.json | 4 + pages/brands/[slug].vue | 52 ++++++++++++ pages/index.vue | 21 +++-- pages/ranges/[slug].vue | 8 +- plugins/boostrap.ts | 25 +++++- static/scss/_variables.scss | 2 +- static/scss/bootstrap.scss | 1 + static/scss/layout.scss | 16 ++++ vueModules/bsTooltips.ts | 26 ++++++ 25 files changed, 646 insertions(+), 70 deletions(-) delete mode 100644 assets/.gitkeep create mode 100644 assets/Logo-LDC.jpg create mode 100644 assets/layout/ldc-intl.png create mode 100644 classes/Toast.ts create mode 100644 components/ToastContainer.vue create mode 100644 components/layout/AppFooter.vue create mode 100644 components/layout/AppHeader.vue create mode 100644 electron/preload.ts delete mode 100644 electron/preload/versions.ts create mode 100644 pages/brands/[slug].vue create mode 100644 vueModules/bsTooltips.ts diff --git a/app.vue b/app.vue index d242ed5..f69777f 100644 --- a/app.vue +++ b/app.vue @@ -1,12 +1,21 @@ @@ -26,7 +35,6 @@ import KonamiCode from "konami-code-js"; import Swal from "sweetalert2"; import { defineComponent } from "vue"; import AppState from "./classes/AppState"; -import dataJson from "./src/assets/data.json"; import data from "data/test.json"; export default defineComponent({ @@ -37,7 +45,6 @@ export default defineComponent({ modal: Modal; adminModal: Modal; data: typeof data; - dataJson: TypeApp; selectedItem: Item | null; konami: KonamiCode; contacts: Array; @@ -46,7 +53,6 @@ export default defineComponent({ modalId: "productModal", adminModalId: "adminModal", data, - dataJson, selectedItem: null, modal: {} as Modal, adminModal: {} as Modal, @@ -54,9 +60,8 @@ export default defineComponent({ contacts: [] }; }, - computed: { - }, - watch :{ + computed: {}, + watch: { selectedItem() { this.$nextTick(() => { if (!Object.entries(this.modal).length) { @@ -74,14 +79,12 @@ export default defineComponent({ // * Make sure array does not start using 0 index const items: typeof data.items = []; this.data.items.forEach((item, itemIndex) => { - items[itemIndex +1] = item; + items[itemIndex + 1] = item; }); this.data.items = items; - // * Init contacts (Fetch form local storage or new) const serializedContacts = window.localStorage.getItem("contacts"); this.contacts = !serializedContacts ? new Array() : JSON.parse(serializedContacts); - // * Hidden action and modal show this.konami = new KonamiCode(() => { this.$nextTick(() => { @@ -97,20 +100,20 @@ export default defineComponent({ }); // * Set Data State - useState("dataJson", () => new AppState(this.dataJson)); + window.ipcRendererObject.getJsonData().then((dataJson) => + useState("dataJson", () => new AppState(dataJson))); + useState("brands", () => []); }, methods: { itemClicked(item: Item): void { this.selectedItem = item; }, - isMultOf(numerator:number, divider: number):boolean { + isMultOf(numerator: number, divider: number): boolean { return numerator % divider === 0; }, SaveContact(contact: Contact) { this.contacts.push(contact); - window.localStorage.setItem("contacts", JSON.stringify(this.contacts)); - this.modal.hide(); this.$nextTick(() => this.ShowConfirmedInscription()); }, @@ -134,6 +137,18 @@ export default defineComponent({ background: getComputedStyle(document.body).getPropertyValue("--bs-body-bg") }); }, - }, + } }); + + diff --git a/assets/.gitkeep b/assets/.gitkeep deleted file mode 100644 index e69de29..0000000 diff --git a/assets/Logo-LDC.jpg b/assets/Logo-LDC.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac357fe014dc879c03aeb81036554224876ab47a GIT binary patch literal 6961 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 a{~H2mDk%JkGQ<<+y?v2Uk*<+63H=`$ { return this.jsonData.items; } - public brand(id:number): TypeBrand|undefined { - return this.jsonData.items.find(brand => brand.id === id); + public brand(slug:string): TypeBrand|undefined { + return this.jsonData.items.find(brand => brand.slug === slug); } + + public useBrand(brand: TypeBrand) { + this.selectedBrand = brand; + clearNuxtState("brands"); + useState("brands", (): Array => brand.ranges); + } + + // * --- END BRANDS + + // * --- RANGES + + public ranges(): Array { + return useState("brands", (): Array => []).value; + } + + // * --- END RANGES } diff --git a/classes/Toast.ts b/classes/Toast.ts new file mode 100644 index 0000000..da85443 --- /dev/null +++ b/classes/Toast.ts @@ -0,0 +1,42 @@ +import log from "electron-log"; + +export enum ToastTypeEnum { + default = "default", + success = "success", + info = "info", + error = "error", + warning = "warning", +} + +export const ToastType = Object.freeze({ + default: ToastTypeEnum.default, + success: ToastTypeEnum.success, + info: ToastTypeEnum.info, + error: ToastTypeEnum.error, + warning: ToastTypeEnum.warning, +}); + +export default abstract class Toast { + + /** Affiche un toast message */ + public static toast(message: string, type: ToastTypeEnum = ToastType.default, title: string|null = null):void { + const toast = useState("toastMessage").value as (message: string, type: ToastTypeEnum, title:string|null) => void; + toast(message, type, title); + const prefix: string = `${type.toLowerCase()} : `; + switch (type) { + case ToastType.info: + log.info(prefix, message); + break; + case ToastType.warning: + log.warn(prefix, message); + break; + case ToastType.error: + log.error(prefix, message); + break; + case ToastType.default: + case ToastType.success: + default: + log.verbose(prefix, message); + } + } +} diff --git a/components/ToastContainer.vue b/components/ToastContainer.vue new file mode 100644 index 0000000..966ebf9 --- /dev/null +++ b/components/ToastContainer.vue @@ -0,0 +1,74 @@ + + + diff --git a/components/layout/AppFooter.vue b/components/layout/AppFooter.vue new file mode 100644 index 0000000..266a6f6 --- /dev/null +++ b/components/layout/AppFooter.vue @@ -0,0 +1,54 @@ + + + diff --git a/components/layout/AppHeader.vue b/components/layout/AppHeader.vue new file mode 100644 index 0000000..f48580d --- /dev/null +++ b/components/layout/AppHeader.vue @@ -0,0 +1,81 @@ + + + + + + + + diff --git a/electron/BrowserWinHandler.ts b/electron/BrowserWinHandler.ts index 54da004..3d80384 100644 --- a/electron/BrowserWinHandler.ts +++ b/electron/BrowserWinHandler.ts @@ -83,17 +83,7 @@ export default class BrowserWinHandler { if (!this.browserWindow) return Promise.reject(new Error('The page could not be loaded before win \'created\' event')) const serverUrl = isDev ? DEV_SERVER_URL : 'app://./index.html' const fullPath = serverUrl + '/' + pagePath; - await this.browserWindow.loadURL(fullPath) - } - - /** - * - * @returns {Promise} - */ - created () { - return new Promise(resolve => { - this.onCreated(() => resolve(this.browserWindow)) - }) + return this.browserWindow.loadURL(fullPath); } /** diff --git a/electron/main.ts b/electron/main.ts index ba3f039..a54db9c 100755 --- a/electron/main.ts +++ b/electron/main.ts @@ -1,3 +1,4 @@ +import fs from "node:fs"; import path from "node:path"; import { app, ipcMain } from "electron"; import log from "electron-log/main"; @@ -7,6 +8,17 @@ import UnzipData from "./UnzipData"; // TODO: take inspiration form https://github.com/michalzaq12/electron-nuxt/tree/master/template/src/main. // Or https://github.com/EternalC0der/electron-nuxt3 +const packageJson = JSON.parse(fs.readFileSync( + path.join(__dirname, "../package.json"), + { encoding: "utf8", flag: "r" }) +); + +export const appInfo = { + version: String(packageJson.version), + name: String(packageJson.name), + licence: String(packageJson.licence) +}; + log.initialize(); // Quit when all windows are closed. @@ -19,13 +31,16 @@ app.on("window-all-closed", function () { app.whenReady().then(() => { // * Run an Electron window ? const winHandler = new BrowserWinHandler({ - kiosk: false, + // width: 1280, + // height: 900, + center: true, + kiosk: true, closable: true, alwaysOnTop: false, - fullscreen: false, + fullscreen: true, autoHideMenuBar: false, webPreferences: { - preload: path.join(__dirname, "versions.js") + preload: path.join(__dirname, "preload.js") } }); @@ -35,13 +50,10 @@ app.whenReady().then(() => { if (!appData) { throw new Error("No zip file to load"); } - // this is the event listener that will respond when we will request it in the web page - ipcMain.on("get-config", (event) => { - log.info("read json app config"); - event.returnValue = appData; - }); winHandler.loadPage("ranges"); + ipcMain.handle("appInfo", () => appInfo); + ipcMain.handle("channel", () => appData); winHandler.openDevTool(); } catch (err) { log.error(err); diff --git a/electron/preload.ts b/electron/preload.ts new file mode 100644 index 0000000..416591d --- /dev/null +++ b/electron/preload.ts @@ -0,0 +1,22 @@ +import { contextBridge, ipcRenderer } from "electron"; +import type { appInfo } from "./main"; + +export const versions = { + node: (): string => process.versions.node, + chrome: (): string => process.versions.chrome, + electron: (): string => process.versions.electron, + // Nous pouvons exposer des variables en plus des fonctions + isDebug: process.env.NODE_ENV === "development" +}; + +export const ipcRendererObject = { + getAppInfo: (): Promise => { return ipcRenderer.invoke("appInfo"); }, + getJsonData: (): Promise => { return ipcRenderer.invoke("channel"); } +}; + + +process.once("loaded", () => { + // This runs in sandboxed mode. + contextBridge.exposeInMainWorld("versions", versions); + contextBridge.exposeInMainWorld("ipcRendererObject", ipcRendererObject); +}); diff --git a/electron/preload/versions.ts b/electron/preload/versions.ts deleted file mode 100644 index 565fc15..0000000 --- a/electron/preload/versions.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { contextBridge } from "electron"; - -// This runs in sandboxed mode. -contextBridge.exposeInMainWorld("versions", { - node: () => process.versions.node, - chrome: () => process.versions.chrome, - electron: () => process.versions.electron - // Nous pouvons exposer des variables en plus des fonctions -}); diff --git a/index.d.ts b/index.d.ts index 02820dd..3f55927 100644 --- a/index.d.ts +++ b/index.d.ts @@ -1,6 +1,7 @@ export { }; import type { RouteLocation as NRouteLocation } from "vue-router"; + import type { ipcRendererObject, versions } from "./electron/preload"; // * --- MODELS From JSON Schema @@ -125,10 +126,14 @@ declare global { type TypeRange = RangeModel; type TypeProduct = ProductModel; + type ToastTypeEnum = ToastType; + // Nuxt type RouteLocation = NRouteLocation; interface Window { + versions: typeof versions + ipcRendererObject: typeof ipcRendererObject } } diff --git a/nuxt.config.ts b/nuxt.config.ts index ef5e64f..b4ad78b 100644 --- a/nuxt.config.ts +++ b/nuxt.config.ts @@ -5,6 +5,9 @@ export default defineNuxtConfig({ experimental: { polyfillVueUseHead: false }, + components: [ + { path: "~/components", pathPrefix: false } + ], modules: ["nuxt-electron"], electron: { build: [ @@ -13,7 +16,7 @@ export default defineNuxtConfig({ entry: "electron/main.ts" }, { - entry: "electron/preload/versions.ts", + entry: "electron/preload.ts", onstart(args) { // Notify the Renderer-Process to reload the page when the Preload-Scripts build is complete, // instead of restarting the entire Electron App. @@ -25,6 +28,7 @@ export default defineNuxtConfig({ }, devtools: { enabled: false }, app: { + pageTransition: { name: "page", mode: "out-in" }, // Global page headers: https://go.nuxtjs.dev/config-head head: { title: "showroom", @@ -38,6 +42,9 @@ export default defineNuxtConfig({ { name: "format-detection", content: "telephone=no" }, ], link: [{ rel: "icon", type: "image/x-icon", href: "/favicon.ico" }], + bodyAttrs: { + "data-bs-theme": "light" + } }, }, diff --git a/package-lock.json b/package-lock.json index c07d15a..c6bc472 100755 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "nuxt-app", + "name": "app-kiosk", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "nuxt-app", + "name": "app-kiosk", "version": "1.0.0", "hasInstallScript": true, "devDependencies": { @@ -33,6 +33,7 @@ "eslint-config-prettier": "latest", "eslint-plugin-nuxt": "latest", "eslint-plugin-vue": "^9.17.0", + "flag-icons": "^7.1.0", "husky": "^8.0.3", "jest": "^29.7.0", "konami-code-js": "^0.8.1", @@ -41,6 +42,8 @@ "nuxt-electron": "^0.7.0", "postcss": "^8.4.31", "postcss-html": "^1.5.0", + "postcss-import": "^16.0.0", + "postcss-url": "^10.1.3", "prettier": "latest", "sass": "latest", "stylelint": "^15.11.0", @@ -7377,6 +7380,12 @@ "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", "dev": true }, + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true + }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -9321,6 +9330,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flag-icons": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/flag-icons/-/flag-icons-7.1.0.tgz", + "integrity": "sha512-AH4v++19bpC5P3Wh767top4wylJYJCWkFnvNiDqGHDxqSqdMZ49jpLXp8PWBHTTXaNQ+/A+QPrOwyiIGaiIhmw==", + "dev": true + }, "node_modules/flat": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", @@ -14474,6 +14489,23 @@ "integrity": "sha512-Olnt+V7xYdvGze9YTbGFZIfQXuGV4R3nQwwl8BrtgaPE/wq8UFpUHWuTNc05saowhSr1ZO6tx+V6RjE9D5YQog==", "dev": true }, + "node_modules/postcss-import": { + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-16.0.0.tgz", + "integrity": "sha512-e77lhVvrD1I2y7dYmBv0k9ULTdArgEYZt97T4w6sFIU5uxIHvDFQlKgUUyY7v7Barj0Yf/zm5A4OquZN7jKm5Q==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=18.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, "node_modules/postcss-media-query-parser": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/postcss-media-query-parser/-/postcss-media-query-parser-0.2.3.tgz", @@ -14859,6 +14891,82 @@ "postcss": "^8.4.31" } }, + "node_modules/postcss-url": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", + "dev": true, + "dependencies": { + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-url/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/postcss-url/node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/postcss-url/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/postcss-url/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/postcss-url/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -15130,6 +15238,24 @@ "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", "dev": true }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read-config-file": { "version": "6.3.2", "resolved": "https://registry.npmjs.org/read-config-file/-/read-config-file-6.3.2.tgz", @@ -19320,6 +19446,15 @@ "node": ">=8.0" } }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "dependencies": { + "cuint": "^0.2.2" + } + }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/package.json b/package.json index 0349f29..6555752 100755 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "private": true, "type": "commonjs", "main": "dist-electron/main.js", + "licence": "MIT", "scripts": { "build": "nuxi build --prerender && electron-builder", "dev": "nuxt dev", @@ -47,6 +48,7 @@ "eslint-config-prettier": "latest", "eslint-plugin-nuxt": "latest", "eslint-plugin-vue": "^9.17.0", + "flag-icons": "^7.1.0", "husky": "^8.0.3", "jest": "^29.7.0", "konami-code-js": "^0.8.1", @@ -55,6 +57,8 @@ "nuxt-electron": "^0.7.0", "postcss": "^8.4.31", "postcss-html": "^1.5.0", + "postcss-import": "^16.0.0", + "postcss-url": "^10.1.3", "prettier": "latest", "sass": "latest", "stylelint": "^15.11.0", diff --git a/pages/brands/[slug].vue b/pages/brands/[slug].vue new file mode 100644 index 0000000..16f7219 --- /dev/null +++ b/pages/brands/[slug].vue @@ -0,0 +1,52 @@ + + + diff --git a/pages/index.vue b/pages/index.vue index 6069a64..00e655c 100644 --- a/pages/index.vue +++ b/pages/index.vue @@ -4,7 +4,7 @@

-
- {{ brand.name }} +
+ + {{ brand.name }} +
- +
+ +
@@ -28,20 +32,25 @@ import log from "electron-log"; import { defineComponent } from "vue"; import type AppState from "~/classes/AppState"; +import bsTooltips from "~/vueModules/bsTooltips"; export default defineComponent({ name: "HomePage", data() : { - dataJson: AppState; + appState: AppState; } { return { - dataJson: useState("dataJson").value as AppState + appState: useState("dataJson").value as AppState }; }, mounted() { log.info("index page"); + bsTooltips.methods.initTooltips(); }, methods: { + gotoBrand(brand: TypeBrand) { + navigateTo(`/brands/${brand.slug}`); + } }, }); diff --git a/pages/ranges/[slug].vue b/pages/ranges/[slug].vue index 5a9a80a..cc284c0 100644 --- a/pages/ranges/[slug].vue +++ b/pages/ranges/[slug].vue @@ -1,6 +1,6 @@ @@ -15,14 +15,14 @@ export default defineComponent({ props: { }, data(): { - router: RouteLocationNormalizedLoaded + route: RouteLocationNormalizedLoaded } { return { - router: useRoute() + route: useRoute() }; }, mounted() { - const route = useRoute(); + const route: RouteLocationNormalizedLoaded = useRoute(); log.info(route); }, methods: { diff --git a/plugins/boostrap.ts b/plugins/boostrap.ts index 316f84a..c27784e 100644 --- a/plugins/boostrap.ts +++ b/plugins/boostrap.ts @@ -1,10 +1,29 @@ -import { Modal } from "bootstrap"; -import "bootstrap/dist/js/bootstrap"; +import { Alert, Button, Carousel, Collapse, Dropdown, Modal, Offcanvas, Popover, ScrollSpy, Tab, Toast, Tooltip } from "bootstrap"; export default defineNuxtPlugin(() => { + let tooltips: Array = []; + + // Disable tooltips on reboot. + tooltips.forEach((tooltip) => { + tooltip.disable(); + tooltip.hide(); + }); + tooltips = [].slice + .call(document.querySelectorAll("[data-bs-toggle=\"tooltip\"]")) + .map(function (tooltipTriggerEl) { + return new window.bootstrap.Tooltip(tooltipTriggerEl, { + customClass: "large-tooltip", + delay: { + show: 1250, + hide: 0, + }, + }); + }); return { provide: { - Modal + Alert, Button, Carousel, Collapse, Dropdown, + Modal, Offcanvas, Popover, ScrollSpy, Tab, + Toast, Tooltip } }; }); diff --git a/static/scss/_variables.scss b/static/scss/_variables.scss index 0608781..e29feb5 100644 --- a/static/scss/_variables.scss +++ b/static/scss/_variables.scss @@ -14,6 +14,6 @@ $font-default-family-base: system-ui, -apple-system, "Segoe UI", "Roboto", "Helvetica Neue", "Arial", "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; // - The default site font family. // Display tres haute résolution, augmentation de font size 1rem => 1.8rem -$font-default-size-base: 2.2rem; // Assumes the browser default, typically `16px` +$font-default-size-base: 1.4rem; // Assumes the browser default, typically `16px` $line-default-height-base: 1.5; diff --git a/static/scss/bootstrap.scss b/static/scss/bootstrap.scss index c603d45..0fe2e19 100644 --- a/static/scss/bootstrap.scss +++ b/static/scss/bootstrap.scss @@ -36,6 +36,7 @@ @import "bootstrap/scss/close"; @import "bootstrap/scss/modal"; @import "bootstrap/scss/accordion"; +@import "bootstrap/scss/toasts"; // 6. Optionally include utilities API last to generate classes based on the Sass map in `_utilities.scss` @import "bootstrap/scss/utilities/api"; diff --git a/static/scss/layout.scss b/static/scss/layout.scss index ac4f5b2..454141f 100644 --- a/static/scss/layout.scss +++ b/static/scss/layout.scss @@ -6,4 +6,20 @@ html { body { min-height: 100vh; background-color: unset; + + .app-component { + display: flex; + height: 100vh; + flex-direction: column; + + > .container-fluid { + flex-grow: 1; + padding-top: 1rem; + padding-bottom: 1rem; + } + } + + > footer { + box-shadow: 0 -0.125rem 0.25rem rgb(0 0 0 / 7.5%) !important; + } } diff --git a/vueModules/bsTooltips.ts b/vueModules/bsTooltips.ts new file mode 100644 index 0000000..a2fd14b --- /dev/null +++ b/vueModules/bsTooltips.ts @@ -0,0 +1,26 @@ +import { Tooltip } from "bootstrap"; + +let tooltips: Array = []; + +export default { + methods: { + initTooltips() { + // Disable tooltips on reboot. + tooltips.forEach((tooltip) => { + tooltip.disable(); + tooltip.hide(); + }); + tooltips = [].slice + .call(document.querySelectorAll("[data-bs-toggle=\"tooltip\"]")) + .map(function (tooltipTriggerEl) { + return new Tooltip(tooltipTriggerEl, { + customClass: "large-tooltip", + delay: { + show: 1250, + hide: 0, + }, + }); + }); + }, + }, +};