formatting, full migration to svelte-french-toast
This commit is contained in:
		| @@ -1,7 +1,7 @@ | ||||
| <script> | ||||
|   import { _ } from "svelte-i18n"; | ||||
|   import { clickOutside } from "../base/outsideclick"; | ||||
|    | ||||
|  | ||||
|   import { | ||||
|     RunnerService, | ||||
|     RunnerTeamService, | ||||
| @@ -9,7 +9,6 @@ | ||||
|   } from "@odit/lfk-client-js"; | ||||
|   import isEmail from "validator/es/lib/isEmail"; | ||||
|   import isMobilePhone from "validator/es/lib/isMobilePhone"; | ||||
|   import Toastify from "toastify-js"; | ||||
|   import Select from "svelte-select"; | ||||
|   import { createEventDispatcher } from "svelte"; | ||||
|   const dispatch = createEventDispatcher(); | ||||
| @@ -78,10 +77,6 @@ | ||||
|   function submit() { | ||||
|     if (processed_last_submit === true) { | ||||
|       processed_last_submit = false; | ||||
|       const toast = Toastify({ | ||||
|         text: $_("runner-is-being-added"), | ||||
|         duration: -1, | ||||
|       }).showToast(); | ||||
|       let postdata = { | ||||
|         group: selected_team, | ||||
|         firstname: firstname_input_value, | ||||
| @@ -96,6 +91,7 @@ | ||||
|       if (email_input_value) { | ||||
|         postdata.email = email_input_value; | ||||
|       } | ||||
|       toast.loading($_("runner-is-being-added")); | ||||
|       RunnerService.runnerControllerPost(postdata) | ||||
|         .then((result) => { | ||||
|           firstname_input_value = ""; | ||||
| @@ -104,11 +100,8 @@ | ||||
|           email_input_value = ""; | ||||
|           modal_open = false; | ||||
|           // | ||||
|           Toastify({ | ||||
|             text: $_("runner-added"), | ||||
|             duration: 500, | ||||
|             backgroundColor: "linear-gradient(to right, #00b09b, #96c93d)", | ||||
|           }).showToast(); | ||||
|           toast.dismiss(); | ||||
|           toast.success($_("runner-added")); | ||||
|           dispatch("created", { runners: [result] }); | ||||
|         }) | ||||
|         .catch((err) => { | ||||
| @@ -116,8 +109,6 @@ | ||||
|         }) | ||||
|         .finally(() => { | ||||
|           processed_last_submit = true; | ||||
|           // | ||||
|           toast.hideToast(); | ||||
|         }); | ||||
|     } | ||||
|   } | ||||
| @@ -126,58 +117,70 @@ | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|      | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }}> | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0"> | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-20 text-center sm:block sm:p-0" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
|           class="absolute inset-0 bg-gray-500 opacity-75" | ||||
|           data-id="modal_backdrop" /> | ||||
|           data-id="modal_backdrop" | ||||
|         /> | ||||
|       </div> | ||||
|       <span | ||||
|         class="hidden sm:inline-block sm:align-middle sm:h-screen" | ||||
|         aria-hidden="true">​</span> | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline"> | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|             <div | ||||
|               class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10"> | ||||
|               class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 xmlns="http://www.w3.org/2000/svg" | ||||
|                 viewBox="0 0 24 24" | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
|                 fill="currentColor" | ||||
|                 width="24" | ||||
|                 height="24"><path fill="none" d="M0 0h24v24H0z" /> | ||||
|                 height="24" | ||||
|                 ><path fill="none" d="M0 0h24v24H0z" /> | ||||
|                 <path | ||||
|                   d="M9.83 8.79L8 9.456V13H6V8.05h.015l5.268-1.918c.244-.093.51-.14.782-.131a2.616 2.616 0 0 1 2.427 1.82c.186.583.356.977.51 1.182A4.992 4.992 0 0 0 19 11v2a6.986 6.986 0 0 1-5.402-2.547l-.581 3.297L15 15.67V23h-2v-5.986l-2.05-1.987-.947 4.298-6.894-1.215.348-1.97 4.924.868L9.83 8.79zM13.5 5.5a2 2 0 1 1 0-4 2 2 0 0 1 0 4z" /></svg> | ||||
|                   d="M9.83 8.79L8 9.456V13H6V8.05h.015l5.268-1.918c.244-.093.51-.14.782-.131a2.616 2.616 0 0 1 2.427 1.82c.186.583.356.977.51 1.182A4.992 4.992 0 0 0 19 11v2a6.986 6.986 0 0 1-5.402-2.547l-.581 3.297L15 15.67V23h-2v-5.986l-2.05-1.987-.947 4.298-6.894-1.215.348-1.97 4.924.868L9.83 8.79zM13.5 5.5a2 2 0 1 1 0-4 2 2 0 0 1 0 4z" | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_('create-a-new-runner')} | ||||
|                 {$_("create-a-new-runner")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_('please-provide-the-required-information-to-add-a-new-runner')} | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-runner" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
|                     class="block text-sm font-medium text-gray-700">{$_('first-name')}</label> | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                     >{$_("first-name")}</label | ||||
|                   > | ||||
|                   <input | ||||
|                     use:focus | ||||
|                     autocomplete="off" | ||||
|                     placeholder={$_('first-name')} | ||||
|                     placeholder={$_("first-name")} | ||||
|                     class:border-red-500={!isFirstnameValid} | ||||
|                     class:focus:border-red-500={!isFirstnameValid} | ||||
|                     class:focus:ring-red-500={!isFirstnameValid} | ||||
| @@ -185,34 +188,41 @@ | ||||
|                     bind:this={firstname_input} | ||||
|                     type="text" | ||||
|                     name="firstname" | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" | ||||
|                   /> | ||||
|                   {#if !isFirstnameValid} | ||||
|                     <span | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"> | ||||
|                       {$_('first-name-is-required')} | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1" | ||||
|                     > | ||||
|                       {$_("first-name-is-required")} | ||||
|                     </span> | ||||
|                   {/if} | ||||
|                 </div> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="trackname" | ||||
|                     class="block text-sm font-medium text-gray-700">{$_('middle-name')}</label> | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                     >{$_("middle-name")}</label | ||||
|                   > | ||||
|                   <input | ||||
|                     autocomplete="off" | ||||
|                     placeholder={$_('middle-name')} | ||||
|                     placeholder={$_("middle-name")} | ||||
|                     bind:value={middlename_input_value} | ||||
|                     bind:this={middlename_input} | ||||
|                     type="text" | ||||
|                     name="trackname" | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" | ||||
|                   /> | ||||
|                 </div> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="lastname" | ||||
|                     class="block text-sm font-medium text-gray-700">{$_('last-name')}</label> | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                     >{$_("last-name")}</label | ||||
|                   > | ||||
|                   <input | ||||
|                     autocomplete="off" | ||||
|                     placeholder={$_('last-name')} | ||||
|                     placeholder={$_("last-name")} | ||||
|                     class:border-red-500={!isLastnameValid} | ||||
|                     class:focus:border-red-500={!isLastnameValid} | ||||
|                     class:focus:ring-red-500={!isLastnameValid} | ||||
| @@ -220,41 +230,49 @@ | ||||
|                     bind:this={lastname_input} | ||||
|                     type="text" | ||||
|                     name="lastname" | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" | ||||
|                   /> | ||||
|                   {#if !isLastnameValid} | ||||
|                     <span | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"> | ||||
|                       {$_('last-name-is-required')} | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1" | ||||
|                     > | ||||
|                       {$_("last-name-is-required")} | ||||
|                     </span> | ||||
|                   {/if} | ||||
|                 </div> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="team" | ||||
|                     class="block text-sm font-medium text-gray-700">{$_('team')}</label> | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                     >{$_("team")}</label | ||||
|                   > | ||||
|                   <Select | ||||
|                     containerClasses="rounded-l-md mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" | ||||
|                     itemFilter={(label, filterText, option) => label | ||||
|                         .toLowerCase() | ||||
|                         .includes( | ||||
|                           filterText.toLowerCase() | ||||
|                         ) || option.value.id | ||||
|                     itemFilter={(label, filterText, option) => | ||||
|                       label.toLowerCase().includes(filterText.toLowerCase()) || | ||||
|                       option.value.id | ||||
|                         .toString() | ||||
|                         .startsWith(filterText.toLowerCase())} | ||||
|                     items={orgs.concat(teams)} | ||||
|                     showChevron={true} | ||||
|                     placeholder={$_('search-for-an-organization-or-team-by-name-or-id')} | ||||
|                     noOptionsMessage={$_('no-organization-or-team-found')} | ||||
|                     on:select={(selectedValue) => (selected_team = selectedValue.detail.value.id)} | ||||
|                     on:clear={() => (selected_team = null)} /> | ||||
|                     placeholder={$_( | ||||
|                       "search-for-an-organization-or-team-by-name-or-id" | ||||
|                     )} | ||||
|                     noOptionsMessage={$_("no-organization-or-team-found")} | ||||
|                     on:select={(selectedValue) => | ||||
|                       (selected_team = selectedValue.detail.value.id)} | ||||
|                     on:clear={() => (selected_team = null)} | ||||
|                   /> | ||||
|                 </div> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="phone" | ||||
|                     class="block text-sm font-medium text-gray-700">{$_('phone')}</label> | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                     >{$_("phone")}</label | ||||
|                   > | ||||
|                   <input | ||||
|                     autocomplete="off" | ||||
|                     placeholder={$_('phone')} | ||||
|                     placeholder={$_("phone")} | ||||
|                     class:border-red-500={!isPhoneValidOrEmpty} | ||||
|                     class:focus:border-red-500={!isPhoneValidOrEmpty} | ||||
|                     class:focus:ring-red-500={!isPhoneValidOrEmpty} | ||||
| @@ -262,21 +280,27 @@ | ||||
|                     bind:this={phone_input} | ||||
|                     type="tel" | ||||
|                     name="phone" | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" | ||||
|                   /> | ||||
|                   {#if !isPhoneValidOrEmpty} | ||||
|                     <span | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"> | ||||
|                       {@html $_('the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number')} | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1" | ||||
|                     > | ||||
|                       {@html $_( | ||||
|                         "the-provided-phone-number-is-invalid-less-than-br-greater-than-please-enter-a-valid-international-number" | ||||
|                       )} | ||||
|                     </span> | ||||
|                   {/if} | ||||
|                 </div> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="email" | ||||
|                     class="block text-sm font-medium text-gray-700">{$_('e-mail-adress')}</label> | ||||
|                     class="block text-sm font-medium text-gray-700" | ||||
|                     >{$_("e-mail-adress")}</label | ||||
|                   > | ||||
|                   <input | ||||
|                     autocomplete="off" | ||||
|                     placeholder={$_('e-mail-adress')} | ||||
|                     placeholder={$_("e-mail-adress")} | ||||
|                     class:border-red-500={!isEmailValidOrEmpty} | ||||
|                     class:focus:border-red-500={!isEmailValidOrEmpty} | ||||
|                     class:focus:ring-red-500={!isEmailValidOrEmpty} | ||||
| @@ -284,11 +308,13 @@ | ||||
|                     bind:this={email_input} | ||||
|                     type="email" | ||||
|                     name="email" | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" /> | ||||
|                     class="mt-1 focus:ring-indigo-500 focus:border-indigo-500 block w-full shadow-sm rounded-l-md sm:text-sm border-gray-300 border bg-gray-50 text-gray-500 rounded-md p-2" | ||||
|                   /> | ||||
|                   {#if !isEmailValidOrEmpty} | ||||
|                     <span | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1"> | ||||
|                       {$_('valid-email-is-required')} | ||||
|                       class="flex items-center font-medium tracking-wide text-red-500 text-xs mt-1 ml-1" | ||||
|                     > | ||||
|                       {$_("valid-email-is-required")} | ||||
|                     </span> | ||||
|                   {/if} | ||||
|                 </div> | ||||
| @@ -302,16 +328,18 @@ | ||||
|             class:opacity-50={!createbtnenabled} | ||||
|             on:click={submit} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm"> | ||||
|             {$_('create')} | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-blue-600 text-base font-medium text-white hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
|           <button | ||||
|             on:click={() => { | ||||
|               modal_open = false; | ||||
|             }} | ||||
|             type="button" | ||||
|             class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm"> | ||||
|             {$_('cancel')} | ||||
|             class="mt-3 w-full inline-flex justify-center rounded-md border border-gray-300 shadow-sm px-4 py-2 bg-white text-base font-medium text-gray-700 hover:bg-gray-50 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500 sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|         </div> | ||||
|       </div> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user