2024-11-21
fonc(db) exporte la BDD de production corvée(images) ajoute les images téléversées
50
composer.lock
generated
|
|
@ -1887,16 +1887,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "roots/wordpress",
|
"name": "roots/wordpress",
|
||||||
"version": "6.7",
|
"version": "6.7.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/roots/wordpress.git",
|
"url": "https://github.com/roots/wordpress.git",
|
||||||
"reference": "1bdabdb9171ac5323edbf4792ce353d475467d27"
|
"reference": "9451af491af7124c12186398c56ab87a6e145123"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/roots/wordpress/zipball/1bdabdb9171ac5323edbf4792ce353d475467d27",
|
"url": "https://api.github.com/repos/roots/wordpress/zipball/9451af491af7124c12186398c56ab87a6e145123",
|
||||||
"reference": "1bdabdb9171ac5323edbf4792ce353d475467d27",
|
"reference": "9451af491af7124c12186398c56ab87a6e145123",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|
@ -1918,7 +1918,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/roots/wordpress/issues",
|
"issues": "https://github.com/roots/wordpress/issues",
|
||||||
"source": "https://github.com/roots/wordpress/tree/6.7"
|
"source": "https://github.com/roots/wordpress/tree/6.7.1"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|
@ -1926,7 +1926,7 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-07-16T12:03:00+00:00"
|
"time": "2024-11-13T09:56:09+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "roots/wordpress-core-installer",
|
"name": "roots/wordpress-core-installer",
|
||||||
|
|
@ -2001,22 +2001,22 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "roots/wordpress-no-content",
|
"name": "roots/wordpress-no-content",
|
||||||
"version": "6.7",
|
"version": "6.7.1",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/WordPress/WordPress.git",
|
"url": "https://github.com/WordPress/WordPress.git",
|
||||||
"reference": "6.7"
|
"reference": "6.7.1"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://downloads.wordpress.org/release/wordpress-6.7-no-content.zip",
|
"url": "https://downloads.wordpress.org/release/wordpress-6.7.1-no-content.zip",
|
||||||
"shasum": "d30558244ed409b6421a5454f9c837d0884317f2"
|
"shasum": "321a5b819369e772ce606fbc12b1e264fb73da5b"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">= 7.2.24"
|
"php": ">= 7.2.24"
|
||||||
},
|
},
|
||||||
"provide": {
|
"provide": {
|
||||||
"wordpress/core-implementation": "6.7"
|
"wordpress/core-implementation": "6.7.1"
|
||||||
},
|
},
|
||||||
"suggest": {
|
"suggest": {
|
||||||
"ext-curl": "Performs remote request operations.",
|
"ext-curl": "Performs remote request operations.",
|
||||||
|
|
@ -2067,7 +2067,7 @@
|
||||||
"type": "other"
|
"type": "other"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2024-11-12T20:51:37+00:00"
|
"time": "2024-11-21T14:15:19+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "roots/wp-config",
|
"name": "roots/wp-config",
|
||||||
|
|
@ -2192,16 +2192,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "stripe/stripe-php",
|
"name": "stripe/stripe-php",
|
||||||
"version": "v16.2.0",
|
"version": "v16.3.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/stripe/stripe-php.git",
|
"url": "https://github.com/stripe/stripe-php.git",
|
||||||
"reference": "813ae4961755af28a13bda451689f7a6ed6498cb"
|
"reference": "48af6bc64ca8157b3fdce100e856069963bac466"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/813ae4961755af28a13bda451689f7a6ed6498cb",
|
"url": "https://api.github.com/repos/stripe/stripe-php/zipball/48af6bc64ca8157b3fdce100e856069963bac466",
|
||||||
"reference": "813ae4961755af28a13bda451689f7a6ed6498cb",
|
"reference": "48af6bc64ca8157b3fdce100e856069963bac466",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|
@ -2245,9 +2245,9 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/stripe/stripe-php/issues",
|
"issues": "https://github.com/stripe/stripe-php/issues",
|
||||||
"source": "https://github.com/stripe/stripe-php/tree/v16.2.0"
|
"source": "https://github.com/stripe/stripe-php/tree/v16.3.0"
|
||||||
},
|
},
|
||||||
"time": "2024-10-29T21:15:53+00:00"
|
"time": "2024-11-20T23:30:16+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/clock",
|
"name": "symfony/clock",
|
||||||
|
|
@ -3373,16 +3373,16 @@
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "voku/portable-ascii",
|
"name": "voku/portable-ascii",
|
||||||
"version": "2.0.1",
|
"version": "2.0.3",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/voku/portable-ascii.git",
|
"url": "https://github.com/voku/portable-ascii.git",
|
||||||
"reference": "b56450eed252f6801410d810c8e1727224ae0743"
|
"reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/voku/portable-ascii/zipball/b56450eed252f6801410d810c8e1727224ae0743",
|
"url": "https://api.github.com/repos/voku/portable-ascii/zipball/b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
|
||||||
"reference": "b56450eed252f6801410d810c8e1727224ae0743",
|
"reference": "b1d923f88091c6bf09699efcd7c8a1b1bfd7351d",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
|
|
@ -3407,7 +3407,7 @@
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
"name": "Lars Moelleken",
|
"name": "Lars Moelleken",
|
||||||
"homepage": "http://www.moelleken.org/"
|
"homepage": "https://www.moelleken.org/"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
|
"description": "Portable ASCII library - performance optimized (ascii) string functions for php.",
|
||||||
|
|
@ -3419,7 +3419,7 @@
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/voku/portable-ascii/issues",
|
"issues": "https://github.com/voku/portable-ascii/issues",
|
||||||
"source": "https://github.com/voku/portable-ascii/tree/2.0.1"
|
"source": "https://github.com/voku/portable-ascii/tree/2.0.3"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
|
|
@ -3443,7 +3443,7 @@
|
||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2022-03-08T17:03:00+00:00"
|
"time": "2024-11-21T01:49:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "wpackagist-plugin/falcon",
|
"name": "wpackagist-plugin/falcon",
|
||||||
|
|
|
||||||
13709
db/haiku_atelier-2024-11-21-fa853bf.sql
Normal file
22
package.json
|
|
@ -5,13 +5,10 @@
|
||||||
"description": "",
|
"description": "",
|
||||||
"author": "",
|
"author": "",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"packageManager": "pnpm@9.13.2",
|
"packageManager": "pnpm@9.14.2",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"keywords": [],
|
"keywords": [],
|
||||||
"scripts": {
|
"scripts": { "knip": "knip", "test": "echo \"Error: no test specified\" && exit 1" },
|
||||||
"knip": "knip",
|
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@mobily/ts-belt": "4.0.0-rc.5",
|
"@mobily/ts-belt": "4.0.0-rc.5",
|
||||||
"@sentry/browser": "8.39.0",
|
"@sentry/browser": "8.39.0",
|
||||||
|
|
@ -38,7 +35,7 @@
|
||||||
"fdir": "^6.4.2",
|
"fdir": "^6.4.2",
|
||||||
"globals": "^15.12.0",
|
"globals": "^15.12.0",
|
||||||
"knip": "^5.37.1",
|
"knip": "^5.37.1",
|
||||||
"oxlint": "^0.12.0",
|
"oxlint": "^0.13.0",
|
||||||
"picomatch": "^4.0.2",
|
"picomatch": "^4.0.2",
|
||||||
"prettier": "^3.3.3",
|
"prettier": "^3.3.3",
|
||||||
"prettier-plugin-pkg": "^0.18.1",
|
"prettier-plugin-pkg": "^0.18.1",
|
||||||
|
|
@ -69,15 +66,8 @@
|
||||||
"ios >0 and last 3 years"
|
"ios >0 and last 3 years"
|
||||||
],
|
],
|
||||||
"knip": {
|
"knip": {
|
||||||
"entry": [
|
"entry": ["web/app/themes/haiku-atelier-2024/src/scripts/*.ts"],
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/*.ts"
|
"project": ["web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"]
|
||||||
],
|
|
||||||
"project": [
|
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/**/*.{js,ts,d.ts}"
|
|
||||||
]
|
|
||||||
},
|
},
|
||||||
"trustedDependencies": [
|
"trustedDependencies": ["@biomejs/biome", "@parcel/watcher"]
|
||||||
"@biomejs/biome",
|
|
||||||
"@parcel/watcher"
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
106
pnpm-lock.yaml
generated
|
|
@ -79,8 +79,8 @@ importers:
|
||||||
specifier: ^5.37.1
|
specifier: ^5.37.1
|
||||||
version: 5.37.1(@types/node@22.9.1)(typescript@5.7.0-dev.20241105)
|
version: 5.37.1(@types/node@22.9.1)(typescript@5.7.0-dev.20241105)
|
||||||
oxlint:
|
oxlint:
|
||||||
specifier: ^0.12.0
|
specifier: ^0.13.0
|
||||||
version: 0.12.0
|
version: 0.13.0
|
||||||
picomatch:
|
picomatch:
|
||||||
specifier: ^4.0.2
|
specifier: ^4.0.2
|
||||||
version: 4.0.2
|
version: 4.0.2
|
||||||
|
|
@ -622,43 +622,43 @@ packages:
|
||||||
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
'@oxlint/darwin-arm64@0.12.0':
|
'@oxlint/darwin-arm64@0.13.0':
|
||||||
resolution: {integrity: sha512-UydkjcAImpmBn8JYaMPg0zJrwgWJMGvJagvCnyPfyiBRWAN83Kq+BDgJZgIq+2Te6kvlnoiHWNJKVJmpy0f0BA==}
|
resolution: {integrity: sha512-TFVi4gWKmn4oUoaS6AUU6cvlA+xLCIHQWA27LdnyfmRDerxHSWaG4yPNq9bvhDAeeEWqid5+TR5ndu4WRhEr5A==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@oxlint/darwin-x64@0.12.0':
|
'@oxlint/darwin-x64@0.13.0':
|
||||||
resolution: {integrity: sha512-bxLyiAiHzXB56w7cf50YNPpZlK+PMxA8GgHutRSoNK/Z/BR/xsibNLs/9YNUnjHB+PF19+EbIRtJxoHjmbRr8g==}
|
resolution: {integrity: sha512-ihbegvRXcED2Bgz9Lt4AGFoNfvh/tUZPrFR5DZ3Hn8muab+PEFfXXXKcelSDpTB4za5bDXz6dZcAUUfQUWPwxg==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [darwin]
|
os: [darwin]
|
||||||
|
|
||||||
'@oxlint/linux-arm64-gnu@0.12.0':
|
'@oxlint/linux-arm64-gnu@0.13.0':
|
||||||
resolution: {integrity: sha512-jVkmfoMjPKFDIZySmpykwrCmx5xhpLJdMpUAR8ycEkFRJFp5qKLWZd6cEjiMb7gxmWN6qcCvDVTF/zEs3aRpyQ==}
|
resolution: {integrity: sha512-k4r03/29d+IdcT30B6H5TpWT7bFrkqbRrFQ5VS6GX5ISN0yRdagu4Q08sDimCTTXvg5H9Z/sHmxbw7tbjGGW4w==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@oxlint/linux-arm64-musl@0.12.0':
|
'@oxlint/linux-arm64-musl@0.13.0':
|
||||||
resolution: {integrity: sha512-8VdV1nKYDj7AFaw1a03Ih43/+pUS/hhMZbTFLRMpvlVp1cPtdB77c+bl/OdiJ/BwNTzLIzr/GrospwCoEJkQKg==}
|
resolution: {integrity: sha512-m+LFHCwNydIrGHDz1VPTaQsZewaqYadKhzyjsw4TRf0g5fxeEC4tkv6MI80D2S//QO6DJi8VcnPfVqGWoS5vQQ==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@oxlint/linux-x64-gnu@0.12.0':
|
'@oxlint/linux-x64-gnu@0.13.0':
|
||||||
resolution: {integrity: sha512-MacAt8N4XU5DeoHcseXLom/z+B0seecCz8vGAH4ppF2EH49o7NbN7VvFsw2nZ2QNO/4vw+pdS1BHXLTr9lY6zQ==}
|
resolution: {integrity: sha512-Kixb9MXi5muDKsrNo5k7TANEE3DuUUSKIgoBN68LbX4n2owjCsq/gnzVjQ/rDK0vFn0JQMxMXWjBZvV64ybXMQ==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@oxlint/linux-x64-musl@0.12.0':
|
'@oxlint/linux-x64-musl@0.13.0':
|
||||||
resolution: {integrity: sha512-/ZBDJ9wpUE6bB05nniQl29kD5vJUMg6n75LdHD8F6ThXfsHGI/n7Je3gzggnXokgf9UQpTUPWrWlfEuWVCBMag==}
|
resolution: {integrity: sha512-wCCsesDf05G0bjXMrxAvH36Cl4q0oavR3fo4N5NJyyrRdZ+feAZSsfaHRpvlqkJyUM3vhP6emKrXzIN5fp22dw==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [linux]
|
os: [linux]
|
||||||
|
|
||||||
'@oxlint/win32-arm64@0.12.0':
|
'@oxlint/win32-arm64@0.13.0':
|
||||||
resolution: {integrity: sha512-hY1ya9dv8VY8113YSSDfMs/989aFmoA2fIZco8uxTxIEVl9nGY6tDtpgKZqUIiGrrMbDO8BBb1G5jsekmfexbA==}
|
resolution: {integrity: sha512-xO6oZ+0yjYuEviKqRUVWMuYvzYqJDHd0IcBss8J2o45OS9SH+mNNk5gZJm9uKbDdmFZcDn2OlZxAiygVMxHt9g==}
|
||||||
cpu: [arm64]
|
cpu: [arm64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
'@oxlint/win32-x64@0.12.0':
|
'@oxlint/win32-x64@0.13.0':
|
||||||
resolution: {integrity: sha512-NHLJolo4sZk3nu/bPNuaJ+6p5DdHoRuZAjyuSO6CnLgpmZcYqx7LgngA/x2oB/bLgi4Hv9twjHjODc5Ce5o14g==}
|
resolution: {integrity: sha512-NiiaQ/AD1ILQ8cXRxdjE/dRMCRABFbelSYqoFrrklV2Y7hwtF0Law48GvM5ysQbz/NHVpQpnVNQOQ3cevywn3w==}
|
||||||
cpu: [x64]
|
cpu: [x64]
|
||||||
os: [win32]
|
os: [win32]
|
||||||
|
|
||||||
|
|
@ -1003,8 +1003,8 @@ packages:
|
||||||
'@swc/counter@0.1.3':
|
'@swc/counter@0.1.3':
|
||||||
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
|
resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==}
|
||||||
|
|
||||||
'@swc/types@0.1.15':
|
'@swc/types@0.1.17':
|
||||||
resolution: {integrity: sha512-XKaZ+dzDIQ9Ot9o89oJQ/aluI17+VvUnIpYJTcZtvv1iYX6MzHh3Ik2CSR7MdPKpPwfZXHBeCingb2b4PoDVdw==}
|
resolution: {integrity: sha512-V5gRru+aD8YVyCOMAjMpWR1Ui577DD5KSJsHP8RAxopAH22jFz6GZd/qxqjO6MJHQhcsjvjOFXyDhyLQUnMveQ==}
|
||||||
|
|
||||||
'@szmarczak/http-timer@5.0.1':
|
'@szmarczak/http-timer@5.0.1':
|
||||||
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
|
resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==}
|
||||||
|
|
@ -1297,8 +1297,8 @@ packages:
|
||||||
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001680:
|
caniuse-lite@1.0.30001683:
|
||||||
resolution: {integrity: sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==}
|
resolution: {integrity: sha512-iqmNnThZ0n70mNwvxpEC2nBJ037ZHZUoBI5Gorh1Mw6IlEAZujEoU1tXA628iZfzm7R9FvFzxbfdgml82a3k8Q==}
|
||||||
|
|
||||||
chalk@4.1.2:
|
chalk@4.1.2:
|
||||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||||
|
|
@ -1456,8 +1456,8 @@ packages:
|
||||||
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
domain-browser@4.23.0:
|
domain-browser@4.22.0:
|
||||||
resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==}
|
resolution: {integrity: sha512-IGBwjF7tNk3cwypFNH/7bfzBcgSCbaMOD3GsaY1AU/JRrnHnYgEM0+9kQt52iZxjNsjBtJYtao146V+f8jFZNw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
easy-table@1.2.0:
|
easy-table@1.2.0:
|
||||||
|
|
@ -2069,8 +2069,8 @@ packages:
|
||||||
node-releases@2.0.18:
|
node-releases@2.0.18:
|
||||||
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
|
resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
|
||||||
|
|
||||||
node-stdlib-browser@1.2.1:
|
node-stdlib-browser@1.3.0:
|
||||||
resolution: {integrity: sha512-dZezG3D88Lg22DwyjsDuUs7cCT/XGr8WwJgg/S3ZnkcWuPet2Tt/W1d2Eytb1Z73JpZv+XVCDI5TWv6UMRq0Gg==}
|
resolution: {integrity: sha512-g/koYzOr9Fb1Jc+tHUHlFd5gODjGn48tHexUK8q6iqOVriEgSnd3/1T7myBYc+0KBVze/7F7n65ec9rW6OD7xw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
normalize-path@3.0.0:
|
normalize-path@3.0.0:
|
||||||
|
|
@ -2112,8 +2112,8 @@ packages:
|
||||||
os-browserify@0.3.0:
|
os-browserify@0.3.0:
|
||||||
resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
|
resolution: {integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==}
|
||||||
|
|
||||||
oxlint@0.12.0:
|
oxlint@0.13.0:
|
||||||
resolution: {integrity: sha512-M0vWq8KYtp4vpweRxcdCiVO8QFwzoRyp5bWTMrEL/0Z+GDKCMJltac7H3T3T09FIiktOZLvID733d7OcKk/caw==}
|
resolution: {integrity: sha512-YUwybs9U5siS54Q+vVkxMQXiNF6LHeLRxihj6toUFwrYSxL1wsV6HUiAS8Vig+USDIGoEDdGBgpq29iwWDjYHw==}
|
||||||
engines: {node: '>=14.*'}
|
engines: {node: '>=14.*'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
|
@ -3290,28 +3290,28 @@ snapshots:
|
||||||
'@nodelib/fs.scandir': 2.1.5
|
'@nodelib/fs.scandir': 2.1.5
|
||||||
fastq: 1.17.1
|
fastq: 1.17.1
|
||||||
|
|
||||||
'@oxlint/darwin-arm64@0.12.0':
|
'@oxlint/darwin-arm64@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/darwin-x64@0.12.0':
|
'@oxlint/darwin-x64@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/linux-arm64-gnu@0.12.0':
|
'@oxlint/linux-arm64-gnu@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/linux-arm64-musl@0.12.0':
|
'@oxlint/linux-arm64-musl@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/linux-x64-gnu@0.12.0':
|
'@oxlint/linux-x64-gnu@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/linux-x64-musl@0.12.0':
|
'@oxlint/linux-x64-musl@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/win32-arm64@0.12.0':
|
'@oxlint/win32-arm64@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@oxlint/win32-x64@0.12.0':
|
'@oxlint/win32-x64@0.13.0':
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
'@parcel/watcher-android-arm64@2.5.0':
|
'@parcel/watcher-android-arm64@2.5.0':
|
||||||
|
|
@ -3574,7 +3574,7 @@ snapshots:
|
||||||
'@swc/core@1.9.1':
|
'@swc/core@1.9.1':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@swc/counter': 0.1.3
|
'@swc/counter': 0.1.3
|
||||||
'@swc/types': 0.1.15
|
'@swc/types': 0.1.17
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@swc/core-darwin-arm64': 1.9.1
|
'@swc/core-darwin-arm64': 1.9.1
|
||||||
'@swc/core-darwin-x64': 1.9.1
|
'@swc/core-darwin-x64': 1.9.1
|
||||||
|
|
@ -3589,7 +3589,7 @@ snapshots:
|
||||||
|
|
||||||
'@swc/counter@0.1.3': {}
|
'@swc/counter@0.1.3': {}
|
||||||
|
|
||||||
'@swc/types@0.1.15':
|
'@swc/types@0.1.17':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@swc/counter': 0.1.3
|
'@swc/counter': 0.1.3
|
||||||
|
|
||||||
|
|
@ -3945,7 +3945,7 @@ snapshots:
|
||||||
|
|
||||||
browserslist@4.24.2:
|
browserslist@4.24.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
caniuse-lite: 1.0.30001680
|
caniuse-lite: 1.0.30001683
|
||||||
electron-to-chromium: 1.5.63
|
electron-to-chromium: 1.5.63
|
||||||
node-releases: 2.0.18
|
node-releases: 2.0.18
|
||||||
update-browserslist-db: 1.1.1(browserslist@4.24.2)
|
update-browserslist-db: 1.1.1(browserslist@4.24.2)
|
||||||
|
|
@ -3985,7 +3985,7 @@ snapshots:
|
||||||
|
|
||||||
callsites@3.1.0: {}
|
callsites@3.1.0: {}
|
||||||
|
|
||||||
caniuse-lite@1.0.30001680: {}
|
caniuse-lite@1.0.30001683: {}
|
||||||
|
|
||||||
chalk@4.1.2:
|
chalk@4.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -4151,7 +4151,7 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
path-type: 4.0.0
|
path-type: 4.0.0
|
||||||
|
|
||||||
domain-browser@4.23.0: {}
|
domain-browser@4.22.0: {}
|
||||||
|
|
||||||
easy-table@1.2.0:
|
easy-table@1.2.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
|
@ -4768,7 +4768,7 @@ snapshots:
|
||||||
|
|
||||||
node-releases@2.0.18: {}
|
node-releases@2.0.18: {}
|
||||||
|
|
||||||
node-stdlib-browser@1.2.1:
|
node-stdlib-browser@1.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
assert: 2.1.0
|
assert: 2.1.0
|
||||||
browser-resolve: 2.0.0
|
browser-resolve: 2.0.0
|
||||||
|
|
@ -4778,7 +4778,7 @@ snapshots:
|
||||||
constants-browserify: 1.0.0
|
constants-browserify: 1.0.0
|
||||||
create-require: 1.1.1
|
create-require: 1.1.1
|
||||||
crypto-browserify: 3.12.1
|
crypto-browserify: 3.12.1
|
||||||
domain-browser: 4.23.0
|
domain-browser: 4.22.0
|
||||||
events: 3.3.0
|
events: 3.3.0
|
||||||
https-browserify: 1.0.0
|
https-browserify: 1.0.0
|
||||||
isomorphic-timers-promises: 1.0.1
|
isomorphic-timers-promises: 1.0.1
|
||||||
|
|
@ -4837,16 +4837,16 @@ snapshots:
|
||||||
|
|
||||||
os-browserify@0.3.0: {}
|
os-browserify@0.3.0: {}
|
||||||
|
|
||||||
oxlint@0.12.0:
|
oxlint@0.13.0:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
'@oxlint/darwin-arm64': 0.12.0
|
'@oxlint/darwin-arm64': 0.13.0
|
||||||
'@oxlint/darwin-x64': 0.12.0
|
'@oxlint/darwin-x64': 0.13.0
|
||||||
'@oxlint/linux-arm64-gnu': 0.12.0
|
'@oxlint/linux-arm64-gnu': 0.13.0
|
||||||
'@oxlint/linux-arm64-musl': 0.12.0
|
'@oxlint/linux-arm64-musl': 0.13.0
|
||||||
'@oxlint/linux-x64-gnu': 0.12.0
|
'@oxlint/linux-x64-gnu': 0.13.0
|
||||||
'@oxlint/linux-x64-musl': 0.12.0
|
'@oxlint/linux-x64-musl': 0.13.0
|
||||||
'@oxlint/win32-arm64': 0.12.0
|
'@oxlint/win32-arm64': 0.13.0
|
||||||
'@oxlint/win32-x64': 0.12.0
|
'@oxlint/win32-x64': 0.13.0
|
||||||
|
|
||||||
p-cancelable@3.0.0: {}
|
p-cancelable@3.0.0: {}
|
||||||
|
|
||||||
|
|
@ -5575,7 +5575,7 @@ snapshots:
|
||||||
vite-plugin-node-polyfills@0.22.0(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)):
|
vite-plugin-node-polyfills@0.22.0(rollup@4.27.3)(vite@5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@rollup/plugin-inject': 5.0.5(rollup@4.27.3)
|
'@rollup/plugin-inject': 5.0.5(rollup@4.27.3)
|
||||||
node-stdlib-browser: 1.2.1
|
node-stdlib-browser: 1.3.0
|
||||||
vite: 5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)
|
vite: 5.4.11(@types/node@22.9.1)(sass-embedded@1.81.0)(sass@1.80.6)
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- rollup
|
- rollup
|
||||||
|
|
|
||||||
|
|
@ -130,9 +130,6 @@
|
||||||
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
|
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
#panneau-panier .panneau__instructions-code-promo__code-promo input {
|
|
||||||
width: 20rem;
|
|
||||||
}
|
|
||||||
#panneau-panier .panneau__instructions-code-promo__code-promo button {
|
#panneau-panier .panneau__instructions-code-promo__code-promo button {
|
||||||
padding: var(--espace-xs) var(--espace-xl);
|
padding: var(--espace-xs) var(--espace-xl);
|
||||||
text-transform: lowercase;
|
text-transform: lowercase;
|
||||||
|
|
|
||||||
|
|
@ -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;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;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;AAMA;AAAA;AAAA;;AAJA;EACE;;AAMF;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;;;ACjON;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;;AAOV;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC1JN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;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;;AAGF;EACE;EACA;;AAMN;EACE;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;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;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;;;AC7NN;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;;AAOV;EACE;EACA;;AAEA;EACE;;AAGF;EACE;EACA;EACA;EACA;EACA;;AAGF;EACE;EACA;EACA;;AAEA;EACE;EACA;EACA;EACA;EACA;;AAIA;EACE;;AAKN;EACE;EACA;EACA;;AAEA;EACE;;AAIJ;EACE;;AAKJ;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;EACA;;;AC1JN;AAAA;AAAA;AAAA;AAIA;AACE;EACA;AAEA;EACA;EAEA;EACA;EACA;EACA;EACA;;AAEA;EACE;EACA;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"}
|
||||||
|
|
@ -68,7 +68,7 @@
|
||||||
"name": "dom",
|
"name": "dom",
|
||||||
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
"src": "web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
||||||
"isEntry": true,
|
"isEntry": true,
|
||||||
"integrity": "sha512-ldPkBLWjE77dp7raA0LauVQS11/w/N0RpOCtgmJu3PQfwEezQS4iVPnp10lZGduIClmliT7WPpbqrZchRTpITw=="
|
"integrity": "sha512-I1Z5v7vScYFe97juQAHfl5K/N6OR+BQCiVvxTIBbgPv8Y0NQMIBebWYj1/xhKB7AUSlIUYOaFvus/zOeU5TJOQ=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts": {
|
||||||
"file": "erreurs.js",
|
"file": "erreurs.js",
|
||||||
|
|
@ -110,6 +110,13 @@
|
||||||
],
|
],
|
||||||
"integrity": "sha512-mskLArAQPBWERMQR6U4/xLPd+NfjZ59hrptjz2G/7KUnC8cVe33bzBkQzUHZDNxy2/YlDFXTWO6NwQjgKKzgxQ=="
|
"integrity": "sha512-mskLArAQPBWERMQR6U4/xLPd+NfjZ59hrptjz2G/7KUnC8cVe33bzBkQzUHZDNxy2/YlDFXTWO6NwQjgKKzgxQ=="
|
||||||
},
|
},
|
||||||
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts": {
|
||||||
|
"file": "animations.js",
|
||||||
|
"name": "animations",
|
||||||
|
"src": "web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts",
|
||||||
|
"isEntry": true,
|
||||||
|
"integrity": "sha512-SD+1/duJm9OdEuU10TyTp/l4GTZulyECskFYLi5TBLOf5GLkbtiI7wgYto28fXhXRPVcoWuD1Coul4mXCiyAng=="
|
||||||
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts": {
|
||||||
"file": "dom2.js",
|
"file": "dom2.js",
|
||||||
"name": "dom",
|
"name": "dom",
|
||||||
|
|
@ -121,7 +128,7 @@
|
||||||
"_Either.wHNxn7Os.js",
|
"_Either.wHNxn7Os.js",
|
||||||
"_exports.3IcOsN8u.js"
|
"_exports.3IcOsN8u.js"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-nNoNk0nD88HRS8LqyIx5kV9MOZBIbcHO4IaumhTh6T3p34OdBIJtM8QQVngu6X/jPdCbMFDj9uajXKAgMkE8bQ=="
|
"integrity": "sha512-I/u87SjbDtW7SK4O2yinDf8MAhDVpWyRBxa4gWSoLB2tXtqjqkg5YfhJXWIf3az36oSjHunCsSRzdZjrgXUqug=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts": {
|
||||||
"file": "erreurs2.js",
|
"file": "erreurs2.js",
|
||||||
|
|
@ -179,7 +186,7 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-eNfGzO+xLfiHFnNdNdE+zBcnvpPz/wE6vXX1rKbYVlFuf2gPC9kxCEwQnH+BijivLi/JkqkrtXv+m/92RShOrA=="
|
"integrity": "sha512-1kRDhi1+KGja3JCleYjLnsjVDpCrRXQqB8ZGAjpuTEAMiKpSQqj3x8vPCySRvkv8wreUc2UzTOa1xCljoZ8bPA=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/nombres.ts": {
|
||||||
"file": "nombres.js",
|
"file": "nombres.js",
|
||||||
|
|
@ -368,7 +375,7 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-DRQfMEltCFFPp1xUw26z4CbypxMn//NWQEsKGc98p9UTSaoSNUy7rDWR7JJYM5mnZvglEu+jEzzrKXCrZvQB2w=="
|
"integrity": "sha512-e0iafVBzxA+LOMbD4VlzjtXW1GU/LmETBKAQ5cV7glJdsaY5/ZWVGcSOOPdwT6kvQkMBohKCgn9K5Bqwoi38zA=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/orders.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/types/api/v3/orders.ts": {
|
||||||
"file": "orders.js",
|
"file": "orders.js",
|
||||||
|
|
@ -541,6 +548,7 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/api.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/dom.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
|
||||||
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/dom.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
|
||||||
|
|
@ -564,7 +572,7 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-Dcq5CmQJWGUY0FPDHu4fI5COKoVMxA0I0zUpOpPIS6IQ8HXCvzQjH+18wNzCpbqNB/L0mrILXsSVmLmpeLGEWw=="
|
"integrity": "sha512-YYKaBtgzKquj63eMhqcijL6/wgAFl1WCKSED+/q4B2h7+YibZkgBMyWOkKRZcUVWQZYHhx2PHMgWIAdRbnld/A=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-panier.ts": {
|
||||||
"file": "scripts-page-panier.js",
|
"file": "scripts-page-panier.js",
|
||||||
|
|
@ -602,13 +610,14 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-coupons.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/orders.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/constantes/erreurs.ts",
|
||||||
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/animations.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/erreurs/codes-promo.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-apply-coupon.ts",
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/cart-remove-coupon.ts",
|
||||||
"_MaybeAsync.AE1jnxuc.js",
|
"_MaybeAsync.AE1jnxuc.js",
|
||||||
"_belt_Option-91f3b350.cBye8bLJ.js"
|
"_belt_Option-91f3b350.cBye8bLJ.js"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-nv6WicLF3qhp2tyjzl7Ns5Yyfon9onWi/u5nxsvBRT6oEpdb9h5rXxDx3ydC6OsMR9n/B1wdXsuxxHTmECqX/w=="
|
"integrity": "sha512-LrETkMtNpCGK3ohj7yLHF5vz4lIdAgQaqSzq/6Ij7TGl67V0nu+E4TOATuT56B0djGTtJJXc24fflEYEf/rW/A=="
|
||||||
},
|
},
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
|
"web/app/themes/haiku-atelier-2024/src/scripts/scripts-page-produit.ts": {
|
||||||
"file": "scripts-page-produit.js",
|
"file": "scripts-page-produit.js",
|
||||||
|
|
@ -642,6 +651,6 @@
|
||||||
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
|
"web/app/themes/haiku-atelier-2024/src/scripts/lib/schemas/api/couts-livraison.ts",
|
||||||
"_belt_Option-91f3b350.cBye8bLJ.js"
|
"_belt_Option-91f3b350.cBye8bLJ.js"
|
||||||
],
|
],
|
||||||
"integrity": "sha512-lUQ7gg9r4XVBz+5ivZvD+nP+ncAJ4I78VpiJJE3NSWecpGYoyN/2/LvWzQr8maRyf7Ox4+aJRrbHIaQZVul/fQ=="
|
"integrity": "sha512-4HoksAZ1TvIRrylHgveTV7HHpYiDQSxAhFCCJ7kUj8iGrwC46k9oFevH3wyFOWdxK+fsUoTjyEZ9BK7R5q64ig=="
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
21
web/app/themes/haiku-atelier-2024/assets/js/animations.js
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
const lanceAnimationCycleTexte = (args) => {
|
||||||
|
const animation = {
|
||||||
|
callback: () => {
|
||||||
|
if (!args.element.hasAttribute(args.attribut)) {
|
||||||
|
clearInterval(animation.interval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
args.element.textContent = animation.etapes.at(animation.index) ?? "Loading...";
|
||||||
|
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
|
||||||
|
},
|
||||||
|
etapes: args.etapes,
|
||||||
|
index: 0,
|
||||||
|
interval: setInterval(() => {
|
||||||
|
}, 2147483647)
|
||||||
|
};
|
||||||
|
return animation;
|
||||||
|
};
|
||||||
|
export {
|
||||||
|
lanceAnimationCycleTexte as l
|
||||||
|
};
|
||||||
|
//# sourceMappingURL=animations.js.map
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
{"version":3,"file":"animations.js","sources":["../../src/scripts/lib/animations.ts"],"sourcesContent":["/** Fonctions pour la création de simples animations JavaScript. */\n\n// Types\ninterface AnimationCycleTexte {\n callback: () => void;\n etapes: Array<string>;\n index: number;\n interval: NodeJS.Timeout;\n}\n\ninterface ParametresAnimationCycleTexte {\n attribut: string;\n element: HTMLElement;\n etapes: Array<string>;\n}\n\n/**\n * Créer le nécessaire pour une animation s'exécutant jusqu'à ce que un interval soit manuellement arrêté. L'animation\n * consiste en la mise à jour d'un texte avec l'utilisation de toutes les valeurs d'un tableau, une par une.\n *\n * @param args Les paramètres nécessaires pour la création de l'animation.\n * @returns Un objet contenant les informations de l'animation, notamment l'interval utilisable pour son arrêt.\n */\nexport const lanceAnimationCycleTexte = (args: ParametresAnimationCycleTexte): AnimationCycleTexte => {\n const animation: AnimationCycleTexte = {\n callback: (): void => {\n // Arrête le cycle quand l'Attribut de chargement n'est plus présent\n if (!args.element.hasAttribute(args.attribut)) {\n clearInterval(animation.interval);\n return;\n }\n\n // Change le texte\n args.element.textContent = animation.etapes.at(animation.index) ?? \"Loading...\";\n // Incrémente ou réinitialise l'index\n animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;\n },\n etapes: args.etapes,\n index: 0,\n interval: setInterval(() => {}, 2147483647),\n };\n\n return animation;\n};\n"],"names":[],"mappings":"AAuBa,MAAA,2BAA2B,CAAC,SAA6D;AACpG,QAAM,YAAiC;AAAA,IACrC,UAAU,MAAY;AAEpB,UAAI,CAAC,KAAK,QAAQ,aAAa,KAAK,QAAQ,GAAG;AAC7C,sBAAc,UAAU,QAAQ;AAChC;AAAA,MAAA;AAIF,WAAK,QAAQ,cAAc,UAAU,OAAO,GAAG,UAAU,KAAK,KAAK;AAEzD,gBAAA,QAAQ,UAAU,QAAQ,IAAI,UAAU,OAAO,SAAS,IAAI,IAAI,UAAU,QAAQ;AAAA,IAC9F;AAAA,IACA,QAAQ,KAAK;AAAA,IACb,OAAO;AAAA,IACP,UAAU,YAAY,MAAM;AAAA,IAAA,GAAI,UAAU;AAAA,EAC5C;AAEO,SAAA;AACT;"}
|
||||||
|
|
@ -65,15 +65,15 @@ const SELECTEUR_PRIX_PRODUIT = ".selecteur-produit__prix";
|
||||||
export {
|
export {
|
||||||
SELECTEUR_BOUTON_MENU_MOBILE as $,
|
SELECTEUR_BOUTON_MENU_MOBILE as $,
|
||||||
ATTRIBUT_CONTIENT_ARTICLES as A,
|
ATTRIBUT_CONTIENT_ARTICLES as A,
|
||||||
SELECTEUR_BOUTON_SUPPRESSION_PANIER as B,
|
SELECTEUR_BOUTON_ADDITION_QUANTITE as B,
|
||||||
SELECTEUR_PRIX_LIGNE_PANIER as C,
|
SELECTEUR_BOUTON_SUPPRESSION_PANIER as C,
|
||||||
ATTRIBUT_DESACTIVE as D,
|
SELECTEUR_PRIX_LIGNE_PANIER as D,
|
||||||
SELECTEUR_BOUTON_CODE_PROMO as E,
|
ATTRIBUT_DESACTIVE as E,
|
||||||
SELECTEUR_CHAMP_CODE_PROMO as F,
|
SELECTEUR_BOUTON_CODE_PROMO as F,
|
||||||
SELECTEUR_ENSEMBLE_CODE_PROMO as G,
|
SELECTEUR_CHAMP_CODE_PROMO as G,
|
||||||
SELECTEUR_MESSAGE_CODE_PROMO as H,
|
SELECTEUR_ENSEMBLE_CODE_PROMO as H,
|
||||||
SELECTEUR_TOTAL_REDUCTION as I,
|
SELECTEUR_MESSAGE_CODE_PROMO as I,
|
||||||
SELECTEUR_TOTAL_REDUCTION_VALEUR as J,
|
SELECTEUR_TOTAL_REDUCTION as J,
|
||||||
ATTRIBUT_CHARGEMENT as K,
|
ATTRIBUT_CHARGEMENT as K,
|
||||||
ATTRIBUT_CODE_PROMO_PRESENT as L,
|
ATTRIBUT_CODE_PROMO_PRESENT as L,
|
||||||
SELECTEUR_BOUTON_AJOUT_PANIER as M,
|
SELECTEUR_BOUTON_AJOUT_PANIER as M,
|
||||||
|
|
@ -121,10 +121,10 @@ export {
|
||||||
SELECTEUR_FORMULAIRE_PANIER as s,
|
SELECTEUR_FORMULAIRE_PANIER as s,
|
||||||
SELECTEUR_FORMULAIRE_FACTURATION as t,
|
SELECTEUR_FORMULAIRE_FACTURATION as t,
|
||||||
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as u,
|
SELECTEUR_BOUTON_ACTIONS_FORMULAIRE as u,
|
||||||
SELECTEUR_INSTRUCTIONS_CLIENT as v,
|
SELECTEUR_TOTAL_REDUCTION_VALEUR as v,
|
||||||
ATTRIBUT_CLE_PANIER as w,
|
SELECTEUR_INSTRUCTIONS_CLIENT as w,
|
||||||
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as x,
|
ATTRIBUT_CLE_PANIER as x,
|
||||||
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as y,
|
SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE as y,
|
||||||
SELECTEUR_BOUTON_ADDITION_QUANTITE as z
|
SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER as z
|
||||||
};
|
};
|
||||||
//# sourceMappingURL=dom.js.map
|
//# sourceMappingURL=dom.js.map
|
||||||
|
|
|
||||||
|
|
@ -2035,13 +2035,13 @@ const html = (strings, ...args) => pipe(
|
||||||
);
|
);
|
||||||
const eitherSessionStorageGet = (cle) => Maybe.fromNullable(sessionStorage.getItem(cle)).toEither(ErreurEntreeInexistante(`Clé ${cle} absente dans le stockage de session.`));
|
const eitherSessionStorageGet = (cle) => Maybe.fromNullable(sessionStorage.getItem(cle)).toEither(ErreurEntreeInexistante(`Clé ${cle} absente dans le stockage de session.`));
|
||||||
const eitherJsonParse = (chaine) => Either.encase(() => JSON.parse(chaine));
|
const eitherJsonParse = (chaine) => Either.encase(() => JSON.parse(chaine));
|
||||||
const correspondCibleSelecteur = (cible, selecteur) => cible !== null && cible.matches(selecteur);
|
const accorderCibleASelecteur = (cible, selecteur) => cible !== null && cible.matches(selecteur);
|
||||||
export {
|
export {
|
||||||
Ra as R,
|
Ra as R,
|
||||||
recupereElementsAvecSelecteur as a,
|
recupereElementsAvecSelecteur as a,
|
||||||
eitherJsonParse as b,
|
eitherJsonParse as b,
|
||||||
recupereElementAvecSelecteur as c,
|
recupereElementAvecSelecteur as c,
|
||||||
correspondCibleSelecteur as d,
|
accorderCibleASelecteur as d,
|
||||||
eitherSessionStorageGet as e,
|
eitherSessionStorageGet as e,
|
||||||
recupereElementsOuLeve as f,
|
recupereElementsOuLeve as f,
|
||||||
equal as g,
|
equal as g,
|
||||||
|
|
|
||||||
|
|
@ -26,7 +26,8 @@ const emetMessageMajContenuPanier = (args) => {
|
||||||
canal.postMessage({
|
canal.postMessage({
|
||||||
donnees: {
|
donnees: {
|
||||||
produits: args.produits,
|
produits: args.produits,
|
||||||
sousTotalPanier: args.sousTotalPanier,
|
sousTotalProduits: args.sousTotalProduits,
|
||||||
|
sousTotalReduction: args.sousTotalReduction,
|
||||||
totalPanier: args.totalPanier
|
totalPanier: args.totalPanier
|
||||||
},
|
},
|
||||||
type: TYPES_MESSAGES.MajContenuPanier
|
type: TYPES_MESSAGES.MajContenuPanier
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"messages.js","sources":["../../src/scripts/lib/messages.ts"],"sourcesContent":["import { pipe } from \"@mobily/ts-belt\";\nimport { Either } from \"purify-ts\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type {\n MessageMajBoutonPanier,\n MessageMajBoutonPanierDonnees,\n MessageMajContenuPanier,\n MessageMajContenuPanierDonnees,\n} from \"./types/messages\";\n\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from \"../constantes/messages.ts\";\nimport { reporteErreur } from \"./erreurs.ts\";\nimport { WCErrorSchema } from \"./schemas/api/erreurs.ts\";\nimport { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from \"./schemas/messages.ts\";\nimport { ReponseSimplifiee } from \"./types/reseau\";\nimport { eitherParse } from \"./validation.ts\";\n\nexport const canalPostMessage = (canal: BroadcastChannel, message: any): BroadcastChannel => {\n canal.postMessage(message);\n return canal;\n};\n\n// Émissions\nexport const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n canal.postMessage({\n donnees: {\n quantiteProduits: args.quantiteProduits,\n },\n type: TYPES_MESSAGES.MajBoutonPanier,\n } as MessageMajBoutonPanier);\n canal.close();\n};\n\nexport const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_CONTENU_PANIER);\n canal.postMessage({\n donnees: {\n produits: args.produits,\n sousTotalPanier: args.sousTotalPanier,\n totalPanier: args.totalPanier,\n },\n type: TYPES_MESSAGES.MajContenuPanier,\n } as MessageMajContenuPanier);\n canal.close();\n};\n\n/**\n * Émet un unique message vers un BroadcastChannel (canal) généré sur le moment puis le ferme.\n *\n * @param nomCanal Le nom du BroadcastChannel pour lequel le message est émis.\n * @param message Le message émis.\n * @return void\n */\nexport const emetUniqueMessageCanal = <M>(nomCanal: string, message: M): void =>\n pipe(new BroadcastChannel(nomCanal), canal => canalPostMessage(canal, message), canal => canal.close());\n\n// Validations\nexport const valideMessageMajBoutonPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier> =>\n Either\n .of<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier>(\n parse(MessageMajBoutonPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\nexport const valideMessageMajContenuPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier> =>\n Either\n .of<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier>(\n parse(MessageMajContenuPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\n// Correspondances\nexport const reponseEstCodeErreurWC = (reponse: ReponseSimplifiee, codeErreurWC: string): boolean =>\n eitherParse(reponse, WCErrorSchema)\n .map(v => v.body.code === codeErreurWC)\n .orDefault(false);\n"],"names":[],"mappings":";;;;;;;;;;;;;AAwBa,MAAA,6BAA6B,CAAC,SAA8C;AACjF,QAAA,QAAQ,IAAI,iBAAiB,uBAAuB;AAC1D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,kBAAkB,KAAK;AAAA,IACzB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACI;AAC3B,QAAM,MAAM;AACd;AAEa,MAAA,8BAA8B,CAAC,SAA+C;AACnF,QAAA,QAAQ,IAAI,iBAAiB,wBAAwB;AAC3D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,UAAU,KAAK;AAAA,MACf,iBAAiB,KAAK;AAAA,MACtB,aAAa,KAAK;AAAA,IACpB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACK;AAC5B,QAAM,MAAM;AACd;AAaa,MAAA,+BAA+B,CAC1C,qBAEA,OACG;AAAA,EACC,MAAM,8BAA8B,iBAAiB,IAAI;AAC3D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAE9B,MAAA,gCAAgC,CAC3C,qBAEA,OACG;AAAA,EACC,MAAM,+BAA+B,iBAAiB,IAAI;AAC5D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAGpC,MAAM,yBAAyB,CAAC,SAA4B,iBACjE,YAAY,SAAS,aAAa,EAC/B,IAAI,CAAA,MAAK,EAAE,KAAK,SAAS,YAAY,EACrC,UAAU,KAAK;"}
|
{"version":3,"file":"messages.js","sources":["../../src/scripts/lib/messages.ts"],"sourcesContent":["import { pipe } from \"@mobily/ts-belt\";\nimport { Either } from \"purify-ts\";\nimport { parse, type ValiError } from \"valibot\";\n\nimport type {\n MessageMajBoutonPanier,\n MessageMajBoutonPanierDonnees,\n MessageMajContenuPanier,\n MessageMajContenuPanierDonnees,\n} from \"./types/messages\";\nimport type { ReponseSimplifiee } from \"./types/reseau\";\n\nimport { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from \"../constantes/messages.ts\";\nimport { reporteErreur } from \"./erreurs.ts\";\nimport { WCErrorSchema } from \"./schemas/api/erreurs.ts\";\nimport { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from \"./schemas/messages.ts\";\nimport { eitherParse } from \"./validation.ts\";\n\nexport const canalPostMessage = (canal: BroadcastChannel, message: any): BroadcastChannel => {\n canal.postMessage(message);\n return canal;\n};\n\n// Émissions\nexport const emetMessageMajBoutonPanier = (args: MessageMajBoutonPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_BOUTON_PANIER);\n canal.postMessage({\n donnees: {\n quantiteProduits: args.quantiteProduits,\n },\n type: TYPES_MESSAGES.MajBoutonPanier,\n } as MessageMajBoutonPanier);\n canal.close();\n};\n\nexport const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees): void => {\n const canal = new BroadcastChannel(NOM_CANAL_CONTENU_PANIER);\n canal.postMessage({\n donnees: {\n produits: args.produits,\n sousTotalProduits: args.sousTotalProduits,\n sousTotalReduction: args.sousTotalReduction,\n totalPanier: args.totalPanier,\n },\n type: TYPES_MESSAGES.MajContenuPanier,\n } as MessageMajContenuPanier);\n canal.close();\n};\n\n/**\n * Émet un unique message vers un BroadcastChannel (canal) généré sur le moment puis le ferme.\n *\n * @param nomCanal Le nom du BroadcastChannel pour lequel le message est émis.\n * @param message Le message émis.\n * @return void\n */\nexport const emetUniqueMessageCanal = <M>(nomCanal: string, message: M): void =>\n pipe(new BroadcastChannel(nomCanal), canal => canalPostMessage(canal, message), canal => canal.close());\n\n// Validations\nexport const valideMessageMajBoutonPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier> =>\n Either\n .of<ValiError<typeof MessageMajBoutonPanierSchema>, MessageMajBoutonPanier>(\n parse(MessageMajBoutonPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\nexport const valideMessageMajContenuPanier = (\n evenementMessage: MessageEvent<unknown>,\n): Either<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier> =>\n Either\n .of<ValiError<typeof MessageMajContenuPanierSchema>, MessageMajContenuPanier>(\n parse(MessageMajContenuPanierSchema, evenementMessage.data),\n )\n .ifLeft(erreur => reporteErreur(erreur));\n\n// Correspondances\nexport const reponseEstCodeErreurWC = (reponse: ReponseSimplifiee, codeErreurWC: string): boolean =>\n eitherParse(reponse, WCErrorSchema)\n .map(v => v.body.code === codeErreurWC)\n .orDefault(false);\n"],"names":[],"mappings":";;;;;;;;;;;;;AAwBa,MAAA,6BAA6B,CAAC,SAA8C;AACjF,QAAA,QAAQ,IAAI,iBAAiB,uBAAuB;AAC1D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,kBAAkB,KAAK;AAAA,IACzB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACI;AAC3B,QAAM,MAAM;AACd;AAEa,MAAA,8BAA8B,CAAC,SAA+C;AACnF,QAAA,QAAQ,IAAI,iBAAiB,wBAAwB;AAC3D,QAAM,YAAY;AAAA,IAChB,SAAS;AAAA,MACP,UAAU,KAAK;AAAA,MACf,mBAAmB,KAAK;AAAA,MACxB,oBAAoB,KAAK;AAAA,MACzB,aAAa,KAAK;AAAA,IACpB;AAAA,IACA,MAAM,eAAe;AAAA,EAAA,CACK;AAC5B,QAAM,MAAM;AACd;AAaa,MAAA,+BAA+B,CAC1C,qBAEA,OACG;AAAA,EACC,MAAM,8BAA8B,iBAAiB,IAAI;AAC3D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAE9B,MAAA,gCAAgC,CAC3C,qBAEA,OACG;AAAA,EACC,MAAM,+BAA+B,iBAAiB,IAAI;AAC5D,EACC,OAAO,CAAA,WAAU,cAAc,MAAM,CAAC;AAGpC,MAAM,yBAAyB,CAAC,SAA4B,iBACjE,YAAY,SAAS,aAAa,EAC/B,IAAI,CAAA,MAAK,EAAE,KAAK,SAAS,YAAY,EACrC,UAAU,KAAK;"}
|
||||||
|
|
@ -15,7 +15,8 @@ const MessageMajBoutonPanierSchema = object({
|
||||||
});
|
});
|
||||||
const MessageMajContenuPanierDonneesSchema = object({
|
const MessageMajContenuPanierDonneesSchema = object({
|
||||||
produits: array(WCStoreCartItemSchema),
|
produits: array(WCStoreCartItemSchema),
|
||||||
sousTotalPanier: number(),
|
sousTotalProduits: number(),
|
||||||
|
sousTotalReduction: number(),
|
||||||
totalPanier: number()
|
totalPanier: number()
|
||||||
});
|
});
|
||||||
const MessageMajContenuPanierSchema = object({
|
const MessageMajContenuPanierSchema = object({
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
{"version":3,"file":"messages2.js","sources":["../../src/scripts/lib/schemas/messages.ts"],"sourcesContent":["/**\n * Schémas des Messages passés avec BroadcastChannel.\n */\n\nimport * as v from \"valibot\";\n\nimport { TYPES_MESSAGES } from \"../../constantes/messages.ts\";\nimport { WCStoreCartItemSchema } from \"./api/cart.ts\";\n\nexport const TypesMessagesSchema = v.enum(TYPES_MESSAGES);\n\nexport const MessageMajBoutonPanierDonneesSchema = v.object({\n quantiteProduits: v.number(),\n});\n\nexport const MessageMajBoutonPanierSchema = v.object({\n donnees: MessageMajBoutonPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajBoutonPanier)),\n});\n\nexport const MessageMajContenuPanierDonneesSchema = v.object({\n produits: v.array(WCStoreCartItemSchema),\n sousTotalPanier: v.number(),\n totalPanier: v.number(),\n});\n\nexport const MessageMajContenuPanierSchema = v.object({\n donnees: MessageMajContenuPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajContenuPanier)),\n});\n"],"names":["v.enum","v.object","v.number","v.pipe","v.string","v.value","v.array"],"mappings":";;;;;;;AASmCA,MAAO,cAAc;AAE3C,MAAA,sCAAsCC,OAAS;AAAA,EAC1D,kBAAkBC,OAAS;AAC7B,CAAC;AAEY,MAAA,+BAA+BD,OAAS;AAAA,EACnD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,eAAe,CAAC;AAClE,CAAC;AAEY,MAAA,uCAAuCJ,OAAS;AAAA,EAC3D,UAAUK,MAAQ,qBAAqB;AAAA,EACvC,iBAAiBJ,OAAS;AAAA,EAC1B,aAAaA,OAAS;AACxB,CAAC;AAEY,MAAA,gCAAgCD,OAAS;AAAA,EACpD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,gBAAgB,CAAC;AACnE,CAAC;"}
|
{"version":3,"file":"messages2.js","sources":["../../src/scripts/lib/schemas/messages.ts"],"sourcesContent":["/**\n * Schémas des Messages passés avec BroadcastChannel.\n */\n\nimport * as v from \"valibot\";\n\nimport { TYPES_MESSAGES } from \"../../constantes/messages.ts\";\nimport { WCStoreCartItemSchema } from \"./api/cart.ts\";\n\nexport const TypesMessagesSchema = v.enum(TYPES_MESSAGES);\n\nexport const MessageMajBoutonPanierDonneesSchema = v.object({\n quantiteProduits: v.number(),\n});\n\nexport const MessageMajBoutonPanierSchema = v.object({\n donnees: MessageMajBoutonPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajBoutonPanier)),\n});\n\nexport const MessageMajContenuPanierDonneesSchema = v.object({\n produits: v.array(WCStoreCartItemSchema),\n sousTotalProduits: v.number(),\n sousTotalReduction: v.number(),\n totalPanier: v.number(),\n});\n\nexport const MessageMajContenuPanierSchema = v.object({\n donnees: MessageMajContenuPanierDonneesSchema,\n type: v.pipe(v.string(), v.value(TYPES_MESSAGES.MajContenuPanier)),\n});\n"],"names":["v.enum","v.object","v.number","v.pipe","v.string","v.value","v.array"],"mappings":";;;;;;;AASmCA,MAAO,cAAc;AAE3C,MAAA,sCAAsCC,OAAS;AAAA,EAC1D,kBAAkBC,OAAS;AAC7B,CAAC;AAEY,MAAA,+BAA+BD,OAAS;AAAA,EACnD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,eAAe,CAAC;AAClE,CAAC;AAEY,MAAA,uCAAuCJ,OAAS;AAAA,EAC3D,UAAUK,MAAQ,qBAAqB;AAAA,EACvC,mBAAmBJ,OAAS;AAAA,EAC5B,oBAAoBA,OAAS;AAAA,EAC7B,aAAaA,OAAS;AACxB,CAAC;AAEY,MAAA,gCAAgCD,OAAS;AAAA,EACpD,SAAS;AAAA,EACT,MAAME,KAAOC,OAAE,GAAUC,MAAQ,eAAe,gBAAgB,CAAC;AACnE,CAAC;"}
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
import { z, N } from "./index.CeK6pfoJ.js";
|
import { z, N } from "./index.CeK6pfoJ.js";
|
||||||
import { V as ValiError } from "./index.DxUTT09Y.js";
|
import { V as ValiError } from "./index.DxUTT09Y.js";
|
||||||
import { e as ROUTE_API_APPLIQUE_COUPON, f as ROUTE_API_RETIRE_COUPON } from "./api.js";
|
import { e as ROUTE_API_APPLIQUE_COUPON, f as ROUTE_API_RETIRE_COUPON } from "./api.js";
|
||||||
import { E as SELECTEUR_BOUTON_CODE_PROMO, F as SELECTEUR_CHAMP_CODE_PROMO, G as SELECTEUR_ENSEMBLE_CODE_PROMO, H as SELECTEUR_MESSAGE_CODE_PROMO, q as SELECTEUR_TOTAL_PANIER, I as SELECTEUR_TOTAL_REDUCTION, J as SELECTEUR_TOTAL_REDUCTION_VALEUR, D as ATTRIBUT_DESACTIVE, K as ATTRIBUT_CHARGEMENT, L as ATTRIBUT_CODE_PROMO_PRESENT, k as ATTRIBUT_HIDDEN } from "./dom.js";
|
import { F as SELECTEUR_BOUTON_CODE_PROMO, G as SELECTEUR_CHAMP_CODE_PROMO, H as SELECTEUR_ENSEMBLE_CODE_PROMO, I as SELECTEUR_MESSAGE_CODE_PROMO, q as SELECTEUR_TOTAL_PANIER, J as SELECTEUR_TOTAL_REDUCTION, v as SELECTEUR_TOTAL_REDUCTION_VALEUR, E as ATTRIBUT_DESACTIVE, K as ATTRIBUT_CHARGEMENT, L as ATTRIBUT_CODE_PROMO_PRESENT, k as ATTRIBUT_HIDDEN } from "./dom.js";
|
||||||
import { E as ERREUR_CODE_PROMO_INVALIDE } from "./erreurs.js";
|
import { E as ERREUR_CODE_PROMO_INVALIDE } from "./erreurs.js";
|
||||||
import { d as correspondCibleSelecteur, i as identity } from "./dom2.js";
|
import { l as lanceAnimationCycleTexte } from "./animations.js";
|
||||||
|
import { d as accorderCibleASelecteur, i as identity } from "./dom2.js";
|
||||||
import { S as ServerError } from "./erreurs2.js";
|
import { S as ServerError } from "./erreurs2.js";
|
||||||
import { E as ErreurCodePromoInvalide } from "./codes-promo.js";
|
import { E as ErreurCodePromoInvalide } from "./codes-promo.js";
|
||||||
import { e as estReponse500 } from "./gardes.js";
|
import { e as estReponse500 } from "./gardes.js";
|
||||||
|
|
@ -45,7 +46,7 @@ const initialiseElementsCodePromo = () => {
|
||||||
}).with(
|
}).with(
|
||||||
{
|
{
|
||||||
cible: N.when(
|
cible: N.when(
|
||||||
(cible) => correspondCibleSelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)
|
(cible) => accorderCibleASelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)
|
||||||
),
|
),
|
||||||
codePromoPresent: false,
|
codePromoPresent: false,
|
||||||
valeurCodePromo: N.string
|
valeurCodePromo: N.string
|
||||||
|
|
@ -54,24 +55,16 @@ const initialiseElementsCodePromo = () => {
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
|
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
|
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
|
||||||
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "";
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "";
|
||||||
const animation = {
|
const animation = lanceAnimationCycleTexte({
|
||||||
callback: () => {
|
attribut: ATTRIBUT_CHARGEMENT,
|
||||||
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
|
element: ELEMENTS.BOUTON_CODE_PROMO,
|
||||||
clearInterval(animation.interval);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.textContent = animation.etapes.at(animation.index) ?? "Loading...";
|
|
||||||
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
|
|
||||||
},
|
|
||||||
etapes: [
|
etapes: [
|
||||||
"Loading",
|
"Loading",
|
||||||
"Loading.",
|
"Loading.",
|
||||||
"Loading..",
|
"Loading..",
|
||||||
"Loading..."
|
"Loading..."
|
||||||
],
|
]
|
||||||
index: 0,
|
});
|
||||||
interval: 0
|
|
||||||
};
|
|
||||||
animation.callback();
|
animation.callback();
|
||||||
animation.interval = setInterval(animation.callback, 500);
|
animation.interval = setInterval(animation.callback, 500);
|
||||||
}).map(
|
}).map(
|
||||||
|
|
@ -82,12 +75,11 @@ const initialiseElementsCodePromo = () => {
|
||||||
})
|
})
|
||||||
).chain(
|
).chain(
|
||||||
(reponse) => EitherAsync(async ({ throwE }) => {
|
(reponse) => EitherAsync(async ({ throwE }) => {
|
||||||
if (estReponse500(reponse)) throwE(new ServerError("500 Server Error"));
|
|
||||||
const reponseSimplifiee = {
|
const reponseSimplifiee = {
|
||||||
body: await reponse.json(),
|
body: await reponse.json(),
|
||||||
status: reponse.status
|
status: reponse.status
|
||||||
};
|
};
|
||||||
return z(reponseSimplifiee).with({
|
return z(reponseSimplifiee).with({ status: 500 }, () => throwE(new ServerError("500 Server Error"))).with({
|
||||||
body: N.when(() => reponseEstCodeErreurWC(reponseSimplifiee, ERREUR_CODE_PROMO_INVALIDE)),
|
body: N.when(() => reponseEstCodeErreurWC(reponseSimplifiee, ERREUR_CODE_PROMO_INVALIDE)),
|
||||||
status: 400
|
status: 400
|
||||||
}, () => throwE(new ErreurCodePromoInvalide(recupereValeurCodePromo() ?? ""))).with({ status: 200 }, () => reponseSimplifiee.body).run();
|
}, () => throwE(new ErreurCodePromoInvalide(recupereValeurCodePromo() ?? ""))).with({ status: 200 }, () => reponseSimplifiee.body).run();
|
||||||
|
|
@ -107,14 +99,20 @@ const initialiseElementsCodePromo = () => {
|
||||||
z(erreur).with(N.instanceOf(ValiError), (e) => console.error("ValiError", e.issues)).with(N.instanceOf(ErreurCodePromoInvalide), (e) => {
|
z(erreur).with(N.instanceOf(ValiError), (e) => console.error("ValiError", e.issues)).with(N.instanceOf(ErreurCodePromoInvalide), (e) => {
|
||||||
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}).with(N.instanceOf(ServerError), (e) => console.error(e)).with(N.instanceOf(TypeError), (e) => console.error(e)).exhaustive();
|
}).with(N.instanceOf(ServerError), (e) => {
|
||||||
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "Sorry, something went wrong! Please refresh the page and try again.";
|
||||||
|
console.error(e);
|
||||||
|
}).with(N.instanceOf(TypeError), (e) => {
|
||||||
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "Sorry, something went wrong! Please refresh the page and try again.";
|
||||||
|
console.error(e);
|
||||||
|
}).exhaustive();
|
||||||
}).finally(() => {
|
}).finally(() => {
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
|
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_CHARGEMENT);
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
|
ELEMENTS.BOUTON_CODE_PROMO.removeAttribute(ATTRIBUT_DESACTIVE);
|
||||||
}).run()
|
}).run()
|
||||||
).with(
|
).with(
|
||||||
{
|
{
|
||||||
cible: N.when((cible) => correspondCibleSelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)),
|
cible: N.when((cible) => accorderCibleASelecteur(cible, SELECTEUR_BOUTON_CODE_PROMO)),
|
||||||
codePromoPresent: true,
|
codePromoPresent: true,
|
||||||
valeurCodePromo: N.string
|
valeurCodePromo: N.string
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import { z } from "./index.CeK6pfoJ.js";
|
import { z } from "./index.CeK6pfoJ.js";
|
||||||
import { p as parse, V as ValiError } from "./index.DxUTT09Y.js";
|
import { p as parse, V as ValiError } from "./index.DxUTT09Y.js";
|
||||||
import { a as ROUTE_API_RETIRE_ARTICLE_PANIER, b as ROUTE_API_MAJ_ARTICLE_PANIER, c as ROUTE_API_MAJ_CLIENT, d as ROUTE_API_NOUVELLE_COMMANDES } from "./api.js";
|
import { a as ROUTE_API_RETIRE_ARTICLE_PANIER, b as ROUTE_API_MAJ_ARTICLE_PANIER, c as ROUTE_API_MAJ_CLIENT, d as ROUTE_API_NOUVELLE_COMMANDES } from "./api.js";
|
||||||
import { l as SELECTEUR_ENTREES_PANIER, m as SELECTEUR_CONTENEUR_PANIER, n as SELECTEUR_SOUS_TOTAL_PRODUITS, o as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, p as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, q as SELECTEUR_TOTAL_PANIER, r as SELECTEUR_BOUTON_SEPARATION_ADRESSES, s as SELECTEUR_FORMULAIRE_PANIER, t as SELECTEUR_FORMULAIRE_FACTURATION, u as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, v as SELECTEUR_INSTRUCTIONS_CLIENT, w as ATTRIBUT_CLE_PANIER, x as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, y as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, z as SELECTEUR_BOUTON_ADDITION_QUANTITE, B as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, C as SELECTEUR_PRIX_LIGNE_PANIER, k as ATTRIBUT_HIDDEN, D as ATTRIBUT_DESACTIVE } from "./dom.js";
|
import { l as SELECTEUR_ENTREES_PANIER, m as SELECTEUR_CONTENEUR_PANIER, n as SELECTEUR_SOUS_TOTAL_PRODUITS, o as SELECTEUR_SOUS_TOTAL_LIVRAISON_COUT, p as SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE, q as SELECTEUR_TOTAL_PANIER, r as SELECTEUR_BOUTON_SEPARATION_ADRESSES, s as SELECTEUR_FORMULAIRE_PANIER, t as SELECTEUR_FORMULAIRE_FACTURATION, u as SELECTEUR_BOUTON_ACTIONS_FORMULAIRE, v as SELECTEUR_TOTAL_REDUCTION_VALEUR, w as SELECTEUR_INSTRUCTIONS_CLIENT, x as ATTRIBUT_CLE_PANIER, y as SELECTEUR_BOUTON_SOUSTRACTION_QUANTITE, z as SELECTEUR_CHAMP_QUANTITE_LIGNE_PANIER, B as SELECTEUR_BOUTON_ADDITION_QUANTITE, C as SELECTEUR_BOUTON_SUPPRESSION_PANIER, A as ATTRIBUT_CONTIENT_ARTICLES, D as SELECTEUR_PRIX_LIGNE_PANIER, k as ATTRIBUT_HIDDEN, E as ATTRIBUT_DESACTIVE } from "./dom.js";
|
||||||
import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
|
import { N as NOM_CANAL_BOUTON_PANIER, a as NOM_CANAL_CONTENU_PANIER } from "./messages3.js";
|
||||||
import { r as recupereElementOuLeve, a as recupereElementsAvecSelecteur, e as eitherSessionStorageGet, b as eitherJsonParse, c as recupereElementAvecSelecteur } from "./dom2.js";
|
import { r as recupereElementOuLeve, a as recupereElementsAvecSelecteur, e as eitherSessionStorageGet, b as eitherJsonParse, c as recupereElementAvecSelecteur } from "./dom2.js";
|
||||||
import { l as leveServerError, r as reporteErreur, a as leveErreur } from "./erreurs2.js";
|
import { l as leveServerError, r as reporteErreur, a as leveErreur } from "./erreurs2.js";
|
||||||
|
|
@ -28,6 +28,7 @@ import "./cart2.js";
|
||||||
import "./cart-coupons.js";
|
import "./cart-coupons.js";
|
||||||
import "./orders3.js";
|
import "./orders3.js";
|
||||||
import "./erreurs.js";
|
import "./erreurs.js";
|
||||||
|
import "./animations.js";
|
||||||
import "./codes-promo.js";
|
import "./codes-promo.js";
|
||||||
import "./cart-apply-coupon.js";
|
import "./cart-apply-coupon.js";
|
||||||
import "./cart-remove-coupon.js";
|
import "./cart-remove-coupon.js";
|
||||||
|
|
@ -53,6 +54,9 @@ const SOUS_TOTAL_LIVRAISON_PRESTATAIRE = pipe(
|
||||||
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
|
recupereElementDocumentEither(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
|
||||||
recupereElementOuLeve
|
recupereElementOuLeve
|
||||||
);
|
);
|
||||||
|
const SOUS_TOTAL_REDUCTION = recupereElementDansDocumentOuLeve(
|
||||||
|
SELECTEUR_TOTAL_REDUCTION_VALEUR
|
||||||
|
);
|
||||||
const INSTRUCTIONS_CLIENT = recupereElementDansDocumentOuLeve(
|
const INSTRUCTIONS_CLIENT = recupereElementDansDocumentOuLeve(
|
||||||
SELECTEUR_INSTRUCTIONS_CLIENT
|
SELECTEUR_INSTRUCTIONS_CLIENT
|
||||||
);
|
);
|
||||||
|
|
@ -138,7 +142,8 @@ const initialiseMajEntreesPanier = () => {
|
||||||
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
|
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
|
||||||
emetMessageMajContenuPanier({
|
emetMessageMajContenuPanier({
|
||||||
produits: panier.items,
|
produits: panier.items,
|
||||||
sousTotalPanier: Number(panier.totals.total_items) / 100,
|
sousTotalProduits: Number(panier.totals.total_items) / 100,
|
||||||
|
sousTotalReduction: Number(panier.totals.total_discount) / 100,
|
||||||
totalPanier: Number(panier.totals.total_price) / 100
|
totalPanier: Number(panier.totals.total_price) / 100
|
||||||
});
|
});
|
||||||
entree.remove();
|
entree.remove();
|
||||||
|
|
@ -178,7 +183,8 @@ const initialiseMajEntreesPanier = () => {
|
||||||
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
|
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
|
||||||
emetMessageMajContenuPanier({
|
emetMessageMajContenuPanier({
|
||||||
produits: panier.items,
|
produits: panier.items,
|
||||||
sousTotalPanier: Number(panier.totals.total_items) / 100,
|
sousTotalProduits: Number(panier.totals.total_items) / 100,
|
||||||
|
sousTotalReduction: Number(panier.totals.total_discount) / 100,
|
||||||
totalPanier: Number(panier.totals.total_price) / 100
|
totalPanier: Number(panier.totals.total_price) / 100
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
@ -218,7 +224,8 @@ const initialiseMajEntreesPanier = () => {
|
||||||
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
|
emetMessageMajBoutonPanier({ quantiteProduits: panier.items_count });
|
||||||
emetMessageMajContenuPanier({
|
emetMessageMajContenuPanier({
|
||||||
produits: panier.items,
|
produits: panier.items,
|
||||||
sousTotalPanier: Number(panier.totals.total_items) / 100,
|
sousTotalProduits: Number(panier.totals.total_items) / 100,
|
||||||
|
sousTotalReduction: Number(panier.totals.total_discount) / 100,
|
||||||
totalPanier: Number(panier.totals.total_price) / 100
|
totalPanier: Number(panier.totals.total_price) / 100
|
||||||
});
|
});
|
||||||
})
|
})
|
||||||
|
|
@ -260,7 +267,8 @@ const initialiseMajContenuPanier = () => {
|
||||||
champQuantite.setAttribute("value", String(ligne.quantity));
|
champQuantite.setAttribute("value", String(ligne.quantity));
|
||||||
majEtatsActivationBoutons(entrees);
|
majEtatsActivationBoutons(entrees);
|
||||||
});
|
});
|
||||||
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalPanier)}€`;
|
SOUS_TOTAL_REDUCTION.textContent = `-${String(donnees.sousTotalReduction)}€`;
|
||||||
|
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalProduits)}€`;
|
||||||
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}€`;
|
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}€`;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { z } from "./index.CeK6pfoJ.js";
|
import { z } from "./index.CeK6pfoJ.js";
|
||||||
import { g as ROUTE_API_AJOUTE_ARTICLE_PANIER, E as ENTETE_WC_NONCE } from "./api.js";
|
import { g as ROUTE_API_AJOUTE_ARTICLE_PANIER, E as ENTETE_WC_NONCE } from "./api.js";
|
||||||
import { M as SELECTEUR_BOUTON_AJOUT_PANIER, N as SELECTEUR_SELECTEUR_QUANTITE, O as SELECTEUR_LIENS_ONGLETS, P as SELECTEUR_SECTIONS_CONTENUS, Q as SELECTEUR_PRIX_PRODUIT, R as SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT, T as SELECTEUR_FLECHE_DEFILEMENT_GAUCHE, U as SELECTEUR_FLECHE_DEFILEMENT_DROITE, V as SELECTEUR_PHOTOS_PRODUIT, W as SELECTEUR_IMAGE_COLONNE_GAUCHE, X as SELECTEUR_IMAGES_COLONNE_DROITE, Y as ATTRIBUT_INDEX_IMAGE_ACTIVE, Z as ATTRIBUT_ARIA_SELECTED, k as ATTRIBUT_HIDDEN, D as ATTRIBUT_DESACTIVE, _ as ATTRIBUT_PRIX } from "./dom.js";
|
import { M as SELECTEUR_BOUTON_AJOUT_PANIER, N as SELECTEUR_SELECTEUR_QUANTITE, O as SELECTEUR_LIENS_ONGLETS, P as SELECTEUR_SECTIONS_CONTENUS, Q as SELECTEUR_PRIX_PRODUIT, R as SELECTEUR_CONTENEUR_FLECHES_DEFILEMENT, T as SELECTEUR_FLECHE_DEFILEMENT_GAUCHE, U as SELECTEUR_FLECHE_DEFILEMENT_DROITE, V as SELECTEUR_PHOTOS_PRODUIT, W as SELECTEUR_IMAGE_COLONNE_GAUCHE, X as SELECTEUR_IMAGES_COLONNE_DROITE, Y as ATTRIBUT_INDEX_IMAGE_ACTIVE, Z as ATTRIBUT_ARIA_SELECTED, k as ATTRIBUT_HIDDEN, E as ATTRIBUT_DESACTIVE, _ as ATTRIBUT_PRIX } from "./dom.js";
|
||||||
import { r as recupereElementOuLeve, f as recupereElementsOuLeve, R as Ra } from "./dom2.js";
|
import { r as recupereElementOuLeve, f as recupereElementsOuLeve, R as Ra } from "./dom2.js";
|
||||||
import { l as leveServerError, r as reporteErreur } from "./erreurs2.js";
|
import { l as leveServerError, r as reporteErreur } from "./erreurs2.js";
|
||||||
import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js";
|
import { b as estHTMLSelectElement, e as estReponse500, a as estError } from "./gardes.js";
|
||||||
|
|
|
||||||
|
|
@ -31,15 +31,30 @@ if (!$possede_session_wc) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var bool $est_panier__vide */
|
|
||||||
$est_panier_vide = WC()->cart->is_empty();
|
|
||||||
|
|
||||||
// Redirige à la page d'accueil si le Panier est vide
|
// Redirige à la page d'accueil si le Panier est vide
|
||||||
if ($est_panier_vide) {
|
if (WC()->cart->is_empty()) {
|
||||||
header("Location: $url_accueil");
|
header("Location: $url_accueil");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Vérifie que les paramètres d'URLs nécessaires soient présents
|
||||||
|
/** @var string $order_id */
|
||||||
|
$order_id = $_GET["order_id"];
|
||||||
|
if (!$order_id) {
|
||||||
|
$reponse = ["succes" => false, "status" => "order_key is missing"];
|
||||||
|
echo json_encode($reponse);
|
||||||
|
http_response_code(400);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
/** @var string $order_key */
|
||||||
|
$order_key = $_GET["order_key"];
|
||||||
|
if (!$order_key) {
|
||||||
|
$reponse = ["succes" => false, "status" => "order_key is missing"];
|
||||||
|
echo json_encode($reponse);
|
||||||
|
http_response_code(400);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Récupère le Panier et l'Email du Client
|
// Récupère le Panier et l'Email du Client
|
||||||
/** @var WC_Cart $panier */
|
/** @var WC_Cart $panier */
|
||||||
$panier = WC()->cart;
|
$panier = WC()->cart;
|
||||||
|
|
@ -49,7 +64,6 @@ $email_client = WC()->session->get("customer")["email"];
|
||||||
$articles = [];
|
$articles = [];
|
||||||
|
|
||||||
// TODO: Cas des Produits Simples : Pas de Attribute Summary !
|
// TODO: Cas des Produits Simples : Pas de Attribute Summary !
|
||||||
|
|
||||||
foreach ($panier->get_cart() as $cle_panier => $article_panier) {
|
foreach ($panier->get_cart() as $cle_panier => $article_panier) {
|
||||||
$titre_produit = $article_panier["data"]?->get_title();
|
$titre_produit = $article_panier["data"]?->get_title();
|
||||||
$est_variation = $article_panier["variation_id"] !== null;
|
$est_variation = $article_panier["variation_id"] !== null;
|
||||||
|
|
@ -69,40 +83,47 @@ foreach ($panier->get_cart() as $cle_panier => $article_panier) {
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @var string $order_id */
|
// Récupère la Commande et la Méthode de Livraison
|
||||||
$order_id = $_GET["order_id"];
|
/** @var WC_Order $commande */
|
||||||
if (!$order_id) {
|
$commande = wc_get_order($order_id);
|
||||||
$reponse = ["succes" => false, "status" => "order_key is missing"];
|
|
||||||
echo json_encode($reponse);
|
|
||||||
http_response_code(400);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var string $order_key */
|
|
||||||
$order_key = $_GET["order_key"];
|
|
||||||
if (!$order_key) {
|
|
||||||
$reponse = ["succes" => false, "status" => "order_key is missing"];
|
|
||||||
echo json_encode($reponse);
|
|
||||||
http_response_code(400);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @var WC_Order $order */
|
|
||||||
$order = wc_get_order($order_id);
|
|
||||||
/** @var mixed $methode_livraison */
|
/** @var mixed $methode_livraison */
|
||||||
$methode_livraison = [
|
$methode_livraison = [
|
||||||
"nom" => $order->get_shipping_method(),
|
"nom" => $commande->get_shipping_method(),
|
||||||
"cout" => $order->get_shipping_total(),
|
"cout" => $commande->get_shipping_total(),
|
||||||
];
|
];
|
||||||
|
|
||||||
// Sélectionne la clé API Stripe
|
// Sélectionne la clé API Stripe
|
||||||
\Stripe\Stripe::setApiKey(Config::get("STRIPE_API_SECRET"));
|
\Stripe\Stripe::setApiKey(Config::get("STRIPE_API_SECRET"));
|
||||||
|
|
||||||
|
// Met à jour les Codes promos
|
||||||
|
$coupons_stripe = collect(\Stripe\Coupon::all()->data);
|
||||||
|
$coupons_wc = collect(WC()->cart->get_coupons())
|
||||||
|
->map(function (WC_Coupon $coupon) {
|
||||||
|
return [
|
||||||
|
"duration" => "forever",
|
||||||
|
"id" => $coupon->get_code(),
|
||||||
|
"name" => $coupon->get_code(),
|
||||||
|
$coupon->get_discount_type() == "fixed_cart" ? "amount_off" : "percent_off" => $coupon->get_amount(),
|
||||||
|
];
|
||||||
|
})
|
||||||
|
->each(function (array $item) use ($coupons_stripe) {
|
||||||
|
// Si le code promo n'existe, le créé
|
||||||
|
if (!$coupons_stripe->contains("name", $item["name"])) {
|
||||||
|
\Stripe\Coupon::create($item);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
$reductions_stripe = $coupons_wc
|
||||||
|
->map(function (array $coupon) {
|
||||||
|
return ["coupon" => $coupon["name"]];
|
||||||
|
})
|
||||||
|
->values()
|
||||||
|
->toArray();
|
||||||
/** @var Session $session_checkout_stripe */
|
/** @var Session $session_checkout_stripe */
|
||||||
$session_checkout_stripe = \Stripe\Checkout\Session::create(
|
$session_checkout_stripe = \Stripe\Checkout\Session::create(
|
||||||
[
|
[
|
||||||
"cancel_url" => "$url_accueil",
|
"cancel_url" => "$url_accueil",
|
||||||
"customer_email" => $email_client,
|
"customer_email" => $email_client,
|
||||||
|
"discounts" => $reductions_stripe,
|
||||||
"line_items" => $articles,
|
"line_items" => $articles,
|
||||||
"mode" => "payment",
|
"mode" => "payment",
|
||||||
"success_url" => "$url_succes_commande?session_id={CHECKOUT_SESSION_ID}",
|
"success_url" => "$url_succes_commande?session_id={CHECKOUT_SESSION_ID}",
|
||||||
|
|
@ -131,5 +152,6 @@ $session_checkout_stripe = \Stripe\Checkout\Session::create(
|
||||||
// echo json_encode($session_checkout_stripe);
|
// echo json_encode($session_checkout_stripe);
|
||||||
header("HTTP/1.1 303 See Other");
|
header("HTTP/1.1 303 See Other");
|
||||||
header("Location: " . $session_checkout_stripe->url);
|
header("Location: " . $session_checkout_stripe->url);
|
||||||
|
// contact@gcch.fr
|
||||||
|
|
||||||
exit();
|
exit();
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,8 @@
|
||||||
border: initial;
|
border: initial;
|
||||||
border-top: 1px solid var(--couleur-noir);
|
border-top: 1px solid var(--couleur-noir);
|
||||||
|
|
||||||
&::-webkit-outer-spin-button, &::-webkit-inner-spin-button {
|
&::-webkit-outer-spin-button,
|
||||||
|
&::-webkit-inner-spin-button {
|
||||||
margin: 0; /* 2 */
|
margin: 0; /* 2 */
|
||||||
appearance: none; /* 2 */
|
appearance: none; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
@ -150,10 +151,6 @@
|
||||||
place-content: center;
|
place-content: center;
|
||||||
margin: auto;
|
margin: auto;
|
||||||
|
|
||||||
input {
|
|
||||||
width: 20rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
|
* 1. Longueur minimale pour le Bouton n'ait pas à changer de taille quel que soit son texte
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,44 @@
|
||||||
|
/** Fonctions pour la création de simples animations JavaScript. */
|
||||||
|
|
||||||
|
// Types
|
||||||
|
interface AnimationCycleTexte {
|
||||||
|
callback: () => void;
|
||||||
|
etapes: Array<string>;
|
||||||
|
index: number;
|
||||||
|
interval: NodeJS.Timeout;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface ParametresAnimationCycleTexte {
|
||||||
|
attribut: string;
|
||||||
|
element: HTMLElement;
|
||||||
|
etapes: Array<string>;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Créer le nécessaire pour une animation s'exécutant jusqu'à ce que un interval soit manuellement arrêté. L'animation
|
||||||
|
* consiste en la mise à jour d'un texte avec l'utilisation de toutes les valeurs d'un tableau, une par une.
|
||||||
|
*
|
||||||
|
* @param args Les paramètres nécessaires pour la création de l'animation.
|
||||||
|
* @returns Un objet contenant les informations de l'animation, notamment l'interval utilisable pour son arrêt.
|
||||||
|
*/
|
||||||
|
export const lanceAnimationCycleTexte = (args: ParametresAnimationCycleTexte): AnimationCycleTexte => {
|
||||||
|
const animation: AnimationCycleTexte = {
|
||||||
|
callback: (): void => {
|
||||||
|
// Arrête le cycle quand l'Attribut de chargement n'est plus présent
|
||||||
|
if (!args.element.hasAttribute(args.attribut)) {
|
||||||
|
clearInterval(animation.interval);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Change le texte
|
||||||
|
args.element.textContent = animation.etapes.at(animation.index) ?? "Loading...";
|
||||||
|
// Incrémente ou réinitialise l'index
|
||||||
|
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
|
||||||
|
},
|
||||||
|
etapes: args.etapes,
|
||||||
|
index: 0,
|
||||||
|
interval: setInterval(() => {}, 2147483647),
|
||||||
|
};
|
||||||
|
|
||||||
|
return animation;
|
||||||
|
};
|
||||||
|
|
@ -129,7 +129,7 @@ export const eitherJsonParse = (chaine: string): Either<SyntaxError, JSONValue>
|
||||||
Either.encase(() => JSON.parse(chaine));
|
Either.encase(() => JSON.parse(chaine));
|
||||||
|
|
||||||
/** TODO */
|
/** TODO */
|
||||||
export const correspondCibleSelecteur = <E extends HTMLElement = HTMLElement>(
|
export const accorderCibleASelecteur = <E extends HTMLElement = HTMLElement>(
|
||||||
cible: EventTarget | null,
|
cible: EventTarget | null,
|
||||||
selecteur: string,
|
selecteur: string,
|
||||||
): cible is E => cible !== null && (cible as HTMLElement).matches(selecteur);
|
): cible is E => cible !== null && (cible as HTMLElement).matches(selecteur);
|
||||||
|
|
|
||||||
|
|
@ -8,12 +8,12 @@ import type {
|
||||||
MessageMajContenuPanier,
|
MessageMajContenuPanier,
|
||||||
MessageMajContenuPanierDonnees,
|
MessageMajContenuPanierDonnees,
|
||||||
} from "./types/messages";
|
} from "./types/messages";
|
||||||
|
import type { ReponseSimplifiee } from "./types/reseau";
|
||||||
|
|
||||||
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from "../constantes/messages.ts";
|
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER, TYPES_MESSAGES } from "../constantes/messages.ts";
|
||||||
import { reporteErreur } from "./erreurs.ts";
|
import { reporteErreur } from "./erreurs.ts";
|
||||||
import { WCErrorSchema } from "./schemas/api/erreurs.ts";
|
import { WCErrorSchema } from "./schemas/api/erreurs.ts";
|
||||||
import { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from "./schemas/messages.ts";
|
import { MessageMajBoutonPanierSchema, MessageMajContenuPanierSchema } from "./schemas/messages.ts";
|
||||||
import { ReponseSimplifiee } from "./types/reseau";
|
|
||||||
import { eitherParse } from "./validation.ts";
|
import { eitherParse } from "./validation.ts";
|
||||||
|
|
||||||
export const canalPostMessage = (canal: BroadcastChannel, message: any): BroadcastChannel => {
|
export const canalPostMessage = (canal: BroadcastChannel, message: any): BroadcastChannel => {
|
||||||
|
|
@ -38,7 +38,8 @@ export const emetMessageMajContenuPanier = (args: MessageMajContenuPanierDonnees
|
||||||
canal.postMessage({
|
canal.postMessage({
|
||||||
donnees: {
|
donnees: {
|
||||||
produits: args.produits,
|
produits: args.produits,
|
||||||
sousTotalPanier: args.sousTotalPanier,
|
sousTotalProduits: args.sousTotalProduits,
|
||||||
|
sousTotalReduction: args.sousTotalReduction,
|
||||||
totalPanier: args.totalPanier,
|
totalPanier: args.totalPanier,
|
||||||
},
|
},
|
||||||
type: TYPES_MESSAGES.MajContenuPanier,
|
type: TYPES_MESSAGES.MajContenuPanier,
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,8 @@ export const MessageMajBoutonPanierSchema = v.object({
|
||||||
|
|
||||||
export const MessageMajContenuPanierDonneesSchema = v.object({
|
export const MessageMajContenuPanierDonneesSchema = v.object({
|
||||||
produits: v.array(WCStoreCartItemSchema),
|
produits: v.array(WCStoreCartItemSchema),
|
||||||
sousTotalPanier: v.number(),
|
sousTotalProduits: v.number(),
|
||||||
|
sousTotalReduction: v.number(),
|
||||||
totalPanier: v.number(),
|
totalPanier: v.number(),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,8 @@ import {
|
||||||
SELECTEUR_TOTAL_REDUCTION_VALEUR,
|
SELECTEUR_TOTAL_REDUCTION_VALEUR,
|
||||||
} from "./constantes/dom";
|
} from "./constantes/dom";
|
||||||
import { ERREUR_CODE_PROMO_INVALIDE } from "./constantes/erreurs";
|
import { ERREUR_CODE_PROMO_INVALIDE } from "./constantes/erreurs";
|
||||||
import { correspondCibleSelecteur } from "./lib/dom";
|
import { lanceAnimationCycleTexte } from "./lib/animations";
|
||||||
|
import { accorderCibleASelecteur } from "./lib/dom";
|
||||||
import { ServerError } from "./lib/erreurs";
|
import { ServerError } from "./lib/erreurs";
|
||||||
import { ErreurCodePromoInvalide } from "./lib/erreurs/codes-promo";
|
import { ErreurCodePromoInvalide } from "./lib/erreurs/codes-promo";
|
||||||
import { estReponse500 } from "./lib/gardes";
|
import { estReponse500 } from "./lib/gardes";
|
||||||
|
|
@ -45,7 +46,6 @@ type EtatsPage = {
|
||||||
/** Un nonce pour l'authentification de requêtes API vers le backend WooCommerce. */
|
/** Un nonce pour l'authentification de requêtes API vers le backend WooCommerce. */
|
||||||
nonce: string;
|
nonce: string;
|
||||||
};
|
};
|
||||||
|
|
||||||
// @ts-expect-error -- États injectés par le modèle PHP
|
// @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
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment -- États injectés par le modèle PHP
|
||||||
const ETATS_PAGE: EtatsPage = _etats;
|
const ETATS_PAGE: EtatsPage = _etats;
|
||||||
|
|
@ -61,7 +61,6 @@ const ELEMENTS = {
|
||||||
};
|
};
|
||||||
|
|
||||||
export const initialiseElementsCodePromo = (): void => {
|
export const initialiseElementsCodePromo = (): void => {
|
||||||
// Récupère le code promo s'il existe
|
|
||||||
const recupereValeurCodePromo = (): null | string =>
|
const recupereValeurCodePromo = (): null | string =>
|
||||||
Maybe.fromFalsy(ELEMENTS.CHAMP_CODE_PROMO.value.trim()).extractNullable();
|
Maybe.fromFalsy(ELEMENTS.CHAMP_CODE_PROMO.value.trim()).extractNullable();
|
||||||
const recuperePresenceCodePromo = (): boolean =>
|
const recuperePresenceCodePromo = (): boolean =>
|
||||||
|
|
@ -75,44 +74,37 @@ export const initialiseElementsCodePromo = (): void => {
|
||||||
valeurCodePromo: recupereValeurCodePromo(),
|
valeurCodePromo: recupereValeurCodePromo(),
|
||||||
})
|
})
|
||||||
// Un code promo doit être ajouté
|
// Un code promo doit être ajouté
|
||||||
|
// Aucun code promo n'est déjà présent et une valeur acceptable existe
|
||||||
.with(
|
.with(
|
||||||
{
|
{
|
||||||
cible: P.when((cible: EventTarget | null) =>
|
cible: P.when((cible: EventTarget | null) =>
|
||||||
correspondCibleSelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)
|
accorderCibleASelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)
|
||||||
),
|
),
|
||||||
codePromoPresent: false,
|
codePromoPresent: false,
|
||||||
valeurCodePromo: P.string,
|
valeurCodePromo: P.string,
|
||||||
},
|
},
|
||||||
({ valeurCodePromo }) =>
|
({ valeurCodePromo }) =>
|
||||||
void EitherAsync
|
void EitherAsync
|
||||||
|
// Vérifie le Schéma des arguments
|
||||||
.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartApplyCouponArgsSchema))
|
.liftEither(eitherParse({ code: valeurCodePromo }, WCStoreCartApplyCouponArgsSchema))
|
||||||
.ifRight(() => {
|
.ifRight(() => {
|
||||||
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
// Désactive le Bouton pour empêcher des requêtes concurrentes
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
|
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_DESACTIVE, "");
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
|
ELEMENTS.BOUTON_CODE_PROMO.setAttribute(ATTRIBUT_CHARGEMENT, "");
|
||||||
|
// Réinitialise le Message à l'Utilisateur
|
||||||
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "";
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "";
|
||||||
|
|
||||||
// Lance un cycle d'animation sur le texte de chargement
|
// Lance un cycle d'animation sur le texte de chargement
|
||||||
const animation = {
|
const animation = lanceAnimationCycleTexte({
|
||||||
callback: () => {
|
attribut: ATTRIBUT_CHARGEMENT,
|
||||||
if (!ELEMENTS.BOUTON_CODE_PROMO.hasAttribute(ATTRIBUT_CHARGEMENT)) {
|
element: ELEMENTS.BOUTON_CODE_PROMO,
|
||||||
clearInterval(animation.interval);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.textContent = animation.etapes.at(animation.index)
|
|
||||||
?? "Loading...";
|
|
||||||
animation.index = animation.index + 1 > animation.etapes.length - 1 ? 0 : animation.index + 1;
|
|
||||||
},
|
|
||||||
etapes: [
|
etapes: [
|
||||||
"Loading",
|
"Loading",
|
||||||
"Loading.",
|
"Loading.",
|
||||||
"Loading..",
|
"Loading..",
|
||||||
"Loading...",
|
"Loading...",
|
||||||
],
|
],
|
||||||
index: 0,
|
});
|
||||||
interval: 0,
|
|
||||||
};
|
|
||||||
animation.callback();
|
animation.callback();
|
||||||
animation.interval = setInterval(animation.callback, 500);
|
animation.interval = setInterval(animation.callback, 500);
|
||||||
})
|
})
|
||||||
|
|
@ -127,14 +119,13 @@ export const initialiseElementsCodePromo = (): void => {
|
||||||
// Traite les cas d'Erreur
|
// Traite les cas d'Erreur
|
||||||
.chain((reponse: Response) =>
|
.chain((reponse: Response) =>
|
||||||
EitherAsync<ErreurCodePromoInvalide | ServerError, unknown>(async ({ throwE }) => {
|
EitherAsync<ErreurCodePromoInvalide | ServerError, unknown>(async ({ throwE }) => {
|
||||||
if (estReponse500(reponse)) throwE(new ServerError("500 Server Error"));
|
|
||||||
|
|
||||||
const reponseSimplifiee: ReponseSimplifiee = {
|
const reponseSimplifiee: ReponseSimplifiee = {
|
||||||
body: await reponse.json(),
|
body: await reponse.json(),
|
||||||
status: reponse.status,
|
status: reponse.status,
|
||||||
};
|
};
|
||||||
|
|
||||||
return match(reponseSimplifiee)
|
return match(reponseSimplifiee)
|
||||||
|
.with({ status: 500 }, () => throwE(new ServerError("500 Server Error")))
|
||||||
.with({
|
.with({
|
||||||
body: P.when(() => reponseEstCodeErreurWC(reponseSimplifiee, ERREUR_CODE_PROMO_INVALIDE)),
|
body: P.when(() => reponseEstCodeErreurWC(reponseSimplifiee, ERREUR_CODE_PROMO_INVALIDE)),
|
||||||
status: 400,
|
status: 400,
|
||||||
|
|
@ -162,14 +153,24 @@ export const initialiseElementsCodePromo = (): void => {
|
||||||
.ifLeft(erreur => {
|
.ifLeft(erreur => {
|
||||||
// Rétablis le texte d'origine
|
// Rétablis le texte d'origine
|
||||||
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
|
ELEMENTS.BOUTON_CODE_PROMO.textContent = "Apply";
|
||||||
|
|
||||||
|
// Traite les Erreurs et affiche un Message à l'Utilisateur
|
||||||
match(erreur)
|
match(erreur)
|
||||||
.with(P.instanceOf(ValiError), e => console.error("ValiError", e.issues))
|
.with(P.instanceOf(ValiError), e => console.error("ValiError", e.issues))
|
||||||
.with(P.instanceOf(ErreurCodePromoInvalide), e => {
|
.with(P.instanceOf(ErreurCodePromoInvalide), e => {
|
||||||
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent = "This promo code does not exist.";
|
||||||
console.error(e);
|
console.error(e);
|
||||||
})
|
})
|
||||||
.with(P.instanceOf(ServerError), e => console.error(e))
|
.with(P.instanceOf(ServerError), e => {
|
||||||
.with(P.instanceOf(TypeError), e => console.error(e))
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent =
|
||||||
|
"Sorry, something went wrong! Please refresh the page and try again.";
|
||||||
|
console.error(e);
|
||||||
|
})
|
||||||
|
.with(P.instanceOf(TypeError), e => {
|
||||||
|
ELEMENTS.MESSAGE_CODE_PROMO.textContent =
|
||||||
|
"Sorry, something went wrong! Please refresh the page and try again.";
|
||||||
|
console.error(e);
|
||||||
|
})
|
||||||
.exhaustive();
|
.exhaustive();
|
||||||
})
|
})
|
||||||
.finally(() => {
|
.finally(() => {
|
||||||
|
|
@ -180,9 +181,10 @@ export const initialiseElementsCodePromo = (): void => {
|
||||||
.run(),
|
.run(),
|
||||||
)
|
)
|
||||||
// Un code promo doit être retiré
|
// Un code promo doit être retiré
|
||||||
|
// Un code promo est présent sous forme de chaîne
|
||||||
.with(
|
.with(
|
||||||
{
|
{
|
||||||
cible: P.when(cible => correspondCibleSelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)),
|
cible: P.when(cible => accorderCibleASelecteur<HTMLButtonElement>(cible, SELECTEUR_BOUTON_CODE_PROMO)),
|
||||||
codePromoPresent: true,
|
codePromoPresent: true,
|
||||||
valeurCodePromo: P.string,
|
valeurCodePromo: P.string,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import {
|
||||||
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
|
SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE,
|
||||||
SELECTEUR_SOUS_TOTAL_PRODUITS,
|
SELECTEUR_SOUS_TOTAL_PRODUITS,
|
||||||
SELECTEUR_TOTAL_PANIER,
|
SELECTEUR_TOTAL_PANIER,
|
||||||
|
SELECTEUR_TOTAL_REDUCTION_VALEUR,
|
||||||
} from "./constantes/dom.ts";
|
} from "./constantes/dom.ts";
|
||||||
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER } from "./constantes/messages.ts";
|
import { NOM_CANAL_BOUTON_PANIER, NOM_CANAL_CONTENU_PANIER } from "./constantes/messages.ts";
|
||||||
import {
|
import {
|
||||||
|
|
@ -109,6 +110,9 @@ const SOUS_TOTAL_LIVRAISON_PRESTATAIRE: HTMLSpanElement = pipe(
|
||||||
recupereElementDocumentEither<HTMLSpanElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
|
recupereElementDocumentEither<HTMLSpanElement>(SELECTEUR_SOUS_TOTAL_LIVRAISON_PRESTATAIRE),
|
||||||
recupereElementOuLeve,
|
recupereElementOuLeve,
|
||||||
);
|
);
|
||||||
|
const SOUS_TOTAL_REDUCTION: HTMLSpanElement = recupereElementDansDocumentOuLeve<HTMLSpanElement>(
|
||||||
|
SELECTEUR_TOTAL_REDUCTION_VALEUR,
|
||||||
|
);
|
||||||
const INSTRUCTIONS_CLIENT: HTMLTextAreaElement = recupereElementDansDocumentOuLeve(
|
const INSTRUCTIONS_CLIENT: HTMLTextAreaElement = recupereElementDansDocumentOuLeve(
|
||||||
SELECTEUR_INSTRUCTIONS_CLIENT,
|
SELECTEUR_INSTRUCTIONS_CLIENT,
|
||||||
);
|
);
|
||||||
|
|
@ -238,7 +242,8 @@ const initialiseMajEntreesPanier = (): void => {
|
||||||
// Émet un Message avec le nouveau contenu du Panier
|
// Émet un Message avec le nouveau contenu du Panier
|
||||||
emetMessageMajContenuPanier({
|
emetMessageMajContenuPanier({
|
||||||
produits: panier.items,
|
produits: panier.items,
|
||||||
sousTotalPanier: Number(panier.totals.total_items) / 100,
|
sousTotalProduits: Number(panier.totals.total_items) / 100,
|
||||||
|
sousTotalReduction: Number(panier.totals.total_discount) / 100,
|
||||||
totalPanier: Number(panier.totals.total_price) / 100,
|
totalPanier: Number(panier.totals.total_price) / 100,
|
||||||
});
|
});
|
||||||
// Retire l'entrée du Panier du DOM
|
// Retire l'entrée du Panier du DOM
|
||||||
|
|
@ -297,7 +302,8 @@ const initialiseMajEntreesPanier = (): void => {
|
||||||
// Émet un Message avec le nouveau contenu du Panier
|
// Émet un Message avec le nouveau contenu du Panier
|
||||||
emetMessageMajContenuPanier({
|
emetMessageMajContenuPanier({
|
||||||
produits: panier.items,
|
produits: panier.items,
|
||||||
sousTotalPanier: Number(panier.totals.total_items) / 100,
|
sousTotalProduits: Number(panier.totals.total_items) / 100,
|
||||||
|
sousTotalReduction: Number(panier.totals.total_discount) / 100,
|
||||||
totalPanier: Number(panier.totals.total_price) / 100,
|
totalPanier: Number(panier.totals.total_price) / 100,
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
@ -353,7 +359,8 @@ const initialiseMajEntreesPanier = (): void => {
|
||||||
// Émet un Message avec le nouveau contenu du Panier
|
// Émet un Message avec le nouveau contenu du Panier
|
||||||
emetMessageMajContenuPanier({
|
emetMessageMajContenuPanier({
|
||||||
produits: panier.items,
|
produits: panier.items,
|
||||||
sousTotalPanier: Number(panier.totals.total_items) / 100,
|
sousTotalProduits: Number(panier.totals.total_items) / 100,
|
||||||
|
sousTotalReduction: Number(panier.totals.total_discount) / 100,
|
||||||
totalPanier: Number(panier.totals.total_price) / 100,
|
totalPanier: Number(panier.totals.total_price) / 100,
|
||||||
});
|
});
|
||||||
}),
|
}),
|
||||||
|
|
@ -418,7 +425,8 @@ const initialiseMajContenuPanier = (): void => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Met à jour les totaux du Panier
|
// Met à jour les totaux du Panier
|
||||||
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalPanier)}€`;
|
SOUS_TOTAL_REDUCTION.textContent = `-${String(donnees.sousTotalReduction)}€`;
|
||||||
|
SOUS_TOTAL_PRODUITS.textContent = `${String(donnees.sousTotalProduits)}€`;
|
||||||
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}€`;
|
TOTAL_PANIER.textContent = `${String(donnees.totalPanier)}€`;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
|
||||||
BIN
web/app/uploads/2024/11/DSC0240-300x300.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
web/app/uploads/2024/11/DSC0240.jpg
Normal file
|
After Width: | Height: | Size: 716 KiB |
BIN
web/app/uploads/2024/11/DSC0242-300x300.jpg
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
web/app/uploads/2024/11/DSC0242.jpg
Normal file
|
After Width: | Height: | Size: 659 KiB |
BIN
web/app/uploads/2024/11/DSC0249-300x300.jpg
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
web/app/uploads/2024/11/DSC0249.jpg
Normal file
|
After Width: | Height: | Size: 545 KiB |
BIN
web/app/uploads/2024/11/DSC0251-300x300.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
web/app/uploads/2024/11/DSC0251.jpg
Normal file
|
After Width: | Height: | Size: 600 KiB |
BIN
web/app/uploads/2024/11/FUYOU-B0-s-300x300.jpg
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
web/app/uploads/2024/11/FUYOU-B0-s.jpg
Normal file
|
After Width: | Height: | Size: 452 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.6 KiB |