Skip to content
Snippets Groups Projects
Select Git revision
  • d9f498d4a6cc5cfb51688acd036b8a65467ee6c8
  • master default protected
  • reforme-allegement-general
  • abattement-retraite
  • temp
  • cdhr_reform
  • revert-inflateur-contrefactuel-impot
  • lint
  • test-cas-type
  • indemnite-inflation
  • 0_5_8
  • 0_5_7
  • 0_5_6
  • 0_5_5
  • 0_5_4
  • 0_5_3
  • 0_5_2
  • 0_5_1
  • 1.0.304
  • 1.0.303
  • 1.0.302
  • 1.0.301
  • 1.0.300
  • 1.0.299
  • 1.0.298
  • 1.0.297
  • 1.0.296
  • 1.0.295
  • 1.0.294
  • 1.0.293
  • 1.0.292
  • 1.0.291
  • 1.0.290
  • 1.0.289
  • 1.0.288
  • 1.0.287
  • 1.0.286
  • 1.0.285
38 results

poetry.lock

Blame
  • ArticleModal.svelte 45.15 KiB
    <script lang="ts">
      import Icon from "@iconify/svelte"
      import type {
        Reference,
        ScaleParameter,
        ValueParameter,
      } from "@openfisca/json-model"
      import {
        Dialog,
        DialogDescription,
        DialogOverlay,
        DialogTitle,
        Transition,
        TransitionChild,
      } from "@rgossiaux/svelte-headlessui"
      import { each } from "svelte/internal"
    
      import { session } from "$app/stores"
    
      export let billLegalReferences: Reference[] | undefined
      export let billParameter: ValueParameter | ScaleParameter
      export let isOpen = false
    
      const dateFormatter = new Intl.DateTimeFormat("fr-FR", {
        dateStyle: "medium",
      })
    
      $: firstLegalReference = billLegalReferences?.[0]
    
      $: articlePromise =
        !isOpen || firstLegalReference === undefined
          ? undefined
          : retrieveLegalArticle(firstLegalReference.href)
    
      function closeModal() {
        isOpen = false
      }
    
      async function retrieveLegalArticle(url: string) {
        const response = await fetch(
          new URL(`recherche?q=${decodeURIComponent(url)}`, $session.legalUrl),
          { headers: { Accept: "application/json" } },
        )
        const { articles } = await response.json()
        return articles?.[0]
      }
    </script>
    
    <Transition appear show={isOpen}>
      <Dialog
        as="div"
        class="fixed inset-0 z-20 overflow-y-auto"
        on:close={closeModal}
      >
        <div class="min-h-screen px-4 text-center">
          <TransitionChild
            enter="ease-out duration-300"
            enterFrom="opacity-0"
            enterTo="opacity-100"
            leave="ease-in duration-200"
            leaveFrom="opacity-100"
            leaveTo="opacity-0"
          >
            <DialogOverlay
              class="fixed inset-0 bg-gray-500 opacity-50 transition-opacity"
            />
          </TransitionChild>
    
          <!-- This element is to trick the browser into centering the modal contents. -->
          <span class="inline-block h-[10vh]" aria-hidden="true"> &#8203; </span>