2024-12-12
This commit is contained in:
parent
ac0efab9b2
commit
0c39c95625
45 changed files with 827 additions and 319 deletions
5
.vscode/settings.json
vendored
5
.vscode/settings.json
vendored
|
|
@ -18,8 +18,10 @@
|
|||
"DERNIERE",
|
||||
"echec",
|
||||
"Ecoute",
|
||||
"Ecouteurs",
|
||||
"Eles",
|
||||
"emet",
|
||||
"Emetteurs",
|
||||
"ENTETE",
|
||||
"epingle",
|
||||
"Epingle",
|
||||
|
|
@ -29,6 +31,7 @@
|
|||
"etats",
|
||||
"ETATS",
|
||||
"etendu",
|
||||
"Evenements",
|
||||
"exts",
|
||||
"Fenetre",
|
||||
"FENETRE",
|
||||
|
|
@ -56,6 +59,7 @@
|
|||
"rafraichissement",
|
||||
"rapprochee",
|
||||
"recalcul",
|
||||
"reinitialise",
|
||||
"renseignables",
|
||||
"reponse",
|
||||
"requete",
|
||||
|
|
@ -63,6 +67,7 @@
|
|||
"selecteur",
|
||||
"selecteurs",
|
||||
"Selectionne",
|
||||
"Selectionnee",
|
||||
"Separees",
|
||||
"Simplifiee",
|
||||
"souleve",
|
||||
|
|
|
|||
8
TODO.md
8
TODO.md
|
|
@ -1,6 +1,9 @@
|
|||
- Page Panier
|
||||
- PAGE PANIER
|
||||
- [-] Bouton « Réinitialiser » pour les Articles
|
||||
- [-] Bouton « Réinitialiser » pour les Adresses
|
||||
- [ ] Sauvegarder la dernière adresse validée dans le LocalStorage
|
||||
- VITE
|
||||
- Récupérer les liens des fichiers JS depuis le manifeste dans les fichiers PHP
|
||||
- Menu Mobile
|
||||
- Reprendre pour suivre la maquette initiale
|
||||
- PayPal à faire
|
||||
|
|
@ -10,8 +13,9 @@
|
|||
- Utiliser un polyfill pour BroadcastChannel
|
||||
- PAGE SHOP
|
||||
- [ ] Faire apparaître le menu des catégories de Produits quand on scroll vers le haut
|
||||
- PAGE PANIER
|
||||
- MÉTHODES DE LIVRAISON
|
||||
- [ ] Proposer la livraison à domicile en Belgique et en France pour le coût unique de 12 euros, quel que soit le montant de la commande
|
||||
- [ ] Proposer la livraison à domicile en Belgique et en France pour le coût unique de 8 euros, quel que soit le montant de la commande
|
||||
|
||||
---
|
||||
|
||||
|
|
|
|||
77
composer.lock
generated
77
composer.lock
generated
|
|
@ -646,16 +646,16 @@
|
|||
},
|
||||
{
|
||||
"name": "illuminate/collections",
|
||||
"version": "v11.34.2",
|
||||
"version": "v11.35.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/collections.git",
|
||||
"reference": "fd2103ddc121449a7926fc34a9d220e5b88183c1"
|
||||
"reference": "b8be9c0fedfc5be1524b290fed640d4b7d42c813"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/fd2103ddc121449a7926fc34a9d220e5b88183c1",
|
||||
"reference": "fd2103ddc121449a7926fc34a9d220e5b88183c1",
|
||||
"url": "https://api.github.com/repos/illuminate/collections/zipball/b8be9c0fedfc5be1524b290fed640d4b7d42c813",
|
||||
"reference": "b8be9c0fedfc5be1524b290fed640d4b7d42c813",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -675,6 +675,7 @@
|
|||
},
|
||||
"autoload": {
|
||||
"files": [
|
||||
"functions.php",
|
||||
"helpers.php"
|
||||
],
|
||||
"psr-4": {
|
||||
|
|
@ -697,11 +698,11 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-11-27T14:51:56+00:00"
|
||||
"time": "2024-12-10T14:54:28+00:00"
|
||||
},
|
||||
{
|
||||
"name": "illuminate/conditionable",
|
||||
"version": "v11.34.2",
|
||||
"version": "v11.35.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/conditionable.git",
|
||||
|
|
@ -747,7 +748,7 @@
|
|||
},
|
||||
{
|
||||
"name": "illuminate/contracts",
|
||||
"version": "v11.34.2",
|
||||
"version": "v11.35.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/contracts.git",
|
||||
|
|
@ -795,7 +796,7 @@
|
|||
},
|
||||
{
|
||||
"name": "illuminate/macroable",
|
||||
"version": "v11.34.2",
|
||||
"version": "v11.35.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/macroable.git",
|
||||
|
|
@ -841,16 +842,16 @@
|
|||
},
|
||||
{
|
||||
"name": "illuminate/support",
|
||||
"version": "v11.34.2",
|
||||
"version": "v11.35.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/illuminate/support.git",
|
||||
"reference": "2b718a86571baed50fdc5d5748a846c2e58e07eb"
|
||||
"reference": "bc363403d9ed3214754a0501e33c05d2afcfd474"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/2b718a86571baed50fdc5d5748a846c2e58e07eb",
|
||||
"reference": "2b718a86571baed50fdc5d5748a846c2e58e07eb",
|
||||
"url": "https://api.github.com/repos/illuminate/support/zipball/bc363403d9ed3214754a0501e33c05d2afcfd474",
|
||||
"reference": "bc363403d9ed3214754a0501e33c05d2afcfd474",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -873,11 +874,12 @@
|
|||
"spatie/once": "*"
|
||||
},
|
||||
"suggest": {
|
||||
"illuminate/filesystem": "Required to use the composer class (^11.0).",
|
||||
"illuminate/filesystem": "Required to use the Composer class (^11.0).",
|
||||
"laravel/serializable-closure": "Required to use the once function (^1.3).",
|
||||
"league/commonmark": "Required to use Str::markdown() and Stringable::markdown() (^2.0.2).",
|
||||
"league/uri": "Required to use the Uri class (^7.5.1).",
|
||||
"ramsey/uuid": "Required to use Str::uuid() (^4.7).",
|
||||
"symfony/process": "Required to use the composer class (^7.0).",
|
||||
"symfony/process": "Required to use the Composer class (^7.0).",
|
||||
"symfony/uid": "Required to use Str::ulid() (^7.0).",
|
||||
"symfony/var-dumper": "Required to use the dd function (^7.0).",
|
||||
"vlucas/phpdotenv": "Required to use the Env class and env helper (^5.6.1)."
|
||||
|
|
@ -913,7 +915,7 @@
|
|||
"issues": "https://github.com/laravel/framework/issues",
|
||||
"source": "https://github.com/laravel/framework"
|
||||
},
|
||||
"time": "2024-11-27T14:58:17+00:00"
|
||||
"time": "2024-12-11T23:23:18+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/helpers",
|
||||
|
|
@ -3248,16 +3250,16 @@
|
|||
},
|
||||
{
|
||||
"name": "twig/twig",
|
||||
"version": "v3.17.0",
|
||||
"version": "v3.17.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/twigphp/Twig.git",
|
||||
"reference": "d3a64b742a5e74c57e3964d766e1032982145872"
|
||||
"reference": "677ef8da6497a03048192aeeb5aa3018e379ac71"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/d3a64b742a5e74c57e3964d766e1032982145872",
|
||||
"reference": "d3a64b742a5e74c57e3964d766e1032982145872",
|
||||
"url": "https://api.github.com/repos/twigphp/Twig/zipball/677ef8da6497a03048192aeeb5aa3018e379ac71",
|
||||
"reference": "677ef8da6497a03048192aeeb5aa3018e379ac71",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -3312,7 +3314,7 @@
|
|||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/twigphp/Twig/issues",
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.17.0"
|
||||
"source": "https://github.com/twigphp/Twig/tree/v3.17.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
|
|
@ -3324,7 +3326,7 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-12-10T15:19:11+00:00"
|
||||
"time": "2024-12-12T09:58:10+00:00"
|
||||
},
|
||||
{
|
||||
"name": "vlucas/phpdotenv",
|
||||
|
|
@ -3630,15 +3632,15 @@
|
|||
},
|
||||
{
|
||||
"name": "wpackagist-plugin/wp-mail-smtp",
|
||||
"version": "4.2.0",
|
||||
"version": "4.3.0",
|
||||
"source": {
|
||||
"type": "svn",
|
||||
"url": "https://plugins.svn.wordpress.org/wp-mail-smtp/",
|
||||
"reference": "tags/4.2.0"
|
||||
"reference": "tags/4.3.0"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://downloads.wordpress.org/plugin/wp-mail-smtp.4.2.0.zip"
|
||||
"url": "https://downloads.wordpress.org/plugin/wp-mail-smtp.4.3.0.zip"
|
||||
},
|
||||
"require": {
|
||||
"composer/installers": "^1.0 || ^2.0"
|
||||
|
|
@ -3844,12 +3846,12 @@
|
|||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Roave/SecurityAdvisories.git",
|
||||
"reference": "7a60033d5e61698bf3ed203afb4f4a2323801990"
|
||||
"reference": "1fd8b74024b8938b25df3a9971c7ad9d57d4f592"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/7a60033d5e61698bf3ed203afb4f4a2323801990",
|
||||
"reference": "7a60033d5e61698bf3ed203afb4f4a2323801990",
|
||||
"url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/1fd8b74024b8938b25df3a9971c7ad9d57d4f592",
|
||||
"reference": "1fd8b74024b8938b25df3a9971c7ad9d57d4f592",
|
||||
"shasum": ""
|
||||
},
|
||||
"conflict": {
|
||||
|
|
@ -3990,9 +3992,9 @@
|
|||
"dolibarr/dolibarr": "<19.0.2",
|
||||
"dompdf/dompdf": "<2.0.4",
|
||||
"doublethreedigital/guest-entries": "<3.1.2",
|
||||
"drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.2.10|>=10.3,<10.3.6|>=11,<11.0.5",
|
||||
"drupal/core-recommended": ">=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5",
|
||||
"drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<10.2.9|>=10.3,<10.3.6|>=11,<11.0.5",
|
||||
"drupal/core": ">=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
|
||||
"drupal/core-recommended": ">=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
|
||||
"drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.102|>=8,<10.2.11|>=10.3,<10.3.9|>=11,<11.0.8",
|
||||
"duncanmcclean/guest-entries": "<3.1.2",
|
||||
"dweeves/magmi": "<=0.7.24",
|
||||
"ec-cube/ec-cube": "<2.4.4|>=2.11,<=2.17.1|>=3,<=3.0.18.0-patch4|>=4,<=4.1.2",
|
||||
|
|
@ -4253,6 +4255,7 @@
|
|||
"neos/swiftmailer": "<5.4.5",
|
||||
"netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15",
|
||||
"nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6",
|
||||
"nette/database": "<=3.2.4",
|
||||
"nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13",
|
||||
"nilsteampassnet/teampass": "<3.0.10",
|
||||
"nonfiction/nterchange": "<4.1.1",
|
||||
|
|
@ -4389,7 +4392,7 @@
|
|||
"sensiolabs/connect": "<4.2.3",
|
||||
"serluck/phpwhois": "<=4.2.6",
|
||||
"sfroemken/url_redirect": "<=1.2.1",
|
||||
"sheng/yiicms": "<=1.2",
|
||||
"sheng/yiicms": "<1.2.1",
|
||||
"shopware/core": "<=6.5.8.12|>=6.6,<=6.6.5",
|
||||
"shopware/platform": "<=6.5.8.12|>=6.6,<=6.6.5",
|
||||
"shopware/production": "<=6.3.5.2",
|
||||
|
|
@ -4686,20 +4689,20 @@
|
|||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-12-09T21:04:47+00:00"
|
||||
"time": "2024-12-10T21:04:50+00:00"
|
||||
},
|
||||
{
|
||||
"name": "squizlabs/php_codesniffer",
|
||||
"version": "3.11.1",
|
||||
"version": "3.11.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
|
||||
"reference": "19473c30efe4f7b3cd42522d0b2e6e7f243c6f87"
|
||||
"reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/19473c30efe4f7b3cd42522d0b2e6e7f243c6f87",
|
||||
"reference": "19473c30efe4f7b3cd42522d0b2e6e7f243c6f87",
|
||||
"url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/1368f4a58c3c52114b86b1abe8f4098869cb0079",
|
||||
"reference": "1368f4a58c3c52114b86b1abe8f4098869cb0079",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
|
|
@ -4766,7 +4769,7 @@
|
|||
"type": "open_collective"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-16T12:02:36+00:00"
|
||||
"time": "2024-12-11T16:04:26+00:00"
|
||||
},
|
||||
{
|
||||
"name": "szepeviktor/phpstan-wordpress",
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ use function Env\env;
|
|||
|
||||
Config::define("SAVEQUERIES", true);
|
||||
Config::define("WP_DEBUG", true);
|
||||
Config::define("WP_DEBUG_DISPLAY", true);
|
||||
Config::define("WP_DEBUG_DISPLAY", false);
|
||||
Config::define("WP_DEBUG_LOG", env("WP_DEBUG_LOG") ?? true);
|
||||
Config::define("WP_DISABLE_FATAL_ERROR_HANDLER", true);
|
||||
Config::define("SCRIPT_DEBUG", true);
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@
|
|||
"https://plugins.dprint.dev/json-0.19.4.wasm",
|
||||
"https://plugins.dprint.dev/markdown-0.17.8.wasm",
|
||||
"https://plugins.dprint.dev/toml-0.6.3.wasm",
|
||||
"https://plugins.dprint.dev/g-plane/malva-v0.11.0.wasm",
|
||||
"https://plugins.dprint.dev/g-plane/malva-v0.11.1.wasm",
|
||||
"https://plugins.dprint.dev/g-plane/markup_fmt-v0.18.0.wasm",
|
||||
"https://plugins.dprint.dev/g-plane/pretty_yaml-v0.5.0.wasm",
|
||||
"https://plugins.dprint.dev/exec-0.5.1.json@492414e39dea4dccc07b4af796d2f4efdb89e84bae2bd4e1e924c0cc050855bf"
|
||||
|
|
|
|||
15
package.json
15
package.json
|
|
@ -14,9 +14,10 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"@mobily/ts-belt": "4.0.0-rc.5",
|
||||
"@sentry/browser": "8.43.0",
|
||||
"@sentry/browser": "8.44.0",
|
||||
"@swan-io/boxed": "^3.1.2",
|
||||
"a11y-dialog": "^8.1.1",
|
||||
"lit-html": "^3.2.1",
|
||||
"optics-ts": "^2.4.1",
|
||||
"purify-ts": "^2.1.0",
|
||||
"ts-pattern": "^5.5.0",
|
||||
|
|
@ -27,20 +28,20 @@
|
|||
"@eslint/js": "^9.16.0",
|
||||
"@prettier/plugin-php": "^0.22.2",
|
||||
"@prettier/plugin-xml": "^3.4.1",
|
||||
"@sentry/core": "^8.43.0",
|
||||
"@sentry/core": "^8.44.0",
|
||||
"@swc/cli": "0.5.2",
|
||||
"@types/eslint__js": "^8.42.3",
|
||||
"@types/node": "^22.10.1",
|
||||
"@types/node": "^22.10.2",
|
||||
"@vitejs/plugin-legacy": "^6.0.0",
|
||||
"better-typescript-lib": "^2.10.0",
|
||||
"browserslist": "^4.24.2",
|
||||
"eslint": "^9.16.0",
|
||||
"eslint-plugin-oxlint": "^0.14.1",
|
||||
"eslint-plugin-perfectionist": "^4.2.0",
|
||||
"eslint-plugin-oxlint": "^0.15.0",
|
||||
"eslint-plugin-perfectionist": "^4.3.0",
|
||||
"fdir": "^6.4.2",
|
||||
"globals": "^15.13.0",
|
||||
"knip": "^5.39.2",
|
||||
"oxlint": "^0.14.1",
|
||||
"knip": "^5.39.4",
|
||||
"oxlint": "^0.15.0",
|
||||
"picomatch": "^4.0.2",
|
||||
"prettier": "^3.4.2",
|
||||
"prettier-plugin-pkg": "^0.18.1",
|
||||
|
|
|
|||
366
pnpm-lock.yaml
generated
366
pnpm-lock.yaml
generated
|
|
@ -12,14 +12,17 @@ importers:
|
|||
specifier: 4.0.0-rc.5
|
||||
version: 4.0.0-rc.5
|
||||
'@sentry/browser':
|
||||
specifier: 8.43.0
|
||||
version: 8.43.0
|
||||
specifier: 8.44.0
|
||||
version: 8.44.0
|
||||
'@swan-io/boxed':
|
||||
specifier: ^3.1.2
|
||||
version: 3.1.2(typescript@5.8.0-dev.20241122)
|
||||
a11y-dialog:
|
||||
specifier: ^8.1.1
|
||||
version: 8.1.1
|
||||
lit-html:
|
||||
specifier: ^3.2.1
|
||||
version: 3.2.1
|
||||
optics-ts:
|
||||
specifier: ^2.4.1
|
||||
version: 2.4.1
|
||||
|
|
@ -46,8 +49,8 @@ importers:
|
|||
specifier: ^3.4.1
|
||||
version: 3.4.1(prettier@3.4.2)
|
||||
'@sentry/core':
|
||||
specifier: ^8.43.0
|
||||
version: 8.43.0
|
||||
specifier: ^8.44.0
|
||||
version: 8.44.0
|
||||
'@swc/cli':
|
||||
specifier: 0.5.2
|
||||
version: 0.5.2(@swc/core@1.9.1)
|
||||
|
|
@ -55,11 +58,11 @@ importers:
|
|||
specifier: ^8.42.3
|
||||
version: 8.42.3
|
||||
'@types/node':
|
||||
specifier: ^22.10.1
|
||||
version: 22.10.1
|
||||
specifier: ^22.10.2
|
||||
version: 22.10.2
|
||||
'@vitejs/plugin-legacy':
|
||||
specifier: ^6.0.0
|
||||
version: 6.0.0(terser@5.36.0)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
version: 6.0.0(terser@5.36.0)(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
better-typescript-lib:
|
||||
specifier: ^2.10.0
|
||||
version: 2.10.0(typescript@5.8.0-dev.20241122)
|
||||
|
|
@ -70,11 +73,11 @@ importers:
|
|||
specifier: ^9.16.0
|
||||
version: 9.16.0(jiti@2.4.1)
|
||||
eslint-plugin-oxlint:
|
||||
specifier: ^0.14.1
|
||||
version: 0.14.1
|
||||
specifier: ^0.15.0
|
||||
version: 0.15.0
|
||||
eslint-plugin-perfectionist:
|
||||
specifier: ^4.2.0
|
||||
version: 4.2.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
specifier: ^4.3.0
|
||||
version: 4.3.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
fdir:
|
||||
specifier: ^6.4.2
|
||||
version: 6.4.2(picomatch@4.0.2)
|
||||
|
|
@ -82,11 +85,11 @@ importers:
|
|||
specifier: ^15.13.0
|
||||
version: 15.13.0
|
||||
knip:
|
||||
specifier: ^5.39.2
|
||||
version: 5.39.2(@types/node@22.10.1)(typescript@5.8.0-dev.20241122)
|
||||
specifier: ^5.39.4
|
||||
version: 5.39.4(@types/node@22.10.2)(typescript@5.8.0-dev.20241122)
|
||||
oxlint:
|
||||
specifier: ^0.14.1
|
||||
version: 0.14.1
|
||||
specifier: ^0.15.0
|
||||
version: 0.15.0
|
||||
picomatch:
|
||||
specifier: ^4.0.2
|
||||
version: 4.0.2
|
||||
|
|
@ -128,19 +131,19 @@ importers:
|
|||
version: 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
vite:
|
||||
specifier: ^6.0.3
|
||||
version: 6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
version: 6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
vite-plugin-manifest-sri:
|
||||
specifier: ^0.2.0
|
||||
version: 0.2.0
|
||||
vite-plugin-node-polyfills:
|
||||
specifier: ^0.22.0
|
||||
version: 0.22.0(rollup@4.28.1)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
version: 0.22.0(rollup@4.28.1)(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
vite-plugin-valibot-env:
|
||||
specifier: ^0.9.2
|
||||
version: 0.9.2(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
version: 0.9.2(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
vite-tsconfig-paths:
|
||||
specifier: ^5.1.4
|
||||
version: 5.1.4(typescript@5.8.0-dev.20241122)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
version: 5.1.4(typescript@5.8.0-dev.20241122)(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))
|
||||
wp-types:
|
||||
specifier: ^4.67.0
|
||||
version: 4.67.0
|
||||
|
|
@ -1008,8 +1011,8 @@ packages:
|
|||
resolution: {integrity: sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==}
|
||||
engines: {node: '>=18.18'}
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.5':
|
||||
resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
|
||||
'@jridgewell/gen-mapping@0.3.8':
|
||||
resolution: {integrity: sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
'@jridgewell/resolve-uri@3.1.2':
|
||||
|
|
@ -1145,43 +1148,43 @@ packages:
|
|||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||
engines: {node: '>= 8'}
|
||||
|
||||
'@oxlint/darwin-arm64@0.14.1':
|
||||
resolution: {integrity: sha512-P76G8QCHOkLm+8HYk2/5uR4sPnx6uxE5Y8ik8dgCV0XjrNR+/Sg8v2aQ1BmWeEnPGkBXTt1VSECO9BdT1HVeDw==}
|
||||
'@oxlint/darwin-arm64@0.15.0':
|
||||
resolution: {integrity: sha512-Y4yFRquejyuI/3dyBxLvc8lbwM8Hf/8e0YH9QwQPD9+dgzgOnF818/+OKVE4bDH/V7nWyw4hIQQibMcPvg038g==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@oxlint/darwin-x64@0.14.1':
|
||||
resolution: {integrity: sha512-bFsNkDtiDEhBKsX2DGLGCVhaRSDP2VgnNHOejjVnLK2LURvOglHMrp4NXxxtHArPAfiP6oezja6q8GmsQbcZ4w==}
|
||||
'@oxlint/darwin-x64@0.15.0':
|
||||
resolution: {integrity: sha512-l0NksXD2HSzb/u7RXH1kPNtwOXevkvS4vH7pMDiSrfIbtZTx10YgiLy5zFkFbipJRLmIZUdG+9JEjepsy9S3Ig==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@oxlint/linux-arm64-gnu@0.14.1':
|
||||
resolution: {integrity: sha512-OWJY1qxJgsaLyQvh97MdpI2Mr8FD90ssGw8o0rG63lWIc3PJESmq9NKU0ZwwUbPbbEpKmwdG3aiZRjh4G1k0cQ==}
|
||||
'@oxlint/linux-arm64-gnu@0.15.0':
|
||||
resolution: {integrity: sha512-Yt2LGRfMwPXrMelEqbbkWFcL50ulAUUqMrfcNYB+H/9S8KF4PSMDRm642VV4949xC3XzkjoL3ZMyKQQKMRWC+Q==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@oxlint/linux-arm64-musl@0.14.1':
|
||||
resolution: {integrity: sha512-GPbggyGQV4+5JzpA7l+1liPHkzCDB9ZyPLcHpRtNJJfTQ60JnBww4l3eR7LCukiAor6Sxmlbl+t1OZGjL3zUUA==}
|
||||
'@oxlint/linux-arm64-musl@0.15.0':
|
||||
resolution: {integrity: sha512-+H6CIbejZyE3sc3StoYImqZL3z2zNbv5L547ATLHGyQ5b2JrXMuJ/lqIaNdAa24BehJ6g+/swBIIE5Pk65K3PA==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@oxlint/linux-x64-gnu@0.14.1':
|
||||
resolution: {integrity: sha512-4ug2y9fEa2MB4wAFfITkm1oJ2m14YjWQaKxKN9bRazPng2k3wivVAvwc6tKj866HftZxXo3FlOIrE1YP6BxcSw==}
|
||||
'@oxlint/linux-x64-gnu@0.15.0':
|
||||
resolution: {integrity: sha512-e/KSj4fg5EFdK/bJLJjGRzaw2KZdYgr2mTt3k9HF9YIGl0UnBoX5h+q0hJ9scDTNNailT8qytvOjuiUhyJpAPA==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@oxlint/linux-x64-musl@0.14.1':
|
||||
resolution: {integrity: sha512-bsG5ZxFWKml6BQMHbusvNsEU3O0a5BurlrtdXyxlOBZyrWyG6v3pcXM+NX4YT8gaeoK71iCH5I+ymwI9KOwO/w==}
|
||||
'@oxlint/linux-x64-musl@0.15.0':
|
||||
resolution: {integrity: sha512-lOXNTYw7kelNkJPQlrLlk5E8f/ROZFcGOGR5VKHCI+/53QTX/WY5kMo7JOaRyJ+jnNdeN1HW70oRQPjtAujjxw==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@oxlint/win32-arm64@0.14.1':
|
||||
resolution: {integrity: sha512-Soc3kRTqz++kleXz+Y4IlfiGY+cwXlOiLCVwcRMAnY+TSaP4h2tPXN/cbOypsE7PPq2/kk7JPGUaEKZ/i4G23A==}
|
||||
'@oxlint/win32-arm64@0.15.0':
|
||||
resolution: {integrity: sha512-Hms4Ld6uAOKpbLq27MUqQzffxd71+pK96mzK3YULrkASzIa7AZdtNlRBqfqVRuXCiuxPxT6PhfcriURwsvD/YA==}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@oxlint/win32-x64@0.14.1':
|
||||
resolution: {integrity: sha512-qyjlv5XPxKJ1g9F4ZpNP0m/I2tgHj4lebmyAveaLos3RZWut983WaK3abq4Mr74mIiwfyLA67/m2khG5aXYN2Q==}
|
||||
'@oxlint/win32-x64@0.15.0':
|
||||
resolution: {integrity: sha512-AF0t15GJLoVcMqvbpHwYFHx2o9HkMuEt6GEipPMZ9gaNx1yp6NrP655jywNzhbKHSd6wxSY+CH7aRI9QjdtG1w==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
|
|
@ -1393,28 +1396,28 @@ packages:
|
|||
'@sec-ant/readable-stream@0.4.1':
|
||||
resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==}
|
||||
|
||||
'@sentry-internal/browser-utils@8.43.0':
|
||||
resolution: {integrity: sha512-5WhJZ3SA5sZVDBwOsChDd5JCzYcwBX7sEqBqEcm3pFru6TUihEnFIJmDIbreIyrQMwUhs3dTxnfnidgjr5z1Ag==}
|
||||
'@sentry-internal/browser-utils@8.44.0':
|
||||
resolution: {integrity: sha512-kmSRdS1r2G3i0wTJJv69uMZqf/UwP3pVqrCq/0hvNaF4L5v+vrEOKTDZghDvCqutEqOFXI0V/l9SuDpgjElcZQ==}
|
||||
engines: {node: '>=14.18'}
|
||||
|
||||
'@sentry-internal/feedback@8.43.0':
|
||||
resolution: {integrity: sha512-rcGR2kzFu4vLXBQbI9eGJwjyToyjl36O2q/UKbiZBNJ5IFtDvKRLke6jIHq/YqiHPfFGpVtq5M/lYduDfA/eaQ==}
|
||||
'@sentry-internal/feedback@8.44.0':
|
||||
resolution: {integrity: sha512-x/7dilh9VRpsPRgx+1kT3Aulgj0X02GF+JfNeaFA2p786+2jBHTupGBu7AGiq1b1YRbDefkFXQxS1MaeqEEeOg==}
|
||||
engines: {node: '>=14.18'}
|
||||
|
||||
'@sentry-internal/replay-canvas@8.43.0':
|
||||
resolution: {integrity: sha512-rL8G7E1GtozH8VNalRrBQNjYDJ5ChWS/vpQI5hUG11PZfvQFXEVatLvT3uO2l0xIlHm4idTsHOSLTe/usxnogQ==}
|
||||
'@sentry-internal/replay-canvas@8.44.0':
|
||||
resolution: {integrity: sha512-hFCUHDekuJknzVCu5JnDkgUuOTJbwu82RR+VfbT+2lfIpZoT+gH44LzSH5bQUPXgmznRae4OYHblWAPue9U1Bw==}
|
||||
engines: {node: '>=14.18'}
|
||||
|
||||
'@sentry-internal/replay@8.43.0':
|
||||
resolution: {integrity: sha512-geV5/zejLfGGwWHjylzrb1w8NI3U37GMG9/53nmv13FmTXUDF5XF2lh41KXFVYwvp7Ha4bd1FRQ9IU9YtBWskw==}
|
||||
'@sentry-internal/replay@8.44.0':
|
||||
resolution: {integrity: sha512-ZPX3Bg8ShuWZZzL5lw/fHjHdRhxxhhdzsVXq2jItg3CPvuO7oQofZsG4po6vgXTlj+fdtjUMQanj/6Ah4+jwsQ==}
|
||||
engines: {node: '>=14.18'}
|
||||
|
||||
'@sentry/browser@8.43.0':
|
||||
resolution: {integrity: sha512-LGvLLnfmR8+AEgFmd7Q7KHiOTiV0P1Lvio2ENDELhEqJOIiICauttibVmig+AW02qg4kMeywvleMsUYaZv2RVA==}
|
||||
'@sentry/browser@8.44.0':
|
||||
resolution: {integrity: sha512-s12u8rz2aYjiWPzoE7StL7fiCS2Z5p5BYmk9bhGDqDWyAPVEVZFUB3u/hwcPUF4yDAroWCbsNzTiBwr813zihg==}
|
||||
engines: {node: '>=14.18'}
|
||||
|
||||
'@sentry/core@8.43.0':
|
||||
resolution: {integrity: sha512-ktyovtjkTMNud+kC/XfqHVCoQKreIKgx/hgeRvzPwuPyd1t1KzYmRL3DBkbcWVnyOPpVTHn+RsEI1eRcVYHtvw==}
|
||||
'@sentry/core@8.44.0':
|
||||
resolution: {integrity: sha512-C43eW9Mr1WGpxCeI6pXUl7TeTwR2TwWhuU8wHx2s5eoATDQwbjz9l+JXXjVJf5YXXEwNOZL2WAx/f0diLA5rTQ==}
|
||||
engines: {node: '>=14.18'}
|
||||
|
||||
'@sindresorhus/is@5.6.0':
|
||||
|
|
@ -1548,8 +1551,11 @@ packages:
|
|||
'@types/json-schema@7.0.15':
|
||||
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
||||
|
||||
'@types/node@22.10.1':
|
||||
resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
|
||||
'@types/node@22.10.2':
|
||||
resolution: {integrity: sha512-Xxr6BBRCAOQixvonOye19wnzyDiUtTeqldOOmj3CkeblonbccA12PFwlufvRdrpjXxqnmUaeiU5EOA+7s5diUQ==}
|
||||
|
||||
'@types/trusted-types@2.0.7':
|
||||
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.18.0':
|
||||
resolution: {integrity: sha512-NR2yS7qUqCL7AIxdJUQf2MKKNDVNaig/dEB0GBLU7D+ZdHgK1NoH/3wsgO3OnPVipn51tG3MAwaODEGil70WEw==}
|
||||
|
|
@ -1834,12 +1840,16 @@ packages:
|
|||
resolution: {integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
call-bound@1.0.2:
|
||||
resolution: {integrity: sha512-0lk0PHFe/uz0vl527fG9CgdE9WdafjDbCXvBbs+LUv000TVt2Jjhqbs4Jwm8gz070w8xXyEAxrPOMullsxXeGg==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
callsites@3.1.0:
|
||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
caniuse-lite@1.0.30001687:
|
||||
resolution: {integrity: sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==}
|
||||
caniuse-lite@1.0.30001688:
|
||||
resolution: {integrity: sha512-Nmqpru91cuABu/DTCXbM2NSRHzM2uVHfPnhJ/1zEAJx/ILBRVmz3pzH4N7DZqbdG0gWClsCC05Oj0mJ/1AWMbA==}
|
||||
|
||||
chalk@4.1.2:
|
||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||
|
|
@ -2020,8 +2030,8 @@ packages:
|
|||
easy-table@1.2.0:
|
||||
resolution: {integrity: sha512-OFzVOv03YpvtcWGe5AayU5G2hgybsg3iqA6drU8UaoZyB9jLGMTrz9+asnLp/E+6qPh88yEI1gvyZFZ41dmgww==}
|
||||
|
||||
electron-to-chromium@1.5.72:
|
||||
resolution: {integrity: sha512-ZpSAUOZ2Izby7qnZluSrAlGgGQzucmFbN0n64dYzocYxnxV5ufurpj3VgEe4cUp7ir9LmeLxNYo8bVnlM8bQHw==}
|
||||
electron-to-chromium@1.5.73:
|
||||
resolution: {integrity: sha512-8wGNxG9tAG5KhGd3eeA0o6ixhiNdgr0DcHWm85XPCphwZgD1lIEoi6t3VERayWao7SF7AAZTw6oARGJeVjH8Kg==}
|
||||
|
||||
elliptic@6.6.1:
|
||||
resolution: {integrity: sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==}
|
||||
|
|
@ -2048,6 +2058,10 @@ packages:
|
|||
resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
es-object-atoms@1.0.0:
|
||||
resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
esbuild@0.24.0:
|
||||
resolution: {integrity: sha512-FuLPevChGDshgSicjisSooU0cemp/sGXR841D5LHMB7mTVOmsEHcAxaH3irL53+8YDIeVNQEySh4DaYU/iuPqQ==}
|
||||
engines: {node: '>=18'}
|
||||
|
|
@ -2061,11 +2075,11 @@ packages:
|
|||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
eslint-plugin-oxlint@0.14.1:
|
||||
resolution: {integrity: sha512-P1IrDS3sRl/2AJwvwJmW1EnsF0AIzUHii8haSkWj8xm5+BW/Gux8S+SXu8uqgJoKkzvV+X7lDxPm4ao4C+COBw==}
|
||||
eslint-plugin-oxlint@0.15.0:
|
||||
resolution: {integrity: sha512-W2bJu+w9jYPb3x9MQleJuF1iUSIHWLCR0ChknPgSuz8ZjQgrNlSt5SBYl9FtdOZ09wFzU/CvvIYs86EhhexrdA==}
|
||||
|
||||
eslint-plugin-perfectionist@4.2.0:
|
||||
resolution: {integrity: sha512-hEMFx5xfSc/0OLZXJhSaLUKkFxATuRf4yL2iVfxEcxkkb17DfoLZY9eH960dPSw5uB7o+4avqP3rtkNp1Vwo7w==}
|
||||
eslint-plugin-perfectionist@4.3.0:
|
||||
resolution: {integrity: sha512-8tQ/wn1dFelul2WoXL/NQOEwvWO8H4Vjmsqpt3fDQrfgybr8kQ5Vgb9BQyVRB33ywQqjUApsiwi5Ci7grMPPRA==}
|
||||
engines: {node: ^18.0.0 || >=20.0.0}
|
||||
peerDependencies:
|
||||
eslint: '>=8.0.0'
|
||||
|
|
@ -2233,8 +2247,8 @@ packages:
|
|||
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
|
||||
engines: {node: '>=6.9.0'}
|
||||
|
||||
get-intrinsic@1.2.5:
|
||||
resolution: {integrity: sha512-Y4+pKa7XeRUPWFNvOOYHkRYrfzW07oraURSvjDmRVOJ748OrVmeXtpE4+GCEHncjCjkTxPNRt8kEbxDhsn6VTg==}
|
||||
get-intrinsic@1.2.6:
|
||||
resolution: {integrity: sha512-qxsEs+9A+u85HhllWJJFicJfPDhRmjzoYdl64aMWW9yRIJmSyxdn8IEkuIM530/7T+lv0TIHd8L6Q/ra0tEoeA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
get-stream@6.0.1:
|
||||
|
|
@ -2471,6 +2485,11 @@ packages:
|
|||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
|
||||
jsesc@3.1.0:
|
||||
resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==}
|
||||
engines: {node: '>=6'}
|
||||
hasBin: true
|
||||
|
||||
json-buffer@3.0.1:
|
||||
resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==}
|
||||
|
||||
|
|
@ -2505,8 +2524,8 @@ packages:
|
|||
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
knip@5.39.2:
|
||||
resolution: {integrity: sha512-BuvuWRllLWV/r2G4m9ggNH+DZ6gouP/dhtJPXVlMbWNF++w9/EfrF6k2g7YBKCwjzCC+PXmYtpH8S2t8RjnY4Q==}
|
||||
knip@5.39.4:
|
||||
resolution: {integrity: sha512-IiNFwfe8xDFwuGzBY8lKvrY3hhR1I81iCaJ8nd85cxT7LxB7cDd73WP3MrzZylE9Vec1HhC0YLFiAL7jh5OYEQ==}
|
||||
engines: {node: '>=18.6.0'}
|
||||
hasBin: true
|
||||
peerDependencies:
|
||||
|
|
@ -2526,6 +2545,9 @@ packages:
|
|||
linguist-languages@7.27.0:
|
||||
resolution: {integrity: sha512-Wzx/22c5Jsv2ag+uKy+ITanGA5hzvBZngrNGDXLTC7ZjGM6FLCYGgomauTkxNJeP9of353OM0pWqngYA180xgw==}
|
||||
|
||||
lit-html@3.2.1:
|
||||
resolution: {integrity: sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==}
|
||||
|
||||
locate-path@6.0.0:
|
||||
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
||||
engines: {node: '>=10'}
|
||||
|
|
@ -2557,6 +2579,10 @@ packages:
|
|||
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
|
||||
engines: {node: '>=10'}
|
||||
|
||||
math-intrinsics@1.0.0:
|
||||
resolution: {integrity: sha512-4MqMiKP90ybymYvsut0CH2g4XWbfLtmlCkXmtmdcDCxNB+mQcu1w/1+L/VD7vi/PSv7X2JYV7SCcR+jiPXnQtA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
mathml-tag-names@2.1.3:
|
||||
resolution: {integrity: sha512-APMBEanjybaPzUrfqU0IMU5I0AswKMH7k8OTLs0vvV4KZpExkTkY87nR/zpbuTPj+gARop7aGUbl11pnDfW6xg==}
|
||||
|
||||
|
|
@ -2690,8 +2716,8 @@ packages:
|
|||
os-browserify@0.3.0:
|
||||
resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
|
||||
|
||||
oxlint@0.14.1:
|
||||
resolution: {integrity: sha512-FwcjPfQu806ibSv73Y9tUM8ezUyd811dp3JwEEOC/dIAgd93egRsRNnFauuAq/WuTjIDv73tbr9hB8MziH31Eg==}
|
||||
oxlint@0.15.0:
|
||||
resolution: {integrity: sha512-hIED9mcs8c0dnNuQEzXRPXOo09HoOVh60LSD48EQHwcHlcFheMfW5OkLWQvinDkG/1n5qt+zWopQGaKFgmtXPw==}
|
||||
engines: {node: '>=14.*'}
|
||||
hasBin: true
|
||||
|
||||
|
|
@ -3150,8 +3176,20 @@ packages:
|
|||
resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
side-channel@1.0.6:
|
||||
resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==}
|
||||
side-channel-list@1.0.0:
|
||||
resolution: {integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
side-channel-map@1.0.1:
|
||||
resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
side-channel-weakmap@1.0.2:
|
||||
resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
side-channel@1.1.0:
|
||||
resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==}
|
||||
engines: {node: '>= 0.4'}
|
||||
|
||||
signal-exit@3.0.7:
|
||||
|
|
@ -3202,8 +3240,8 @@ packages:
|
|||
stream-http@3.2.0:
|
||||
resolution: {integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==}
|
||||
|
||||
streamx@2.21.0:
|
||||
resolution: {integrity: sha512-Qz6MsDZXJ6ur9u+b+4xCG18TluU7PGlRfXVAAjNiGsFrBUt/ioyLkxbFaKJygoPs+/kW4VyBj0bSj89Qu0IGyg==}
|
||||
streamx@2.21.1:
|
||||
resolution: {integrity: sha512-PhP9wUnFLa+91CPy3N6tiQsK+gnYyUNuk15S3YG/zjYE7RuPeCjJngqnzpC31ow0lzBHQ+QGO4cNJnd0djYUsw==}
|
||||
|
||||
string-width@4.2.3:
|
||||
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
|
||||
|
|
@ -3600,14 +3638,14 @@ packages:
|
|||
peerDependencies:
|
||||
zod: ^3.18.0
|
||||
|
||||
zod@3.24.0:
|
||||
resolution: {integrity: sha512-Hz+wiY8yD0VLA2k/+nsg2Abez674dDGTai33SwNvMPuf9uIrBC9eFgIMQxBBbHFxVXi8W+5nX9DcAh9YNSQm/w==}
|
||||
zod@3.24.1:
|
||||
resolution: {integrity: sha512-muH7gBL9sI1nciMZV67X5fTKKBLtwpZ5VBp1vsOQzj1MhrBZ4wlVCm3gedKZWLp0Oyel8sIGfeiz54Su+OVT+A==}
|
||||
|
||||
snapshots:
|
||||
|
||||
'@ampproject/remapping@2.3.0':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.5
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
|
||||
'@babel/code-frame@7.26.2':
|
||||
|
|
@ -3642,9 +3680,9 @@ snapshots:
|
|||
dependencies:
|
||||
'@babel/parser': 7.26.3
|
||||
'@babel/types': 7.26.3
|
||||
'@jridgewell/gen-mapping': 0.3.5
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
jsesc: 3.0.2
|
||||
jsesc: 3.1.0
|
||||
|
||||
'@babel/helper-annotate-as-pure@7.25.9':
|
||||
dependencies:
|
||||
|
|
@ -4502,7 +4540,7 @@ snapshots:
|
|||
|
||||
'@humanwhocodes/retry@0.4.1': {}
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.5':
|
||||
'@jridgewell/gen-mapping@0.3.8':
|
||||
dependencies:
|
||||
'@jridgewell/set-array': 1.2.1
|
||||
'@jridgewell/sourcemap-codec': 1.5.0
|
||||
|
|
@ -4514,7 +4552,7 @@ snapshots:
|
|||
|
||||
'@jridgewell/source-map@0.3.6':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.5
|
||||
'@jridgewell/gen-mapping': 0.3.8
|
||||
'@jridgewell/trace-mapping': 0.3.25
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.0': {}
|
||||
|
|
@ -4606,28 +4644,28 @@ snapshots:
|
|||
'@nodelib/fs.scandir': 2.1.5
|
||||
fastq: 1.17.1
|
||||
|
||||
'@oxlint/darwin-arm64@0.14.1':
|
||||
'@oxlint/darwin-arm64@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/darwin-x64@0.14.1':
|
||||
'@oxlint/darwin-x64@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/linux-arm64-gnu@0.14.1':
|
||||
'@oxlint/linux-arm64-gnu@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/linux-arm64-musl@0.14.1':
|
||||
'@oxlint/linux-arm64-musl@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/linux-x64-gnu@0.14.1':
|
||||
'@oxlint/linux-x64-gnu@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/linux-x64-musl@0.14.1':
|
||||
'@oxlint/linux-x64-musl@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/win32-arm64@0.14.1':
|
||||
'@oxlint/win32-arm64@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@oxlint/win32-x64@0.14.1':
|
||||
'@oxlint/win32-x64@0.15.0':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-android-arm64@2.5.0':
|
||||
|
|
@ -4777,33 +4815,33 @@ snapshots:
|
|||
|
||||
'@sec-ant/readable-stream@0.4.1': {}
|
||||
|
||||
'@sentry-internal/browser-utils@8.43.0':
|
||||
'@sentry-internal/browser-utils@8.44.0':
|
||||
dependencies:
|
||||
'@sentry/core': 8.43.0
|
||||
'@sentry/core': 8.44.0
|
||||
|
||||
'@sentry-internal/feedback@8.43.0':
|
||||
'@sentry-internal/feedback@8.44.0':
|
||||
dependencies:
|
||||
'@sentry/core': 8.43.0
|
||||
'@sentry/core': 8.44.0
|
||||
|
||||
'@sentry-internal/replay-canvas@8.43.0':
|
||||
'@sentry-internal/replay-canvas@8.44.0':
|
||||
dependencies:
|
||||
'@sentry-internal/replay': 8.43.0
|
||||
'@sentry/core': 8.43.0
|
||||
'@sentry-internal/replay': 8.44.0
|
||||
'@sentry/core': 8.44.0
|
||||
|
||||
'@sentry-internal/replay@8.43.0':
|
||||
'@sentry-internal/replay@8.44.0':
|
||||
dependencies:
|
||||
'@sentry-internal/browser-utils': 8.43.0
|
||||
'@sentry/core': 8.43.0
|
||||
'@sentry-internal/browser-utils': 8.44.0
|
||||
'@sentry/core': 8.44.0
|
||||
|
||||
'@sentry/browser@8.43.0':
|
||||
'@sentry/browser@8.44.0':
|
||||
dependencies:
|
||||
'@sentry-internal/browser-utils': 8.43.0
|
||||
'@sentry-internal/feedback': 8.43.0
|
||||
'@sentry-internal/replay': 8.43.0
|
||||
'@sentry-internal/replay-canvas': 8.43.0
|
||||
'@sentry/core': 8.43.0
|
||||
'@sentry-internal/browser-utils': 8.44.0
|
||||
'@sentry-internal/feedback': 8.44.0
|
||||
'@sentry-internal/replay': 8.44.0
|
||||
'@sentry-internal/replay-canvas': 8.44.0
|
||||
'@sentry/core': 8.44.0
|
||||
|
||||
'@sentry/core@8.43.0': {}
|
||||
'@sentry/core@8.44.0': {}
|
||||
|
||||
'@sindresorhus/is@5.6.0': {}
|
||||
|
||||
|
|
@ -4914,10 +4952,12 @@ snapshots:
|
|||
|
||||
'@types/json-schema@7.0.15': {}
|
||||
|
||||
'@types/node@22.10.1':
|
||||
'@types/node@22.10.2':
|
||||
dependencies:
|
||||
undici-types: 6.20.0
|
||||
|
||||
'@types/trusted-types@2.0.7': {}
|
||||
|
||||
'@typescript-eslint/eslint-plugin@8.18.0(@typescript-eslint/parser@8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122))(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)':
|
||||
dependencies:
|
||||
'@eslint-community/regexpp': 4.12.1
|
||||
|
|
@ -4995,7 +5035,7 @@ snapshots:
|
|||
'@typescript-eslint/types': 8.18.0
|
||||
eslint-visitor-keys: 4.2.0
|
||||
|
||||
'@vitejs/plugin-legacy@6.0.0(terser@5.36.0)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))':
|
||||
'@vitejs/plugin-legacy@6.0.0(terser@5.36.0)(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0))':
|
||||
dependencies:
|
||||
'@babel/core': 7.26.0
|
||||
'@babel/preset-env': 7.26.0(@babel/core@7.26.0)
|
||||
|
|
@ -5006,7 +5046,7 @@ snapshots:
|
|||
regenerator-runtime: 0.14.1
|
||||
systemjs: 6.15.1
|
||||
terser: 5.36.0
|
||||
vite: 6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
vite: 6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
|
|
@ -5285,8 +5325,8 @@ snapshots:
|
|||
|
||||
browserslist@4.24.2:
|
||||
dependencies:
|
||||
caniuse-lite: 1.0.30001687
|
||||
electron-to-chromium: 1.5.72
|
||||
caniuse-lite: 1.0.30001688
|
||||
electron-to-chromium: 1.5.73
|
||||
node-releases: 2.0.19
|
||||
update-browserslist-db: 1.1.1(browserslist@4.24.2)
|
||||
|
||||
|
|
@ -5326,12 +5366,17 @@ snapshots:
|
|||
dependencies:
|
||||
call-bind-apply-helpers: 1.0.1
|
||||
es-define-property: 1.0.1
|
||||
get-intrinsic: 1.2.5
|
||||
get-intrinsic: 1.2.6
|
||||
set-function-length: 1.2.2
|
||||
|
||||
call-bound@1.0.2:
|
||||
dependencies:
|
||||
call-bind: 1.0.8
|
||||
get-intrinsic: 1.2.6
|
||||
|
||||
callsites@3.1.0: {}
|
||||
|
||||
caniuse-lite@1.0.30001687: {}
|
||||
caniuse-lite@1.0.30001688: {}
|
||||
|
||||
chalk@4.1.2:
|
||||
dependencies:
|
||||
|
|
@ -5521,7 +5566,7 @@ snapshots:
|
|||
optionalDependencies:
|
||||
wcwidth: 1.0.1
|
||||
|
||||
electron-to-chromium@1.5.72: {}
|
||||
electron-to-chromium@1.5.73: {}
|
||||
|
||||
elliptic@6.6.1:
|
||||
dependencies:
|
||||
|
|
@ -5550,6 +5595,10 @@ snapshots:
|
|||
|
||||
es-errors@1.3.0: {}
|
||||
|
||||
es-object-atoms@1.0.0:
|
||||
dependencies:
|
||||
es-errors: 1.3.0
|
||||
|
||||
esbuild@0.24.0:
|
||||
optionalDependencies:
|
||||
'@esbuild/aix-ppc64': 0.24.0
|
||||
|
|
@ -5581,11 +5630,11 @@ snapshots:
|
|||
|
||||
escape-string-regexp@4.0.0: {}
|
||||
|
||||
eslint-plugin-oxlint@0.14.1:
|
||||
eslint-plugin-oxlint@0.15.0:
|
||||
dependencies:
|
||||
jsonc-parser: 3.3.1
|
||||
|
||||
eslint-plugin-perfectionist@4.2.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
|
||||
eslint-plugin-perfectionist@4.3.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122):
|
||||
dependencies:
|
||||
'@typescript-eslint/types': 8.18.0
|
||||
'@typescript-eslint/utils': 8.18.0(eslint@9.16.0(jiti@2.4.1))(typescript@5.8.0-dev.20241122)
|
||||
|
|
@ -5782,16 +5831,18 @@ snapshots:
|
|||
|
||||
gensync@1.0.0-beta.2: {}
|
||||
|
||||
get-intrinsic@1.2.5:
|
||||
get-intrinsic@1.2.6:
|
||||
dependencies:
|
||||
call-bind-apply-helpers: 1.0.1
|
||||
dunder-proto: 1.0.0
|
||||
es-define-property: 1.0.1
|
||||
es-errors: 1.3.0
|
||||
es-object-atoms: 1.0.0
|
||||
function-bind: 1.1.2
|
||||
gopd: 1.2.0
|
||||
has-symbols: 1.1.0
|
||||
hasown: 2.0.2
|
||||
math-intrinsics: 1.0.0
|
||||
|
||||
get-stream@6.0.1: {}
|
||||
|
||||
|
|
@ -5992,6 +6043,8 @@ snapshots:
|
|||
|
||||
jsesc@3.0.2: {}
|
||||
|
||||
jsesc@3.1.0: {}
|
||||
|
||||
json-buffer@3.0.1: {}
|
||||
|
||||
json-parse-even-better-errors@2.3.1: {}
|
||||
|
|
@ -6014,11 +6067,11 @@ snapshots:
|
|||
|
||||
kleur@4.1.5: {}
|
||||
|
||||
knip@5.39.2(@types/node@22.10.1)(typescript@5.8.0-dev.20241122):
|
||||
knip@5.39.4(@types/node@22.10.2)(typescript@5.8.0-dev.20241122):
|
||||
dependencies:
|
||||
'@nodelib/fs.walk': 1.2.8
|
||||
'@snyk/github-codeowners': 1.1.0
|
||||
'@types/node': 22.10.1
|
||||
'@types/node': 22.10.2
|
||||
easy-table: 1.2.0
|
||||
enhanced-resolve: 5.17.1
|
||||
fast-glob: 3.3.2
|
||||
|
|
@ -6032,8 +6085,8 @@ snapshots:
|
|||
strip-json-comments: 5.0.1
|
||||
summary: 2.1.0
|
||||
typescript: 5.8.0-dev.20241122
|
||||
zod: 3.24.0
|
||||
zod-validation-error: 3.4.0(zod@3.24.0)
|
||||
zod: 3.24.1
|
||||
zod-validation-error: 3.4.0(zod@3.24.1)
|
||||
|
||||
known-css-properties@0.35.0: {}
|
||||
|
||||
|
|
@ -6046,6 +6099,10 @@ snapshots:
|
|||
|
||||
linguist-languages@7.27.0: {}
|
||||
|
||||
lit-html@3.2.1:
|
||||
dependencies:
|
||||
'@types/trusted-types': 2.0.7
|
||||
|
||||
locate-path@6.0.0:
|
||||
dependencies:
|
||||
p-locate: 5.0.0
|
||||
|
|
@ -6075,6 +6132,8 @@ snapshots:
|
|||
dependencies:
|
||||
semver: 7.6.3
|
||||
|
||||
math-intrinsics@1.0.0: {}
|
||||
|
||||
mathml-tag-names@2.1.3: {}
|
||||
|
||||
md5.js@1.3.5:
|
||||
|
|
@ -6211,16 +6270,16 @@ snapshots:
|
|||
|
||||
os-browserify@0.3.0: {}
|
||||
|
||||
oxlint@0.14.1:
|
||||
oxlint@0.15.0:
|
||||
optionalDependencies:
|
||||
'@oxlint/darwin-arm64': 0.14.1
|
||||
'@oxlint/darwin-x64': 0.14.1
|
||||
'@oxlint/linux-arm64-gnu': 0.14.1
|
||||
'@oxlint/linux-arm64-musl': 0.14.1
|
||||
'@oxlint/linux-x64-gnu': 0.14.1
|
||||
'@oxlint/linux-x64-musl': 0.14.1
|
||||
'@oxlint/win32-arm64': 0.14.1
|
||||
'@oxlint/win32-x64': 0.14.1
|
||||
'@oxlint/darwin-arm64': 0.15.0
|
||||
'@oxlint/darwin-x64': 0.15.0
|
||||
'@oxlint/linux-arm64-gnu': 0.15.0
|
||||
'@oxlint/linux-arm64-musl': 0.15.0
|
||||
'@oxlint/linux-x64-gnu': 0.15.0
|
||||
'@oxlint/linux-x64-musl': 0.15.0
|
||||
'@oxlint/win32-arm64': 0.15.0
|
||||
'@oxlint/win32-x64': 0.15.0
|
||||
|
||||
p-cancelable@3.0.0: {}
|
||||
|
||||
|
|
@ -6375,7 +6434,7 @@ snapshots:
|
|||
|
||||
qs@6.13.1:
|
||||
dependencies:
|
||||
side-channel: 1.0.6
|
||||
side-channel: 1.1.0
|
||||
|
||||
querystring-es3@0.2.1: {}
|
||||
|
||||
|
|
@ -6624,7 +6683,7 @@ snapshots:
|
|||
define-data-property: 1.1.4
|
||||
es-errors: 1.3.0
|
||||
function-bind: 1.1.2
|
||||
get-intrinsic: 1.2.5
|
||||
get-intrinsic: 1.2.6
|
||||
gopd: 1.2.0
|
||||
has-property-descriptors: 1.0.2
|
||||
|
||||
|
|
@ -6645,13 +6704,34 @@ snapshots:
|
|||
|
||||
shebang-regex@3.0.0: {}
|
||||
|
||||
side-channel@1.0.6:
|
||||
side-channel-list@1.0.0:
|
||||
dependencies:
|
||||
call-bind: 1.0.8
|
||||
es-errors: 1.3.0
|
||||
get-intrinsic: 1.2.5
|
||||
object-inspect: 1.13.3
|
||||
|
||||
side-channel-map@1.0.1:
|
||||
dependencies:
|
||||
call-bound: 1.0.2
|
||||
es-errors: 1.3.0
|
||||
get-intrinsic: 1.2.6
|
||||
object-inspect: 1.13.3
|
||||
|
||||
side-channel-weakmap@1.0.2:
|
||||
dependencies:
|
||||
call-bound: 1.0.2
|
||||
es-errors: 1.3.0
|
||||
get-intrinsic: 1.2.6
|
||||
object-inspect: 1.13.3
|
||||
side-channel-map: 1.0.1
|
||||
|
||||
side-channel@1.1.0:
|
||||
dependencies:
|
||||
es-errors: 1.3.0
|
||||
object-inspect: 1.13.3
|
||||
side-channel-list: 1.0.0
|
||||
side-channel-map: 1.0.1
|
||||
side-channel-weakmap: 1.0.2
|
||||
|
||||
signal-exit@3.0.7: {}
|
||||
|
||||
signal-exit@4.1.0: {}
|
||||
|
|
@ -6697,7 +6777,7 @@ snapshots:
|
|||
readable-stream: 3.6.2
|
||||
xtend: 4.0.2
|
||||
|
||||
streamx@2.21.0:
|
||||
streamx@2.21.1:
|
||||
dependencies:
|
||||
fast-fifo: 1.3.2
|
||||
queue-tick: 1.0.1
|
||||
|
|
@ -6891,7 +6971,7 @@ snapshots:
|
|||
dependencies:
|
||||
b4a: 1.6.7
|
||||
fast-fifo: 1.3.2
|
||||
streamx: 2.21.0
|
||||
streamx: 2.21.1
|
||||
|
||||
terser@5.36.0:
|
||||
dependencies:
|
||||
|
|
@ -7004,39 +7084,39 @@ snapshots:
|
|||
|
||||
vite-plugin-manifest-sri@0.2.0: {}
|
||||
|
||||
vite-plugin-node-polyfills@0.22.0(rollup@4.28.1)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)):
|
||||
vite-plugin-node-polyfills@0.22.0(rollup@4.28.1)(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)):
|
||||
dependencies:
|
||||
'@rollup/plugin-inject': 5.0.5(rollup@4.28.1)
|
||||
node-stdlib-browser: 1.3.0
|
||||
vite: 6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
vite: 6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
transitivePeerDependencies:
|
||||
- rollup
|
||||
|
||||
vite-plugin-valibot-env@0.9.2(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)):
|
||||
vite-plugin-valibot-env@0.9.2(valibot@1.0.0-beta.9(typescript@5.8.0-dev.20241122))(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)):
|
||||
dependencies:
|
||||
kleur: 4.1.5
|
||||
log-symbols: 7.0.0
|
||||
valibot: 1.0.0-beta.9(typescript@5.8.0-dev.20241122)
|
||||
vite: 6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
vite: 6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
|
||||
vite-tsconfig-paths@5.1.4(typescript@5.8.0-dev.20241122)(vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)):
|
||||
vite-tsconfig-paths@5.1.4(typescript@5.8.0-dev.20241122)(vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)):
|
||||
dependencies:
|
||||
debug: 4.4.0
|
||||
globrex: 0.1.2
|
||||
tsconfck: 3.1.4(typescript@5.8.0-dev.20241122)
|
||||
optionalDependencies:
|
||||
vite: 6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
vite: 6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
- typescript
|
||||
|
||||
vite@6.0.3(@types/node@22.10.1)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0):
|
||||
vite@6.0.3(@types/node@22.10.2)(jiti@2.4.1)(sass-embedded@1.82.0)(sass@1.80.6)(terser@5.36.0):
|
||||
dependencies:
|
||||
esbuild: 0.24.0
|
||||
postcss: 8.4.49
|
||||
rollup: 4.28.1
|
||||
optionalDependencies:
|
||||
'@types/node': 22.10.1
|
||||
'@types/node': 22.10.2
|
||||
fsevents: 2.3.3
|
||||
jiti: 2.4.1
|
||||
sass: 1.80.6
|
||||
|
|
@ -7090,8 +7170,8 @@ snapshots:
|
|||
|
||||
yoctocolors@2.1.1: {}
|
||||
|
||||
zod-validation-error@3.4.0(zod@3.24.0):
|
||||
zod-validation-error@3.4.0(zod@3.24.1):
|
||||
dependencies:
|
||||
zod: 3.24.0
|
||||
zod: 3.24.1
|
||||
|
||||
zod@3.24.0: {}
|
||||
zod@3.24.1: {}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,2 @@
|
|||
<?php
|
||||
return ['x-generator'=>'GlotPress/4.0.1','translation-revision-date'=>'2022-05-06 07:45:25+0000','plural-forms'=>'nplurals=2; plural=n > 1;','project-id-version'=>'Plugins - Preview E-mails for WooCommerce - Stable (latest release)','language'=>'fr','messages'=>['Preview Emails'=>'Prévisualiser les emails','Search Orders'=>'Rechercher des commandes','Only use this field if you have particular orders, that are not listed above in the Choose Order Field. Type the Order ID only. Example: 90'=>'Utiliser uniquement ce champ si vous avez des commandes spécifiques, qui ne sont pas listées ci-dessus dans le champ Choisir une commande. Saisir l’identifiant de commande uniquement. Exemple : 90','Preview E-mails for WooCommerce'=>'Preview E-mails for WooCommerce','https://www.digamberpradhan.com/preview-e-mails-for-woocommerce/'=>'https://www.digamberpradhan.com/preview-e-mails-for-woocommerce/','Choose Email'=>'Choisir l’email','Choose Order'=>'Choisir la commande','Mail to'=>'Envoyer à','Back to Admin Area'=>'Retour à l’interface d’administration','An Extension for WooCommerce that lets you Preview Emails, without having to send them.'=>'Une extension pour WooCommerce qui vous laisse prévisualiser les emails, sans avoir besoin de les envoyer.','Digamber Pradhan'=>'Digamber Pradhan','https://digamberpradhan.com/'=>'https://digamberpradhan.com/']];
|
||||
BIN
web/app/languages/plugins/woo-preview-emails-fr_FR.mo
Normal file
BIN
web/app/languages/plugins/woo-preview-emails-fr_FR.mo
Normal file
Binary file not shown.
65
web/app/languages/plugins/woo-preview-emails-fr_FR.po
Normal file
65
web/app/languages/plugins/woo-preview-emails-fr_FR.po
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
# Translation of Plugins - Preview E-mails for WooCommerce - Stable (latest release) in French (France)
|
||||
# This file is distributed under the same license as the Plugins - Preview E-mails for WooCommerce - Stable (latest release) package.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"PO-Revision-Date: 2022-05-06 07:45:25+0000\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: GlotPress/4.0.1\n"
|
||||
"Language: fr\n"
|
||||
"Project-Id-Version: Plugins - Preview E-mails for WooCommerce - Stable (latest release)\n"
|
||||
|
||||
#: includes/Main.php:138
|
||||
msgid "Preview Emails"
|
||||
msgstr "Prévisualiser les emails"
|
||||
|
||||
#: views/form.php:50 views/form.php:61
|
||||
msgid "Search Orders"
|
||||
msgstr "Rechercher des commandes"
|
||||
|
||||
#: views/form.php:65
|
||||
msgid "Only use this field if you have particular orders, that are not listed above in the Choose Order Field. Type the Order ID only. Example: 90"
|
||||
msgstr "Utiliser uniquement ce champ si vous avez des commandes spécifiques, qui ne sont pas listées ci-dessus dans le champ Choisir une commande. Saisir l’identifiant de commande uniquement. Exemple : 90"
|
||||
|
||||
#. Plugin Name of the plugin
|
||||
#: woocommerce-preview-emails.php
|
||||
msgid "Preview E-mails for WooCommerce"
|
||||
msgstr "Preview E-mails for WooCommerce"
|
||||
|
||||
#. Plugin URI of the plugin
|
||||
#: woocommerce-preview-emails.php
|
||||
msgid "https://www.digamberpradhan.com/preview-e-mails-for-woocommerce/"
|
||||
msgstr "https://www.digamberpradhan.com/preview-e-mails-for-woocommerce/"
|
||||
|
||||
#: views/form.php:18 views/form.php:21
|
||||
msgid "Choose Email"
|
||||
msgstr "Choisir l’email"
|
||||
|
||||
#: views/form.php:30 views/form.php:35
|
||||
msgid "Choose Order"
|
||||
msgstr "Choisir la commande"
|
||||
|
||||
#: views/form.php:71
|
||||
msgid "Mail to"
|
||||
msgstr "Envoyer à"
|
||||
|
||||
#: includes/Main.php:335
|
||||
msgid "Back to Admin Area"
|
||||
msgstr "Retour à l’interface d’administration"
|
||||
|
||||
#. Description of the plugin
|
||||
#: woocommerce-preview-emails.php
|
||||
msgid "An Extension for WooCommerce that lets you Preview Emails, without having to send them."
|
||||
msgstr "Une extension pour WooCommerce qui vous laisse prévisualiser les emails, sans avoir besoin de les envoyer."
|
||||
|
||||
#. Author of the plugin
|
||||
#: woocommerce-preview-emails.php
|
||||
msgid "Digamber Pradhan"
|
||||
msgstr "Digamber Pradhan"
|
||||
|
||||
#. Author URI of the plugin
|
||||
#: woocommerce-preview-emails.php
|
||||
msgid "https://digamberpradhan.com/"
|
||||
msgstr "https://digamberpradhan.com/"
|
||||
|
|
@ -248,8 +248,8 @@ button.bouton-retour-haut {
|
|||
background: var(--couleur-fond);
|
||||
border: 1px solid var(--couleur-noir);
|
||||
border-radius: 100%;
|
||||
transition: 0.2s background, 0.2s opacity, 0.2s visibility;
|
||||
box-shadow: initial;
|
||||
transition: 0.2s background, 0.2s opacity, 0.2s visibility;
|
||||
}
|
||||
button.bouton-retour-haut img {
|
||||
width: 1rem;
|
||||
|
|
@ -267,8 +267,17 @@ button.bouton-retour-haut[data-actif] {
|
|||
}
|
||||
}
|
||||
|
||||
fieldset {
|
||||
all: initial;
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
margin-top: var(--espace-l);
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
input, select, textarea {
|
||||
padding: var(--espace-xs);
|
||||
accent-color: var(--couleur-jaune);
|
||||
background: var(--couleur-gris);
|
||||
border: 1px solid var(--couleur-noir);
|
||||
outline: 2px solid transparent;
|
||||
|
|
@ -340,6 +349,25 @@ label:has(~ input[type=checkbox], ~ input[type=radio]), input[type=checkbox] + l
|
|||
}
|
||||
}
|
||||
|
||||
input[type=radio] {
|
||||
appearance: initial;
|
||||
border-radius: 100%;
|
||||
}
|
||||
input[type=radio]:checked {
|
||||
display: inline-flex;
|
||||
place-content: center;
|
||||
place-items: center;
|
||||
}
|
||||
input[type=radio]:checked::before {
|
||||
content: " ";
|
||||
inset: initial;
|
||||
display: inline-block;
|
||||
width: calc(var(--espace-l) / 2);
|
||||
height: calc(var(--espace-l) / 2);
|
||||
background: var(--couleur-noir);
|
||||
border-radius: 100%;
|
||||
}
|
||||
|
||||
textarea:focus-visible, textarea:focus-within {
|
||||
outline: 1px solid var(--couleur-noir);
|
||||
}
|
||||
|
|
@ -612,9 +640,9 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
|
|||
background: transparent;
|
||||
}
|
||||
#en-tete .logo img {
|
||||
image-rendering: crisp-edges;
|
||||
shape-rendering: geometricPrecision;
|
||||
object-fit: contain;
|
||||
image-rendering: crisp-edges;
|
||||
shape-rendering: geometricprecision;
|
||||
}
|
||||
#en-tete .logo button {
|
||||
display: block;
|
||||
|
|
@ -1052,8 +1080,8 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
|
|||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: space-between;
|
||||
padding: var(--espace-m);
|
||||
margin-bottom: var(--espace-xl);
|
||||
padding: var(--espace-m);
|
||||
}
|
||||
.grille-produits article figure figcaption h3 {
|
||||
font-style: italic;
|
||||
|
|
@ -1450,9 +1478,9 @@ body:has(#menu-mobile:not([aria-hidden=true])) {
|
|||
max-width: 100vw;
|
||||
height: var(--pied-de-page-hauteur);
|
||||
padding: var(--espace-m);
|
||||
font-size: 0.8rem;
|
||||
background: var(--couleur-jaune);
|
||||
border-top: 1px solid var(--couleur-noir);
|
||||
font-size: 0.8rem;
|
||||
}
|
||||
#pied-de-page .zone-menu-navigation-secondaire {
|
||||
justify-self: start;
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -1 +1 @@
|
|||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-a-propos.scss"],"names":[],"mappings":"AAEA;EAEE;EAGA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;AACA;AACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIA;AACE;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAGF;EACE;EAEA;;AAGF;EACE;EAEA;;AAEA;EACE;;AAIJ;EACE;EAEA;;AAGF;EACE;EAEA;;AAGF;EACE;EAEA;;AAEA;EACE;;AAMR;EA3LF;IA4LI;;;;AAIJ;EACE;IACE","file":"page-a-propos.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-a-propos.scss"],"names":[],"mappings":"AAEA;EAEE;EAGA;EACA;EAEA;EACA;EACA;;AAEA;EACE;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAEA;EACE;EACA;EACA;AAEA;AAEA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAGF;EACE;EACA;;AAIA;AACE;;AAKN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGF;EACE;;AAIJ;EACE;;AAEA;EACE;;AAIJ;EACE;EACA;;AAGF;EACE;EAEA;;AAGF;EACE;EAEA;;AAEA;EACE;;AAIJ;EACE;EAEA;;AAGF;EACE;EAEA;;AAGF;EACE;EAEA;;AAEA;EACE;;AAMR;EA7LF;IA8LI;;;;AAIJ;EACE;IACE","file":"page-a-propos.css"}
|
||||
|
|
@ -46,12 +46,6 @@
|
|||
.page-modele-simple .contenu__textuel p + p {
|
||||
margin-top: var(--espace-m);
|
||||
}
|
||||
@media (width <= 50rem) {
|
||||
.page-modele-simple .contenu {
|
||||
border-right: initial;
|
||||
border-left: initial;
|
||||
}
|
||||
}
|
||||
.page-modele-simple#page-cgv .contenu {
|
||||
font-style: normal;
|
||||
}
|
||||
|
|
@ -59,8 +53,8 @@
|
|||
font-style: italic;
|
||||
}
|
||||
.page-modele-simple#page-cgv .contenu__textuel {
|
||||
padding: 0;
|
||||
max-width: initial;
|
||||
padding: 0;
|
||||
}
|
||||
.page-modele-simple#page-cgv .contenu__textuel__section {
|
||||
width: 100%;
|
||||
|
|
@ -70,10 +64,10 @@
|
|||
}
|
||||
.page-modele-simple#page-cgv .contenu__textuel__section header {
|
||||
width: 100%;
|
||||
margin-bottom: var(--espace-l);
|
||||
padding: var(--espace-m) var(--espace-xl);
|
||||
border-top: 1px solid var(--couleur-noir);
|
||||
border-bottom: 1px solid var(--couleur-noir);
|
||||
margin-bottom: var(--espace-l);
|
||||
}
|
||||
.page-modele-simple#page-cgv .contenu__textuel__section header h3 {
|
||||
width: fit-content;
|
||||
|
|
@ -83,9 +77,9 @@
|
|||
}
|
||||
.page-modele-simple#page-cgv .contenu__textuel__section ul {
|
||||
margin-bottom: 1lh;
|
||||
padding: 0 var(--espace-xl);
|
||||
list-style: square;
|
||||
list-style-position: inside;
|
||||
padding: 0 var(--espace-xl);
|
||||
}
|
||||
.page-modele-simple#page-cgv .contenu__textuel__section p {
|
||||
padding: 0 var(--espace-xl);
|
||||
|
|
@ -93,5 +87,11 @@
|
|||
.page-modele-simple#page-cgv .contenu__textuel__section p:last-of-type {
|
||||
margin-bottom: var(--espace-xl);
|
||||
}
|
||||
@media (width <= 50rem) {
|
||||
.page-modele-simple .contenu {
|
||||
border-right: initial;
|
||||
border-left: initial;
|
||||
}
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=page-modele-simple.css.map */
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-modele-simple.scss"],"names":[],"mappings":"AAEA;EAEE;AAAA;AAAA;EAKA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;IACE;IACA;;;AAKF;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAGE;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAKF;EACE;;AAEA;EACE","file":"page-modele-simple.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/pages/page-modele-simple.scss"],"names":[],"mappings":"AAEA;EAEE;AAAA;AAAA;EAKA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAMJ;EACE;;AAEA;EACE;;AAGF;EACE;EACA;;AAEA;EACE;;AAGE;EACE;;AAIJ;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;EACA;EACA;;AAKF;EACE;;AAEA;EACE;;AAQZ;EACE;IACE;IACA","file":"page-modele-simple.css"}
|
||||
|
|
@ -1 +1 @@
|
|||
.page-modele-simple{--page-hauteur-minimale:calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px);--page-marges-bloc-debut:var(--en-tete-hauteur);margin-top:var(--page-marges-bloc-debut);margin-bottom:var(--espace-xl);border-bottom:1px solid var(--couleur-noir);flex-flow:column;display:flex}.page-modele-simple .contenu{width:min(50rem,100%);min-height:var(--page-hauteur-minimale);border:1px solid var(--couleur-noir);border-bottom:initial;flex-flow:column;place-items:center;margin:auto;font-style:italic;font-weight:400;display:flex}.page-modele-simple .contenu__en-tete{width:100%;padding:var(--espace-m)var(--espace-xl);color:var(--couleur-blanc);background:var(--couleur-noir)}.page-modele-simple .contenu__en-tete h2{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}.page-modele-simple .contenu__textuel{max-width:34rem;height:100%;padding:0 var(--espace-xl);text-wrap:pretty;flex-flow:column;flex:1;place-content:center;display:flex}.page-modele-simple .contenu__textuel p+p{margin-top:var(--espace-m)}@media (width<=50rem){.page-modele-simple .contenu{border-right:initial;border-left:initial}}.page-modele-simple#page-cgv .contenu{font-style:normal}.page-modele-simple#page-cgv .contenu header{font-style:italic}.page-modele-simple#page-cgv .contenu__textuel{max-width:initial;padding:0}.page-modele-simple#page-cgv .contenu__textuel__section{width:100%}.page-modele-simple#page-cgv .contenu__textuel__section:first-of-type header{border-top:initial}.page-modele-simple#page-cgv .contenu__textuel__section header{width:100%;padding:var(--espace-m)var(--espace-xl);border-top:1px solid var(--couleur-noir);border-bottom:1px solid var(--couleur-noir);margin-bottom:var(--espace-l)}.page-modele-simple#page-cgv .contenu__textuel__section header h3{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}.page-modele-simple#page-cgv .contenu__textuel__section ul{padding:0 var(--espace-xl);margin-bottom:1lh;list-style:square inside}.page-modele-simple#page-cgv .contenu__textuel__section p{padding:0 var(--espace-xl)}.page-modele-simple#page-cgv .contenu__textuel__section p:last-of-type{margin-bottom:var(--espace-xl)}
|
||||
.page-modele-simple{--page-hauteur-minimale:calc(100svh - var(--en-tete-hauteur) - var(--pied-de-page-hauteur) - var(--espace-xl) - 1px);--page-marges-bloc-debut:var(--en-tete-hauteur);margin-top:var(--page-marges-bloc-debut);margin-bottom:var(--espace-xl);border-bottom:1px solid var(--couleur-noir);flex-flow:column;display:flex}.page-modele-simple .contenu{width:min(50rem,100%);min-height:var(--page-hauteur-minimale);border:1px solid var(--couleur-noir);border-bottom:initial;flex-flow:column;place-items:center;margin:auto;font-style:italic;font-weight:400;display:flex}.page-modele-simple .contenu__en-tete{width:100%;padding:var(--espace-m)var(--espace-xl);color:var(--couleur-blanc);background:var(--couleur-noir)}.page-modele-simple .contenu__en-tete h2{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}.page-modele-simple .contenu__textuel{max-width:34rem;height:100%;padding:0 var(--espace-xl);text-wrap:pretty;flex-flow:column;flex:1;place-content:center;display:flex}.page-modele-simple .contenu__textuel p+p{margin-top:var(--espace-m)}.page-modele-simple#page-cgv .contenu{font-style:normal}.page-modele-simple#page-cgv .contenu header{font-style:italic}.page-modele-simple#page-cgv .contenu__textuel{max-width:initial;padding:0}.page-modele-simple#page-cgv .contenu__textuel__section{width:100%}.page-modele-simple#page-cgv .contenu__textuel__section:first-of-type header{border-top:initial}.page-modele-simple#page-cgv .contenu__textuel__section header{width:100%;margin-bottom:var(--espace-l);padding:var(--espace-m)var(--espace-xl);border-top:1px solid var(--couleur-noir);border-bottom:1px solid var(--couleur-noir)}.page-modele-simple#page-cgv .contenu__textuel__section header h3{text-transform:uppercase;width:fit-content;letter-spacing:var(--espacement-inter-lettres-etendu-l);margin:auto}.page-modele-simple#page-cgv .contenu__textuel__section ul{padding:0 var(--espace-xl);margin-bottom:1lh;list-style:square inside}.page-modele-simple#page-cgv .contenu__textuel__section p{padding:0 var(--espace-xl)}.page-modele-simple#page-cgv .contenu__textuel__section p:last-of-type{margin-bottom:var(--espace-xl)}@media (width<=50rem){.page-modele-simple .contenu{border-right:initial;border-left:initial}}
|
||||
|
|
@ -144,7 +144,7 @@
|
|||
margin-top: var(--espace-m);
|
||||
}
|
||||
#panneau-panier .panneau__sous-totaux {
|
||||
width: min(30rem, 100%);
|
||||
width: min(40rem, 100%);
|
||||
margin: auto;
|
||||
padding: var(--espace-l) var(--espace-xl);
|
||||
text-align: center;
|
||||
|
|
@ -165,6 +165,27 @@
|
|||
#panneau-panier .panneau__sous-totaux__ligne#sous-total-livraison p:last-of-type span {
|
||||
color: grey;
|
||||
}
|
||||
#panneau-panier .panneau__sous-totaux__choix-methode-livraison {
|
||||
flex-flow: row wrap;
|
||||
gap: var(--espace-xs) var(--espace-m);
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
letter-spacing: inherit;
|
||||
}
|
||||
#panneau-panier .panneau__sous-totaux__choix-methode-livraison > label:first-of-type {
|
||||
cursor: revert;
|
||||
flex-basis: 100%;
|
||||
margin-bottom: var(--espace-xs);
|
||||
color: grey;
|
||||
text-align: center;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
#panneau-panier .panneau__sous-totaux__choix-methode-livraison div {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
column-gap: 1ch;
|
||||
place-items: center;
|
||||
}
|
||||
#panneau-panier .panneau__sous-totaux__conditions-livraison {
|
||||
margin-top: var(--espace-l);
|
||||
font-size: 0.8rem;
|
||||
|
|
@ -200,7 +221,8 @@
|
|||
#panneau-panier .panneau__instructions-code-promo {
|
||||
padding: var(--espace-xl) var(--espace-l);
|
||||
}
|
||||
#panneau-panier .panneau__instructions-code-promo .panneau__instructions-code-promo__code-promo input, #panneau-panier .panneau__instructions-code-promo .panneau__instructions-code-promo__code-promo button {
|
||||
#panneau-panier .panneau__instructions-code-promo .panneau__instructions-code-promo__code-promo input,
|
||||
#panneau-panier .panneau__instructions-code-promo .panneau__instructions-code-promo__code-promo button {
|
||||
flex: 1;
|
||||
}
|
||||
#panneau-panier .panneau__sous-totaux {
|
||||
|
|
@ -325,8 +347,8 @@
|
|||
#panneau-informations-client .panneau__pied-de-page {
|
||||
align-content: center;
|
||||
padding: var(--espace-l) 0;
|
||||
font-style: italic;
|
||||
font-size: 1.25rem;
|
||||
font-style: italic;
|
||||
color: var(--couleur-blanc);
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;AASA;AAAA;AAAA;AAAA;AAkBA;AASA;;AAnCA;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;IACE;;EAGF;IACE;;EAEA;IACE;;EAIJ;IACE;;EAGE;IACE;;EAKN;IACE;;;;AC1PN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAMR;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;IACE;;;;ACpKN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}
|
||||
{"version":3,"sourceRoot":"","sources":["../../../src/sass/layouts/_panneau-panier.scss","../../../src/sass/layouts/_panneau-informations-client.scss","../../../src/sass/pages/page-panier.scss"],"names":[],"mappings":";AAEA;EACE;;AAEA;EACE;;AAIF;EACE;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAGA;EACE;;AAEA;EACE;EACA;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAIJ;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;AAEA;AASA;AAAA;AAAA;AAAA;AAmBA;AASA;;AApCA;EACE;EACA;EACA;EACA;EACA;;AAOF;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EAEE;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;;AAOR;EACE;EACA;EACA;EACA;AAEA;AAAA;AAAA;AAAA;;AAIA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;EACA;AAEA;AAAA;AAAA;;AAGA;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;;AAKN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAKA;EACE;;AAEA;EACE;;AAMR;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;EACA;;AAOJ;EACE;EACA;EACA;EACA;EACA;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIJ;EACE;IACE;;EAGF;IACE;;EAEA;IACE;;EAIJ;IACE;;EAGE;AAAA;IAEE;;EAKN;IACE;;;;ACvRN;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAIF;EAEE;EACA;EACA;EAGA;EAEA;EACA;;AAEA;EACE;EACA;;AAIF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;AAGF;EACE;;AAMN;EACE;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKF;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAGE;EACE;;AAMR;EACE;EACA;EACA;;AAIJ;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAIJ;EACE;IACE;;;;ACpKN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;AAGA;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAKN;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;;AAKF;EACE;;AAGF;EACE","file":"page-panier.css"}
|
||||
File diff suppressed because one or more lines are too long
|
|
@ -94,9 +94,9 @@ $sous_total_panier = WC()->cart->get_subtotal();
|
|||
/** @var string|null $code_promo Le code promo appliqué au Panier s'il existe. */
|
||||
$code_promo = collect(WC()->cart->get_applied_coupons())->first();
|
||||
/** @var int $sous_total_reduction Le total du montant de la Réduction appliquée au Panier */
|
||||
$sous_total_reduction = Number::format(WC()->cart->get_totals()["discount_total"], precision: 2);
|
||||
$sous_total_reduction = Number::format(WC()->cart->get_totals()["discount_total"], maxPrecision: 2);
|
||||
/** @var float $total_panier Le total de la Commande dans le Panier. */
|
||||
$total_panier = Number::format(floatval(WC()->cart->get_totals()["total"]), precision: 2);
|
||||
$total_panier = Number::format(floatval(WC()->cart->get_totals()["total"]), maxPrecision: 2);
|
||||
|
||||
foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
||||
$panier[$cle_panier] = [
|
||||
|
|
@ -122,17 +122,24 @@ foreach (WC()->cart->get_cart() as $cle_panier => $article_panier) {
|
|||
$email = WC()->customer->get_billing_email();
|
||||
$adresse_livraison = WC()->customer->get_shipping();
|
||||
$adresse_facturation = WC()->customer->get_billing();
|
||||
$adresse_renseignee = $adresse_livraison["city"] != "";
|
||||
$pays_livraison = collect(WC()->countries->get_countries())->only($pays_acceptes)->toArray();
|
||||
$total_livraison = Number::format(floatval(WC()->cart->get_totals()["shipping_total"]), precision: 0);
|
||||
|
||||
// echo "<pre>";
|
||||
// print_r(WC()->countries->get_countries());
|
||||
// print_r($adresse_livraison);
|
||||
// echo "</pre>";
|
||||
$methodes_livraison = collect(WC()->session->get("shipping_for_package_0")["rates"])
|
||||
->values()
|
||||
->map(function (WC_Shipping_Rate $methode) {
|
||||
return [
|
||||
"id" => $methode->get_method_id(),
|
||||
"prix" => Number::format(intval($methode->get_cost()), maxPrecision: 2),
|
||||
"selectionnee" => collect(WC()->session->get("chosen_shipping_methods"))->first() == $methode->get_id(),
|
||||
"titre" => $methode->get_label(),
|
||||
];
|
||||
});
|
||||
|
||||
$contexte["email"] = $email;
|
||||
$contexte["adresse_livraison"] = $adresse_livraison;
|
||||
$contexte["adresse_facturation"] = $adresse_facturation;
|
||||
$contexte["adresse_renseignee"] = $adresse_renseignee;
|
||||
$contexte["sous_total_panier"] = $sous_total_panier;
|
||||
$contexte["code_promo"] = $code_promo;
|
||||
$contexte["sous_total_reduction"] = $sous_total_reduction;
|
||||
|
|
@ -140,10 +147,12 @@ $contexte["total_panier"] = $total_panier;
|
|||
$contexte["produits_panier"] = $panier;
|
||||
$contexte["pays_livraison"] = $pays_livraison;
|
||||
$contexte["sous_total_livraison"] = $total_livraison;
|
||||
$contexte["methode_livraison"] =
|
||||
collect(WC()->session->get("shipping_for_package_0")["rates"])
|
||||
->first()
|
||||
?->get_label() ?? "";
|
||||
$contexte["methodes_livraison"] = $methodes_livraison;
|
||||
|
||||
// echo "<pre>";
|
||||
// print_r($methodes_livraison);
|
||||
// print_r(WC()->session->get("chosen_shipping_methods"));
|
||||
// echo "</pre>";
|
||||
|
||||
// Charge les scripts et styles de la page
|
||||
function charge_scripts_styles_page_panier(): void {
|
||||
|
|
|
|||
|
|
@ -77,8 +77,8 @@ button {
|
|||
background: var(--couleur-fond);
|
||||
border: 1px solid var(--couleur-noir);
|
||||
border-radius: 100%;
|
||||
transition: 0.2s background, 0.2s opacity, 0.2s visibility;
|
||||
box-shadow: initial;
|
||||
transition: 0.2s background, 0.2s opacity, 0.2s visibility;
|
||||
|
||||
img {
|
||||
width: 1rem;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,16 @@
|
|||
// Styles de base pour les éléments de formulaires.
|
||||
|
||||
fieldset {
|
||||
all: initial;
|
||||
display: flex;
|
||||
flex-flow: column nowrap;
|
||||
margin-top: var(--espace-l);
|
||||
font: inherit;
|
||||
}
|
||||
|
||||
input, select, textarea {
|
||||
padding: var(--espace-xs);
|
||||
accent-color: var(--couleur-jaune);
|
||||
background: var(--couleur-gris);
|
||||
border: 1px solid var(--couleur-noir);
|
||||
outline: 2px solid transparent;
|
||||
|
|
@ -93,6 +102,27 @@ input[type="checkbox"], input[type="radio"] {
|
|||
}
|
||||
}
|
||||
|
||||
input[type="radio"] {
|
||||
appearance: initial;
|
||||
border-radius: 100%;
|
||||
|
||||
&:checked {
|
||||
display: inline-flex;
|
||||
place-content: center;
|
||||
place-items: center;
|
||||
|
||||
&::before {
|
||||
content: " ";
|
||||
inset: initial;
|
||||
display: inline-block;
|
||||
width: calc(var(--espace-l) / 2);
|
||||
height: calc(var(--espace-l) / 2);
|
||||
background: var(--couleur-noir);
|
||||
border-radius: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
textarea {
|
||||
&:focus-visible, &:focus-within {
|
||||
outline: 1px solid var(--couleur-noir);
|
||||
|
|
|
|||
|
|
@ -33,9 +33,9 @@
|
|||
}
|
||||
|
||||
img {
|
||||
image-rendering: crisp-edges;
|
||||
shape-rendering: geometricPrecision;
|
||||
object-fit: contain;
|
||||
image-rendering: crisp-edges;
|
||||
shape-rendering: geometricprecision;
|
||||
}
|
||||
|
||||
button {
|
||||
|
|
|
|||
|
|
@ -105,8 +105,8 @@
|
|||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
justify-content: space-between;
|
||||
padding: var(--espace-m);
|
||||
margin-bottom: var(--espace-xl);
|
||||
padding: var(--espace-m);
|
||||
|
||||
h3 {
|
||||
font-style: italic;
|
||||
|
|
|
|||
|
|
@ -150,8 +150,8 @@
|
|||
.panneau__pied-de-page {
|
||||
align-content: center;
|
||||
padding: var(--espace-l) 0;
|
||||
font-style: italic;
|
||||
font-size: 1.25rem;
|
||||
font-style: italic;
|
||||
color: var(--couleur-blanc);
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
|
|
|
|||
|
|
@ -171,7 +171,7 @@
|
|||
}
|
||||
|
||||
.panneau__sous-totaux {
|
||||
width: min(30rem, 100%);
|
||||
width: min(40rem, 100%);
|
||||
margin: auto;
|
||||
padding: var(--espace-l) var(--espace-xl);
|
||||
text-align: center;
|
||||
|
|
@ -199,6 +199,32 @@
|
|||
}
|
||||
}
|
||||
|
||||
&__choix-methode-livraison {
|
||||
flex-flow: row wrap;
|
||||
gap: var(--espace-xs) var(--espace-m);
|
||||
justify-content: center;
|
||||
font-size: 0.9rem;
|
||||
letter-spacing: inherit;
|
||||
|
||||
> label:first-of-type {
|
||||
cursor: revert;
|
||||
flex-basis: 100%;
|
||||
margin-bottom: var(--espace-xs);
|
||||
color: grey;
|
||||
text-align: center;
|
||||
text-transform: lowercase;
|
||||
}
|
||||
|
||||
div {
|
||||
display: flex;
|
||||
flex-flow: row nowrap;
|
||||
column-gap: 1ch;
|
||||
place-items: center;
|
||||
|
||||
input {}
|
||||
}
|
||||
}
|
||||
|
||||
&__conditions-livraison {
|
||||
margin-top: var(--espace-l);
|
||||
font-size: 0.8rem;
|
||||
|
|
|
|||
|
|
@ -8,9 +8,9 @@
|
|||
max-width: 100vw;
|
||||
height: var(--pied-de-page-hauteur);
|
||||
padding: var(--espace-m);
|
||||
font-size: 0.8rem;
|
||||
background: var(--couleur-jaune);
|
||||
border-top: 1px solid var(--couleur-noir);
|
||||
font-size: 0.8rem;
|
||||
|
||||
// Liens vers les pages du site
|
||||
.zone-menu-navigation-secondaire {
|
||||
|
|
|
|||
|
|
@ -59,7 +59,9 @@
|
|||
pointer-events: none;
|
||||
display: block;
|
||||
width: 1.75rem;
|
||||
|
||||
/* filter: drop-shadow(1px 1px 3px var(--couleur-gris-fonce)); */
|
||||
|
||||
/* transition: 0.2s filter; */
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -57,13 +57,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
@media (width <= 50rem) {
|
||||
.contenu {
|
||||
border-right: initial;
|
||||
border-left: initial;
|
||||
}
|
||||
}
|
||||
|
||||
&#page-cgv {
|
||||
.contenu {
|
||||
font-style: normal;
|
||||
|
|
@ -73,8 +66,8 @@
|
|||
}
|
||||
|
||||
&__textuel {
|
||||
padding: 0;
|
||||
max-width: initial;
|
||||
padding: 0;
|
||||
|
||||
&__section {
|
||||
width: 100%;
|
||||
|
|
@ -87,10 +80,10 @@
|
|||
|
||||
header {
|
||||
width: 100%;
|
||||
margin-bottom: var(--espace-l);
|
||||
padding: var(--espace-m) var(--espace-xl);
|
||||
border-top: 1px solid var(--couleur-noir);
|
||||
border-bottom: 1px solid var(--couleur-noir);
|
||||
margin-bottom: var(--espace-l);
|
||||
|
||||
h3 {
|
||||
width: fit-content;
|
||||
|
|
@ -102,9 +95,9 @@
|
|||
|
||||
ul {
|
||||
margin-bottom: 1lh;
|
||||
padding: 0 var(--espace-xl);
|
||||
list-style: square;
|
||||
list-style-position: inside;
|
||||
padding: 0 var(--espace-xl);
|
||||
|
||||
li {}
|
||||
}
|
||||
|
|
@ -120,4 +113,11 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (width <= 50rem) {
|
||||
.contenu {
|
||||
border-right: initial;
|
||||
border-left: initial;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@ export const SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE = "button.detail-produit__ac
|
|||
export const SELECTEUR_BOUTON_SUPPRESSION_PANIER = "button.detail-produit__actions__suppression";
|
||||
export const SELECTEUR_CHAMP_CODE_PROMO = "#panneau-panier #champ-code-promo";
|
||||
export const SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER = "input";
|
||||
export const SELECTEUR_CONTENEUR_METHODES_LIVRAISON = "#panneau-panier #choix-methode-livraison";
|
||||
export const SELECTEUR_ENSEMBLE_CODE_PROMO = "#panneau-panier #ensemble-code-promo";
|
||||
export const SELECTEUR_ENTREES_PANIER = "article";
|
||||
export const SELECTEUR_FORMULAIRE_FACTURATION = "#panneau-informations-client .panneau__formulaires__facturation";
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
export const ADRESSES_MAJ = "adressesMaj";
|
||||
export const CODE_PROMO_MAJ = "codePromoMaj";
|
||||
export const METHODES_LIVRAISON_MAJ = "methodesLivraisonMaj";
|
||||
export const PRODUITS_MAJ = "produitsMaj";
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import { ADRESSES_MAJ, CODE_PROMO_MAJ, METHODES_LIVRAISON_MAJ, PRODUITS_MAJ } from "../../constantes/evenements";
|
||||
|
||||
export const ADRESSES_MAJ_EVENT = new CustomEvent(ADRESSES_MAJ, {});
|
||||
export const CODE_PROMO_MAJ_EVENT = new CustomEvent(CODE_PROMO_MAJ, {});
|
||||
|
||||
export class MagasinPanier extends EventTarget {
|
||||
emetAdressesMaj(): void {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent(ADRESSES_MAJ),
|
||||
);
|
||||
}
|
||||
|
||||
emetCodePromoMaj(): void {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent(CODE_PROMO_MAJ),
|
||||
);
|
||||
}
|
||||
|
||||
emetMethodesLivraisonMaj(): void {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent(METHODES_LIVRAISON_MAJ),
|
||||
);
|
||||
}
|
||||
|
||||
emetProduitsMaj(): void {
|
||||
this.dispatchEvent(
|
||||
new CustomEvent(PRODUITS_MAJ),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,30 @@
|
|||
import type { GenericSchema, InferOutput, ValiError } from "valibot";
|
||||
|
||||
import { type Either, Maybe } from "purify-ts";
|
||||
|
||||
import { eitherJsonParse } from "./dom.ts";
|
||||
import { ErreurEntreeInexistante, type NonExistingKeyError } from "./erreurs.ts";
|
||||
import { eitherValiParseCurried } from "./validation.ts";
|
||||
|
||||
export type GetLocalStorage<S extends GenericSchema> = Either<ErreursGetLocalStorage<S>, InferOutput<S>>;
|
||||
type ErreursGetLocalStorage<S extends GenericSchema> =
|
||||
| NonExistingKeyError
|
||||
| SyntaxError
|
||||
| ValiError<S>;
|
||||
|
||||
/**
|
||||
* Récupère une entrée dans le Stockage Local (`localStorage`) sous forme d'`Either`.
|
||||
*
|
||||
* @param cle La clé de l'entrée.
|
||||
* @returns Un `Either` avec une `NonExistingKeyError` si la clé est absente (`Left`), la
|
||||
* valeur de l'entrée sinon (`Right`).
|
||||
*/
|
||||
export const eitherGetLocalStorage = (cle: string): Either<NonExistingKeyError, string> =>
|
||||
Maybe
|
||||
.fromNullable(localStorage.getItem(cle))
|
||||
.toEither(ErreurEntreeInexistante(`Clé ${cle} absente dans le stockage de session.`));
|
||||
|
||||
export const getAndParseLocalStorage = <S extends GenericSchema>(cle: string, schema: S): GetLocalStorage<S> =>
|
||||
eitherGetLocalStorage(cle)
|
||||
.chain(eitherJsonParse)
|
||||
.chain(eitherValiParseCurried(schema));
|
||||
|
|
@ -14,7 +14,7 @@ import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } fro
|
|||
import { reporteErreur } from "./erreurs.ts";
|
||||
import { WCErrorSchema } from "./schemas/api/erreurs.ts";
|
||||
import { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from "./schemas/messages.ts";
|
||||
import { eitherParse } from "./validation.ts";
|
||||
import { eitherValiParse } from "./validation.ts";
|
||||
|
||||
const canalPostMessage = (canal: BroadcastChannel, message: unknown): BroadcastChannel => {
|
||||
canal.postMessage(message);
|
||||
|
|
@ -78,6 +78,6 @@ export const valideMessageMajContenuPanier = (
|
|||
|
||||
// Correspondances
|
||||
export const reponseEstCodeErreurWC = (reponse: ReponseSimplifiee, codeErreurWC: string): boolean =>
|
||||
eitherParse(reponse, WCErrorSchema)
|
||||
eitherValiParse(reponse, WCErrorSchema)
|
||||
.map(v => v.body.code === codeErreurWC)
|
||||
.orDefault(false);
|
||||
|
|
|
|||
|
|
@ -14,5 +14,8 @@ export const inverseNombre = (nombre: number | string): number => Number(nombre)
|
|||
|
||||
export const formateEnEuros = (nombre: number | string): string => `${String(nombre)}€`;
|
||||
|
||||
export const diviseParCentEtFormateEnEuros = (nombre: number | string): string =>
|
||||
pipe(Number(nombre), diviseParCent, formateEnEuros);
|
||||
|
||||
export const diviseParCentEtArrondis = (nombre: number | string): string =>
|
||||
pipe(Number(nombre), diviseParCent, arrondisADeuxDecimales);
|
||||
|
|
|
|||
|
|
@ -5,7 +5,11 @@
|
|||
import { Either } from "purify-ts";
|
||||
import { type GenericSchema, type InferOutput, parse, type ValiError } from "valibot";
|
||||
|
||||
export const eitherParse = <Schema extends GenericSchema>(
|
||||
export const eitherValiParse = <Schema extends GenericSchema>(
|
||||
valeur: unknown,
|
||||
schema: Schema,
|
||||
): Either<ValiError<Schema>, InferOutput<Schema>> => Either.encase(() => parse(schema, valeur));
|
||||
|
||||
export const eitherValiParseCurried =
|
||||
<S extends GenericSchema>(schema: S) => (valeur: unknown): Either<ValiError<S>, InferOutput<S>> =>
|
||||
Either.encase(() => parse(schema, valeur));
|
||||
|
|
|
|||
|
|
@ -3,7 +3,6 @@ import { find as arrayFind, head as arrayHead } from "@mobily/ts-belt/Array";
|
|||
import { get as dictGet, map as dictMap, values as dictValues } from "@mobily/ts-belt/Dict";
|
||||
import { flatMap as optionFlatMap, getWithDefault as optionGetWithDefault } from "@mobily/ts-belt/Option";
|
||||
import { trim as stringTrim } from "@mobily/ts-belt/String";
|
||||
import { Option } from "@swan-io/boxed";
|
||||
import { EitherAsync, Maybe } from "purify-ts";
|
||||
import { match, P } from "ts-pattern";
|
||||
import { type AnySchema, ValiError } from "valibot";
|
||||
|
|
@ -21,13 +20,16 @@ import {
|
|||
ATTRIBUT_LIVRAISON_VALIDEE,
|
||||
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE,
|
||||
SELECTEUR_BOUTON_SEPARATION_ADRESSES,
|
||||
SELECTEUR_CONTENEUR_METHODES_LIVRAISON,
|
||||
SELECTEUR_ENTREES_PANIER,
|
||||
SELECTEUR_FORMULAIRE_PANIER,
|
||||
SELECTEUR_INSTRUCTIONS_CLIENT,
|
||||
SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES,
|
||||
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT,
|
||||
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
|
||||
SELECTEUR_SOUS_TOTAL_PRODUITS,
|
||||
SELECTEUR_TOTAL_PANIER,
|
||||
} from "../constantes/dom";
|
||||
import { ADRESSES_MAJ, CODE_PROMO_MAJ } from "../constantes/evenements";
|
||||
import { NOM_CANAL_REVALIDATION_LIVRAISON } from "../constantes/messages";
|
||||
import {
|
||||
ERREUR_ADRESSE_MAUVAIS_CODE_POSTAL,
|
||||
|
|
@ -38,6 +40,7 @@ import {
|
|||
import { eitherJsonParse, eitherSessionStorageGet } from "../lib/dom";
|
||||
import { leveErreur, type NonExistingKeyError, reporteErreur, reporteEtJournaliseErreur } from "../lib/erreurs";
|
||||
import { ErreurAdresseInvalide } from "../lib/erreurs/adresses";
|
||||
import { ADRESSES_MAJ_EVENT } from "../lib/evenements/panier";
|
||||
import { emetUniqueMessageBroadcastChannel } from "../lib/messages";
|
||||
import { diviseParCent, formateEnEuros } from "../lib/nombres";
|
||||
import { creeReponseSimplifiee, eitherAsyncFetch, postBackend, traiteErreursBackendWooCommerce } from "../lib/reseau";
|
||||
|
|
@ -53,7 +56,8 @@ import {
|
|||
recupereElementsDocumentEither,
|
||||
recupereEleOuLeve,
|
||||
} from "../lib/utils";
|
||||
import { eitherParse } from "../lib/validation";
|
||||
import { eitherValiParse } from "../lib/validation";
|
||||
import { genereHtmlMethodesLivraison } from "./scripts-page-panier-methodes-livraison";
|
||||
|
||||
// @ts-expect-error -- États injectés par le modèle PHP
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP
|
||||
|
|
@ -62,42 +66,54 @@ const ETATS_PAGE: EtatsPageGenerique = _etats;
|
|||
const E = {
|
||||
BOUTON_ACTIONS_FORMULAIRE: recupereEleOuLeve<HTMLButtonElement>(SELECTEUR_BOUTON_ACTIONS_FORMULAIRE),
|
||||
BOUTON_SEPARATION_ADRESSES: recupereEleOuLeve<HTMLInputElement>(SELECTEUR_BOUTON_SEPARATION_ADRESSES),
|
||||
CONTENEUR_METHODES_LIVRAISON: recupereEleOuLeve<HTMLFieldSetElement>(SELECTEUR_CONTENEUR_METHODES_LIVRAISON),
|
||||
ENTREES_PANIER_EITHER: recupereElementsDocumentEither<HTMLElement>(SELECTEUR_ENTREES_PANIER),
|
||||
FORMULAIRE_PANIER: recupereEleOuLeve<HTMLFormElement>(SELECTEUR_FORMULAIRE_PANIER),
|
||||
INSTRUCTIONS_CLIENT: recupereEleOuLeve<HTMLTextAreaElement>(SELECTEUR_INSTRUCTIONS_CLIENT),
|
||||
MESSAGE_ADRESSES: recupereEleOuLeve<HTMLParagraphElement>(SELECTEUR_MESSAGE_FORMULAIRE_ADRESSES),
|
||||
TOTAL_LIVRAISON_COUT: recupereEleOuLeve<HTMLElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
|
||||
TOTAL_LIVRAISON_PRESTATAIRE: recupereEleOuLeve<HTMLSpanElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
|
||||
SOUS_TOTAL_LIVRAISON_COUT: recupereEleOuLeve<HTMLElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
|
||||
SOUS_TOTAL_PRODUITS: recupereEleOuLeve<HTMLElement>(SELECTEUR_SOUS_TOTAL_PRODUITS),
|
||||
TOTAL_PANIER: recupereEleOuLeve<HTMLSpanElement>(SELECTEUR_TOTAL_PANIER),
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialise l'écoute sur le `BroadcastChannel` de revalidation de la livraison.
|
||||
*
|
||||
* Lorsqu'un Message est émis, force l'Utilisateur à réaliser une requête pour le recalcul de ses conditions de
|
||||
* livraison.
|
||||
* Réinitialise le bouton de soumission du Formulaire en revenant à l'étape de validation des adresses.
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
export const initialiseCanalRevalidationLivraison = (): void => {
|
||||
new BroadcastChannel(NOM_CANAL_REVALIDATION_LIVRAISON).addEventListener("message", (): void => {
|
||||
export const reinitialiseValidationLivraison = (): void => {
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_LIVRAISON_VALIDEE);
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.textContent = "Calculate shipping";
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Lorsque le Formulaire du Panier change (que l'Utilisateur a changé une valeur), demande une revalidation
|
||||
* de la livraison si elle a été précédemment validée.
|
||||
* Initialise les Émetteurs d'Événements sur divers parties du Panier.
|
||||
*
|
||||
* 1. Émet un Événement de mise à jour des Adresses quand le Formulaire est modifié (s'il est valide).
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
export const demandeRevalidationLivraisonAMajFormulaires = (): void =>
|
||||
export const initialiseEmetteursEvenementsFormulairePanier = (): void => {
|
||||
E.FORMULAIRE_PANIER.addEventListener("change", (): void => {
|
||||
Maybe
|
||||
.fromFalsy(E.FORMULAIRE_PANIER.checkValidity())
|
||||
.chainNullable((): boolean => E.BOUTON_ACTIONS_FORMULAIRE.hasAttribute(ATTRIBUT_LIVRAISON_VALIDEE))
|
||||
.ifJust((): void => emetUniqueMessageBroadcastChannel(NOM_CANAL_REVALIDATION_LIVRAISON, true));
|
||||
.ifJust((): boolean => window.dispatchEvent(ADRESSES_MAJ_EVENT));
|
||||
});
|
||||
};
|
||||
|
||||
/**
|
||||
* Souscris aux différents Événements liés aux Panier et déclenche différentes opérations en fonction de ces derniers.
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
export const souscrisEvenementsPanier = (): void => {
|
||||
window.addEventListener(ADRESSES_MAJ, (): void => {
|
||||
reinitialiseValidationLivraison();
|
||||
});
|
||||
window.addEventListener(CODE_PROMO_MAJ, (): void => {
|
||||
reinitialiseValidationLivraison();
|
||||
});
|
||||
};
|
||||
|
||||
export const initialiseBoutonCalculLivraison = (): void => {
|
||||
// Déclenche la requête pour la soumission des adresses
|
||||
|
|
@ -106,7 +122,9 @@ export const initialiseBoutonCalculLivraison = (): void => {
|
|||
// Ne fais rien si le Formulaire n'est pas valide
|
||||
.fromFalsy(E.FORMULAIRE_PANIER.checkValidity())
|
||||
// Ne fais rien si la livraison a déjà été validée
|
||||
.chainNullable((): boolean => !E.BOUTON_ACTIONS_FORMULAIRE.hasAttribute(ATTRIBUT_LIVRAISON_VALIDEE))
|
||||
.chainNullable((): boolean | null =>
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.hasAttribute(ATTRIBUT_LIVRAISON_VALIDEE) ? null : true
|
||||
)
|
||||
.ifJust((): void => {
|
||||
evenement.preventDefault();
|
||||
|
||||
|
|
@ -151,7 +169,7 @@ export const initialiseBoutonCalculLivraison = (): void => {
|
|||
// Réalise la requête et traite sa réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les Arguments de la Requête
|
||||
.liftEither(eitherParse(argumentsFormulaire, WCStoreCartUpdateCustomerArgsSchema))
|
||||
.liftEither(eitherValiParse(argumentsFormulaire, WCStoreCartUpdateCustomerArgsSchema))
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes et lancer une animation de chargement
|
||||
.ifRight((): void => {
|
||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||
|
|
@ -176,28 +194,29 @@ export const initialiseBoutonCalculLivraison = (): void => {
|
|||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCStoreCartSchema)))
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherValiParse(corps, WCStoreCartSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((panier: WCStoreCart): void => {
|
||||
E.MESSAGE_ADRESSES.textContent = " ";
|
||||
|
||||
const sousTotalLivraison = panier.totals.total_shipping === 0
|
||||
? "Free"
|
||||
: pipe(diviseParCent(panier.totals.total_shipping), formateEnEuros);
|
||||
// const sousTotalLivraison = panier.totals.total_shipping === 0
|
||||
// ? "Free"
|
||||
// : pipe(diviseParCent(panier.totals.total_shipping), formateEnEuros);
|
||||
const sousTotalLivraison = pipe(diviseParCent(panier.totals.total_shipping), formateEnEuros);
|
||||
const methodesLivraison = pipe(arrayHead(panier.shipping_rates), optionFlatMap(dictGet("shipping_rates")));
|
||||
const methodeChoisie = optionFlatMap(methodesLivraison, arrayHead);
|
||||
const prestataireLivraison = pipe(methodeChoisie, optionFlatMap(dictGet("name")));
|
||||
|
||||
// Met à jour les informations de Livraison affichés à l'Utilisateur
|
||||
E.TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;
|
||||
E.TOTAL_LIVRAISON_PRESTATAIRE.textContent = optionGetWithDefault(prestataireLivraison, "???");
|
||||
E.SOUS_TOTAL_LIVRAISON_COUT.textContent = sousTotalLivraison;
|
||||
|
||||
// Sauvegarde la Méthode de Livraison dans le Stockage de Session
|
||||
sessionStorage.setItem(
|
||||
// Sauvegarde la Méthode de Livraison dans LocalStorage
|
||||
localStorage.setItem(
|
||||
"shipping_rates",
|
||||
JSON.stringify(optionGetWithDefault(methodesLivraison, [])),
|
||||
);
|
||||
|
||||
// Affiche les méthodes disponibles à l'Utilisateur
|
||||
genereHtmlMethodesLivraison(E.CONTENEUR_METHODES_LIVRAISON, optionGetWithDefault(methodesLivraison, []));
|
||||
|
||||
// Active le Bouton pour la création de la Commande
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.textContent = "Check-out";
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.setAttribute(ATTRIBUT_LIVRAISON_VALIDEE, "");
|
||||
|
|
@ -277,7 +296,7 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
// Récupère la méthode de livraison depuis le stockage de session sous forme d'objet
|
||||
.chain(eitherJsonParse)
|
||||
// Vérifie la forme de l'objet récupéré
|
||||
.chain((json: JSONValue) => eitherParse(json, WCStoreShippingRateShippingRatesSchema))
|
||||
.chain((json: JSONValue) => eitherValiParse(json, WCStoreShippingRateShippingRatesSchema))
|
||||
// Traite de manière différenciée les Erreurs
|
||||
.ifLeft((erreur: NonExistingKeyError | SyntaxError | ValiError<AnySchema>): void => {
|
||||
match(erreur)
|
||||
|
|
@ -356,7 +375,7 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
// Réalise la requête et traite sa réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les Arguments de la Requête
|
||||
.liftEither(eitherParse(argumentsFormulaire, WCV3OrdersArgsSchema))
|
||||
.liftEither(eitherValiParse(argumentsFormulaire, WCV3OrdersArgsSchema))
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes et lancer une animation de chargement
|
||||
.ifRight((): void => {
|
||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||
|
|
@ -382,7 +401,7 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCV3OrderSchema)))
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherValiParse(corps, WCV3OrderSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((commande: WCV3Order): void => {
|
||||
E.BOUTON_ACTIONS_FORMULAIRE.removeAttribute(ATTRIBUT_CHARGEMENT);
|
||||
|
|
@ -390,11 +409,11 @@ export const initialiseBoutonCreationCommande = (): void => {
|
|||
E.MESSAGE_ADRESSES.textContent = " ";
|
||||
|
||||
// Redirige vers Stripe
|
||||
Option
|
||||
Maybe
|
||||
.fromNullable(new URL(`https://${window.location.host}/checkout`))
|
||||
.tapSome(url => url.searchParams.append("order_key", commande.order_key))
|
||||
.tapSome(url => url.searchParams.append("order_id", String(commande.id)))
|
||||
.tapSome(url => location.assign(url));
|
||||
.ifJust(url => url.searchParams.append("order_key", commande.order_key))
|
||||
.ifJust(url => url.searchParams.append("order_id", String(commande.id)))
|
||||
.ifJust(url => location.assign(url));
|
||||
})
|
||||
// 7. Traite les Erreurs et affiche un message à l'Utilisateur
|
||||
.ifLeft((erreur: FetchErrors | HttpCodeErrors | ValiError<AnySchema>): void => {
|
||||
|
|
|
|||
|
|
@ -33,6 +33,7 @@ import { lanceAnimationCycleLoading } from "../lib/animations";
|
|||
import { accorderCibleASelecteur } from "../lib/dom";
|
||||
import { reporteErreur, ServerError } from "../lib/erreurs";
|
||||
import { ErreurCodePromoInvalide } from "../lib/erreurs/codes-promo";
|
||||
import { CODE_PROMO_MAJ_EVENT } from "../lib/evenements/panier";
|
||||
import { estReponse500 } from "../lib/gardes";
|
||||
import { emetUniqueMessageBroadcastChannel, reponseEstCodeErreurWC } from "../lib/messages";
|
||||
import { arrondisADeuxDecimales, diviseParCent, formateEnEuros, inverseNombre } from "../lib/nombres";
|
||||
|
|
@ -41,7 +42,7 @@ import { WCStoreCartSchema } from "../lib/schemas/api/cart";
|
|||
import { WCStoreCartApplyCouponArgsSchema } from "../lib/schemas/api/cart-apply-coupon";
|
||||
import { WCStoreCartRemoveCouponArgsSchema } from "../lib/schemas/api/cart-remove-coupon";
|
||||
import { recupereEleOuLeve } from "../lib/utils";
|
||||
import { eitherParse } from "../lib/validation";
|
||||
import { eitherValiParse } from "../lib/validation";
|
||||
|
||||
// @ts-expect-error -- États injectés par le modèle PHP
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP
|
||||
|
|
@ -82,7 +83,7 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
({ valeurCodePromo }) =>
|
||||
void EitherAsync
|
||||
// Vérifie le Schéma des arguments
|
||||
.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartApplyCouponArgsSchema))
|
||||
.liftEither(eitherValiParse({ code: valeurCodePromo }, WCStoreCartApplyCouponArgsSchema))
|
||||
.ifRight(() => {
|
||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||
E.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
|
||||
|
|
@ -120,7 +121,7 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
})
|
||||
)
|
||||
// Vérifie le Schéma de la Réponse du backend
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema)))
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherValiParse(corpsReponse, WCStoreCartSchema)))
|
||||
// Déclenche les mises à jour du DOM avec les données du nouveau Panier
|
||||
.ifRight((panier: WCStoreCart) => {
|
||||
E.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
|
||||
|
|
@ -141,7 +142,8 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
formateEnEuros,
|
||||
);
|
||||
|
||||
emetUniqueMessageBroadcastChannel(NOM_CANAL_REVALIDATION_LIVRAISON, true);
|
||||
window.dispatchEvent(CODE_PROMO_MAJ_EVENT);
|
||||
// emetUniqueMessageBroadcastChannel(NOM_CANAL_REVALIDATION_LIVRAISON, true);
|
||||
})
|
||||
.ifLeft(erreur => {
|
||||
// Rétablis le texte d'origine
|
||||
|
|
@ -174,6 +176,7 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
})
|
||||
.finally(() => {
|
||||
// Désactive l'animation de chargement et rend le Bouton de nouveau cliquable
|
||||
// TODO: Créer un type d'Événement ?
|
||||
E.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
|
||||
E.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
|
||||
})
|
||||
|
|
@ -189,7 +192,7 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
},
|
||||
({ valeurCodePromo }) =>
|
||||
void EitherAsync
|
||||
.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartRemoveCouponArgsSchema))
|
||||
.liftEither(eitherValiParse({ code: valeurCodePromo }, WCStoreCartRemoveCouponArgsSchema))
|
||||
.ifRight(() => {
|
||||
E.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
|
||||
E.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
|
||||
|
|
@ -209,7 +212,7 @@ export const initialiseElementsCodePromo = (): void => {
|
|||
return await reponse.json();
|
||||
})
|
||||
)
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema)))
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherValiParse(corpsReponse, WCStoreCartSchema)))
|
||||
.ifRight((panier: WCStoreCart) => {
|
||||
E.ENSEMBLE_CODE_PROMO.toggleAttribute(ATTRIBUT_CODE_PROMO_PRESENT);
|
||||
E.ENSEMBLE_CODE_PROMO.reset();
|
||||
|
|
|
|||
|
|
@ -0,0 +1,111 @@
|
|||
import { find as arrayFind, forEach as arrayForEach, map as arrayMap } from "@mobily/ts-belt/Array";
|
||||
import { html, render, type TemplateResult } from "lit-html";
|
||||
import { Maybe } from "purify-ts";
|
||||
|
||||
import type { WCStoreShippingRateShippingRate } from "../lib/types/api/cart";
|
||||
import type { WCStoreShippingRateShippingRates } from "../lib/types/api/couts-livraison";
|
||||
|
||||
import {
|
||||
ATTRIBUT_HIDDEN,
|
||||
SELECTEUR_CONTENEUR_METHODES_LIVRAISON,
|
||||
SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT,
|
||||
SELECTEUR_SOUS_TOTAL_PRODUITS,
|
||||
SELECTEUR_TOTAL_PANIER,
|
||||
} from "../constantes/dom";
|
||||
import { recupereElementsAvecSelecteur } from "../lib/dom";
|
||||
import { reporteEtJournaliseErreur } from "../lib/erreurs";
|
||||
import { getAndParseLocalStorage } from "../lib/local-storage";
|
||||
import { diviseParCent, diviseParCentEtFormateEnEuros, formateEnEuros } from "../lib/nombres";
|
||||
import { WCStoreShippingRateShippingRatesSchema } from "../lib/schemas/api/couts-livraison";
|
||||
import { recupereEleOuLeve } from "../lib/utils";
|
||||
|
||||
const E = {
|
||||
CONTENEUR_METHODES_LIVRAISON: recupereEleOuLeve<HTMLFieldSetElement>(SELECTEUR_CONTENEUR_METHODES_LIVRAISON),
|
||||
SOUS_TOTAL_LIVRAISON_COUT: recupereEleOuLeve<HTMLElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT),
|
||||
SOUS_TOTAL_PRODUITS: recupereEleOuLeve<HTMLElement>(SELECTEUR_SOUS_TOTAL_PRODUITS),
|
||||
TOTAL_PANIER: recupereEleOuLeve<HTMLSpanElement>(SELECTEUR_TOTAL_PANIER),
|
||||
};
|
||||
|
||||
/**
|
||||
* Créé un Événement MethodesLivraisonMaj déclenché quand l'Utilisateur change son choix avec en corps un object ShippingRates
|
||||
* À l'Émission, sauvegarde les méthodes mises à jour dans le LocalStorage et met à jour le DOM
|
||||
* Le déclenchement de la mise à jour des adresses déclenche aussi cet Événement.
|
||||
* Le LocalStorage est comparé avec la Réponse, et si la méthode jusqe-là sélectionnée est présente dans la Réponse, la mise à jour du DOM doit se faire en conservant ce choix.
|
||||
*/
|
||||
|
||||
export const initialiseBoutonsChoixMethodesLivraison = (): void => {
|
||||
recupereElementsAvecSelecteur(E.CONTENEUR_METHODES_LIVRAISON)<HTMLInputElement>("input").ifRight(
|
||||
arrayForEach((i): void =>
|
||||
// Met à jour sous-total de livraison et total au changement de méthode
|
||||
i.addEventListener("click", (evenement: MouseEvent): void => {
|
||||
const methodeChoisie = (evenement.target as HTMLInputElement).value;
|
||||
|
||||
getAndParseLocalStorage("shipping_rates", WCStoreShippingRateShippingRatesSchema)
|
||||
.map(arrayMap((m): WCStoreShippingRateShippingRate => {
|
||||
m.selected = m.method_id === methodeChoisie;
|
||||
return m;
|
||||
}))
|
||||
// Enregistre les méthodes de livraison mises à jour
|
||||
.ifRight((xs): void => localStorage.setItem("shipping_rates", JSON.stringify(xs)))
|
||||
.ifLeft(reporteEtJournaliseErreur)
|
||||
// Met à jour sous-total livraison et total
|
||||
.toMaybe()
|
||||
.chainNullable(xs => xs.find(m => m.selected))
|
||||
.ifJust((m): void => {
|
||||
Maybe
|
||||
.fromNullable(E.SOUS_TOTAL_PRODUITS.textContent)
|
||||
.map(s => s.split("€")[0])
|
||||
.chainNullable(Number)
|
||||
.map(t => formateEnEuros(t + diviseParCent(m.price)))
|
||||
.ifJust(t => {
|
||||
E.TOTAL_PANIER.textContent = t;
|
||||
E.SOUS_TOTAL_LIVRAISON_COUT.textContent = diviseParCentEtFormateEnEuros(m.price);
|
||||
});
|
||||
});
|
||||
})
|
||||
),
|
||||
);
|
||||
};
|
||||
|
||||
export const genereHtmlMethodesLivraison = (
|
||||
conteneur: HTMLElement,
|
||||
methodes: WCStoreShippingRateShippingRates,
|
||||
): void => {
|
||||
// Cache les méthodes s'il n'y en a pas
|
||||
if (methodes.length === 0) {
|
||||
conteneur.setAttribute(ATTRIBUT_HIDDEN, "");
|
||||
return;
|
||||
}
|
||||
|
||||
// Retire les méthodes de livraison initiales
|
||||
recupereElementsAvecSelecteur(conteneur)("div[data-methode-initiale]").ifRight(arrayForEach(div => div.remove()));
|
||||
|
||||
const methodeSelectionnee: string = getAndParseLocalStorage("shipping_rates", WCStoreShippingRateShippingRatesSchema)
|
||||
.ifLeft(reporteEtJournaliseErreur)
|
||||
.toMaybe()
|
||||
.chainNullable(arrayFind(m => m.selected))
|
||||
.map(m => m.method_id)
|
||||
.orDefault("");
|
||||
|
||||
const methodesHtml: ReadonlyArray<TemplateResult> = arrayMap(methodes, methode => {
|
||||
return html`
|
||||
<div>
|
||||
<input
|
||||
id="methode-livraison-${methode.method_id}"
|
||||
name="choix-methode-livraison"
|
||||
type="radio"
|
||||
value="${methode.method_id}"
|
||||
.checked="${methode.method_id === methodeSelectionnee}"
|
||||
>
|
||||
<label for="methode-livraison-${methode.method_id}">${methode.name} (${
|
||||
diviseParCentEtFormateEnEuros(methode.price)
|
||||
})</label>
|
||||
</div>`;
|
||||
});
|
||||
|
||||
// Ajoute les nouveaux Produits dans le DOM
|
||||
conteneur.removeAttribute(ATTRIBUT_HIDDEN);
|
||||
render(methodesHtml, conteneur);
|
||||
// Recréé les Écouteurs de clic sur les choix de méthodes
|
||||
initialiseBoutonsChoixMethodesLivraison();
|
||||
};
|
||||
|
|
@ -37,7 +37,7 @@ import { WCStoreCartSchema } from "../lib/schemas/api/cart";
|
|||
import { WCStoreCartRemoveItemArgsSchema } from "../lib/schemas/api/cart-remove-item";
|
||||
import { WCStoreCartUpdateItemArgsSchema } from "../lib/schemas/api/cart-update-item";
|
||||
import { recupereElementsDocumentEither } from "../lib/utils";
|
||||
import { eitherParse } from "../lib/validation";
|
||||
import { eitherValiParse } from "../lib/validation";
|
||||
|
||||
// @ts-expect-error -- États injectés par le modèle PHP
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP
|
||||
|
|
@ -122,7 +122,9 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
// Réalise la requête et traite sa réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les Arguments de la Requête
|
||||
.liftEither(eitherParse({ key: clePanier, quantity: valeur + 1 }, WCStoreCartUpdateItemArgsSchema))
|
||||
.liftEither(
|
||||
eitherValiParse({ key: clePanier, quantity: valeur + 1 }, WCStoreCartUpdateItemArgsSchema),
|
||||
)
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes
|
||||
.ifRight(() => pipe(entrees, arrayMap(recupereElementsEntreePanier), majActivationBoutons(false)))
|
||||
// 3. Exécute la requête via fetch sous forme d'EitherAsync
|
||||
|
|
@ -145,7 +147,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCStoreCartSchema)))
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherValiParse(corps, WCStoreCartSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((panier: WCStoreCart): void => {
|
||||
// Émet un Message avec le nouveau nombre de Produits dans le Panier
|
||||
|
|
@ -202,7 +204,9 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
// Réalise la requête et traite sa réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les Arguments de la Requête
|
||||
.liftEither(eitherParse({ key: clePanier, quantity: valeur - 1 }, WCStoreCartUpdateItemArgsSchema))
|
||||
.liftEither(
|
||||
eitherValiParse({ key: clePanier, quantity: valeur - 1 }, WCStoreCartUpdateItemArgsSchema),
|
||||
)
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes
|
||||
.ifRight(() => pipe(entrees, arrayMap(recupereElementsEntreePanier), majActivationBoutons(false)))
|
||||
// 3. Exécute la requête via fetch sous forme d'EitherAsync
|
||||
|
|
@ -225,7 +229,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCStoreCartSchema)))
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherValiParse(corps, WCStoreCartSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((panier: WCStoreCart): void => {
|
||||
// Émet un Message avec le nouveau nombre de Produits dans le Panier
|
||||
|
|
@ -281,7 +285,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
// Réalise la requête et traite sa réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les Arguments de la Requête
|
||||
.liftEither(eitherParse({ key: clePanier }, WCStoreCartRemoveItemArgsSchema))
|
||||
.liftEither(eitherValiParse({ key: clePanier }, WCStoreCartRemoveItemArgsSchema))
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes
|
||||
.ifRight(() => pipe(entrees, arrayMap(recupereElementsEntreePanier), majActivationBoutons(false)))
|
||||
// 3. Exécute la requête via fetch sous forme d'EitherAsync
|
||||
|
|
@ -304,7 +308,7 @@ export const initialiseActionsEntreesPanier = (): void => {
|
|||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherParse(corps, WCStoreCartSchema)))
|
||||
.chain((corps: unknown) => EitherAsync.liftEither(eitherValiParse(corps, WCStoreCartSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((panier: WCStoreCart): void => {
|
||||
// Émet un Message avec le nouveau nombre de Produits dans le Panier
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import { BadRequestError, reporteErreur, ServerError } from "./lib/erreurs.ts";
|
|||
import { creeReponseSimplifiee, getBackendAvecParametresUrl } from "./lib/reseau.ts";
|
||||
import { WCV3ProductsArgsSchema, WCV3ProductsSchema } from "./lib/schemas/api/v3/products.ts";
|
||||
import { recupereEleOuLeve } from "./lib/utils.ts";
|
||||
import { eitherParse } from "./lib/validation.ts";
|
||||
import { eitherValiParse } from "./lib/validation.ts";
|
||||
|
||||
// @ts-expect-error -- États injectés par le modèle PHP
|
||||
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP
|
||||
|
|
@ -62,7 +62,7 @@ const initialisePageBoutique = (): void => {
|
|||
|
||||
void EitherAsync
|
||||
// 1. Valide les Arguments de la Requête
|
||||
.liftEither(eitherParse(args, WCV3ProductsArgsSchema))
|
||||
.liftEither(eitherValiParse(args, WCV3ProductsArgsSchema))
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes et lancer une animation de chargement
|
||||
.ifRight(() => {
|
||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||
|
|
@ -94,7 +94,7 @@ const initialisePageBoutique = (): void => {
|
|||
})
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCV3ProductsSchema)))
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherValiParse(corpsReponse, WCV3ProductsSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((donnees: WCV3Products) => {
|
||||
// Cache le bouton s'il y a moins de 12 Produits disponibles (que l'on est à la dernière page)
|
||||
|
|
|
|||
|
|
@ -33,12 +33,13 @@ import { valideMessageMajBoutonPanier, valideMessageMajContenuPanier } from "./l
|
|||
import { arrondisADeuxDecimales, diviseParCent, formateEnEuros, inverseNombre } from "./lib/nombres.ts";
|
||||
import { propEither, recupereElementsDocumentEither, recupereEleOuLeve } from "./lib/utils.ts";
|
||||
import {
|
||||
demandeRevalidationLivraisonAMajFormulaires,
|
||||
initialiseBoutonCalculLivraison,
|
||||
initialiseBoutonCreationCommande,
|
||||
initialiseCanalRevalidationLivraison,
|
||||
initialiseEmetteursEvenementsFormulairePanier,
|
||||
souscrisEvenementsPanier,
|
||||
} from "./page-panier/scripts-page-panier-adresses.ts";
|
||||
import { initialiseElementsCodePromo } from "./page-panier/scripts-page-panier-code-promo.ts";
|
||||
import { initialiseBoutonsChoixMethodesLivraison } from "./page-panier/scripts-page-panier-methodes-livraison.ts";
|
||||
import { initialiseActionsEntreesPanier } from "./page-panier/scripts-page-panier-panneau-produits.ts";
|
||||
|
||||
type ElementsEntreePanier = {
|
||||
|
|
@ -193,13 +194,14 @@ const initialiseMajFormulairesPanier = (): void => {
|
|||
};
|
||||
|
||||
document.addEventListener("DOMContentLoaded", (): void => {
|
||||
initialiseCanalRevalidationLivraison();
|
||||
initialiseEmetteursEvenementsFormulairePanier();
|
||||
souscrisEvenementsPanier();
|
||||
initialiseActionsEntreesPanier();
|
||||
initialiseBoutonsChoixMethodesLivraison();
|
||||
initialiseMajConteneurPanier();
|
||||
initialiseMajContenuPanier();
|
||||
initialiseMajFormulairesPanier();
|
||||
initialiseBoutonCalculLivraison();
|
||||
initialiseBoutonCreationCommande();
|
||||
initialiseElementsCodePromo();
|
||||
demandeRevalidationLivraisonAMajFormulaires();
|
||||
});
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ import { creeReponseSimplifiee, eitherAsyncFetch, postBackend } from "./lib/rese
|
|||
import { WCStoreCartAddItemArgsSchema } from "./lib/schemas/api/cart-add-item.ts";
|
||||
import { WCStoreCartSchema } from "./lib/schemas/api/cart.ts";
|
||||
import { recupereElementDocumentEither, recupereEleOuLeve, recupereElesOuLeve } from "./lib/utils.ts";
|
||||
import { eitherParse } from "./lib/validation.ts";
|
||||
import { eitherValiParse } from "./lib/validation.ts";
|
||||
|
||||
type EnsembleLienContenu = [HTMLAnchorElement, HTMLElement];
|
||||
/** États utiles pour les scripts de la page. */
|
||||
|
|
@ -201,7 +201,7 @@ const ajouteProduitAuPanier = (): void => {
|
|||
// Réalise la Requête et traite sa Réponse
|
||||
void EitherAsync
|
||||
// 1. Valide les arguments de la Requête
|
||||
.liftEither(eitherParse(argsRequete, WCStoreCartAddItemArgsSchema))
|
||||
.liftEither(eitherValiParse(argsRequete, WCStoreCartAddItemArgsSchema))
|
||||
// 2. Exécute un Effet pour empêcher les requêtes concurrentes et lancer une animation de chargement
|
||||
.ifRight(() => {
|
||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||
|
|
@ -233,7 +233,7 @@ const ajouteProduitAuPanier = (): void => {
|
|||
)
|
||||
)
|
||||
// 5. Vérifie le Schéma de la Réponse
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherParse(corpsReponse, WCStoreCartSchema)))
|
||||
.chain((corpsReponse: unknown) => EitherAsync.liftEither(eitherValiParse(corpsReponse, WCStoreCartSchema)))
|
||||
// 6. Exécute un Effet pour la mise à jour du DOM avec les Résultats
|
||||
.ifRight((panier: WCStoreCart) =>
|
||||
pipe(
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@
|
|||
<div class="detail-produit__actions">
|
||||
<button
|
||||
class="detail-produit__actions__soustraction"
|
||||
{{ produit.quantite > 1 ? "" : "disabled" }}
|
||||
{{ produit.quantite < 1 ? "disabled" }}
|
||||
type="button"
|
||||
>
|
||||
-
|
||||
|
|
@ -85,18 +85,18 @@
|
|||
<form
|
||||
action=""
|
||||
class="panneau__instructions-code-promo__code-promo"
|
||||
{{ code_promo ? "data-code-promo-present" : "" }}
|
||||
{{ code_promo ? "data-code-promo-present" }}
|
||||
id="ensemble-code-promo"
|
||||
>
|
||||
<input
|
||||
{{ code_promo ? "disabled" : "" }}
|
||||
{{ code_promo ? "disabled" }}
|
||||
id="champ-code-promo"
|
||||
maxlength="20"
|
||||
minlength="3"
|
||||
name="code-promo"
|
||||
placeholder="Discount code or gift card"
|
||||
type="text"
|
||||
value='{{ code_promo ? code_promo : ""}}'
|
||||
value="{{ code_promo ? code_promo }}"
|
||||
>
|
||||
<button
|
||||
class="bouton-blanc-sur-noir"
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
<div
|
||||
class="panneau__sous-totaux__ligne"
|
||||
id="sous-total-reduction"
|
||||
{{ code_promo ? "" : "hidden"}}
|
||||
{{ not code_promo ? "hidden"}}
|
||||
>
|
||||
<p>Discount:</p>
|
||||
<p><strong>-{{ sous_total_reduction }}€</strong></p>
|
||||
|
|
@ -134,23 +134,43 @@
|
|||
id="sous-total-livraison"
|
||||
>
|
||||
<p>Shipping:</p>
|
||||
{% if sous_total_livraison == 0 %}
|
||||
{% if not adresse_renseignee %}
|
||||
<p>
|
||||
<strong>Enter your delivery address</strong>
|
||||
<br>
|
||||
<span> </span>
|
||||
</p>
|
||||
{% else %}
|
||||
<p>
|
||||
<strong>{{ sous_total_livraison }}€</strong>
|
||||
<br>
|
||||
<span>{{ methode_livraison }}</span>
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<fieldset
|
||||
class="panneau__sous-totaux__choix-methode-livraison"
|
||||
{{ not adresse_renseignee ? "hidden" }}
|
||||
id="choix-methode-livraison"
|
||||
>
|
||||
<label>Select your shipping method</label>
|
||||
|
||||
{% for methode_livraison in methodes_livraison %}
|
||||
<div data-methode-initiale>
|
||||
<input
|
||||
{{ methode_livraison.selectionnee ? "checked"}}
|
||||
data-prix="{{ methode_livraison.prix }}"
|
||||
id="methode-livraison-{{ methode_livraison.id }}"
|
||||
name="choix-methode-livraison"
|
||||
type="radio"
|
||||
value="{{ methode_livraison.id }}"
|
||||
>
|
||||
<label for="methode-livraison-{{ methode_livraison.id }}">{{ methode_livraison.titre }} ({{
|
||||
methode_livraison.prix
|
||||
}}€)</label>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</fieldset>
|
||||
|
||||
<p class="panneau__sous-totaux__conditions-livraison">
|
||||
Belgium and France: free shipping on orders above 50€.<br>
|
||||
Belgium and France: free shipping on orders above 50€ (Pickup Point only).<br>
|
||||
Worldwide: free shipping on orders above 100€.
|
||||
</p>
|
||||
</div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue