From 59b45d0f5bd94a659f1a87a4f9db7fff83b61727 Mon Sep 17 00:00:00 2001 From: Orka Arnest CRUZE Date: Wed, 15 May 2024 14:42:10 +0200 Subject: [PATCH] style: applique prettier #39 --- ...ajouter-ou-demander-du-nouveau-contenu.yml | 12 +- .../2-signaler-une-erreur-ou-une-anomalie.yml | 84 ++++++------- .../3-demander-une-evolution.yml | 50 ++++---- .github/workflows/11ty.yml | 82 ++++++------- .github/workflows/docker-build-publish.yml | 110 ++++++++--------- LICENSES/LICENSE.Etalab-2.0.md | 14 +-- README.md | 1 - _data/data.js | 4 +- _data/i18n/index.js | 14 +-- _data/metadata.js | 10 +- compose.yml | 32 ++--- content/calendar/calendar.11tydata.js | 4 +- content/en/about/index.md | 4 +- content/en/en.11tydata.js | 4 +- content/feed/feed.11tydata.js | 4 +- content/fr/about.md | 6 +- content/fr/about/index.md | 8 +- content/fr/accessibility/index.md | 12 +- content/fr/blog/posts/accordeon.md | 11 +- content/fr/blog/posts/alerte.md | 4 +- content/fr/blog/posts/blog-post.md | 11 +- content/fr/blog/posts/carte.md | 34 +++--- content/fr/blog/posts/citation.md | 7 +- content/fr/blog/posts/download.md | 7 +- content/fr/blog/posts/evenement.md | 6 +- content/fr/blog/posts/fil-d-ariane.md | 11 +- content/fr/blog/posts/i18n.md | 3 +- content/fr/blog/posts/md-cheatsheet.md | 8 +- content/fr/blog/posts/mise-en-avant.md | 7 +- content/fr/blog/posts/navigation.md | 12 +- content/fr/blog/posts/pagination.md | 2 +- content/fr/blog/posts/posts.11tydata.js | 6 +- .../fr/blog/posts/retour-en-haut-de-page.md | 7 +- content/fr/blog/posts/schema.md | 2 +- content/fr/blog/posts/tableau.md | 7 +- content/fr/blog/posts/tuile.md | 18 +-- content/fr/contact/index.md | 10 +- content/fr/fr.11tydata.js | 12 +- content/fr/help/index.md | 2 +- content/fr/legal/index.md | 3 +- content/fr/personal-data/index.md | 3 +- .../alimentation-diffusion-simple/index.md | 111 ++++++------------ .../controle-des-acces/diffusion/index.md | 65 +++++----- content/fr/tutoriels/tutoriels.11tydata.js | 9 +- content/fr/utilisateur/metadata/index.md | 22 ++-- docs/developpeur.md | 27 +++-- docs/redacteur.md | 3 +- eleventy.config.drafts.js | 10 +- eleventy.config.i18n.js | 8 +- eleventy.config.images.js | 8 +- eleventy.config.js | 87 +++++++------- eleventy.config.mermaid.js | 4 +- eleventy.config.pagination.js | 36 +++--- markdown-custom-containers.js | 52 ++++---- public/css/index.css | 11 +- public/css/prism-diff.css | 42 +++---- public/js/copy.js | 28 +++-- public/js/matomo.js | 18 +-- public/js/mermaid.initialize.js | 38 +++--- public/js/search-results.js | 28 ++--- public/js/search.js | 2 +- renovate.json | 6 +- 62 files changed, 615 insertions(+), 648 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/1-ajouter-ou-demander-du-nouveau-contenu.yml b/.github/ISSUE_TEMPLATE/1-ajouter-ou-demander-du-nouveau-contenu.yml index 8cb5489..f62fed7 100644 --- a/.github/ISSUE_TEMPLATE/1-ajouter-ou-demander-du-nouveau-contenu.yml +++ b/.github/ISSUE_TEMPLATE/1-ajouter-ou-demander-du-nouveau-contenu.yml @@ -7,11 +7,11 @@ body: attributes: label: Description description: | - Posez une question ou proposez des modifications de la documentation. - Détaillez votre besoin ou votre idée au maximum, notamment où vous verriez ces changements dans l'arborescence de la documentation. + Posez une question ou proposez des modifications de la documentation. + Détaillez votre besoin ou votre idée au maximum, notamment où vous verriez ces changements dans l'arborescence de la documentation. - Les ajouts ou modifications peuvent être : - * des compléments sur des pages de documentation existante - * des nouveaux contenus + Les ajouts ou modifications peuvent être : + * des compléments sur des pages de documentation existante + * des nouveaux contenus validations: - required: true \ No newline at end of file + required: true diff --git a/.github/ISSUE_TEMPLATE/2-signaler-une-erreur-ou-une-anomalie.yml b/.github/ISSUE_TEMPLATE/2-signaler-une-erreur-ou-une-anomalie.yml index 4962eef..746f3d5 100644 --- a/.github/ISSUE_TEMPLATE/2-signaler-une-erreur-ou-une-anomalie.yml +++ b/.github/ISSUE_TEMPLATE/2-signaler-une-erreur-ou-une-anomalie.yml @@ -2,45 +2,45 @@ name: 🐛 Signaler une erreur ou une anomalie description: Si vous avez repéré une erreur, une inexactitude ou si un contenu du site ne s'affiche pas convenablement labels: [bug] body: - - type: textarea - id: description - attributes: - label: Description - description: | - Une description claire et concise de l'anomalie rencontrée. - Ajoutez des copies d'écran si cela peut aider à expliquer le problème (consigne valable pour tous les champs). - validations: - required: true - - type: textarea - id: expected-behaviour - attributes: - label: Comportement attendu - description: Une description claire et concise du comportement que vous vous attendiez à rencontrer. - validations: - required: true - - type: textarea - id: how-to-reproduce - attributes: - label: Comment reproduire l'anomalie - description: | - Dans quelles conditions se produit l'anomalie : sur un ordinateur de bureau ou sur mobile ? Avec quel système d'exploitation ? Quel navigateur et version ou quel client REST ? - Décrivez les étapes pour reproduire le comportement : - 1. Se rendre sur ... - 2. Cliquer sur ... - 3. Scroller jusqu'à ... - 4. Constater l'erreur ... - validations: - required: false - - type: textarea - id: possible-solution - attributes: - label: Solution possible - description: | - Optionnel : seulement si vous avez des suggestions pour corriger cette anomalie. - N'hésitez pas à créer une Pull Request pour avoir un retour plus direct. - - type: textarea - id: additional-context - attributes: - label: Complément de contexte - description: | - Optionnel : Ajoutez toute information qui vous semblerait utile pour nous aider à cerner cette anomalie. \ No newline at end of file + - type: textarea + id: description + attributes: + label: Description + description: | + Une description claire et concise de l'anomalie rencontrée. + Ajoutez des copies d'écran si cela peut aider à expliquer le problème (consigne valable pour tous les champs). + validations: + required: true + - type: textarea + id: expected-behaviour + attributes: + label: Comportement attendu + description: Une description claire et concise du comportement que vous vous attendiez à rencontrer. + validations: + required: true + - type: textarea + id: how-to-reproduce + attributes: + label: Comment reproduire l'anomalie + description: | + Dans quelles conditions se produit l'anomalie : sur un ordinateur de bureau ou sur mobile ? Avec quel système d'exploitation ? Quel navigateur et version ou quel client REST ? + Décrivez les étapes pour reproduire le comportement : + 1. Se rendre sur ... + 2. Cliquer sur ... + 3. Scroller jusqu'à ... + 4. Constater l'erreur ... + validations: + required: false + - type: textarea + id: possible-solution + attributes: + label: Solution possible + description: | + Optionnel : seulement si vous avez des suggestions pour corriger cette anomalie. + N'hésitez pas à créer une Pull Request pour avoir un retour plus direct. + - type: textarea + id: additional-context + attributes: + label: Complément de contexte + description: | + Optionnel : Ajoutez toute information qui vous semblerait utile pour nous aider à cerner cette anomalie. diff --git a/.github/ISSUE_TEMPLATE/3-demander-une-evolution.yml b/.github/ISSUE_TEMPLATE/3-demander-une-evolution.yml index b6fe5b2..7e16c02 100644 --- a/.github/ISSUE_TEMPLATE/3-demander-une-evolution.yml +++ b/.github/ISSUE_TEMPLATE/3-demander-une-evolution.yml @@ -2,28 +2,28 @@ name: 🚀 Demander une évolution description: Vous souhaiteriez intégrer un nouveau type de contenu que les templates ne permettent pas encore d'intégrer labels: [enhancement] body: - - type: textarea - id: need-description - attributes: - label: Le besoin que vous rencontrez - description: | - Décrivez de façon claire et concise à quel besoin vous êtes confronté. - validations: - required: true - - type: textarea - id: possible-solution - attributes: - label: La solution que vous aimeriez - description: | - Décrivez précisément comment vous aimeriez que l'application ou la nouvelle fonctionnalité se comporte pour répondre à votre besoin. - - type: textarea - id: alternatives - attributes: - label: Les alternatives que vous avez considéré - description: Décrivez si possible les solutions alternatives que vous avez envisagé. Cela peut-être d'autres outils ou l'utilisation d'une fonctionnalité différente pour contourner le problème. - - type: textarea - id: additional-context - attributes: - label: Autres éléments de contexte - description: | - N'hésitez pas à ajouter tout élément de contexte qui vous semble utile pour aider l'équipe à mieux comprendre votre demande : copie d'écran, jeux de données... \ No newline at end of file + - type: textarea + id: need-description + attributes: + label: Le besoin que vous rencontrez + description: | + Décrivez de façon claire et concise à quel besoin vous êtes confronté. + validations: + required: true + - type: textarea + id: possible-solution + attributes: + label: La solution que vous aimeriez + description: | + Décrivez précisément comment vous aimeriez que l'application ou la nouvelle fonctionnalité se comporte pour répondre à votre besoin. + - type: textarea + id: alternatives + attributes: + label: Les alternatives que vous avez considéré + description: Décrivez si possible les solutions alternatives que vous avez envisagé. Cela peut-être d'autres outils ou l'utilisation d'une fonctionnalité différente pour contourner le problème. + - type: textarea + id: additional-context + attributes: + label: Autres éléments de contexte + description: | + N'hésitez pas à ajouter tout élément de contexte qui vous semble utile pour aider l'équipe à mieux comprendre votre demande : copie d'écran, jeux de données... diff --git a/.github/workflows/11ty.yml b/.github/workflows/11ty.yml index b6e34a7..8d69204 100644 --- a/.github/workflows/11ty.yml +++ b/.github/workflows/11ty.yml @@ -2,55 +2,55 @@ name: Deploy Eleventy with GitHub Pages dependencies preinstalled on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] + # Runs on pushes targeting the default branch + push: + branches: ["main"] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages permissions: - contents: read - pages: write - id-token: write + contents: read + pages: write + id-token: write # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. concurrency: - group: "pages" - cancel-in-progress: false + group: "pages" + cancel-in-progress: false jobs: - build: - name: Generate a static build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - name: Setup Pages - uses: actions/configure-pages@v4 - - name: Build with Eleventy - run: | - npm install - npm run build-ghpages - - name: Index site for pagefind - run: npm run postbuild - - name: fr fallback homepage - run: "cp _site/fr/index.html _site/index.html" - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 + build: + name: Generate a static build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + - name: Setup Pages + uses: actions/configure-pages@v4 + - name: Build with Eleventy + run: | + npm install + npm run build-ghpages + - name: Index site for pagefind + run: npm run postbuild + - name: fr fallback homepage + run: "cp _site/fr/index.html _site/index.html" + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 - deploy-ghpages: - name: Deploy to github pages - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 + deploy-ghpages: + name: Deploy to github pages + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/docker-build-publish.yml b/.github/workflows/docker-build-publish.yml index f9f9e10..d4f4b3f 100644 --- a/.github/workflows/docker-build-publish.yml +++ b/.github/workflows/docker-build-publish.yml @@ -1,62 +1,62 @@ name: Docker build & publish on: - push: - # Publish semver tags as releases. - tags: ["v*.*.*"] + push: + # Publish semver tags as releases. + tags: ["v*.*.*"] env: - # Use docker.io for Docker Hub if empty - REGISTRY: ghcr.io - # github.repository as / - IMAGE_NAME: ${{ github.repository }} - BRANCH_NAME: ${{ github.head_ref || github.ref_name }} + # Use docker.io for Docker Hub if empty + REGISTRY: ghcr.io + # github.repository as / + IMAGE_NAME: ${{ github.repository }} + BRANCH_NAME: ${{ github.head_ref || github.ref_name }} jobs: - deploy-ghcr: - name: Deploy to ghcr - runs-on: ubuntu-latest - permissions: - contents: read - packages: write - - steps: - - name: Checkout repository - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup Docker buildx - uses: docker/setup-buildx-action@v3 - - # Login against a Docker registry - # https://github.com/docker/login-action - - name: Log into registry ${{ env.REGISTRY }} - uses: docker/login-action@v3 - with: - registry: ${{ env.REGISTRY }} - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - # Extract metadata (tags, labels) for Docker - # https://github.com/docker/metadata-action - - name: Extract Docker metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} - - # Build and push Docker image with Buildx - # https://github.com/docker/build-push-action - - name: Build and push Docker image to ghcr - id: build-and-push - uses: docker/build-push-action@v5 - with: - context: . - file: .docker/Dockerfile - pull: true - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - cache-from: type=gha - cache-to: type=gha,mode=max + deploy-ghcr: + name: Deploy to ghcr + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Setup Docker buildx + uses: docker/setup-buildx-action@v3 + + # Login against a Docker registry + # https://github.com/docker/login-action + - name: Log into registry ${{ env.REGISTRY }} + uses: docker/login-action@v3 + with: + registry: ${{ env.REGISTRY }} + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + # Extract metadata (tags, labels) for Docker + # https://github.com/docker/metadata-action + - name: Extract Docker metadata + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }} + + # Build and push Docker image with Buildx + # https://github.com/docker/build-push-action + - name: Build and push Docker image to ghcr + id: build-and-push + uses: docker/build-push-action@v5 + with: + context: . + file: .docker/Dockerfile + pull: true + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max diff --git a/LICENSES/LICENSE.Etalab-2.0.md b/LICENSES/LICENSE.Etalab-2.0.md index e067e18..a14e421 100644 --- a/LICENSES/LICENSE.Etalab-2.0.md +++ b/LICENSES/LICENSE.Etalab-2.0.md @@ -1,8 +1,8 @@ # LICENCE OUVERTE 2.0/OPEN LICENCE 2.0 -## Réutilisation de l’« Information » sous cette licence +## Réutilisation de l’« Information » sous cette licence -Le « Concédant » concède au « Réutilisateur » un droit non exclusif et gratuit de libre « Réutilisation » de l’« Information » objet de la présente licence, à des fins commerciales ou non, dans le monde entier et pour une durée illimitée, dans les conditions exprimées ci-dessous. +Le « Concédant » concède au « Réutilisateur » un droit non exclusif et gratuit de libre « Réutilisation » de l’« Information » objet de la présente licence, à des fins commerciales ou non, dans le monde entier et pour une durée illimitée, dans les conditions exprimées ci-dessous. **Le « Réutilisateur » est libre de réutiliser l’« Information » :** @@ -12,7 +12,7 @@ Le « Concédant » concède au « Réutilisateur » un droit non exclusif et gr **Sous réserve de :** -- mentionner la paternité de l’«Information» : sa source (a minima le nom du « Concédant ») et la date de la dernière mise à jour de l’« Information » réutilisée. +- mentionner la paternité de l’«Information» : sa source (a minima le nom du « Concédant ») et la date de la dernière mise à jour de l’« Information » réutilisée. Le « Réutilisateur » peut notamment s’ acquitter de cette condition en indiquant l’adresse (URL) renvoyant vers « l’Information » et assurant une mention effective de sa paternité. @@ -28,9 +28,9 @@ L’« Information » mise à disposition peut contenir des « Données à carac ## Droits de propriété intellectuelle -Il est garanti au « Réutilisateur » que l’ « Information » ne contient pas de « Droits de propriété intellectuelle » appartenant à des tiers qui pourraient faire obstacle aux libertés qui lui sont accordées par la présente licence. +Il est garanti au « Réutilisateur » que l’ « Information » ne contient pas de « Droits de propriété intellectuelle » appartenant à des tiers qui pourraient faire obstacle aux libertés qui lui sont accordées par la présente licence. -Les éventuels « Droits de propriété intellectuelle » détenus par le « Concédant » sur l’ « Information » ne font pas obstacle aux libertés qui sont accordées par la présente licence. Lorsque le « Concédant » détient des « Droits de propriété intellectuelle » » sur l’ « Information », il les cède au « Réutilisateur » de façon non exclusive, à titre gracieux, pour le monde entier, pour toute la durée des « Droits de propriété intellectuelle », et le « Réutilisateur » peut en faire tout usage conformément aux libertés et aux conditions définies par la présente licence. +Les éventuels « Droits de propriété intellectuelle » détenus par le « Concédant » sur l’ « Information » ne font pas obstacle aux libertés qui sont accordées par la présente licence. Lorsque le « Concédant » détient des « Droits de propriété intellectuelle » » sur l’ « Information », il les cède au « Réutilisateur » de façon non exclusive, à titre gracieux, pour le monde entier, pour toute la durée des « Droits de propriété intellectuelle », et le « Réutilisateur » peut en faire tout usage conformément aux libertés et aux conditions définies par la présente licence. ## Responsabilité @@ -57,9 +57,9 @@ Sont considérés, au sens de la présente licence comme : - toute information publique figurant dans des documents communiqués ou publiés par une administration mentionnée au premier alinéa de l’article L.300-2 du CRPA ; - toute information mise à disposition par toute personne selon les termes et conditions de la présente licence. - La « **Réutilisation** » : l’utilisation de l’« Information » à d’autres fins que celles pour lesquelles elle a été produite ou reçue. -- Le « **Réutilisateur** » : toute personne qui réutilise les « Informations » conformément aux conditions de la présente licence. +- Le « **Réutilisateur** » : toute personne qui réutilise les « Informations » conformément aux conditions de la présente licence. - Des « **Données à caractère personnel** » : toute information se rapportant à une personne physique identifiée ou identifiable, pouvant être identifiée directement ou indirectement. Leur « Réutilisation » est subordonnée au respect du cadre juridique en vigueur. -- Une « **Information dérivée** » : toute nouvelle donnée ou information créées directement à partir de l’« Information » ou à partir d’une combinaison de l’ « Information » et d’autres données ou informations non soumises à cette licence. +- Une « **Information dérivée** » : toute nouvelle donnée ou information créées directement à partir de l’« Information » ou à partir d’une combinaison de l’ « Information » et d’autres données ou informations non soumises à cette licence. - Les « **Droits de propriété intellectuelle** » : tous droits identifiés comme tels par le Code de la propriété intellectuelle (droit d’auteur, droits voisins au droit d’auteur, droit sui generis des producteurs de bases de données). ## À propos de cette licence diff --git a/README.md b/README.md index c90d711..6632750 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,6 @@ Il est construit sur la base de [codegouvfr/eleventy-dsfr](https://github.com/co [Documentation développeur](docs/developpeur.md) - ## Ajout de contenu [Documentation rédacteur](docs/redacteur.md) diff --git a/_data/data.js b/_data/data.js index 7aadfbf..60a6e50 100644 --- a/_data/data.js +++ b/_data/data.js @@ -1,3 +1,3 @@ module.exports = { - footer_content_description: `Cartes.gouv.fr est développé par l’Institut national de l’information géographique et forestière (IGN) et ses partenaires. Le site s’appuie sur la Géoplateforme, la nouvelle infrastructure publique, ouverte et collaborative des données géographiques.` -} \ No newline at end of file + footer_content_description: `Cartes.gouv.fr est développé par l’Institut national de l’information géographique et forestière (IGN) et ses partenaires. Le site s’appuie sur la Géoplateforme, la nouvelle infrastructure publique, ouverte et collaborative des données géographiques.`, +}; diff --git a/_data/i18n/index.js b/_data/i18n/index.js index fa820a0..f7517a8 100644 --- a/_data/i18n/index.js +++ b/_data/i18n/index.js @@ -1,12 +1,12 @@ -const {readdirSync} = require('fs'); +const { readdirSync } = require("fs"); -const langDirectories = readdirSync(__dirname, {withFileTypes: true}) - .filter(dirent => dirent.isDirectory()) - .map(dirent => dirent.name); +const langDirectories = readdirSync(__dirname, { withFileTypes: true }) + .filter((dirent) => dirent.isDirectory()) + .map((dirent) => dirent.name); const buildTranslations = () => { const translations = {}; - langDirectories.forEach(lang => { + langDirectories.forEach((lang) => { const langTranslations = require(`./${lang}`); for (const key in langTranslations) { if (!(key in translations)) { @@ -16,9 +16,9 @@ const buildTranslations = () => { } }); return translations; -} +}; module.exports = { availableLang: langDirectories, - translations: buildTranslations() + translations: buildTranslations(), }; diff --git a/_data/metadata.js b/_data/metadata.js index 148d444..b4662eb 100644 --- a/_data/metadata.js +++ b/_data/metadata.js @@ -6,8 +6,8 @@ module.exports = { { url: "", title: "", - description: "" - } + description: "", + }, ], facebook_url: "", mastodon_url: "", @@ -24,7 +24,7 @@ module.exports = { author: { name: "IGN", email: "geoplateforme@ign.fr", - url: "https://url_du_service.gouv.fr/" + url: "https://url_du_service.gouv.fr/", }, - service: "Institut National de l'Information Géographique et Forestière (IGN)" -} + service: "Institut National de l'Information Géographique et Forestière (IGN)", +}; diff --git a/compose.yml b/compose.yml index 9014914..e671e86 100644 --- a/compose.yml +++ b/compose.yml @@ -1,19 +1,19 @@ version: "3.8" services: - site: - image: ignf/cartes.gouv.fr-documentation - build: - context: . - dockerfile: ".docker/Dockerfile" - args: - - HTTP_PROXY - - HTTPS_PROXY - ports: - - 8082:8082 - environment: - - HTTP_PROXY=${HTTP_PROXY} - - HTTPS_PROXY=${HTTPS_PROXY} - - http_proxy=${HTTP_PROXY} - - https_proxy=${HTTPS_PROXY} - restart: unless-stopped + site: + image: ignf/cartes.gouv.fr-documentation + build: + context: . + dockerfile: ".docker/Dockerfile" + args: + - HTTP_PROXY + - HTTPS_PROXY + ports: + - 8082:8082 + environment: + - HTTP_PROXY=${HTTP_PROXY} + - HTTPS_PROXY=${HTTPS_PROXY} + - http_proxy=${HTTP_PROXY} + - https_proxy=${HTTPS_PROXY} + restart: unless-stopped diff --git a/content/calendar/calendar.11tydata.js b/content/calendar/calendar.11tydata.js index b246adc..26bbb20 100644 --- a/content/calendar/calendar.11tydata.js +++ b/content/calendar/calendar.11tydata.js @@ -1,3 +1,3 @@ module.exports = { - eleventyExcludeFromCollections: true -} + eleventyExcludeFromCollections: true, +}; diff --git a/content/en/about/index.md b/content/en/about/index.md index f3b7aa6..a6aff90 100644 --- a/content/en/about/index.md +++ b/content/en/about/index.md @@ -2,8 +2,8 @@ title: About layout: layouts/page.njk eleventyNavigation: - key: About - order: 3 + key: About + order: 3 --- We are the mission logiciels libres. diff --git a/content/en/en.11tydata.js b/content/en/en.11tydata.js index 695d040..24388d2 100644 --- a/content/en/en.11tydata.js +++ b/content/en/en.11tydata.js @@ -1,3 +1,3 @@ module.exports = { - lang: 'en', -}; \ No newline at end of file + lang: "en", +}; diff --git a/content/feed/feed.11tydata.js b/content/feed/feed.11tydata.js index b246adc..26bbb20 100644 --- a/content/feed/feed.11tydata.js +++ b/content/feed/feed.11tydata.js @@ -1,3 +1,3 @@ module.exports = { - eleventyExcludeFromCollections: true -} + eleventyExcludeFromCollections: true, +}; diff --git a/content/fr/about.md b/content/fr/about.md index ee77cb6..e0cf22d 100644 --- a/content/fr/about.md +++ b/content/fr/about.md @@ -1,6 +1,6 @@ --- eleventyNavigation: - key: À propos - order: 3 + key: À propos + order: 3 permalink: false ---- \ No newline at end of file +--- diff --git a/content/fr/about/index.md b/content/fr/about/index.md index 72e4336..dc80f19 100644 --- a/content/fr/about/index.md +++ b/content/fr/about/index.md @@ -2,10 +2,10 @@ title: À propos layout: layouts/page.njk eleventyNavigation: - key: Présentation - parent: À propos - order: 1 + key: Présentation + parent: À propos + order: 1 slugOverride: a propos --- -Nous sommes la mission logiciels libres. \ No newline at end of file +Nous sommes la mission logiciels libres. diff --git a/content/fr/accessibility/index.md b/content/fr/accessibility/index.md index 473ae2c..e4ecbb1 100644 --- a/content/fr/accessibility/index.md +++ b/content/fr/accessibility/index.md @@ -9,8 +9,8 @@ showBreadcrumb: true Dans l’attente de l’audit de conformité Référentiel général d'amélioration de l'accessibilité (RGAA), vous pouvez nous aider à améliorer l’accessibilité du site documentation.cartes.gouv.fr en nous signalant les problèmes éventuels que vous rencontrez : - * Envoyer un message par le biais du [formulaire de contact en ligne de cartes.gouv.fr](https://cartes.gouv.fr/nous-ecrire) - * ou contacter l’IGN par courrier ou par téléphone : +- Envoyer un message par le biais du [formulaire de contact en ligne de cartes.gouv.fr](https://cartes.gouv.fr/nous-ecrire) +- ou contacter l’IGN par courrier ou par téléphone :
       Institut national de l’information géographique et forestière
       73 avenue de Paris
@@ -22,11 +22,11 @@ Dans le cas où vous constateriez un défaut d’accessibilité vous empêchant
 vous nous l’auriez signalé sans obtenir une réponse satisfaisante de notre part, vous êtes en droit de faire parvenir vos doléances ou
 demande de saisine au Défenseur des droits. Vous avez la possibilité de :
 
-  * Envoyer un message au Défenseur des droits : [https://formulaire.defenseurdesdroits.fr/](https://formulaire.defenseurdesdroits.fr/){target=_blank rel="noopener external" title="Saisir le Défenseur des droits - ouvre une nouvelle fenêtre"}
-  * Contacter le délégué du Défenseur des droits dans votre région : [https://www.defenseurdesdroits.fr/saisir/delegues](https://www.defenseurdesdroits.fr/saisir/delegues){target=_blank rel="noopener external" title="Trouver un déléqué du Défenseur des droits - ouvre une nouvelle fenêtre"}
-  * Envoyer un courrier par la poste (gratuit, ne pas mettre de timbre) :
+-   Envoyer un message au Défenseur des droits : [https://formulaire.defenseurdesdroits.fr/](https://formulaire.defenseurdesdroits.fr/){target=\_blank rel="noopener external" title="Saisir le Défenseur des droits - ouvre une nouvelle fenêtre"}
+-   Contacter le délégué du Défenseur des droits dans votre région : [https://www.defenseurdesdroits.fr/saisir/delegues](https://www.defenseurdesdroits.fr/saisir/delegues){target=\_blank rel="noopener external" title="Trouver un déléqué du Défenseur des droits - ouvre une nouvelle fenêtre"}
+-   Envoyer un courrier par la poste (gratuit, ne pas mettre de timbre) :
     
       Défenseur des droits
       Libre réponse 71120
       75342 Paris CEDEX 07
-    
\ No newline at end of file +
diff --git a/content/fr/blog/posts/accordeon.md b/content/fr/blog/posts/accordeon.md index 9437ad3..d7c69db 100644 --- a/content/fr/blog/posts/accordeon.md +++ b/content/fr/blog/posts/accordeon.md @@ -3,9 +3,10 @@ title: Accordéon description: Comment intégrer un accordéon dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Utilisation @@ -62,8 +63,8 @@ Groupe d'accordéons créé en Markdown : Contenu MD -* one -* two +- one +- two ??? @@ -92,4 +93,4 @@ Lorem [...] elit ut.
-[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/accordeon){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/accordeon){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/alerte.md b/content/fr/blog/posts/alerte.md index fcfc996..3fd96f0 100644 --- a/content/fr/blog/posts/alerte.md +++ b/content/fr/blog/posts/alerte.md @@ -3,8 +3,8 @@ title: Alerte description: Comment intégrer une alerte dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- Ce composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. diff --git a/content/fr/blog/posts/blog-post.md b/content/fr/blog/posts/blog-post.md index 9ce1ea1..a334670 100644 --- a/content/fr/blog/posts/blog-post.md +++ b/content/fr/blog/posts/blog-post.md @@ -3,16 +3,17 @@ title: Mise en page d'un article description: Caractéristiques de la mise en page d'un article de blog. date: git Last Modified tags: - - layout - - contenu + - layout + - contenu --- + La mise en page [`post.njk`](https://github.com/codegouvfr/eleventy-dsfr/tree/main/_includes/layouts/post.njk) utilisée pour les articles de blog, permet l'ajout d'une bannière en haut, via la variable `image` du cartouche : ```markdown --- image: - path: ./possum.png - alt: A possum + path: ./possum.png + alt: A possum --- ``` @@ -24,4 +25,4 @@ Le fil d'Ariane peut être affiché automatiquement si la variable `showBreadcru --- showBreadcrumb: true --- -``` \ No newline at end of file +``` diff --git a/content/fr/blog/posts/carte.md b/content/fr/blog/posts/carte.md index 6509c56..b966002 100644 --- a/content/fr/blog/posts/carte.md +++ b/content/fr/blog/posts/carte.md @@ -3,9 +3,10 @@ title: Carte description: Comment intégrer une carte dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Exemple d'utilisation @@ -33,20 +34,20 @@ Le format complet de l'objet en paramètre est le suivant : ```json { - "url": "string", - "externalUrl": "string", - "urlDescription": "string", - "title": "string", - "description": "string", - "tags": "string[]", - "date | detail": "Date | string", - "detailEnd": "string", - "badges": "string[]", - "image": { - "src | path": "string", - "alt": "string" - }, - "addClass": "string" + "url": "string", + "externalUrl": "string", + "urlDescription": "string", + "title": "string", + "description": "string", + "tags": "string[]", + "date | detail": "Date | string", + "detailEnd": "string", + "badges": "string[]", + "image": { + "src | path": "string", + "alt": "string" + }, + "addClass": "string" } ``` @@ -61,6 +62,7 @@ Si `card.externalUrl` est utilisé, `card.url` doit être `false`. `card.urlDesc ## Rendu {% from "components/component.njk" import component with context %} +
{{ component("card", { url: "/", diff --git a/content/fr/blog/posts/citation.md b/content/fr/blog/posts/citation.md index 5d3961c..7803dd2 100644 --- a/content/fr/blog/posts/citation.md +++ b/content/fr/blog/posts/citation.md @@ -3,9 +3,10 @@ title: Citation description: Comment intégrer une citation dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Utilisation @@ -52,4 +53,4 @@ Le chemin de l'image (optionnelle) est celui dans le site.
-[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/citation){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/citation){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/download.md b/content/fr/blog/posts/download.md index f1d8e29..e0c39d4 100644 --- a/content/fr/blog/posts/download.md +++ b/content/fr/blog/posts/download.md @@ -3,9 +3,10 @@ title: Téléchargement de fichier description: Comment intégrer un lien de téléchargement de fichier dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Exemples d'utilisation @@ -67,6 +68,7 @@ Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown ` ### Carte {% from "components/component.njk" import component with context %} +
{{ component("download", { type: "card", @@ -82,6 +84,7 @@ Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown ` ### Tuile {% from "components/component.njk" import component with context %} +
{{ component("download", { type: "tile", diff --git a/content/fr/blog/posts/evenement.md b/content/fr/blog/posts/evenement.md index 4011463..290a65c 100644 --- a/content/fr/blog/posts/evenement.md +++ b/content/fr/blog/posts/evenement.md @@ -3,10 +3,11 @@ title: Événement exemple description: Comment ajouter un événement au calendrier ? date: git Last Modified tags: - - events - - fonctionnalité + - events + - fonctionnalité start: 2023-09-10 --- + Voici un exemple d'événement qui sera ajouté au calendrier global accessible à l'adresse [/calendar.ics](/calendar.ics), et dont on peut télécharger l'événement de calendrier correspondant à l'adresse [/calendar/evenement-exemple-2023-09-10.ics](/calendar/evenement-exemple-2023-09-10.ics). Ce calendrier est généré via le plugin `eleventy-plugin-calendar`. @@ -20,6 +21,7 @@ Ce calendrier est généré via le plugin `eleventy-plugin-calendar`. {% include "components/add_to_calendar.njk" %} {% endraw %} ``` + ## Rendu du composant bouton `add_to_calendar`

diff --git a/content/fr/blog/posts/fil-d-ariane.md b/content/fr/blog/posts/fil-d-ariane.md index 7382a9f..1f6d560 100644 --- a/content/fr/blog/posts/fil-d-ariane.md +++ b/content/fr/blog/posts/fil-d-ariane.md @@ -3,9 +3,10 @@ title: Fil d'Ariane description: Comment intégrer un fil d'Ariane dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Utilisation @@ -27,14 +28,14 @@ Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown ` ### Exemple d'utilisation dans un article de blog ou une page ```yaml -{% raw %} +{ % raw % } --- segments: - url: "/blog/" - title: "Blog" showBreadcrumb: true --- -{% endraw %} +{ % endraw % } ``` [Voir aussi comment utiliser des données dans Eleventy](https://www.11ty.dev/docs/data/){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} @@ -49,4 +50,4 @@ showBreadcrumb: true }] }) }} -[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/fil-d-ariane){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/fil-d-ariane){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/i18n.md b/content/fr/blog/posts/i18n.md index f21ff0c..2fbb14e 100644 --- a/content/fr/blog/posts/i18n.md +++ b/content/fr/blog/posts/i18n.md @@ -3,7 +3,7 @@ title: Internationalisation description: Comment internationaliser son instance d'eleventy-dsfr ? date: git Last Modified tags: -- fonctionnalité + - fonctionnalité --- `eleventy-dsfr` suit les [recommandations officielles](https://www.11ty.dev/docs/i18n/) d'11ty pour l'internationalisation et utilise le [plugin officiel](https://www.11ty.dev/docs/plugins/i18n/) pour localiser les liens internes. @@ -25,7 +25,6 @@ slugOverride: a propos Par exemple, pour la page [À propos](/fr/a-propos), le fichier en français est [`content/fr/about/index.md`](https://github.com/codegouvfr/eleventy-dsfr/tree/main/content/fr/about/index.md), le fichier en anglais est [`content/en/about/index.md`](https://github.com/codegouvfr/eleventy-dsfr/tree/main/content/en/about/index.md). L'url en français est [/fr/a-propos](/fr/a-propos), l'url en anglais est [/en/about](/en/about). - ## Localisation des chaînes de caractères [Voir la documentation du plugin](https://github.com/codegouvfr/eleventy-plugin-i18n){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/md-cheatsheet.md b/content/fr/blog/posts/md-cheatsheet.md index 74c441a..260f78c 100644 --- a/content/fr/blog/posts/md-cheatsheet.md +++ b/content/fr/blog/posts/md-cheatsheet.md @@ -3,9 +3,10 @@ title: Syntaxe Markdown description: Rappel des éléments de syntaxe Markdown principaux et nouveaux éléments. date: git Last Modified tags: - - contenu - - Markdown + - contenu + - Markdown --- + La syntaxe utilisée dans les fichiers Markdown `.md` du site suit la spécification [CommonMark](https://commonmark.org/). [Voir un rappel des principaux éléments](https://commonmark.org/help/){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} @@ -25,6 +26,7 @@ Contenu **markdown** _riche_ ???? ``` + [Voir aussi](/fr/blog/accordeon/#exemple-d-utilisation-dans-un-fichier-markdown-md){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} ## L'alerte @@ -60,4 +62,4 @@ Les parents d’enfants de 11 à 14 ans n’ont aucune démarche à accomplir :
La syntaxe utilisée pour le [cartouche](https://www.11ty.dev/docs/data-frontmatter/) en début de fichier est communément le [YAML](https://learnxinyminutes.com/docs/yaml/). -Il peut contenir des données pré-définies par Eleventy ou personnalisées pour la page en cours. \ No newline at end of file +Il peut contenir des données pré-définies par Eleventy ou personnalisées pour la page en cours. diff --git a/content/fr/blog/posts/mise-en-avant.md b/content/fr/blog/posts/mise-en-avant.md index 837814c..1e71ae5 100644 --- a/content/fr/blog/posts/mise-en-avant.md +++ b/content/fr/blog/posts/mise-en-avant.md @@ -3,9 +3,10 @@ title: Mise en avant description: Comment intégrer une mise en avant dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Utilisation @@ -48,4 +49,4 @@ Contenu **Mardown** } }) }} -[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/mise-en-avant){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/mise-en-avant){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/navigation.md b/content/fr/blog/posts/navigation.md index 3227169..4a2cec8 100644 --- a/content/fr/blog/posts/navigation.md +++ b/content/fr/blog/posts/navigation.md @@ -3,7 +3,7 @@ title: Navigation description: Comment utiliser le système de navigation d'eleventy-dsfr ? date: git Last Modified tags: -- fonctionnalité + - fonctionnalité --- `eleventy-dsfr` utilise le [système de navigation d'Eleventy](https://www.11ty.dev/docs/plugins/navigation/). @@ -16,9 +16,9 @@ Par exemple, dans le fichier [`content/fr/about/index.md`](https://github.com/co ```yaml --- eleventyNavigation: - key: Présentation - parent: À propos - order: 1 + key: Présentation + parent: À propos + order: 1 --- ``` @@ -27,8 +27,8 @@ Et dans le fichier [`content/fr/about.md`](https://github.com/codegouvfr/elevent ```yaml --- eleventyNavigation: - key: À propos - order: 3 + key: À propos + order: 3 permalink: false --- ``` diff --git a/content/fr/blog/posts/pagination.md b/content/fr/blog/posts/pagination.md index cf62cc2..393beb2 100644 --- a/content/fr/blog/posts/pagination.md +++ b/content/fr/blog/posts/pagination.md @@ -3,7 +3,7 @@ title: Pagination description: Comment utiliser le système de pagination d'eleventy-dsfr ? date: git Last Modified tags: -- fonctionnalité + - fonctionnalité --- `eleventy-dsfr` utilise le [système de pagination d'Eleventy](https://www.11ty.dev/docs/pagination/), par exemple pour les articles de blog. diff --git a/content/fr/blog/posts/posts.11tydata.js b/content/fr/blog/posts/posts.11tydata.js index ac7c5d4..9ccbcc4 100644 --- a/content/fr/blog/posts/posts.11tydata.js +++ b/content/fr/blog/posts/posts.11tydata.js @@ -1,9 +1,7 @@ module.exports = { - tags: [ - "posts" - ], + tags: ["posts"], layout: "layouts/post.njk", permalink: function (data) { return `/${data.lang}/blog/${data.page.fileSlug}/`; - } + }, }; diff --git a/content/fr/blog/posts/retour-en-haut-de-page.md b/content/fr/blog/posts/retour-en-haut-de-page.md index 3b5eef3..b6f832a 100644 --- a/content/fr/blog/posts/retour-en-haut-de-page.md +++ b/content/fr/blog/posts/retour-en-haut-de-page.md @@ -3,9 +3,10 @@ title: Retour en haut de page description: Comment intégrer un lien de retour en haut dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Exemple d'utilisation @@ -24,4 +25,4 @@ Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `
-[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/retour-en-haut-de-page){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/retour-en-haut-de-page){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/schema.md b/content/fr/blog/posts/schema.md index 9752d71..9b76a78 100644 --- a/content/fr/blog/posts/schema.md +++ b/content/fr/blog/posts/schema.md @@ -4,7 +4,7 @@ description: Comment intégrer un schéma simple dans une page du site ? date: git Last Modified mermaid: true tags: - - composant + - composant --- ## Exemple d'utilisation dans un fichier `md` diff --git a/content/fr/blog/posts/tableau.md b/content/fr/blog/posts/tableau.md index 9de3405..4ce4fa7 100644 --- a/content/fr/blog/posts/tableau.md +++ b/content/fr/blog/posts/tableau.md @@ -3,9 +3,10 @@ title: Tableau description: Comment intégrer un tableau dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Exemple d'utilisation @@ -42,4 +43,4 @@ Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown ` ] }) }} -[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tableau){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tableau){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/blog/posts/tuile.md b/content/fr/blog/posts/tuile.md index 076ecd8..5014232 100644 --- a/content/fr/blog/posts/tuile.md +++ b/content/fr/blog/posts/tuile.md @@ -3,9 +3,10 @@ title: Tuile description: Comment intégrer une tuile dans une page du site ? date: git Last Modified tags: - - DSFR - - composant + - DSFR + - composant --- + Chaque composant peut être inclus dans un fichier Nunjucks `.njk` ou Markdown `.md`. ## Exemple d'utilisation @@ -26,11 +27,11 @@ Le format complet de l'objet en paramètre est le suivant : ```json { - "url": "string", - "externalUrl": "string", - "title": "string", - "description": "string", - "pictogram": "string" + "url": "string", + "externalUrl": "string", + "title": "string", + "description": "string", + "pictogram": "string" } ``` @@ -39,6 +40,7 @@ Si `tile.externalUrl` est utilisé, `tile.url` doit être `false`. ## Rendu {% from "components/component.njk" import component with context %} +

{{ component("tile", { url: "/", @@ -50,4 +52,4 @@ Si `tile.externalUrl` est utilisé, `tile.url` doit être `false`.
-[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tuile){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Voir aussi la page du composant sur le site du DSFR](https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tuile){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/contact/index.md b/content/fr/contact/index.md index b80fe19..75499e5 100644 --- a/content/fr/contact/index.md +++ b/content/fr/contact/index.md @@ -1,9 +1,9 @@ --- title: Contact eleventyNavigation: - key: Nous écrire - externalUrl: https://cartes.gouv.fr/nous-ecrire - parent: À propos - order: 3 + key: Nous écrire + externalUrl: https://cartes.gouv.fr/nous-ecrire + parent: À propos + order: 3 permalink: false ---- \ No newline at end of file +--- diff --git a/content/fr/fr.11tydata.js b/content/fr/fr.11tydata.js index 3234ee4..e748f63 100644 --- a/content/fr/fr.11tydata.js +++ b/content/fr/fr.11tydata.js @@ -1,14 +1,14 @@ module.exports = { - lang: 'fr', + lang: "fr", urls: { - api_entrepot: 'https://data.geopf.fr/api', + api_entrepot: "https://data.geopf.fr/api", private: { - wfs: 'https://data.geopf.fr/private/wfs' - } + wfs: "https://data.geopf.fr/private/wfs", + }, }, permalink: function (data) { if (data.slugOverride) { return `/${data.lang}/${this.slugify(data.slugOverride)}/`; } - } -}; \ No newline at end of file + }, +}; diff --git a/content/fr/help/index.md b/content/fr/help/index.md index 8e92346..587d476 100644 --- a/content/fr/help/index.md +++ b/content/fr/help/index.md @@ -54,4 +54,4 @@ Explorez la documentation à travers une classification par thématique. Trouvez Si vous cherchez des informations spécifiques provenant d’organismes particuliers, la classification par organisme vous offre une approche ciblée. Cette catégorisation collaborative garantit que les documents pertinents sont regroupés de manière à refléter les contributions spécifiques de divers partenaires et collaborateurs. -[Recherche par Organisme](){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} \ No newline at end of file +[Recherche par Organisme](){.fr-link .fr-fi-arrow-right-line .fr-link--icon-right} diff --git a/content/fr/legal/index.md b/content/fr/legal/index.md index 713822b..6606e9c 100644 --- a/content/fr/legal/index.md +++ b/content/fr/legal/index.md @@ -4,6 +4,7 @@ layout: layouts/page.njk slugOverride: mentions legales showBreadcrumb: true --- + # Mentions légales ## Éditeur @@ -30,4 +31,4 @@ L’utilisation des documents ou éléments du site est soumise à l’accord pr ## Liens hypertextes proposés sur documentation.cartes.gouv.fr -Les liens insérés dans les pages du site documentation.cartes.gouv.fr vers des sites tiers sont proposés à titre d’information ; le contenu des sites vers lesquels ces liens conduisent n’engage pas la responsabilité de l’éditeur. \ No newline at end of file +Les liens insérés dans les pages du site documentation.cartes.gouv.fr vers des sites tiers sont proposés à titre d’information ; le contenu des sites vers lesquels ces liens conduisent n’engage pas la responsabilité de l’éditeur. diff --git a/content/fr/personal-data/index.md b/content/fr/personal-data/index.md index f729d00..50d24b1 100644 --- a/content/fr/personal-data/index.md +++ b/content/fr/personal-data/index.md @@ -5,6 +5,7 @@ description: A compléter slugOverride: donnees personnelles showBreadcrumb: true --- + # Données personnelles Ce site ne prélève aucune donnée à caractère personnel. L’outil de mesure d’audience que nous utilisons est paramétré de façon à ce que les informations recueillies soient anonymisées. @@ -13,4 +14,4 @@ Les _cookies_ déposées sur votre ordinateur lorsque vous le consultez nous per Nous sommes ainsi en conformité avec la [réglementation de la CNIL](https://www.cnil.fr/fr/solutions-pour-les-cookies-de-mesure-daudience) et exemptés d’autorisation préalable. -[ A COMPLETER ] \ No newline at end of file +[ A COMPLETER ] diff --git a/content/fr/tutoriels/alimentation-diffusion-simple/index.md b/content/fr/tutoriels/alimentation-diffusion-simple/index.md index 58349d8..101db93 100644 --- a/content/fr/tutoriels/alimentation-diffusion-simple/index.md +++ b/content/fr/tutoriels/alimentation-diffusion-simple/index.md @@ -57,6 +57,7 @@ stateDiagram Les données de l'exemple sont deux tables, les pays et régions écologiques mondiales, au format Geopackage, téléchargeables ici : {% from "components/component.njk" import component with context %} +
{{ component("download", { type: "tile", @@ -81,7 +82,6 @@ La livraison n'a qu'un rôle temporaire, le temps que les données soient transf **Déclarer la livraison** - ```plain POST /datastores/{datastore}/uploads ``` @@ -123,30 +123,30 @@ POST /datastores/{datastore}/uploads "_id": "{upload}" } ``` + ???
- **Téléverser un fichier** Les formats de fichier vecteur gérés sont : -* Geopackage -* GeoJSON -* Shapefile -* CSV - * Si la géométrie est dans une colonne, cette dernière doit avoir comme nom `json`, `geom`, `the_geom`, `wkb` ou `wkt` - * Si la donnée est ponctuelle, les coordonnées peuvent être dans deux colonnes nommées : - * `lon`, `x`, `longitude` - * `lat`, `y`, `latitude` -* SQL. Les instructions autorisées sont les suivantes, sans préciser de nom de schéma : - * `CREATE TABLE` - * `CREATE VIEW` - * `CREATE INDEX` - * `CREATE SEQUENCE` - * `ALTER TABLE` - * `ALTER SEQUENCE` +- Geopackage +- GeoJSON +- Shapefile +- CSV + - Si la géométrie est dans une colonne, cette dernière doit avoir comme nom `json`, `geom`, `the_geom`, `wkb` ou `wkt` + - Si la donnée est ponctuelle, les coordonnées peuvent être dans deux colonnes nommées : + - `lon`, `x`, `longitude` + - `lat`, `y`, `latitude` +- SQL. Les instructions autorisées sont les suivantes, sans préciser de nom de schéma : + - `CREATE TABLE` + - `CREATE VIEW` + - `CREATE INDEX` + - `CREATE SEQUENCE` + - `ALTER TABLE` + - `ALTER SEQUENCE` ```plain POST /datastores/{datastore}/uploads/{upload}/data?path=data/monde.gpkg @@ -156,7 +156,7 @@ POST /datastores/{datastore}/uploads/{upload}/data?path=data/monde.gpkg **Corps de requête Multipart** -* file = `` +- file = `` ??? @@ -166,7 +166,6 @@ POST /datastores/{datastore}/uploads/{upload}/data?path=data/monde.gpkg Afin de vérifier que tous les fichiers ont bien été déposés et leur éventuelle arborescence : - ```plain GET /datastores/{datastore}/uploads/{upload}/tree ``` @@ -358,16 +357,12 @@ GET /datastores/{datastore}/processings/0de8c60b-9938-4be9-aa36-9026b77c3c96 "name": "Intégration de données vecteur livrées en base", "description": "Ce traitement permet de stocker dans les bases de données PostgreSQL de la plateforme des données vecteurs livrées. Les formats pris en charge sont le CSV, le Shapefile, le Geopackage et le GeoJSON. Il est également possible de préciser un autre système afin de réaliser une reprojection à l'intégration", "input_types": { - "upload": [ - "VECTOR" - ], + "upload": ["VECTOR"], "stored_data": [] }, "output_type": { "stored_data": "VECTOR-DB", - "storage": [ - "POSTGRESQL" - ] + "storage": ["POSTGRESQL"] }, "parameters": [ { @@ -391,6 +386,7 @@ GET /datastores/{datastore}/processings/0de8c60b-9938-4be9-aa36-9026b77c3c96 ] } ``` + ???
@@ -411,9 +407,7 @@ POST /datastores/{datastore}/processings/executions { "processing": "0de8c60b-9938-4be9-aa36-9026b77c3c96", "inputs": { - "upload": [ - "{upload}" - ] + "upload": ["{upload}"] }, "output": { "stored_data": { @@ -485,10 +479,10 @@ Les noms des tables et des champs sont "standardisés" lors de l'intégration en Une exécution va avoir les statuts dans l'ordre suivant : -* `CREATED` : créée mais non lancée -* `WAITING` : lancée mais pas encore pris en charge par le cluster de calcul -* `PROGRESS` : en cours d'exécution sur le cluster de calcul -* `SUCCESS` ou `FAILURE` : terminé +- `CREATED` : créée mais non lancée +- `WAITING` : lancée mais pas encore pris en charge par le cluster de calcul +- `PROGRESS` : en cours d'exécution sur le cluster de calcul +- `SUCCESS` ou `FAILURE` : terminé ```plain GET /datastores/{datastore}/processings/executions/{execution} @@ -562,9 +556,7 @@ GET /datastores/{datastore}/stored_data/{stored data} "contact": "email", "extent": { "type": "Polygon", - "coordinates": [ - - ] + "coordinates": [] }, "last_event": { "title": "Génération", @@ -588,45 +580,14 @@ GET /datastores/{datastore}/stored_data/{stored data} { "name": "ecoregions", "type": "TABLE", - "attributes": [ - "ogc_fid", - "id", - "eco_name", - "biome_name", - "realm", - "nnh", - "nnh_name", - "color", - "color_bio", - "color_nnh", - "geom" - ], - "primary_key": [ - "ogc_fid" - ] + "attributes": ["ogc_fid", "id", "eco_name", "biome_name", "realm", "nnh", "nnh_name", "color", "color_bio", "color_nnh", "geom"], + "primary_key": ["ogc_fid"] }, { "name": "pays", "type": "TABLE", - "attributes": [ - "ogc_fid", - "id", - "fips", - "iso2", - "iso3", - "un", - "name", - "area", - "pop2005", - "region", - "subregion", - "lon", - "lat", - "geom" - ], - "primary_key": [ - "ogc_fid" - ] + "attributes": ["ogc_fid", "id", "fips", "iso2", "iso3", "un", "name", "area", "pop2005", "region", "subregion", "lon", "lat", "geom"], + "primary_key": ["ogc_fid"] } ] } @@ -651,15 +612,13 @@ DELETE /datastores/{datastore}/uploads/{upload} La configuration centralise toutes les informations nécessaires à la diffusion de données sur les services. A ce moment, on va contrôler les paramètres et détecter les erreurs ou conflits potentiels : -* nom de couche déjà pris (il doit y avoir unicité sur toutes les configurations WFS de la plateforme) -* table absente de la donnée stockée +- nom de couche déjà pris (il doit y avoir unicité sur toutes les configurations WFS de la plateforme) +- table absente de la donnée stockée Dans le cas du WFS, une configuration va donner plusieurs couches finales, le `layername` défini va servir de préfixe au nom des tables. On aura dans notre exemple les couches WFS : -* `pays_ecoregions:regions_ecologiques` -* `pays_ecoregions:pays` - - +- `pays_ecoregions:regions_ecologiques` +- `pays_ecoregions:pays` ### Dépôt de fichiers statiques diff --git a/content/fr/tutoriels/controle-des-acces/diffusion/index.md b/content/fr/tutoriels/controle-des-acces/diffusion/index.md index 1a3a592..f002863 100644 --- a/content/fr/tutoriels/controle-des-acces/diffusion/index.md +++ b/content/fr/tutoriels/controle-des-acces/diffusion/index.md @@ -3,8 +3,8 @@ title: Gestion des clés description: Comment gérer ses clés d'accès aux services de diffusion date: git Last Modified tags: - - Contrôle des accès - - Diffusion + - Contrôle des accès + - Diffusion --- En tant que consommateur de données, c'est également via l'API que l'on va pouvoir configuer ses clés d'accès. Cela n'implique pas d'avoir accès à une entrepôt, ni même d'être le membre d'une communauté. @@ -21,8 +21,8 @@ L'ensemble des permissions qui m'ont été personnellement donnée ou qui ont é **Paramètres de requête** -* personal = `true` -* community = `false` +- personal = `true` +- community = `false` **Corps de réponse JSON** @@ -47,6 +47,7 @@ L'ensemble des permissions qui m'ont été personnellement donnée ou qui ont é } ] ``` + ???
@@ -54,13 +55,12 @@ En tant que bénéficiaire de cette permission personnelle, je peux la supprimer ### Récupérer ses permissions communautaires - ??? GET {{ urls.api_entrepot }}/users/me/permissions **Paramètres de requête** -* personal = `false` -* community = `true` +- personal = `false` +- community = `true` **Corps de réponse JSON** @@ -85,6 +85,7 @@ En tant que bénéficiaire de cette permission personnelle, je peux la supprimer } ] ``` + ???
@@ -119,6 +120,7 @@ Dans la suite, nous allons exploiter la permission personnelle. Il est possible } ] ``` + ???
@@ -129,9 +131,8 @@ Sans clé d'accès, il n'est pas possible de consulter le service de diffusion, ??? GET {{ urls.private.wfs }} **Paramètres de requête** - * REQUEST = `GetCapabilities` - * SERVICE = `WFS` - * VERSION = `2.0.0` +_ REQUEST = `GetCapabilities` +_ SERVICE = `WFS` \* VERSION = `2.0.0` **Corps de réponse XML** @@ -143,14 +144,15 @@ Sans clé d'accès, il n'est pas possible de consulter le service de diffusion, ``` + ???
La clé d'accès est un moyen de s'identifier lors de l'utilisation des services de diffusion. Il existe trois type d'identification : -* Le hash en paramètre de requête `api_key` ou en header `X-Key` -* Une authentification `Basic` -* Une authentification `Bearer` (jeton généré par le gestionnaire d'identité). C'est l'authentification forte, qui peut être nécessaire pour exploiter les permissions dont le champ `only_oauth` est à vrai. +- Le hash en paramètre de requête `api_key` ou en header `X-Key` +- Une authentification `Basic` +- Une authentification `Bearer` (jeton généré par le gestionnaire d'identité). C'est l'authentification forte, qui peut être nécessaire pour exploiter les permissions dont le champ `only_oauth` est à vrai. ### Créer une clé d'accès simple @@ -184,15 +186,16 @@ Nous allons ici voir un exemple de mise en place d'une clé de type HASH. "_id": "{key HASH}" } ``` + ???
Quelque soit le type de clé, il est possible de préciser des conditions d'utilisation de la clé : -* Limiter les IP pouvant l'utiliser (whitelist) -* Bloquer des IP (blacklist) -* Forcer le referer -* Forcer le user agent +- Limiter les IP pouvant l'utiliser (whitelist) +- Bloquer des IP (blacklist) +- Forcer le referer +- Forcer le user agent Il est maintenant possible [d'interroger le service]({{ urls.private.wfs }}?REQUEST=GetCapabilities&SERVICE=WFS&VERSION=2.0.0&apikey=masupercle). Cependant, aucune couche ne semble disponible, car nous n'avons pas encore donné de droit à cette clé. @@ -207,11 +210,10 @@ Les permissions ouvrent des droits a priori sur des offres, mais c'est à la cha ```json { "permission": "{permission utilisateur}", - "offerings": [ - "{offering}" - ] + "offerings": ["{offering}"] } ``` + ???
@@ -243,6 +245,7 @@ On peut connaître toutes les offres que la clé peut consommer avec l'appel sui } ] ``` + ???
@@ -252,10 +255,10 @@ On peut maintenant voir les couches correspondantes à l'offre dans les [capacit **Paramètres de requête** -* REQUEST = `GetCapabilities` -* SERVICE = `WFS` -* VERSION = `2.0.0` -* apikey = `masupercle` +- REQUEST = `GetCapabilities` +- SERVICE = `WFS` +- VERSION = `2.0.0` +- apikey = `masupercle` **Corps de réponse XML** @@ -293,6 +296,7 @@ On peut maintenant voir les couches correspondantes à l'offre dans les [capacit ``` + ???
@@ -304,7 +308,6 @@ Il est aussi possible de mettre la clé dans le header `apikey` plutôt qu'en pa Nous allons ajouter à cette clé des limites d'utilisation, un user agent particulier qui limite l'usage de la clé au client QGis. À noter que l'ajout d'un filtrage par referer ne peut être considéré comme une méthode de sécurisation forte. - ??? POST {{ urls.api_entrepot }}/users/me/keys **Corps de requête JSON** @@ -337,6 +340,7 @@ Nous allons ajouter à cette clé des limites d'utilisation, un user agent parti "_id": "{key BASIC}" } ``` + ???
@@ -374,16 +378,15 @@ Cette clé est un moyen de préciser que l'on va consommer les services de diffu "_id": "{key OAUTH}" } ``` + ???
L'affectation d'accès sur cette clé se fait exactement comme pour la première clé. - ![Clé OAUTH2 dans QGis](/img/tutoriels/controle-des-acces/diffusion/qgis_cle_oauth2.png){.fr-responsive-img} - -* URL de requête : `{{ urls.iam }}/protocol/openid-connect/auth` -* URL du jeton : `{{ urls.iam }}/protocol/openid-connect/token` -* Client ID : `qgis` -* Secret client : `{{ secrets.qgis }}` \ No newline at end of file +- URL de requête : `{{ urls.iam }}/protocol/openid-connect/auth` +- URL du jeton : `{{ urls.iam }}/protocol/openid-connect/token` +- Client ID : `qgis` +- Secret client : `{{ secrets.qgis }}` diff --git a/content/fr/tutoriels/tutoriels.11tydata.js b/content/fr/tutoriels/tutoriels.11tydata.js index 1af1429..5ca97d5 100644 --- a/content/fr/tutoriels/tutoriels.11tydata.js +++ b/content/fr/tutoriels/tutoriels.11tydata.js @@ -1,7 +1,4 @@ module.exports = { - tags: [ - "Géoplateforme", - "tutoriel" - ], - layout: "layouts/post.njk" -}; \ No newline at end of file + tags: ["Géoplateforme", "tutoriel"], + layout: "layouts/post.njk", +}; diff --git a/content/fr/utilisateur/metadata/index.md b/content/fr/utilisateur/metadata/index.md index 17d072e..5c4aadf 100644 --- a/content/fr/utilisateur/metadata/index.md +++ b/content/fr/utilisateur/metadata/index.md @@ -9,9 +9,9 @@ Ce service permet la recherche et la consultation de métadonnées de la Géopla Il s’appuie sur la norme [CSW ISO AP 2.0.2](https://www.ogc.org/standard/cat/) et propose 3 méthodes : -- **GetCapabilities** pour découvrir les capacités du service -- **GetRecords** pour lister les métadonnées -- **GetRecordByID** pour consulter une métadonnée +- **GetCapabilities** pour découvrir les capacités du service +- **GetRecords** pour lister les métadonnées +- **GetRecordByID** pour consulter une métadonnée ## GetCapabilities @@ -37,14 +37,14 @@ https://data.geopf.fr/csw?SERVICE=CSW&REQUEST=GetRecords&VERSION=2.0.2&TYPENAMES Elle utilise les variables suivantes : -* **TYPENAMES** le type de métadonnées recherché avec le choix parmi : - * `csw:Record` - * `gfc:FC_FeatureCatalogue` - * `dcat` - * `gmd:MD_Metadata` - * `mdb:MD_Metadata` -* **MAXRECORDS** le nombre maximum de résultats par page -* **STARTPOSITION** le numéro du premier résultat affiché, cet index débutant à 1 +- **TYPENAMES** le type de métadonnées recherché avec le choix parmi : + - `csw:Record` + - `gfc:FC_FeatureCatalogue` + - `dcat` + - `gmd:MD_Metadata` + - `mdb:MD_Metadata` +- **MAXRECORDS** le nombre maximum de résultats par page +- **STARTPOSITION** le numéro du premier résultat affiché, cet index débutant à 1 Par exemple, pour le `TYPENAMES` `gmd:MD_Metadata`, en affichant 50 résultats à partir du 1er résultat, l'URL sera : diff --git a/docs/developpeur.md b/docs/developpeur.md index 62630e6..81e1b8d 100644 --- a/docs/developpeur.md +++ b/docs/developpeur.md @@ -38,28 +38,31 @@ Ou exécuter un [mode de débogage](https://www.11ty.dev/docs/debugging/). ## Développement -- Modifier le fichier [`eleventy.config.js`](eleventy.config.js) pour configurer les paramètres d'Eleventy différemment. -- Ajouter des composants du DSFR dans le dossier [`_includes/components`](_includes/components) et des [mises en page](https://www.11ty.dev/docs/layouts/) dans le - dossier [`_includes/layouts`](_includes/layouts). - - Ajouter de nouveaux conteneurs markdown dans le fichier [`markdown-custom-containers.js`](markdown-custom-containers.js). +- Modifier le fichier [`eleventy.config.js`](eleventy.config.js) pour configurer les paramètres d'Eleventy différemment. +- Ajouter des composants du DSFR dans le dossier [`_includes/components`](_includes/components) et des [mises en page](https://www.11ty.dev/docs/layouts/) dans le + dossier [`_includes/layouts`](_includes/layouts). + - Ajouter de nouveaux conteneurs markdown dans le fichier [`markdown-custom-containers.js`](markdown-custom-containers.js). _[Voir aussi la documentation des composants](https://codegouvfr.github.io/eleventy-dsfr/fr/blog/tags/composant/)_ -- Ajouter des chaînes de caractères localisées dans le dossier `_data/i18n/[lang]/index.js`. - - Pour ajouter une nouvelle traduction, ajouter un dossier `[lang]` dans [`content`](content), un nouveau fichier `_data/i18n/[lang]/index.js` et l'inclure dans [`_data/i18n/index.js`](_data/i18n/index.js). -- Ajouter des styles personnalisés et des images dans le dossier [`public`](public). - - Celui-ci sera copié tel quel dans le dossier de sortie. Cela signifie que `./public/css/*` persistera dans `./_site/css/*` après la construction du livrable. -- Compléter le [README](README.md) et la [documentation](content/fr/blog/posts). 😀 +- Ajouter des chaînes de caractères localisées dans le dossier `_data/i18n/[lang]/index.js`. + - Pour ajouter une nouvelle traduction, ajouter un dossier `[lang]` dans [`content`](content), un nouveau fichier `_data/i18n/[lang]/index.js` et l'inclure dans [`_data/i18n/index.js`](_data/i18n/index.js). +- Ajouter des styles personnalisés et des images dans le dossier [`public`](public). + - Celui-ci sera copié tel quel dans le dossier de sortie. Cela signifie que `./public/css/*` persistera dans `./_site/css/*` après la construction du livrable. +- Compléter le [README](README.md) et la [documentation](content/fr/blog/posts). 😀 ## Déploiement -- Voir un [exemple de worklow de déploiement sur GitHub Pages](https://github.com/codegouvfr/eleventy-dsfr/blob/gh-pages/.github/workflows/11ty-gh-pages.yml) sur la branche `gh-pages`. +- Voir un [exemple de worklow de déploiement sur GitHub Pages](https://github.com/codegouvfr/eleventy-dsfr/blob/gh-pages/.github/workflows/11ty-gh-pages.yml) sur la branche `gh-pages`. En cas d'erreur lors du build : + ```bash Error: Get Pages site failed Error: HttpError: Not Found ``` + Essayer [cette configuration](https://stackoverflow.com/a/73967433). -- _[OPTIONNEL]_ [Configurer la redirection](https://www.11ty.dev/docs/i18n/#distinct-urls-using-implied-default-language) - de toutes les URLs des pages dont la langue est celle par défaut. \ No newline at end of file + +- _[OPTIONNEL]_ [Configurer la redirection](https://www.11ty.dev/docs/i18n/#distinct-urls-using-implied-default-language) + de toutes les URLs des pages dont la langue est celle par défaut. diff --git a/docs/redacteur.md b/docs/redacteur.md index b8bb7ba..66d284e 100644 --- a/docs/redacteur.md +++ b/docs/redacteur.md @@ -37,6 +37,7 @@ Référence : https://www.systeme-de-design.gouv.fr/elements-d-interface/composa description: "

Le contenu de l'alerte

" }) }} ``` + Si le type est omis, l'alerte sera de type `info`. Si le title est absent, il s'agira d'une alerte de petite taille, plus discrète. @@ -109,4 +110,4 @@ Référence : https://www.systeme-de-design.gouv.fr/elements-d-interface/composa Exemple : https://codegouvfr.github.io/eleventy-dsfr/fr/blog/tuile/ -Référence : https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tuile \ No newline at end of file +Référence : https://www.systeme-de-design.gouv.fr/elements-d-interface/composants/tuile diff --git a/eleventy.config.drafts.js b/eleventy.config.drafts.js index 277f83c..5e0f8d9 100644 --- a/eleventy.config.drafts.js +++ b/eleventy.config.drafts.js @@ -8,7 +8,7 @@ function eleventyComputedPermalink() { } return data.permalink; - } + }; } function eleventyComputedExcludeFromCollections() { @@ -21,18 +21,18 @@ function eleventyComputedExcludeFromCollections() { } return data.eleventyExcludeFromCollections; - } + }; } module.exports.eleventyComputedPermalink = eleventyComputedPermalink; module.exports.eleventyComputedExcludeFromCollections = eleventyComputedExcludeFromCollections; -module.exports = eleventyConfig => { +module.exports = (eleventyConfig) => { eleventyConfig.addGlobalData("eleventyComputed.permalink", eleventyComputedPermalink); eleventyConfig.addGlobalData("eleventyComputed.eleventyExcludeFromCollections", eleventyComputedExcludeFromCollections); let logged = false; - eleventyConfig.on("eleventy.before", ({runMode}) => { + eleventyConfig.on("eleventy.before", ({ runMode }) => { let text = "Excluding"; // Only show drafts in serve/watch modes if (runMode === "serve" || runMode === "watch") { @@ -47,4 +47,4 @@ module.exports = eleventyConfig => { logged = true; }); -} +}; diff --git a/eleventy.config.i18n.js b/eleventy.config.i18n.js index a41862b..cdb8f26 100644 --- a/eleventy.config.i18n.js +++ b/eleventy.config.i18n.js @@ -1,10 +1,10 @@ -const {availableLang} = require("./_data/i18n"); +const { availableLang } = require("./_data/i18n"); -module.exports = eleventyConfig => { +module.exports = (eleventyConfig) => { eleventyConfig.addFilter("filterCollectionLang", function filterCollectionLang(collection, langOverride) { const lang = langOverride || this.page.lang; - return collection.filter(entry => entry.data.lang === lang); + return collection.filter((entry) => entry.data.lang === lang); }); eleventyConfig.addGlobalData("availableLang", availableLang); -} +}; diff --git a/eleventy.config.images.js b/eleventy.config.images.js index 3ea5b60..b65b9cd 100644 --- a/eleventy.config.images.js +++ b/eleventy.config.images.js @@ -3,11 +3,11 @@ const eleventyImage = require("@11ty/eleventy-img"); // Full list of formats here: https://www.11ty.dev/docs/plugins/image/#output-formats // Warning: Avif can be resource-intensive so take care! -const getOptions = widths => { +const getOptions = (widths) => { return { widths: widths || ["auto"], formats: ["avif", "webp", "auto"], - } + }; }; const getImageAttributes = (cls, alt, sizes) => { @@ -24,9 +24,9 @@ const relativeToInputPath = (inputPath, relativeFilePath) => { let split = inputPath.split("/"); split.pop(); return path.resolve(split.join(path.sep), relativeFilePath); -} +}; -module.exports = eleventyConfig => { +module.exports = (eleventyConfig) => { // Eleventy Image shortcodes // https://www.11ty.dev/docs/plugins/image/ eleventyConfig.addAsyncShortcode("image", async function imageShortcode(src, alt, widths, sizes, cls = "") { diff --git a/eleventy.config.js b/eleventy.config.js index 74d22da..efd116b 100644 --- a/eleventy.config.js +++ b/eleventy.config.js @@ -1,5 +1,5 @@ -const {DateTime} = require("luxon"); -const {nanoid} = require ("nanoid"); +const { DateTime } = require("luxon"); +const { nanoid } = require("nanoid"); const markdownItAnchor = require("markdown-it-anchor"); const markdownItAttrs = require("markdown-it-attrs"); @@ -9,14 +9,14 @@ const pluginRss = require("@11ty/eleventy-plugin-rss"); const pluginSyntaxHighlight = require("@11ty/eleventy-plugin-syntaxhighlight"); const pluginBundle = require("@11ty/eleventy-plugin-bundle"); const pluginNavigation = require("@11ty/eleventy-navigation"); -const {EleventyHtmlBasePlugin} = require("@11ty/eleventy"); -const {EleventyI18nPlugin} = require("@11ty/eleventy"); +const { EleventyHtmlBasePlugin } = require("@11ty/eleventy"); +const { EleventyI18nPlugin } = require("@11ty/eleventy"); const i18n = require("@codegouvfr/eleventy-plugin-i18n"); const pluginCalendar = require("@codegouvfr/eleventy-plugin-calendar"); const customMarkdownContainers = require("./markdown-custom-containers"); -const {translations} = require("./_data/i18n"); +const { translations } = require("./_data/i18n"); module.exports = function (eleventyConfig) { // Copy the contents of the `public` folder to the output folder @@ -49,7 +49,7 @@ module.exports = function (eleventyConfig) { // Official plugins eleventyConfig.addPlugin(pluginRss); eleventyConfig.addPlugin(pluginSyntaxHighlight, { - preAttributes: {tabindex: 0} + preAttributes: { tabindex: 0 }, }); // Mermaid plugin overrides above syntax highlighter @@ -60,18 +60,18 @@ module.exports = function (eleventyConfig) { eleventyConfig.addPlugin(EleventyHtmlBasePlugin); eleventyConfig.addPlugin(EleventyI18nPlugin, { defaultLanguage: "fr", - errorMode: "allow-fallback" + errorMode: "allow-fallback", }); eleventyConfig.addPlugin(i18n, { translations, fallbackLocales: { - "en": "fr" - } + en: "fr", + }, }); eleventyConfig.addPlugin(pluginCalendar); // Custom collections - eleventyConfig.addCollection("allSortedByPathAsc", function(collectionApi) { + eleventyConfig.addCollection("allSortedByPathAsc", function (collectionApi) { return collectionApi.getAll().sort((a, b) => { return a.inputPath.localeCompare(b.inputPath); }); @@ -79,35 +79,35 @@ module.exports = function (eleventyConfig) { // Filters eleventyConfig.addFilter("jsDateObject", function jsDateObject(dateStr, format, zone) { - return DateTime.fromFormat(dateStr, format || "yyyy-LL-dd", {zone: zone || "utc"}).toJSDate(); + return DateTime.fromFormat(dateStr, format || "yyyy-LL-dd", { zone: zone || "utc" }).toJSDate(); }); eleventyConfig.addFilter("readableDate", function readableDate(dateObj, format, zone) { // Formatting tokens for Luxon: https://moment.github.io/luxon/#/formatting?id=table-of-tokens - return DateTime.fromJSDate(dateObj, {zone: zone || "utc"}) + return DateTime.fromJSDate(dateObj, { zone: zone || "utc" }) .setLocale(this.page.lang) .toFormat(format || "dd LLLL yyyy"); }); eleventyConfig.addFilter("htmlDateString", (dateObj) => { // dateObj input: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#valid-date-string - return DateTime.fromJSDate(dateObj, {zone: "utc"}).toFormat("yyyy-LL-dd"); + return DateTime.fromJSDate(dateObj, { zone: "utc" }).toFormat("yyyy-LL-dd"); }); eleventyConfig.addFilter("getYear", (dateObj) => { - return DateTime.fromJSDate(dateObj, {zone: "utc"}).year; + return DateTime.fromJSDate(dateObj, { zone: "utc" }).year; }); eleventyConfig.addFilter("getMonth", (dateObj) => { - return DateTime.fromJSDate(dateObj, {zone: "utc"}).month; + return DateTime.fromJSDate(dateObj, { zone: "utc" }).month; }); eleventyConfig.addFilter("getDay", (dateObj) => { - return DateTime.fromJSDate(dateObj, {zone: "utc"}).day; + return DateTime.fromJSDate(dateObj, { zone: "utc" }).day; }); eleventyConfig.addFilter("getHour", (dateObj) => { - return DateTime.fromJSDate(dateObj, {zone: "utc"}).hour; + return DateTime.fromJSDate(dateObj, { zone: "utc" }).hour; }); eleventyConfig.addFilter("getMinute", (dateObj) => { - return DateTime.fromJSDate(dateObj, {zone: "utc"}).minute; + return DateTime.fromJSDate(dateObj, { zone: "utc" }).minute; }); // Get the first `n` elements of a collection. @@ -128,26 +128,24 @@ module.exports = function (eleventyConfig) { }); // Return all the tags used in a collection - eleventyConfig.addFilter("getAllTags", collection => { + eleventyConfig.addFilter("getAllTags", (collection) => { let tagSet = new Set(); for (let item of collection) { - (item.data.tags || []).forEach(tag => tagSet.add(tag)); + (item.data.tags || []).forEach((tag) => tagSet.add(tag)); } return Array.from(tagSet); }); eleventyConfig.addFilter("filterTagList", function filterTagList(tags, addTags = []) { - return (tags || []).filter(tag => ["all", "nav", "post", "posts", "events"] - .concat(addTags) - .indexOf(tag) === -1); + return (tags || []).filter((tag) => ["all", "nav", "post", "posts", "events"].concat(addTags).indexOf(tag) === -1); }); eleventyConfig.addFilter("findBySlug", function find(collection = [], slug = "") { - return collection.find(post => post.fileSlug === slug); + return collection.find((post) => post.fileSlug === slug); }); // Customize Markdown library settings: - eleventyConfig.amendLibrary("md", mdLib => { + eleventyConfig.amendLibrary("md", (mdLib) => { mdLib.use(markdownItAnchor, { permalink: markdownItAnchor.permalink.ariaHidden({ placement: "after", @@ -156,34 +154,34 @@ module.exports = function (eleventyConfig) { ariaHidden: false, }), level: [1, 2, 3, 4], - slugify: eleventyConfig.getFilter("slugify") + slugify: eleventyConfig.getFilter("slugify"), }); }); - eleventyConfig.amendLibrary("md", mdLib => { - mdLib.renderer.rules.table_open = function(tokens, idx) { + eleventyConfig.amendLibrary("md", (mdLib) => { + mdLib.renderer.rules.table_open = function (tokens, idx) { return ''; }; }); - eleventyConfig.amendLibrary("md", mdLib => { + eleventyConfig.amendLibrary("md", (mdLib) => { mdLib.use(markdownItAttrs); }); - eleventyConfig.amendLibrary("md", mdLib => { - mdLib.use(markdownItContainer, 'callout', customMarkdownContainers.callout(mdLib)); + eleventyConfig.amendLibrary("md", (mdLib) => { + mdLib.use(markdownItContainer, "callout", customMarkdownContainers.callout(mdLib)); }); - eleventyConfig.amendLibrary("md", mdLib => { - mdLib.use(markdownItContainer, 'quote', customMarkdownContainers.quote(mdLib)); + eleventyConfig.amendLibrary("md", (mdLib) => { + mdLib.use(markdownItContainer, "quote", customMarkdownContainers.quote(mdLib)); }); - eleventyConfig.amendLibrary("md", mdLib => { - mdLib.use(markdownItContainer, 'alert', customMarkdownContainers.alert(mdLib)); + eleventyConfig.amendLibrary("md", (mdLib) => { + mdLib.use(markdownItContainer, "alert", customMarkdownContainers.alert(mdLib)); }); - eleventyConfig.amendLibrary("md", mdLib => { - mdLib.use(markdownItContainer, 'accordion', customMarkdownContainers.accordion(mdLib)); + eleventyConfig.amendLibrary("md", (mdLib) => { + mdLib.use(markdownItContainer, "accordion", customMarkdownContainers.accordion(mdLib)); }); // Automatically strip all leading or trailing whitespace @@ -208,12 +206,7 @@ module.exports = function (eleventyConfig) { return { // Control which files Eleventy will process // e.g.: *.md, *.njk, *.html, *.liquid - templateFormats: [ - "md", - "njk", - "html", - "liquid" - ], + templateFormats: ["md", "njk", "html", "liquid"], // Pre-process *.md files with: (default: `liquid`) markdownTemplateEngine: "njk", @@ -223,10 +216,10 @@ module.exports = function (eleventyConfig) { // These are all optional: dir: { - input: "content", // default: "." - includes: "../_includes", // default: "_includes" - data: "../_data", // default: "_data" - output: "_site" + input: "content", // default: "." + includes: "../_includes", // default: "_includes" + data: "../_data", // default: "_data" + output: "_site", }, // ----------------------------------------------------------------- diff --git a/eleventy.config.mermaid.js b/eleventy.config.mermaid.js index 744dd46..0466c45 100644 --- a/eleventy.config.mermaid.js +++ b/eleventy.config.mermaid.js @@ -1,4 +1,4 @@ -module.exports = eleventyConfig => { +module.exports = (eleventyConfig) => { const highlighter = eleventyConfig.markdownHighlighter; eleventyConfig.addMarkdownHighlighter((str, language) => { if (language === "mermaid") { @@ -11,4 +11,4 @@ module.exports = eleventyConfig => { }); return {}; -} \ No newline at end of file +}; diff --git a/eleventy.config.pagination.js b/eleventy.config.pagination.js index 8413159..649cd1e 100644 --- a/eleventy.config.pagination.js +++ b/eleventy.config.pagination.js @@ -1,28 +1,24 @@ const PAGE_PREFIX = "page-"; -const chunk = (arr, size) => - Array.from({length: Math.ceil(arr.length / size)}, (v, i) => - arr.slice(i * size, i * size + size) - ); +const chunk = (arr, size) => Array.from({ length: Math.ceil(arr.length / size) }, (v, i) => arr.slice(i * size, i * size + size)); const paginatedUrl = (url, pageNumber) => { if (pageNumber === 1) { return url; } const trimmedUrl = url.endsWith("/") ? url.slice(0, -1) : url; - return `${trimmedUrl}/page-${pageNumber}/` + return `${trimmedUrl}/page-${pageNumber}/`; +}; -} - -module.exports = eleventyConfig => { +module.exports = (eleventyConfig) => { eleventyConfig.addFilter("paginatedUrl", (url, pageNumber) => { return paginatedUrl(url, pageNumber); }); eleventyConfig.addFilter("buildPagination", (pagination, url) => { - const filteredHrefs = pagination.hrefs.filter(href => href.startsWith(url)); + const filteredHrefs = pagination.hrefs.filter((href) => href.startsWith(url)); const pageCount = filteredHrefs.length; - const pageNumber = filteredHrefs.findIndex(href => href === pagination.hrefs[pagination.pageNumber]); + const pageNumber = filteredHrefs.findIndex((href) => href === pagination.hrefs[pagination.pageNumber]); const currentPageNumber = pageNumber + 1; return { pageNumber: pageNumber, @@ -31,8 +27,8 @@ module.exports = eleventyConfig => { next: currentPageNumber < pageCount ? paginatedUrl(url, currentPageNumber + 1) : "", previous: currentPageNumber > 1 ? paginatedUrl(url, currentPageNumber - 1) : "", first: url, - last: pageCount > 1 ? paginatedUrl(url, pageCount) : url - } + last: pageCount > 1 ? paginatedUrl(url, pageCount) : url, + }, }; }); @@ -40,19 +36,19 @@ module.exports = eleventyConfig => { collection.sort(function (a, b) { return b.date - a.date; // sort by date - descending }); - const entryTags = collection.map(entry => entry.data.tags) - .flat(); + const entryTags = collection.map((entry) => entry.data.tags).flat(); let tagMap = []; - eleventyConfig.getFilter("filterTagList")(entryTags) + eleventyConfig + .getFilter("filterTagList")(entryTags) .filter((tag, index, tags) => tags.indexOf(tag) === index) - .forEach(tag => { - const tagEntries = collection.filter(entry => entry.data.tags.includes(tag)); - const pagedTagEntries = chunk(tagEntries, paginationSize) + .forEach((tag) => { + const tagEntries = collection.filter((entry) => entry.data.tags.includes(tag)); + const pagedTagEntries = chunk(tagEntries, paginationSize); pagedTagEntries.forEach((pagedItem, pageNumber) => { tagMap.push({ tagName: tag, pageNumber: pageNumber, - pageData: pagedTagEntries[pageNumber] + pageData: pagedTagEntries[pageNumber], }); }); }); @@ -60,4 +56,4 @@ module.exports = eleventyConfig => { }); eleventyConfig.addGlobalData("pagePrefix", PAGE_PREFIX); -} +}; diff --git a/markdown-custom-containers.js b/markdown-custom-containers.js index 92cf11a..38fed23 100644 --- a/markdown-custom-containers.js +++ b/markdown-custom-containers.js @@ -1,5 +1,5 @@ module.exports = { - callout: md => { + callout: (md) => { const re = /^callout(\s+.*)?$/; return { validate: (params) => { @@ -18,13 +18,13 @@ module.exports = { `; } else { // closing tag - return '\n'; + return "\n"; } - } - } + }, + }; }, - quote: md => { - const re = /^quote(\s+.*)?$/ + quote: (md) => { + const re = /^quote(\s+.*)?$/; let params = undefined; return { validate: (params) => { @@ -42,12 +42,15 @@ module.exports = { `; } else { // closing tag - const imageBlock = params && params[1] ? ` + const imageBlock = + params && params[1] + ? `
-
` : undefined; + ` + : undefined; return ` ${imageBlock || ""} @@ -55,10 +58,10 @@ module.exports = {
\n`; } - } - } + }, + }; }, - alert: md => { + alert: (md) => { const re = /^(info|warning|error|success)(\s+.*)?$/; return { validate: (params) => { @@ -68,12 +71,12 @@ module.exports = { render: (tokens, idx) => { const params = tokens[idx].info.trim().match(re); const type = params?.[1]; - const title = md.utils.escapeHtml(params?.[2]) || ''; + const title = md.utils.escapeHtml(params?.[2]) || ""; if (tokens[idx].nesting === 1) { - title_elem = ''; - small_class = 'fr-alert--sm'; - if (title !== '') { + title_elem = ""; + small_class = "fr-alert--sm"; + if (title !== "") { title_elem = `

${title}

`; small_class = ""; } @@ -84,12 +87,12 @@ module.exports = { `; } else { // closing tag - return '\n'; + return "\n"; } - } - } + }, + }; }, - accordion: md => { + accordion: (md) => { const re = /^(accordionsgroup|.*)?$/; return { validate: (params) => { @@ -119,13 +122,12 @@ module.exports = { if (params?.[1] === "accordionsgroup") { return ``; } else { - return '\n'; + return "\n"; } } }, - marker: "?" - } - } - -} \ No newline at end of file + marker: "?", + }; + }, +}; diff --git a/public/css/index.css b/public/css/index.css index 464569a..597c6b4 100644 --- a/public/css/index.css +++ b/public/css/index.css @@ -1,6 +1,7 @@ /* Defaults */ :root { - --font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace; + --font-family-monospace: Consolas, Menlo, Monaco, Andale Mono WT, Andale Mono, Lucida Console, Lucida Sans Typewriter, DejaVu Sans Mono, + Bitstream Vera Sans Mono, Liberation Mono, Nimbus Mono L, Courier New, Courier, monospace; --syntax-tab-size: 2; } @@ -35,7 +36,7 @@ pre[class*="language-"] { } pre:not([class*="language-"]) { - margin: .5em 0; + margin: 0.5em 0; line-height: 1.375; /* 22px /16 */ -moz-tab-size: var(--syntax-tab-size); -o-tab-size: var(--syntax-tab-size); @@ -60,7 +61,7 @@ code { text-decoration: none; font-style: normal; font-size: 1em; - margin-left: .1em; + margin-left: 0.1em; } a[href].header-anchor, @@ -152,6 +153,6 @@ pre[class*="language"] { .code-copy-btn { position: absolute; - right: .5em; - top: .5em; + right: 0.5em; + top: 0.5em; } diff --git a/public/css/prism-diff.css b/public/css/prism-diff.css index 9f7e676..16f7efd 100644 --- a/public/css/prism-diff.css +++ b/public/css/prism-diff.css @@ -3,43 +3,43 @@ */ pre[class*="language-diff-"] { - --eleventy-code-padding: 1.25em; - padding-left: var(--eleventy-code-padding); - padding-right: var(--eleventy-code-padding); + --eleventy-code-padding: 1.25em; + padding-left: var(--eleventy-code-padding); + padding-right: var(--eleventy-code-padding); } .token.deleted { - background-color: hsl(0, 51%, 37%); - color: inherit; + background-color: hsl(0, 51%, 37%); + color: inherit; } .token.inserted { - background-color: hsl(126, 31%, 39%); - color: inherit; + background-color: hsl(126, 31%, 39%); + color: inherit; } /* Make the + and - characters unselectable for copy/paste */ .token.prefix.unchanged, .token.prefix.inserted, .token.prefix.deleted { - -webkit-user-select: none; - user-select: none; - display: inline-flex; - align-items: center; - justify-content: center; - padding-top: 2px; - padding-bottom: 2px; + -webkit-user-select: none; + user-select: none; + display: inline-flex; + align-items: center; + justify-content: center; + padding-top: 2px; + padding-bottom: 2px; } .token.prefix.inserted, .token.prefix.deleted { - width: var(--eleventy-code-padding); - background-color: rgba(0,0,0,.2); + width: var(--eleventy-code-padding); + background-color: rgba(0, 0, 0, 0.2); } /* Optional: full-width background color */ .token.inserted:not(.prefix), .token.deleted:not(.prefix) { - display: block; - margin-left: calc(-1 * var(--eleventy-code-padding)); - margin-right: calc(-1 * var(--eleventy-code-padding)); - text-decoration: none; /* override del, ins, mark defaults */ - color: inherit; /* override del, ins, mark defaults */ + display: block; + margin-left: calc(-1 * var(--eleventy-code-padding)); + margin-right: calc(-1 * var(--eleventy-code-padding)); + text-decoration: none; /* override del, ins, mark defaults */ + color: inherit; /* override del, ins, mark defaults */ } diff --git a/public/js/copy.js b/public/js/copy.js index 1dd80b5..b8a7c19 100644 --- a/public/js/copy.js +++ b/public/js/copy.js @@ -4,18 +4,20 @@ (() => { const code = document.querySelectorAll('pre[class*="language"]'); - const buttonClasses = ['fr-btn', 'code-copy-btn']; - + const buttonClasses = ["fr-btn", "code-copy-btn"]; + code.forEach((pre) => { - const button = document.createElement('button'); - button.title = 'Copier'; - button.classList.add(...buttonClasses); - button.innerHTML = 'Copier'; - button.addEventListener('click', () => { - navigator.clipboard.writeText(pre.firstElementChild.textContent); - button.innerHTML = 'Copié !'; - setTimeout(() => {button.innerHTML = 'Copier';}, 1500); - }); - pre.appendChild(button); + const button = document.createElement("button"); + button.title = "Copier"; + button.classList.add(...buttonClasses); + button.innerHTML = "Copier"; + button.addEventListener("click", () => { + navigator.clipboard.writeText(pre.firstElementChild.textContent); + button.innerHTML = "Copié !"; + setTimeout(() => { + button.innerHTML = "Copier"; + }, 1500); + }); + pre.appendChild(button); }); - })(); \ No newline at end of file +})(); diff --git a/public/js/matomo.js b/public/js/matomo.js index 625f7ec..922cd83 100644 --- a/public/js/matomo.js +++ b/public/js/matomo.js @@ -1,14 +1,16 @@ -var _paq = window._paq = window._paq || []; +var _paq = (window._paq = window._paq || []); /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(["setExcludedQueryParams", ["simulationId", "_csrf"]]); -_paq.push(['trackPageView']); -_paq.push(['enableLinkTracking']); +_paq.push(["trackPageView"]); +_paq.push(["enableLinkTracking"]); (function () { var u = "https://stats.data.gouv.fr/"; - _paq.push(['setTrackerUrl', u + 'matomo.php']); - _paq.push(['setSiteId', '95']); - var d = document, g = d.createElement('script'), s = d.getElementsByTagName('script')[0]; + _paq.push(["setTrackerUrl", u + "matomo.php"]); + _paq.push(["setSiteId", "95"]); + var d = document, + g = d.createElement("script"), + s = d.getElementsByTagName("script")[0]; g.async = true; - g.src = u + 'matomo.js'; + g.src = u + "matomo.js"; s.parentNode.insertBefore(g, s); -})(); \ No newline at end of file +})(); diff --git a/public/js/mermaid.initialize.js b/public/js/mermaid.initialize.js index e86ad44..3d4c9c1 100644 --- a/public/js/mermaid.initialize.js +++ b/public/js/mermaid.initialize.js @@ -1,32 +1,32 @@ // Apply dark mode to mermaid graphs when needed. Only activated on page load. var mermaidDarkMode = false; -if(localStorage.getItem("scheme")){ - if(localStorage.getItem("scheme") == "dark"){ +if (localStorage.getItem("scheme")) { + if (localStorage.getItem("scheme") == "dark") { mermaidDarkMode = true; } -} else if(!window.matchMedia) { +} else if (!window.matchMedia) { //matchMedia method not supported, nothing to do -} else if(window.matchMedia("(prefers-color-scheme: dark)").matches) { +} else if (window.matchMedia("(prefers-color-scheme: dark)").matches) { //OS theme setting detected as dark mermaidDarkMode = true; } mermaid.initialize({ startOnLoad: true, - theme: 'base', + theme: "base", themeVariables: { - background: '#fff', + background: "#fff", darkMode: mermaidDarkMode, - fontFamily: 'Marianne,arial,sans-serif', - fontSize: '16px', - textColor: mermaidDarkMode ? '#fff' : '#000', - arrowheadColor : mermaidDarkMode ? '#fff' : '#000', - lineColor : mermaidDarkMode ? '#fff' : '#000', - noteBkgColor: '#eee', // grey-950 - primaryColor: '#6a6af4', // blue-france-main-525 - primaryTextColor: '#fff', - primaryBorderColor: '#000091', // blue-france-sun-113 - secondaryColor: mermaidDarkMode ? '#1b1b35' : '#cacafb', // blue-france-850 // - tertiaryColor: '#fff' - } -}); \ No newline at end of file + fontFamily: "Marianne,arial,sans-serif", + fontSize: "16px", + textColor: mermaidDarkMode ? "#fff" : "#000", + arrowheadColor: mermaidDarkMode ? "#fff" : "#000", + lineColor: mermaidDarkMode ? "#fff" : "#000", + noteBkgColor: "#eee", // grey-950 + primaryColor: "#6a6af4", // blue-france-main-525 + primaryTextColor: "#fff", + primaryBorderColor: "#000091", // blue-france-sun-113 + secondaryColor: mermaidDarkMode ? "#1b1b35" : "#cacafb", // blue-france-850 // + tertiaryColor: "#fff", + }, +}); diff --git a/public/js/search-results.js b/public/js/search-results.js index e248cfc..06f20c0 100644 --- a/public/js/search-results.js +++ b/public/js/search-results.js @@ -19,7 +19,7 @@ pagefind.init(); const search = await pagefind.search(searchTerm); return search.results; - } + }; const getCardHtml = (title, excerpt, url) => { return ` @@ -33,41 +33,35 @@ `; - } + }; const populateSearchResults = async (paginatedResults) => { - paginatedResults.forEach(result => { + paginatedResults.forEach((result) => { const cardCol = document.createElement("div"); cardCol.className = FULL_WIDTH_COL_CLASS; - cardCol.innerHTML = getCardHtml(result.meta.title, result.excerpt, result.url) + cardCol.innerHTML = getCardHtml(result.meta.title, result.excerpt, result.url); searchResultList.appendChild(cardCol); }); - } + }; const bottomIsReached = () => { return window.scrollY + window.innerHeight >= document.documentElement.scrollHeight; - } + }; - getSearchResults().then(async searchResults => { + getSearchResults().then(async (searchResults) => { resultCounter.innerText = searchResults.length; let start = 0; - let paginatedResults = await Promise.all(searchResults - .slice(start, start + RESULTS_PER_PAGE) - .map(r => r.data()) - ); + let paginatedResults = await Promise.all(searchResults.slice(start, start + RESULTS_PER_PAGE).map((r) => r.data())); await populateSearchResults(paginatedResults); - window.addEventListener('scroll', async () => { + window.addEventListener("scroll", async () => { if (bottomIsReached()) { start += RESULTS_PER_PAGE; - paginatedResults = await Promise.all(searchResults - .slice(start, start + RESULTS_PER_PAGE) - .map(r => r.data()) - ); + paginatedResults = await Promise.all(searchResults.slice(start, start + RESULTS_PER_PAGE).map((r) => r.data())); await populateSearchResults(paginatedResults); } - }) + }); }); })(); diff --git a/public/js/search.js b/public/js/search.js index f8f799b..377274b 100644 --- a/public/js/search.js +++ b/public/js/search.js @@ -11,7 +11,7 @@ const SEARCH_PARAM = "term"; const searchResultsUrl = new URL(SEARCH_RESULTS_URL, window.location.origin); searchResultsUrl.searchParams.append(SEARCH_PARAM, searchInput.value); window.location.href = searchResultsUrl; - } + }; searchInput.addEventListener("keydown", async (event) => { if (event.code === "Enter") { diff --git a/renovate.json b/renovate.json index 2b42fb1..d383718 100644 --- a/renovate.json +++ b/renovate.json @@ -1,6 +1,4 @@ { - "$schema": "https://docs.renovatebot.com/renovate-schema.json", - "extends": [ - "config:recommended" - ] + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended"] }