diff --git a/.stylelintrc.json b/.stylelintrc.json index e9d57272..36f39ab1 100644 --- a/.stylelintrc.json +++ b/.stylelintrc.json @@ -1,5 +1,6 @@ { "extends": [ + "stylelint-config-prettier", "stylelint-config-standard-scss", "stylelint-config-sass-guidelines", "stylelint-config-idiomatic-order" @@ -14,9 +15,7 @@ "**/vendor/*.sass", "**/vendor/**/*.sass", "**/vendor/*.less", - "**/vendor/**/*.less", - "**/vendor/*.vue", - "**/vendor/**/*.vue" + "**/vendor/**/*.less" ], "customSyntax": "postcss-scss", "rules": { @@ -27,6 +26,9 @@ "order/properties-alphabetical-order": null, "max-nesting-depth": 5, "selector-max-compound-selectors": 5, + "declaration-colon-space-after": "always-single-line", + "function-parentheses-space-inside": "never-single-line", + "declaration-colon-newline-after": null, "scss/double-slash-comment-empty-line-before": [ "always", { diff --git a/.vscode/settings.json b/.vscode/settings.json index 57462e74..1b412c61 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -1,21 +1,21 @@ { "workbench.colorCustomizations": { - "activityBar.activeBackground": "#e4f100", - "activityBar.background": "#e4f100", + "activityBar.activeBackground": "#d6de61", + "activityBar.background": "#d6de61", "activityBar.foreground": "#15202b", "activityBar.inactiveForeground": "#15202b99", - "activityBarBadge.background": "#00b5bf", - "activityBarBadge.foreground": "#15202b", + "activityBarBadge.background": "#21969e", + "activityBarBadge.foreground": "#e7e7e7", "commandCenter.border": "#15202b99", - "sash.hoverBorder": "#e4f100", - "statusBar.background": "#b4be00", + "sash.hoverBorder": "#d6de61", + "statusBar.background": "#cbd537", "statusBar.foreground": "#15202b", - "statusBarItem.hoverBackground": "#848b00", - "statusBarItem.remoteBackground": "#b4be00", + "statusBarItem.hoverBackground": "#aab326", + "statusBarItem.remoteBackground": "#cbd537", "statusBarItem.remoteForeground": "#15202b", - "titleBar.activeBackground": "#b4be00", + "titleBar.activeBackground": "#cbd537", "titleBar.activeForeground": "#15202b", - "titleBar.inactiveBackground": "#b4be0099", + "titleBar.inactiveBackground": "#cbd53799", "titleBar.inactiveForeground": "#15202b99" }, "peacock.remoteColor": "#CBD537" diff --git a/package-lock.json b/package-lock.json index f797e0ff..23b6c44b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,10 +4,6 @@ "requires": true, "packages": { "": { - "dependencies": { - "@splidejs/splide": "^4.1.4", - "alpinejs": "^3.12.0" - }, "devDependencies": { "@babel/types": "^7.21.2", "@fortawesome/fontawesome-svg-core": "^6.1.2", @@ -17,6 +13,7 @@ "@fortawesome/vue-fontawesome": "^3.0.1", "@rushstack/eslint-patch": "^1.1.4", "@sipec/vue3-tags-input": "^3.0.4", + "@splidejs/splide": "^4.1.4", "@types/alpinejs": "^3.7.1", "@types/bootstrap": "^5.2.6", "@types/cropperjs": "^1.3.0", @@ -27,6 +24,7 @@ "@vitejs/plugin-legacy": "^4.0.1", "@vitejs/plugin-vue": "^4.0.0", "@vue/eslint-config-typescript": "^11.0.0", + "alpinejs": "^3.12.0", "axios": "^1.1.2", "bootstrap": "^5.2.3", "cropperjs": "^1.5.12", @@ -44,6 +42,7 @@ "slugify": "^1.6.5", "stylelint": "^14.16.1", "stylelint-config-idiomatic-order": "^8.1.0", + "stylelint-config-prettier": "^9.0.5", "stylelint-config-sass-guidelines": "^9.0.1", "stylelint-config-standard-scss": "^6.1.0", "stylelint-scss": "^4.4.0", @@ -2426,7 +2425,8 @@ "node_modules/@splidejs/splide": { "version": "4.1.4", "resolved": "https://registry.npmjs.org/@splidejs/splide/-/splide-4.1.4.tgz", - "integrity": "sha512-5I30evTJcAJQXt6vJ26g2xEkG+l1nXcpEw4xpKh0/FWQ8ozmAeTbtniVtVmz2sH1Es3vgfC4SS8B2X4o5JMptA==" + "integrity": "sha512-5I30evTJcAJQXt6vJ26g2xEkG+l1nXcpEw4xpKh0/FWQ8ozmAeTbtniVtVmz2sH1Es3vgfC4SS8B2X4o5JMptA==", + "dev": true }, "node_modules/@types/alpinejs": { "version": "3.7.1", @@ -2437,6 +2437,21 @@ "@vue/reactivity": "^3.2.26" } }, + "node_modules/@types/alpinejs/node_modules/@vue/reactivity": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", + "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.47" + } + }, + "node_modules/@types/alpinejs/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@types/bootstrap": { "version": "5.2.6", "resolved": "https://registry.npmjs.org/@types/bootstrap/-/bootstrap-5.2.6.tgz", @@ -2935,6 +2950,12 @@ "source-map": "^0.6.1" } }, + "node_modules/@vue/compiler-core/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/compiler-dom": { "version": "3.2.47", "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", @@ -2945,6 +2966,12 @@ "@vue/shared": "3.2.47" } }, + "node_modules/@vue/compiler-dom/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/compiler-sfc": { "version": "3.2.47", "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", @@ -2963,6 +2990,12 @@ "source-map": "^0.6.1" } }, + "node_modules/@vue/compiler-sfc/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/compiler-sfc/node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -2982,6 +3015,12 @@ "@vue/shared": "3.2.47" } }, + "node_modules/@vue/compiler-ssr/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/eslint-config-typescript": { "version": "11.0.3", "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-11.0.3.tgz", @@ -3007,12 +3046,12 @@ } }, "node_modules/@vue/reactivity": { - "version": "3.2.47", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", - "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", "dev": true, "dependencies": { - "@vue/shared": "3.2.47" + "@vue/shared": "3.1.5" } }, "node_modules/@vue/reactivity-transform": { @@ -3028,6 +3067,12 @@ "magic-string": "^0.25.7" } }, + "node_modules/@vue/reactivity-transform/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/reactivity-transform/node_modules/magic-string": { "version": "0.25.9", "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", @@ -3047,6 +3092,21 @@ "@vue/shared": "3.2.47" } }, + "node_modules/@vue/runtime-core/node_modules/@vue/reactivity": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", + "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", + "dev": true, + "dependencies": { + "@vue/shared": "3.2.47" + } + }, + "node_modules/@vue/runtime-core/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/runtime-dom": { "version": "3.2.47", "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", @@ -3058,6 +3118,12 @@ "csstype": "^2.6.8" } }, + "node_modules/@vue/runtime-dom/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/@vue/server-renderer": { "version": "3.2.47", "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", @@ -3071,12 +3137,18 @@ "vue": "3.2.47" } }, - "node_modules/@vue/shared": { + "node_modules/@vue/server-renderer/node_modules/@vue/shared": { "version": "3.2.47", "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", "dev": true }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "dev": true + }, "node_modules/@webassemblyjs/ast": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", @@ -3365,23 +3437,11 @@ "version": "3.12.0", "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.12.0.tgz", "integrity": "sha512-YENcRBA9dlwR8PsZNFMTHbmdlTNwd1BkCeivPvOzzCKHas6AfwNRsDK9UEFmE5dXTMEZjnnpCTxV8vkdpWiOCw==", + "dev": true, "dependencies": { "@vue/reactivity": "~3.1.1" } }, - "node_modules/alpinejs/node_modules/@vue/reactivity": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", - "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", - "dependencies": { - "@vue/shared": "3.1.5" - } - }, - "node_modules/alpinejs/node_modules/@vue/shared": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", - "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==" - }, "node_modules/ansi-escapes": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", @@ -7892,6 +7952,22 @@ "stylelint": ">=11" } }, + "node_modules/stylelint-config-prettier": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/stylelint-config-prettier/-/stylelint-config-prettier-9.0.5.tgz", + "integrity": "sha512-U44lELgLZhbAD/xy/vncZ2Pq8sh2TnpiPvo38Ifg9+zeioR+LAkHu0i6YORIOxFafZoVg0xqQwex6e6F25S5XA==", + "dev": true, + "bin": { + "stylelint-config-prettier": "bin/check.js", + "stylelint-config-prettier-check": "bin/check.js" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "stylelint": ">= 11.x < 15" + } + }, "node_modules/stylelint-config-recommended": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/stylelint-config-recommended/-/stylelint-config-recommended-9.0.0.tgz", @@ -9347,6 +9423,12 @@ "typescript": "*" } }, + "node_modules/vue/node_modules/@vue/shared": { + "version": "3.2.47", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", + "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==", + "dev": true + }, "node_modules/vue3-nestable": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/vue3-nestable/-/vue3-nestable-3.0.3.tgz", diff --git a/package.json b/package.json index f7907a41..8336a974 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "@fortawesome/vue-fontawesome": "^3.0.1", "@rushstack/eslint-patch": "^1.1.4", "@sipec/vue3-tags-input": "^3.0.4", + "@splidejs/splide": "^4.1.4", "@types/alpinejs": "^3.7.1", "@types/bootstrap": "^5.2.6", "@types/cropperjs": "^1.3.0", @@ -30,6 +31,7 @@ "@vitejs/plugin-legacy": "^4.0.1", "@vitejs/plugin-vue": "^4.0.0", "@vue/eslint-config-typescript": "^11.0.0", + "alpinejs": "^3.12.0", "axios": "^1.1.2", "bootstrap": "^5.2.3", "cropperjs": "^1.5.12", @@ -47,6 +49,7 @@ "slugify": "^1.6.5", "stylelint": "^14.16.1", "stylelint-config-idiomatic-order": "^8.1.0", + "stylelint-config-prettier": "^9.0.5", "stylelint-config-sass-guidelines": "^9.0.1", "stylelint-config-standard-scss": "^6.1.0", "stylelint-scss": "^4.4.0", @@ -66,9 +69,5 @@ "vue-loader": "^16.8.3", "vue-tsc": "^1.2.0", "vue3-nestable": "^3.0.3" - }, - "dependencies": { - "@splidejs/splide": "^4.1.4", - "alpinejs": "^3.12.0" } } diff --git a/phpcs.xml b/phpcs.xml index 9127c939..3e28d831 100644 --- a/phpcs.xml +++ b/phpcs.xml @@ -20,6 +20,7 @@ + diff --git a/resources/ts/fo/common.ts b/resources/ts/fo/common.ts index f2615582..1cb4c9ba 100644 --- a/resources/ts/fo/common.ts +++ b/resources/ts/fo/common.ts @@ -12,12 +12,12 @@ import Alpine from "alpinejs"; window.Alpine = Alpine; Alpine.start(); -window.addEventListener("scroll", (e) => { // eslint-disable-line no-unused-vars +window.addEventListener("scroll", () => { const html = document.documentElement; const scroll = html.scrollTop; - if(scroll > 100) { + if (scroll > 100) { document.querySelector("header")?.classList.add("small"); } else { document.querySelector("header")?.classList.remove("small"); } -}); \ No newline at end of file +}); diff --git a/resources/ts/modules/bsTooltips.ts b/resources/ts/modules/bsTooltips.ts index aaa7dc75..06dec98a 100644 --- a/resources/ts/modules/bsTooltips.ts +++ b/resources/ts/modules/bsTooltips.ts @@ -25,6 +25,10 @@ export default { .map(function (tooltipTriggerEl) { return new window.bootstrap.Tooltip(tooltipTriggerEl, { customClass: "large-tooltip", + delay: { + show: 1250, + hide: 0, + }, }); }); }, diff --git a/resources/ts/modules/parseLaravelErrorMessages.ts b/resources/ts/modules/parseLaravelErrorMessages.ts index 72620658..6bcdb69a 100644 --- a/resources/ts/modules/parseLaravelErrorMessages.ts +++ b/resources/ts/modules/parseLaravelErrorMessages.ts @@ -38,9 +38,9 @@ export default { allErrors: Record> = {} ): string | null { let errorList = [] as Array; - Object.keys(allErrors).filter((value) => { + Object.keys(allErrors).filter((value, index) => { if (value == inputName) { - errorList = allErrors[value]; + errorList = allErrors[index]; } }); return errorList.length diff --git a/resources/ts/modules/sweetalert.ts b/resources/ts/modules/sweetalert.ts index 0e68b9e6..852b0829 100644 --- a/resources/ts/modules/sweetalert.ts +++ b/resources/ts/modules/sweetalert.ts @@ -13,8 +13,8 @@ window.addEventListener("DOMContentLoaded", () => { ); } confirm.methods.confirm( - "Confirm", - "Do you really want to remove this element ?", + "Confirmez", + "Voulez-vous vraiment supprimer cet élément ?", el as HTMLFormElement, function () { (el as HTMLFormElement).submit(); @@ -35,8 +35,8 @@ window.addEventListener("DOMContentLoaded", () => { ); } confirm.methods.confirm( - "Confirm", - "Do you really want to mark this item as treated ?", + "Confirmez", + "Voulez-vous vraiment marquer cet élément comme traité ?", el as HTMLFormElement, function () { (el as HTMLFormElement).submit(); @@ -57,8 +57,8 @@ window.addEventListener("DOMContentLoaded", () => { ); } confirm.methods.confirm( - "Confirm", - "Do you want to save this element as it is ?", + "Confirmez", + "Voulez-vous enregistrer cet élément tel-quel ?", el as HTMLFormElement, function () { (el as HTMLFormElement).submit(); @@ -85,8 +85,8 @@ window.addEventListener("DOMContentLoaded", () => { const promise = new Promise( (resolve: (value: boolean) => void) => { confirm.methods.confirm( - "Confirm", - "Are you sure ?", + "Confirmez", + "Êtes vous sure ?", el, function (response: SweetAlertResult) { resolve(response.isConfirmed); diff --git a/resources/ts/modules/sweetalertConfirm.ts b/resources/ts/modules/sweetalertConfirm.ts index 3aafd8bf..124421c1 100644 --- a/resources/ts/modules/sweetalertConfirm.ts +++ b/resources/ts/modules/sweetalertConfirm.ts @@ -27,14 +27,15 @@ export default { showCancelButton: true, confirmButtonText: options.confirmButtonText ?? - trans.default.methods.__("Yes"), + trans.default.methods.__("Oui"), cancelButtonText: options.cancelButtonText ?? - trans.default.methods.__("Cancel"), + trans.default.methods.__("Annuler"), + reverseButtons: true, // * Bootstrap Styling customClass: { - confirmButton: "btn btn-primary mx-1", - cancelButton: "btn btn-danger mx-1", + confirmButton: "btn btn-lg btn-success ms-3 me-3", + cancelButton: "btn btn-lg btn-danger ms-3 me-3", }, buttonsStyling: false, }).then((result) => { @@ -48,12 +49,12 @@ export default { ) { Swal.fire({ title: trans.default.methods.__( - "The operation has not been performed" + "L'opération n'as pas été effectuée" ), confirmButtonText: trans.default.methods.__("Ok"), // * Bootstrap Styling customClass: { - confirmButton: "btn btn-primary", + confirmButton: "btn btn-lg btn-primary", }, buttonsStyling: false, }); diff --git a/resources/ts/modules/toast.ts b/resources/ts/modules/toast.ts index 485f9b04..e1bef060 100644 --- a/resources/ts/modules/toast.ts +++ b/resources/ts/modules/toast.ts @@ -1,4 +1,4 @@ -import * as Toastify from "toastify-js"; +import Toastify from "toastify-js"; import { Options } from "toastify-js"; export default { diff --git a/tsconfig.json b/tsconfig.json index 5ba0607a..04bea881 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,7 @@ { "sourceMap": true, "compilerOptions": { + "esModuleInterop": true, "target": "esnext", "lib": ["es5", "es6", "es2021", "dom", "dom.iterable"], "module": "esnext",