Compare commits
	
		
			18 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 05c2535698 | |||
| e261d5e345 | |||
| c00497d776 | |||
| 766eeab49f | |||
| 3c9b404234 | |||
| 9c56b3883e | |||
| 3d506db975 | |||
| d7e84a79a8 | |||
| 102471eaaa | |||
| 90b0fec236 | |||
| 4883e179e7 | |||
| 13c6e96292 | |||
| f547c0cc81 | |||
| fbe38eede9 | |||
| 22551c379f | |||
| a102af5a78 | |||
| e9dffcea83 | |||
| b9563d75dd | 
| @@ -1,34 +0,0 @@ | ||||
| name: Build Latest and dev images | ||||
| on: | ||||
|   push: | ||||
|     branches: | ||||
|       - dev | ||||
|  | ||||
| jobs: | ||||
|   build-container: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Set up Node.js | ||||
|         uses: actions/setup-node@v4 | ||||
|         with: | ||||
|           node-version: 19 | ||||
|       - run: npm i -g pnpm@8 && pnpm i | ||||
|       - run: pnpm licenses:export | ||||
|       - name: Login to registry | ||||
|         uses: docker/login-action@v3 | ||||
|         with: | ||||
|           registry: registry.odit.services | ||||
|           username: ${{ vars.REGISTRY_USERNAME }} | ||||
|           password: ${{ secrets.REGISTRY_PASSWORD }} | ||||
|       - name: Set up Docker Buildx | ||||
|         uses: docker/setup-buildx-action@v3 | ||||
|       - name: Build and push | ||||
|         uses: docker/build-push-action@v6 | ||||
|         with: | ||||
|           push: true | ||||
|           tags: | | ||||
|             ${{ vars.REGISTRY }}/lfk/frontend:dev | ||||
|             ${{ vars.REGISTRY }}/lfk/frontend:latest | ||||
|           platforms: linux/amd64,linux/arm64 | ||||
| @@ -14,7 +14,7 @@ jobs: | ||||
|         uses: actions/setup-node@v4 | ||||
|         with: | ||||
|           node-version: 19 | ||||
|       - run: npm i -g pnpm@8 && pnpm i | ||||
|       - run: npm i -g pnpm@10.7 && pnpm i | ||||
|       - run: pnpm licenses:export | ||||
|       - name: Login to registry | ||||
|         uses: docker/login-action@v3 | ||||
|   | ||||
							
								
								
									
										48
									
								
								CHANGELOG.md
									
									
									
									
									
								
							
							
						
						
									
										48
									
								
								CHANGELOG.md
									
									
									
									
									
								
							| @@ -2,10 +2,58 @@ | ||||
|  | ||||
| All notable changes to this project will be documented in this file. Dates are displayed in UTC. | ||||
|  | ||||
| #### [1.9.8](https://git.odit.services/lfk/frontend/compare/1.9.7...1.9.8) | ||||
|  | ||||
| - feat(GenerateSponsoringContracts): show download progress [`e261d5e`](https://git.odit.services/lfk/frontend/commit/e261d5e345f3175672bf86646ed838dd23400e50) | ||||
|  | ||||
| #### [1.9.7](https://git.odit.services/lfk/frontend/compare/1.9.6...1.9.7) | ||||
|  | ||||
| > 2 April 2025 | ||||
|  | ||||
| - fix: ImportRunnerModal scrolling & team select [`766eeab`](https://git.odit.services/lfk/frontend/commit/766eeab49fb3ca5715c19dbf9bc53cb71124d3df) | ||||
| - chore(release): 1.9.7 [`c00497d`](https://git.odit.services/lfk/frontend/commit/c00497d7760a935965cc83213f72f35999a3c168) | ||||
|  | ||||
| #### [1.9.6](https://git.odit.services/lfk/frontend/compare/1.9.5...1.9.6) | ||||
|  | ||||
| > 29 March 2025 | ||||
|  | ||||
| - chore(release): 1.9.6 [`3c9b404`](https://git.odit.services/lfk/frontend/commit/3c9b404234c7d7d2f0c48256be2130a0ed8ae047) | ||||
| - pnpm allow builds [`9c56b38`](https://git.odit.services/lfk/frontend/commit/9c56b3883eeab9e1a5e1c4921bfb6528c230e0d4) | ||||
|  | ||||
| #### [1.9.5](https://git.odit.services/lfk/frontend/compare/1.9.4...1.9.5) | ||||
|  | ||||
| > 29 March 2025 | ||||
|  | ||||
| - feat: modal improvements [`d7e84a7`](https://git.odit.services/lfk/frontend/commit/d7e84a79a892294d532cc93aa3391c14a7a5ce99) | ||||
| - chore(release): 1.9.5 [`3d506db`](https://git.odit.services/lfk/frontend/commit/3d506db97502399e8b381b4cf38af2f07a584aec) | ||||
|  | ||||
| #### [1.9.4](https://git.odit.services/lfk/frontend/compare/1.9.3...1.9.4) | ||||
|  | ||||
| > 29 March 2025 | ||||
|  | ||||
| - feat: improve modals [`90b0fec`](https://git.odit.services/lfk/frontend/commit/90b0fec2366b608d163decdcd8798e879cf8218d) | ||||
| - chore(release): 1.9.4 [`102471e`](https://git.odit.services/lfk/frontend/commit/102471eaaae390d3ef815afde9ac4081be7d5dbc) | ||||
|  | ||||
| #### [1.9.3](https://git.odit.services/lfk/frontend/compare/1.9.2...1.9.3) | ||||
|  | ||||
| > 29 March 2025 | ||||
|  | ||||
| - feat: modal improvements [`fbe38ee`](https://git.odit.services/lfk/frontend/commit/fbe38eede95813e163a390b693790d78ce75c215) | ||||
| - feat: modal improvements [`22551c3`](https://git.odit.services/lfk/frontend/commit/22551c379f704b0d9c28c499f7d3f5a37f1533ca) | ||||
| - ci: only tagged runs for now [`e9dffce`](https://git.odit.services/lfk/frontend/commit/e9dffcea835cbcd6b5eb4ed1cc3feb62a9e831db) | ||||
| - chore(release): 1.9.3 [`4883e17`](https://git.odit.services/lfk/frontend/commit/4883e179e7090cf90783dcdecd5df8a422880188) | ||||
| - feat: modal improvements [`13c6e96`](https://git.odit.services/lfk/frontend/commit/13c6e96292613d9619f779f2557201cf0b938753) | ||||
| - feat(OrgDetail): improve selfservice link copy [`f547c0c`](https://git.odit.services/lfk/frontend/commit/f547c0cc817d7db0c70df4059dad753e9b16c1c9) | ||||
| - chore(deps): pnpm@10.7 [`b9563d7`](https://git.odit.services/lfk/frontend/commit/b9563d75dd15519d9ec5d425d628d232e7609913) | ||||
| - fix: sidebar [`a102af5`](https://git.odit.services/lfk/frontend/commit/a102af5a78c83cd54b4981bff2f6c8d54cf8c74c) | ||||
|  | ||||
| #### [1.9.2](https://git.odit.services/lfk/frontend/compare/1.9.1...1.9.2) | ||||
|  | ||||
| > 28 March 2025 | ||||
|  | ||||
| - chore: update lfk client [`f4542ad`](https://git.odit.services/lfk/frontend/commit/f4542adf3b7c757d907c979b989450b64553d750) | ||||
| - feat(dashboard): show runners via selfservice count [`0ee43f8`](https://git.odit.services/lfk/frontend/commit/0ee43f80a65bb5b83d51d6c098bd203bc09e2f1f) | ||||
| - chore(release): 1.9.2 [`3a56942`](https://git.odit.services/lfk/frontend/commit/3a569422ad7d68d0009fa73229dd73ee00be87a9) | ||||
| - refactor: change release message [`9f0623d`](https://git.odit.services/lfk/frontend/commit/9f0623d194a7784d4ede3cb6a6cd10d0aea4a180) | ||||
|  | ||||
| #### [1.9.1](https://git.odit.services/lfk/frontend/compare/1.9.0...1.9.1) | ||||
|   | ||||
| @@ -3,7 +3,7 @@ ARG NPM_REGISTRY_URL=https://registry.npmjs.org | ||||
| WORKDIR /app | ||||
|  | ||||
| COPY package.json pnpm-lock.yaml vite.config.js tailwind.config.cjs postcss.config.cjs index.html ./ | ||||
| RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@9 | ||||
| RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@10.7 | ||||
| RUN mkdir /pnpm && pnpm config set store-dir /pnpm && pnpm i | ||||
|  | ||||
| COPY src ./src | ||||
|   | ||||
| @@ -13,7 +13,7 @@ | ||||
|  | ||||
|   <body> | ||||
|     <span style="display: none; visibility: hidden" id="buildinfo" | ||||
|       >RELEASE_INFO-1.9.2-RELEASE_INFO</span | ||||
|       >RELEASE_INFO-1.9.8-RELEASE_INFO</span | ||||
|     > | ||||
|     <noscript>You need to enable JavaScript to run this app.</noscript> | ||||
|     <script src="/env.js"></script> | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| { | ||||
|   "name": "@odit/lfk-frontend", | ||||
|   "version": "1.9.2", | ||||
|   "version": "1.9.8", | ||||
|   "type": "module", | ||||
|   "scripts": { | ||||
|     "i18n-order": "node order.js", | ||||
|   | ||||
							
								
								
									
										3
									
								
								pnpm-workspace.yaml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										3
									
								
								pnpm-workspace.yaml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,3 @@ | ||||
| onlyBuiltDependencies: | ||||
|   - es5-ext | ||||
|   - esbuild | ||||
| @@ -91,14 +91,14 @@ | ||||
|  | ||||
| {#if bulk_modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       bulk_modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -116,10 +116,10 @@ | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <div | ||||
|               class="mx-auto flex-shrink-0 flex items-center justify-center h-12 w- rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|               class="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -135,18 +135,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:mt-0"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-bulk-blanco-cards")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "just-enter-how-many-you-want-and-the-system-will-create-them" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="amount" | ||||
| @@ -183,13 +183,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             class:opacity-50={!createbtnenabled} | ||||
|             on:click={submit_with_print} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create-and-generate-pdf")} | ||||
|           </button> | ||||
| @@ -198,7 +198,7 @@ | ||||
|             class:opacity-50={!createbtnenabled} | ||||
|             on:click={submit_without_print} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-gray-400 text-base font-medium text-white hover:bg-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-gray-400 text-base font-medium text-white hover:bg-gray-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-blue-500" | ||||
|           > | ||||
|             {$_("create-without-pdf")} | ||||
|           </button> | ||||
| @@ -207,7 +207,7 @@ | ||||
|               bulk_modal_open = false; | ||||
|             }} | ||||
|             type="button" | ||||
|             class="mr-auto 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" | ||||
|             class="mr-auto 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" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -84,14 +84,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -104,15 +104,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -128,11 +128,11 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:mt-0"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-card")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_("you-can-provide-a-runner-but-you-dont-have-to")} | ||||
|                   {$_( | ||||
| @@ -140,7 +140,7 @@ | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="donor" | ||||
| @@ -165,13 +165,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -180,7 +180,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -78,14 +78,14 @@ | ||||
|  | ||||
| {#if edit_modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       edit_modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -98,15 +98,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -122,16 +122,16 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("edit-a-card")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_("you-can-provide-a-runner-but-you-dont-have-to")} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="runner" | ||||
| @@ -174,13 +174,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("save-changes")} | ||||
|           </button> | ||||
| @@ -189,7 +189,7 @@ | ||||
|               edit_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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -34,14 +34,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -54,15 +54,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -78,7 +78,7 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("please-confirm-the-deletion-of-card")} | ||||
|               </h3> | ||||
| @@ -99,11 +99,11 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={submit} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("delete")} | ||||
|           </button> | ||||
| @@ -112,7 +112,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -43,7 +43,7 @@ | ||||
|   $: address_zipcode_value = ""; | ||||
|   $: address_city_value = ""; | ||||
|   $: processed_last_submit = true; | ||||
|   $: address_checked = true; | ||||
|   $: address_checked = false; | ||||
|   $: isPhoneValidOrEmpty = | ||||
|     (phone_input_value.includes("+") && | ||||
|       isMobilePhone( | ||||
| @@ -136,14 +136,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -156,15 +156,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -179,18 +179,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-contact")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-contact" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -454,13 +454,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -469,7 +469,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -16,7 +16,7 @@ | ||||
| <section class="min-h-screen bg-gray-50"> | ||||
| 	<div | ||||
| 		class:collapsed_navigation={!navOpen} | ||||
| 		style="z-index:2;" | ||||
| 		style="z-index:11;" | ||||
| 		class="select-none fixed top-0 left-0 h-full pb-10 overflow-x-hidden overflow-y-auto transition origin-left transform border-r w-60 bg-gray-50" | ||||
| 	> | ||||
| 		<a href="/" class="flex items-center px-4 py-5"> | ||||
|   | ||||
| @@ -115,14 +115,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -135,15 +135,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -158,14 +158,14 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {#if is_fixed} | ||||
|                   {$_("create-a-new-fixed-donation")} | ||||
|                 {:else}{$_("create-a-new-distance-donation")}{/if} | ||||
|               </h3> | ||||
|               <label class="content-center align-middle object-center"> | ||||
|                 <span class="ml-2 text-base" class:text-gray-300={is_fixed} | ||||
|                 <span class="text-base" class:text-gray-300={is_fixed} | ||||
|                   >{$_("distance-donation")}</span | ||||
|                 > | ||||
|                 <input | ||||
| @@ -177,14 +177,14 @@ | ||||
|                   >{$_("fixed-donation")}</span | ||||
|                 > | ||||
|               </label> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-nessecary-information-to-create-a-new-donation" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="donor" | ||||
| @@ -289,13 +289,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -304,7 +304,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -76,14 +76,14 @@ | ||||
|  | ||||
| {#if payment_modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       payment_modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -96,15 +96,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -120,18 +120,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 text-left"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("enter-payment")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "you-can-enter-the-donations-paid-amount-manually-or-use-the-max-button-to-use-the-donations-exact-amount" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols gap-6"> | ||||
|               <div class="grid grid-cols gap-2 lg:gap-6"> | ||||
|                 <div class="w-full"> | ||||
|                   <label | ||||
|                     for="token" | ||||
| @@ -179,13 +179,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("save-changes")} | ||||
|           </button> | ||||
| @@ -194,7 +194,7 @@ | ||||
|               payment_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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -37,14 +37,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -57,15 +57,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -80,7 +80,7 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("please-confirm-the-deletion-of-donation")} | ||||
|               </h3> | ||||
| @@ -93,11 +93,11 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={submit} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("delete")} | ||||
|           </button> | ||||
| @@ -106,7 +106,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -124,14 +124,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -144,15 +144,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -167,18 +167,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-donor")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-nessecary-information-to-add-a-new-donor" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -418,13 +418,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -433,7 +433,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -16,12 +16,12 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
| 	<div | ||||
| 		class="fixed z-10 inset-0 overflow-y-auto" | ||||
| 		class="fixed z-10 inset-0 overflow-y-hidden" | ||||
| 		use:clickOutside | ||||
| 		on:click_outside={cancelDelete} | ||||
| 	> | ||||
| 		<div | ||||
| 			class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
| 			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
| 		> | ||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
| 				<div | ||||
| @@ -34,15 +34,15 @@ | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
| 					<div class="sm:flex sm:items-start"> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
| 					<div class=""> | ||||
| 						<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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
| 						> | ||||
| 							<svg | ||||
| 								class="h-6 w-6 text-blue-600" | ||||
| @@ -54,13 +54,13 @@ | ||||
| 								/></svg | ||||
| 							> | ||||
| 						</div> | ||||
| 						<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
| 						<div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
| 							<h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
| 								{$_( | ||||
| 									"do-you-want-to-delete-this-donor-with-all-related-donations" | ||||
| 								)} | ||||
| 							</h3> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500"> | ||||
| 									{$_("all-associated-donations-will-get-deleted-as-well")} | ||||
| 								</p> | ||||
| @@ -68,18 +68,18 @@ | ||||
| 						</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				<div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
| 				<div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
| 					<button | ||||
| 						on:click={deleteDonor} | ||||
| 						type="button" | ||||
| 						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
| 						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
| 					> | ||||
| 						{$_("confirm-delete-donor-with-all-donations")} | ||||
| 					</button> | ||||
| 					<button | ||||
| 						on:click={cancelDelete} | ||||
| 						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" | ||||
| 						class="w-full 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 hidden lg:block" | ||||
| 					> | ||||
| 						{$_("cancel-keep-donor")} | ||||
| 					</button> | ||||
|   | ||||
| @@ -24,7 +24,7 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
| 	<div | ||||
| 		class="fixed z-10 inset-0 overflow-y-auto" | ||||
| 		class="fixed z-10 inset-0 overflow-y-hidden" | ||||
| 		use:clickOutside | ||||
| 		on:click_outside={() => { | ||||
| 			modal_open = false; | ||||
| @@ -44,15 +44,15 @@ | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
| 					<div class="sm:flex sm:items-start"> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
| 					<div class=""> | ||||
| 						<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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
| 						> | ||||
| 							<svg | ||||
| 								fill="currentColor" | ||||
| @@ -71,16 +71,16 @@ | ||||
| 							<h3 class="text-lg leading-6 font-medium"> | ||||
| 								{$_("read-license")} | ||||
| 							</h3> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500">{currentlicense}</p> | ||||
| 							</div> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500">{licensetext}</p> | ||||
| 							</div> | ||||
| 						</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				<div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
| 				<div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
| 					<button | ||||
| 						on:click={() => { | ||||
| 							modal_open = false; | ||||
|   | ||||
| @@ -59,14 +59,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -79,15 +79,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 xmlns="http://www.w3.org/2000/svg" | ||||
| @@ -102,18 +102,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-user-group")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-for-creating-a-new-user-group" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -159,13 +159,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -174,7 +174,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -25,7 +25,7 @@ | ||||
|   $: address_input2_value = ""; | ||||
|   $: address_zipcode_value = ""; | ||||
|   $: address_city_value = ""; | ||||
|   $: address_checked = true; | ||||
|   $: address_checked = false; | ||||
|  | ||||
|   let address_input1; | ||||
|   let address_input2; | ||||
| @@ -82,14 +82,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -102,15 +102,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -124,18 +124,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-organization")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-organization" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -222,7 +222,7 @@ | ||||
|                       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-neutral-800 rounded-md p-2" | ||||
|                     /> | ||||
|                   </div> | ||||
|                   <div class="col-span-6"> | ||||
|                   <div class="col-span-2"> | ||||
|                     <label | ||||
|                       for="zipcode" | ||||
|                       class="block text-sm font-medium text-gray-700" | ||||
| @@ -248,7 +248,7 @@ | ||||
|                       </span> | ||||
|                     {/if} | ||||
|                   </div> | ||||
|                   <div class="col-span-6"> | ||||
|                   <div class="col-span-4"> | ||||
|                     <label | ||||
|                       for="city" | ||||
|                       class="block text-sm font-medium text-gray-700" | ||||
| @@ -279,13 +279,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -294,7 +294,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -27,12 +27,12 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
| 	<div | ||||
| 		class="fixed z-10 inset-0 overflow-y-auto" | ||||
| 		class="fixed z-10 inset-0 overflow-y-hidden" | ||||
| 		use:clickOutside | ||||
| 		on:click_outside={cancelDelete} | ||||
| 	> | ||||
| 		<div | ||||
| 			class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
| 			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
| 		> | ||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
| 				<div | ||||
| @@ -45,15 +45,15 @@ | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
| 					<div class="sm:flex sm:items-start"> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
| 					<div class=""> | ||||
| 						<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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
| 						> | ||||
| 							<svg | ||||
| 								class="h-6 w-6 text-blue-600" | ||||
| @@ -68,13 +68,13 @@ | ||||
| 								/></svg | ||||
| 							> | ||||
| 						</div> | ||||
| 						<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
| 						<div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
| 							<h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
| 								{$_("do-you-want-to-delete-the-organization-delete_org-name", { | ||||
| 									values: { orgname: delete_org.name }, | ||||
| 								})} | ||||
| 							</h3> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500"> | ||||
| 									{$_("all-associated-teams-and-runners-will-be-deleted-too")} | ||||
| 								</p> | ||||
| @@ -82,18 +82,18 @@ | ||||
| 						</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				<div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
| 				<div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
| 					<button | ||||
| 						on:click={deleteOrg} | ||||
| 						type="button" | ||||
| 						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
| 						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
| 					> | ||||
| 						{$_("confirm-delete-organization-and-associated-teams-runners")} | ||||
| 					</button> | ||||
| 					<button | ||||
| 						on:click={cancelDelete} | ||||
| 						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" | ||||
| 						class="w-full 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 hidden lg:block" | ||||
| 					> | ||||
| 						{$_("cancel-keep-organization")} | ||||
| 					</button> | ||||
|   | ||||
| @@ -263,7 +263,7 @@ | ||||
| 						<button on:click={copy} class="inline-flex w-full"> | ||||
| 							<p | ||||
| 								name="token" | ||||
| 								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-neutral-800 p-2" | ||||
| 								class="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-neutral-800 p-2 break-all font-mono text-left" | ||||
| 							> | ||||
| 								{#if editable.registrationKey} | ||||
| 									{registrationLink} | ||||
| @@ -272,7 +272,7 @@ | ||||
| 								{/if} | ||||
| 							</p> | ||||
| 							<div | ||||
| 								class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 mt-1 cursor-pointer" | ||||
| 								class="bg-gray-200 border-gray-300 border-t border-b border-r text-black rounded-r-md sm:text-sm p-2 cursor-pointer flex items-center justify-center" | ||||
| 							> | ||||
| 								<svg | ||||
| 									xmlns="http://www.w3.org/2000/svg" | ||||
|   | ||||
							
								
								
									
										81
									
								
								src/components/pdf_generation/DownloadProgressModal.svelte
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								src/components/pdf_generation/DownloadProgressModal.svelte
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,81 @@ | ||||
| <script> | ||||
| 	import { _ } from "svelte-i18n"; | ||||
| 	import { clickOutside } from "../base/outsideclick"; | ||||
| 	import { onMount } from "svelte"; | ||||
| 	export let download_details = ""; | ||||
| 	export let modal_open; | ||||
| 	onMount(() => { | ||||
| 		document.onkeydown = (e) => { | ||||
| 			e = e || window.event; | ||||
| 			if (e.key === "Escape") { | ||||
| 				modal_open = false; | ||||
| 			} | ||||
| 			if (e.keyCode === 13) { | ||||
| 				if (createbtnenabled === true) { | ||||
| 					createbtnenabled = false; | ||||
| 					submit(); | ||||
| 				} | ||||
| 			} | ||||
| 		}; | ||||
| 	}); | ||||
| </script> | ||||
|  | ||||
| {#if modal_open} | ||||
| 	<div | ||||
| 		class="fixed z-10 inset-0 overflow-y-hidden" | ||||
| 		use:clickOutside | ||||
| 		on:click_outside={() => { | ||||
| 			modal_open = false; | ||||
| 		}} | ||||
| 	> | ||||
| 		<div | ||||
| 			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
| 		> | ||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
| 				<div | ||||
| 					class="absolute inset-0 bg-gray-500 opacity-75" | ||||
| 					data-id="modal_backdrop" | ||||
| 				/> | ||||
| 			</div> | ||||
| 			<span | ||||
| 				class="hidden sm:inline-block sm:align-middle sm:h-screen" | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
| 					<div class=""> | ||||
| 						<div | ||||
| 							class="flex-shrink-0 flex items-center justify-center size-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" /> | ||||
| 								<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 | ||||
| 							> | ||||
| 						</div> | ||||
| 						<div class="mt-3 sm:text-left text-base"> | ||||
| 							<h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
| 								{$_('download_laeuft')} | ||||
| 							</h3> | ||||
| 							<div class="w-full"> | ||||
| 								{download_details} | ||||
| 							</div> | ||||
| 						</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| {/if} | ||||
| @@ -7,6 +7,7 @@ | ||||
| 	import DocumentServer from "./DocumentServer"; | ||||
| 	import { init } from "@paralleldrive/cuid2"; | ||||
| 	import toast from "svelte-french-toast"; | ||||
| 	import DownloadProgressModal from "./DownloadProgressModal.svelte"; | ||||
| 	const createId = init({ length: 10, fingerprint: "lfk-frontend" }); | ||||
| 	const documentServer = new DocumentServer( | ||||
| 		config.baseurl_documentserver, | ||||
| @@ -17,8 +18,12 @@ | ||||
| 	export let generate_runners = []; | ||||
| 	export let generate_orgs = []; | ||||
| 	export let generate_teams = []; | ||||
| 	// | ||||
| 	export let download_modal_open = false; | ||||
| 	export let download_details = ""; | ||||
|  | ||||
| 	function generateSponsoringContract(locale) { | ||||
| 		download_modal_open = true; | ||||
| 		if (generate_orgs.length > 0) { | ||||
| 			generateOrgContracts(locale); | ||||
| 		} else if (generate_teams.length > 0) { | ||||
| @@ -41,19 +46,24 @@ | ||||
|  | ||||
| 	async function generateTeamContracts(locale) { | ||||
| 		toast.loading($_("generating-pdfs")); | ||||
| 		let totalCount = generate_teams.length; | ||||
| 		let count = 0; | ||||
| 		for (const t of generate_teams) { | ||||
| 			count++; | ||||
| 			download_details = `${t.parentGroup.name} > ${t.name}`; | ||||
| 			const runners = await RunnerTeamService.runnerTeamControllerGetRunners( | ||||
| 				t.id | ||||
| 			); | ||||
| 			documentServer | ||||
| 			await documentServer | ||||
| 				.generateContracts(runners, locale) | ||||
| 				.then((blob) => { | ||||
| 					download( | ||||
| 						blob, | ||||
| 						`${$_("sponsorings")}_${t.name}-${locale}-${createId()}.pdf` | ||||
| 					); | ||||
| 					if (count === totalCount) { | ||||
| 						download_modal_open = false; | ||||
| 					} | ||||
| 				}) | ||||
| 				.catch((err) => {}); | ||||
| 		} | ||||
| @@ -61,15 +71,23 @@ | ||||
|  | ||||
| 	async function generateOrgContracts(locale) { | ||||
| 		toast.loading($_("generating-pdf")); | ||||
| 		let count_orgs = 0; | ||||
| 		let totalCount = 0; | ||||
| 		for (const o of generate_orgs) { | ||||
| 			count_orgs++; | ||||
| 			let count = 0; | ||||
| 			totalCount++; | ||||
| 			for (const t of o.teams) { | ||||
| 				totalCount++; | ||||
| 			} | ||||
| 		} | ||||
| 		console.log({ totalCount }); | ||||
| 		let count = 0; | ||||
| 		for (const o of generate_orgs) { | ||||
| 			count++; | ||||
| 			let runners = | ||||
| 				await RunnerOrganizationService.runnerOrganizationControllerGetRunners( | ||||
| 					o.id, | ||||
| 					true | ||||
| 				); | ||||
| 			download_details = o.name; | ||||
| 			await documentServer | ||||
| 				.generateContracts(runners, locale) | ||||
| 				.then((blob) => { | ||||
| @@ -84,6 +102,7 @@ | ||||
| 				let runners = await RunnerTeamService.runnerTeamControllerGetRunners( | ||||
| 					t.id | ||||
| 				); | ||||
| 				download_details = `${o.name} > ${t.name}`; | ||||
| 				await documentServer | ||||
| 					.generateContracts(runners, locale) | ||||
| 					.then((blob) => { | ||||
| @@ -93,15 +112,19 @@ | ||||
| 								t.name | ||||
| 							}-${locale}-${createId()}.pdf` | ||||
| 						); | ||||
| 						console.log({ count }); | ||||
| 						if (count === totalCount) { | ||||
| 							download_modal_open = false; | ||||
| 						} | ||||
| 					}) | ||||
| 					.catch((err) => {}); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	function generateRunnerContracts(locale) { | ||||
| 	async function generateRunnerContracts(locale) { | ||||
| 		toast.loading($_("generating-pdf")); | ||||
| 		documentServer | ||||
| 		await documentServer | ||||
| 			.generateContracts(generate_runners, locale) | ||||
| 			.then((blob) => { | ||||
| 				let fileName = `${$_("sponsorings")}-${locale}-${createId()}.pdf`; | ||||
| @@ -111,6 +134,7 @@ | ||||
| 					}-${locale}-${createId()}.pdf`; | ||||
| 				} | ||||
| 				download(blob, fileName); | ||||
| 				download_modal_open = false; | ||||
| 			}) | ||||
| 			.catch((err) => { | ||||
| 				console.error(err); | ||||
| @@ -119,6 +143,7 @@ | ||||
| </script> | ||||
|  | ||||
| {#if sponsoring_contracts_show} | ||||
| 	<DownloadProgressModal {download_details} modal_open={download_modal_open} /> | ||||
| 	<button | ||||
| 		on:click={() => { | ||||
| 			generateSponsoringContract("de"); | ||||
|   | ||||
| @@ -117,14 +117,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -137,15 +137,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 xmlns="http://www.w3.org/2000/svg" | ||||
| @@ -160,18 +160,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-runner")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-runner" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -323,13 +323,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -338,7 +338,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -31,14 +31,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -51,15 +51,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 xmlns="http://www.w3.org/2000/svg" | ||||
| @@ -74,7 +74,7 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_('delete_runner')} | ||||
|               </h3> | ||||
| @@ -86,11 +86,11 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={submit} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("delete")} | ||||
|           </button> | ||||
| @@ -99,7 +99,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -1,401 +1,386 @@ | ||||
| <script> | ||||
|   import csv from "csvtojson"; | ||||
|   import { read as readXlsx, utils as xlsx_utils } from "xlsx"; | ||||
|   import { _ } from "svelte-i18n"; | ||||
|   import { clickOutside } from "../base/outsideclick"; | ||||
| 	import csv from "csvtojson"; | ||||
| 	import { read as readXlsx, utils as xlsx_utils } from "xlsx"; | ||||
| 	import { _ } from "svelte-i18n"; | ||||
| 	import { clickOutside } from "../base/outsideclick"; | ||||
|  | ||||
|   import { | ||||
|     ImportService, | ||||
|     RunnerTeamService, | ||||
|     RunnerOrganizationService, | ||||
|   } from "@odit/lfk-client-js"; | ||||
|   import { createEventDispatcher } from "svelte"; | ||||
|   import Select from "svelte-select"; | ||||
|   import toast from "svelte-french-toast"; | ||||
|   export let opened_from; | ||||
|   export let passed_org; | ||||
|   export let passed_orgs; | ||||
|   export let passed_team; | ||||
|   export let import_modal_open; | ||||
|   $: searchvalue = ""; | ||||
|   $: importButtonEnabled = | ||||
|     recent_processed && | ||||
|     (!(selected_org_or_team == "" || selected_org_or_team == null) || | ||||
|       !(passed_org?.id == null || passed_org?.id == 0) || | ||||
|       !(passed_team?.id == null || passed_team?.id == 0)); | ||||
|   const dispatch = createEventDispatcher(); | ||||
|   function cancelModal() { | ||||
|     json_output = []; | ||||
|     import_modal_open = false; | ||||
|     dispatch("cancel"); | ||||
|   } | ||||
|   (() => { | ||||
|     document.onkeydown = (e) => { | ||||
|       e = e || window.event; | ||||
|       if (e.key === "Escape") { | ||||
|         cancelModal(); | ||||
|       } | ||||
|       if (e.keyCode === 13) { | ||||
|         // | ||||
|       } | ||||
|     }; | ||||
|   })(); | ||||
|   let groups = []; | ||||
|   RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { | ||||
|     const orgs = val.map((r) => { | ||||
|       return { label: r.name, value: `ORG_${r.id}` }; | ||||
|     }); | ||||
|     groups = groups.concat(orgs); | ||||
|     RunnerTeamService.runnerTeamControllerGetAll().then((val) => { | ||||
|       const teams = val.map((r) => { | ||||
|         return { | ||||
|           label: `${r.parentGroup.name} > ${r.name}`, | ||||
|           value: `TEAM_${r.id}`, | ||||
|         }; | ||||
|       }); | ||||
|       groups = groups.concat(teams); | ||||
|     }); | ||||
|   }); | ||||
|   let selected_org; | ||||
|   $: selected_org_or_team = ""; | ||||
|   let files; | ||||
|   let recent_processed = true; | ||||
|   $: json_output = []; | ||||
|   $: { | ||||
|     if (files) { | ||||
|       if ( | ||||
|         files[0].type === | ||||
|         "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | ||||
|       ) { | ||||
|         const reader = new FileReader(); | ||||
|         reader.addEventListener("load", async (e) => { | ||||
|           const data = new Uint8Array(e.target.result); | ||||
|           const out = readXlsx(data, { type: "array" }); | ||||
|           json_output = xlsx_utils.sheet_to_json( | ||||
|             out.Sheets[Object.keys(out.Sheets)[0]] | ||||
|           ); | ||||
|         }); | ||||
|         reader.readAsArrayBuffer(files[0]); | ||||
|       } else { | ||||
|         const reader = new FileReader(); | ||||
|         reader.addEventListener("load", async (e) => { | ||||
|           json_output = await csv({ | ||||
|             delimiter: [";", ","], | ||||
|             trim: true, | ||||
|           }).fromString(e.target.result); | ||||
|         }); | ||||
|         reader.readAsText(files[0]); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   function importAction() { | ||||
|     if (recent_processed === true) { | ||||
|       toast.loading($_("runners-are-being-imported")); | ||||
|       recent_processed = false; | ||||
|       const mapped = json_output.map(function (runner) { | ||||
|         return { | ||||
|           firstname: runner[`${$_("csv_import__firstname")}`], | ||||
|           middlename: runner[`${$_("csv_import__middlename")}`], | ||||
|           lastname: runner[`${$_("csv_import__lastname")}`], | ||||
|           team: | ||||
|             runner[`${$_("csv_import__team")}`] || | ||||
|             runner[`${$_("csv_import__class")}`], | ||||
|         }; | ||||
|       }); | ||||
|       let org = 0; | ||||
|       if (opened_from === "OrgDetail") { | ||||
|         org = passed_org.id; | ||||
|       } | ||||
|       if (opened_from === "OrgOverview") { | ||||
|         org = parseInt(selected_org); | ||||
|       } | ||||
|       if (opened_from === "OrgOverview" || opened_from === "OrgDetail") { | ||||
|         ImportService.importControllerPostOrgsJson(org, mapped) | ||||
|           .then((resp) => { | ||||
|             toast.dismiss(); | ||||
|             recent_processed = true; | ||||
|             toast.success($_("import-finished")); | ||||
|             cancelModal(); | ||||
|           }) | ||||
|           .catch((err) => { | ||||
|             toast.dismiss(); | ||||
|             recent_processed = true; | ||||
|             toast.error($_("error-during-import")); | ||||
|             cancelModal(); | ||||
|           }); | ||||
|       } | ||||
|       if (opened_from === "TeamDetail") { | ||||
|         ImportService.importControllerPostTeamsJson(passed_team.id, mapped) | ||||
|           .then((resp) => { | ||||
|             toast.dismiss(); | ||||
|             recent_processed = true; | ||||
|             toast.success($_("import-finished")); | ||||
|             cancelModal(); | ||||
|           }) | ||||
|           .catch((err) => { | ||||
|             toast.dismiss(); | ||||
|             recent_processed = true; | ||||
|             toast.error($_("error-during-import")); | ||||
|             cancelModal(); | ||||
|           }); | ||||
|       } | ||||
|       if (opened_from === "RunnerOverview") { | ||||
|         if (selected_org_or_team.includes("ORG_")) { | ||||
|           selected_org_or_team = selected_org_or_team.split("_")[1]; | ||||
|           ImportService.importControllerPostOrgsJson( | ||||
|             selected_org_or_team, | ||||
|             mapped | ||||
|           ) | ||||
|             .then((resp) => { | ||||
|               dispatch("created", { runners: resp }); | ||||
|               toast.dismiss(); | ||||
|               recent_processed = true; | ||||
|               toast.success($_("import-finished")); | ||||
|               cancelModal(); | ||||
|             }) | ||||
|             .catch((err) => { | ||||
|               toast.dismiss(); | ||||
|               recent_processed = true; | ||||
|               toast.error($_("error-during-import")); | ||||
|               cancelModal(); | ||||
|             }); | ||||
|         } | ||||
|         if (selected_org_or_team.includes("TEAM_")) { | ||||
|           selected_org_or_team = selected_org_or_team.split("_")[1]; | ||||
|           ImportService.importControllerPostTeamsJson( | ||||
|             selected_org_or_team, | ||||
|             mapped | ||||
|           ) | ||||
|             .then((resp) => { | ||||
|               dispatch("created", { runners: resp }); | ||||
|               toast.dismiss(); | ||||
|               recent_processed = true; | ||||
|               toast.success($_("import-finished")); | ||||
|               cancelModal(); | ||||
|             }) | ||||
|             .catch((err) => { | ||||
|               toast.dismiss(); | ||||
|               recent_processed = true; | ||||
|               toast.error($_("error-during-import")); | ||||
|               cancelModal(); | ||||
|             }); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|   } | ||||
| 	import { | ||||
| 		ImportService, | ||||
| 		RunnerTeamService, | ||||
| 		RunnerOrganizationService, | ||||
| 	} from "@odit/lfk-client-js"; | ||||
| 	import { createEventDispatcher } from "svelte"; | ||||
| 	import Select from "svelte-select"; | ||||
| 	import toast from "svelte-french-toast"; | ||||
| 	export let opened_from; | ||||
| 	export let passed_org; | ||||
| 	export let passed_orgs; | ||||
| 	export let passed_team; | ||||
| 	export let import_modal_open; | ||||
| 	$: searchvalue = ""; | ||||
| 	$: importButtonEnabled = | ||||
| 		recent_processed && | ||||
| 		(!(selected_org_or_team == "" || selected_org_or_team == null) || | ||||
| 			!(passed_org?.id == null || passed_org?.id == 0) || | ||||
| 			!(passed_team?.id == null || passed_team?.id == 0)); | ||||
| 	const dispatch = createEventDispatcher(); | ||||
| 	function cancelModal() { | ||||
| 		json_output = []; | ||||
| 		import_modal_open = false; | ||||
| 		dispatch("cancel"); | ||||
| 	} | ||||
| 	(() => { | ||||
| 		document.onkeydown = (e) => { | ||||
| 			e = e || window.event; | ||||
| 			if (e.key === "Escape") { | ||||
| 				cancelModal(); | ||||
| 			} | ||||
| 			if (e.keyCode === 13) { | ||||
| 				// | ||||
| 			} | ||||
| 		}; | ||||
| 	})(); | ||||
| 	let groups = []; | ||||
| 	RunnerOrganizationService.runnerOrganizationControllerGetAll().then((val) => { | ||||
| 		const orgs = val.map((r) => { | ||||
| 			return { label: r.name, value: `ORG_${r.id}` }; | ||||
| 		}); | ||||
| 		groups = groups.concat(orgs); | ||||
| 		RunnerTeamService.runnerTeamControllerGetAll().then((val) => { | ||||
| 			const teams = val.map((r) => { | ||||
| 				return { | ||||
| 					label: `${r.parentGroup.name} > ${r.name}`, | ||||
| 					value: `TEAM_${r.id}`, | ||||
| 				}; | ||||
| 			}); | ||||
| 			groups = groups.concat(teams); | ||||
| 		}); | ||||
| 	}); | ||||
| 	let selected_org; | ||||
| 	$: selected_org_or_team = ""; | ||||
| 	let files; | ||||
| 	let recent_processed = true; | ||||
| 	$: json_output = []; | ||||
| 	$: { | ||||
| 		if (files) { | ||||
| 			if ( | ||||
| 				files[0].type === | ||||
| 				"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | ||||
| 			) { | ||||
| 				const reader = new FileReader(); | ||||
| 				reader.addEventListener("load", async (e) => { | ||||
| 					const data = new Uint8Array(e.target.result); | ||||
| 					const out = readXlsx(data, { type: "array" }); | ||||
| 					json_output = xlsx_utils.sheet_to_json( | ||||
| 						out.Sheets[Object.keys(out.Sheets)[0]] | ||||
| 					); | ||||
| 				}); | ||||
| 				reader.readAsArrayBuffer(files[0]); | ||||
| 			} else { | ||||
| 				const reader = new FileReader(); | ||||
| 				reader.addEventListener("load", async (e) => { | ||||
| 					json_output = await csv({ | ||||
| 						delimiter: [";", ","], | ||||
| 						trim: true, | ||||
| 					}).fromString(e.target.result); | ||||
| 				}); | ||||
| 				reader.readAsText(files[0]); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	function importAction() { | ||||
| 		if (recent_processed === true) { | ||||
| 			toast.loading($_("runners-are-being-imported")); | ||||
| 			recent_processed = false; | ||||
| 			const mapped = json_output.map(function (runner) { | ||||
| 				return { | ||||
| 					firstname: runner[`${$_("csv_import__firstname")}`], | ||||
| 					middlename: runner[`${$_("csv_import__middlename")}`], | ||||
| 					lastname: runner[`${$_("csv_import__lastname")}`], | ||||
| 					team: | ||||
| 						runner[`${$_("csv_import__team")}`] || | ||||
| 						runner[`${$_("csv_import__class")}`], | ||||
| 				}; | ||||
| 			}); | ||||
| 			let org = 0; | ||||
| 			if (opened_from === "OrgDetail") { | ||||
| 				org = passed_org.id; | ||||
| 			} | ||||
| 			if (opened_from === "OrgOverview") { | ||||
| 				org = parseInt(selected_org); | ||||
| 			} | ||||
| 			if (opened_from === "OrgOverview" || opened_from === "OrgDetail") { | ||||
| 				ImportService.importControllerPostOrgsJson(org, mapped) | ||||
| 					.then((resp) => { | ||||
| 						toast.dismiss(); | ||||
| 						recent_processed = true; | ||||
| 						toast.success($_("import-finished")); | ||||
| 						cancelModal(); | ||||
| 					}) | ||||
| 					.catch((err) => { | ||||
| 						toast.dismiss(); | ||||
| 						recent_processed = true; | ||||
| 						toast.error($_("error-during-import")); | ||||
| 						cancelModal(); | ||||
| 					}); | ||||
| 			} | ||||
| 			if (opened_from === "TeamDetail") { | ||||
| 				ImportService.importControllerPostTeamsJson(passed_team.id, mapped) | ||||
| 					.then((resp) => { | ||||
| 						toast.dismiss(); | ||||
| 						recent_processed = true; | ||||
| 						toast.success($_("import-finished")); | ||||
| 						cancelModal(); | ||||
| 					}) | ||||
| 					.catch((err) => { | ||||
| 						toast.dismiss(); | ||||
| 						recent_processed = true; | ||||
| 						toast.error($_("error-during-import")); | ||||
| 						cancelModal(); | ||||
| 					}); | ||||
| 			} | ||||
| 			if (opened_from === "RunnerOverview") { | ||||
| 				if (selected_org_or_team.includes("ORG_")) { | ||||
| 					selected_org_or_team = selected_org_or_team.split("_")[1]; | ||||
| 					ImportService.importControllerPostOrgsJson( | ||||
| 						selected_org_or_team, | ||||
| 						mapped | ||||
| 					) | ||||
| 						.then((resp) => { | ||||
| 							dispatch("created", { runners: resp }); | ||||
| 							toast.dismiss(); | ||||
| 							recent_processed = true; | ||||
| 							toast.success($_("import-finished")); | ||||
| 							cancelModal(); | ||||
| 						}) | ||||
| 						.catch((err) => { | ||||
| 							toast.dismiss(); | ||||
| 							recent_processed = true; | ||||
| 							toast.error($_("error-during-import")); | ||||
| 							cancelModal(); | ||||
| 						}); | ||||
| 				} | ||||
| 				if (selected_org_or_team.includes("TEAM_")) { | ||||
| 					selected_org_or_team = selected_org_or_team.split("_")[1]; | ||||
| 					ImportService.importControllerPostTeamsJson( | ||||
| 						selected_org_or_team, | ||||
| 						mapped | ||||
| 					) | ||||
| 						.then((resp) => { | ||||
| 							dispatch("created", { runners: resp }); | ||||
| 							toast.dismiss(); | ||||
| 							recent_processed = true; | ||||
| 							toast.success($_("import-finished")); | ||||
| 							cancelModal(); | ||||
| 						}) | ||||
| 						.catch((err) => { | ||||
| 							toast.dismiss(); | ||||
| 							recent_processed = true; | ||||
| 							toast.error($_("error-during-import")); | ||||
| 							cancelModal(); | ||||
| 						}); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| </script> | ||||
|  | ||||
| {#if import_modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       cancelModal(); | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 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" | ||||
|         /> | ||||
|       </div> | ||||
|       <span | ||||
|         class="hidden sm:inline-block sm:align-middle sm:h-screen" | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-max sm:w-full" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <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" | ||||
|             > | ||||
|               <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" /> | ||||
|                 <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 | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-2 sm:text-left w-full"> | ||||
|               <h3 class="text-lg leading-6 font-bold mt-2 text-gray-900"> | ||||
|                 {$_("runner-import")} | ||||
|               </h3> | ||||
|             </div> | ||||
|           </div> | ||||
|           <div class="mt-5 text-center sm:mt-0 sm:ml-2 sm:text-left w-full"> | ||||
|             {#if json_output.length === 0} | ||||
|               <div class="mt-2 mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_("please-provide-the-required-csv-xlsx-file")} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="overflow-hidden relative mt-4 mb-4"> | ||||
|                 <input | ||||
|                   accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | ||||
|                   bind:files | ||||
|                   type="file" | ||||
|                 /> | ||||
|               </div> | ||||
|               <div class="overflow-hidden relative mt-4 mb-4"> | ||||
|                 <button | ||||
|                   on:click={() => { | ||||
|                     cancelModal(); | ||||
|                   }} | ||||
|                   type="button" | ||||
|                   class="w-full rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 md:ml-40 mr-0 sm:ml-0 sm:w-auto sm:text-sm" | ||||
|                 > | ||||
|                   {$_("cancel")} | ||||
|                 </button> | ||||
|               </div> | ||||
|             {/if} | ||||
|             {#if json_output.length > 0} | ||||
|               {#if opened_from === "OrgOverview"} | ||||
|                 <p>{$_("import__target-organization")}</p> | ||||
|                 <select | ||||
|                   name="team" | ||||
|                   bind:value={selected_org} | ||||
|                   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-neutral-800 rounded-md p-2" | ||||
|                 > | ||||
|                   {#each passed_orgs as o} | ||||
|                     <option value={o.id}>{o.name}</option> | ||||
|                   {/each} | ||||
|                 </select> | ||||
|                 <p>{$_("confirm-runner-import")}</p> | ||||
|               {/if} | ||||
|               {#if opened_from === "RunnerOverview"} | ||||
|                 <p>{$_("group")}</p> | ||||
|                 <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-neutral-800 rounded-md p-2" | ||||
|                   itemFilter={(label, filterText, option) => | ||||
|                     label.toLowerCase().includes(filterText.toLowerCase()) || | ||||
|                     option.id.value | ||||
|                       .toString() | ||||
|                       .startsWith(filterText.toLowerCase())} | ||||
|                   items={groups} | ||||
|                   showChevron={true} | ||||
|                   placeholder={$_( | ||||
|                     "search-for-an-organization-or-team-by-name-or-id" | ||||
|                   )} | ||||
|                   noOptionsMessage={$_("no-organization-or-team-found")} | ||||
|                   on:select={(selectedValue) => { | ||||
|                     selected_org_or_team = selectedValue.detail.value; | ||||
|                   }} | ||||
|                   on:clear={() => (selected_org_or_team = null)} | ||||
|                 /> | ||||
|               {/if} | ||||
|               {#if opened_from === "OrgDetail"} | ||||
|                 <p> | ||||
|                   {$_("runnerimport_verify_runners_org", { | ||||
|                     values: { org_name: passed_org.name }, | ||||
|                   })} | ||||
|                 </p> | ||||
|               {/if} | ||||
|               <input | ||||
|                 type="search" | ||||
|                 bind:value={searchvalue} | ||||
|                 placeholder={$_("datatable.search")} | ||||
|                 aria-label={$_("datatable.search")} | ||||
|                 class="p-2 w-full" | ||||
|               /> | ||||
|               <div class="relative w-full mt-4 mb-4"> | ||||
|                 <div class="w-full overflow-x-auto"> | ||||
|                   <table class="divide-y divide-gray-200 w-full"> | ||||
|                     <thead class="bg-gray-50"> | ||||
|                       <tr class="odd:bg-white even:bg-gray-100"> | ||||
|                         <th | ||||
|                           scope="col" | ||||
|                           class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                           {$_("csv_import__firstname")} | ||||
|                         </th> | ||||
|                         <th | ||||
|                           scope="col" | ||||
|                           class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                           {$_("csv_import__middlename")} | ||||
|                         </th> | ||||
|                         <th | ||||
|                           scope="col" | ||||
|                           class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
|                         > | ||||
|                           {$_("csv_import__lastname")} | ||||
|                         </th> | ||||
|                         {#if (opened_from !== "TeamDetail" && opened_from !== "RunnerOverview") || (opened_from === "RunnerOverview" && selected_org_or_team.includes("ORG_"))} | ||||
|                           <th | ||||
|                             scope="col" | ||||
|                             class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
|                           > | ||||
|                             {$_("csv_import__team")} | ||||
|                           </th> | ||||
|                         {/if} | ||||
|                       </tr> | ||||
|                     </thead> | ||||
|                     <tbody class="divide-y divide-gray-200"> | ||||
|                       {#each json_output as runner} | ||||
|                         {#if Object.values(runner) | ||||
|                           .toString() | ||||
|                           .toLowerCase() | ||||
|                           .includes(searchvalue)} | ||||
|                           <tr class="odd:bg-white even:bg-gray-100"> | ||||
|                             <td class="px-6 py-4 whitespace-nowrap"> | ||||
|                               {runner[`${$_("csv_import__firstname")}`]} | ||||
|                             </td> | ||||
|                             <td class="px-6 py-4 whitespace-nowrap"> | ||||
|                               {runner[`${$_("csv_import__middlename")}`] || ""} | ||||
|                             </td> | ||||
|                             <td class="px-6 py-4 whitespace-nowrap"> | ||||
|                               {runner[`${$_("csv_import__lastname")}`]} | ||||
|                             </td> | ||||
|                             {#if (opened_from !== "TeamDetail" && opened_from !== "RunnerOverview") || (opened_from === "RunnerOverview" && selected_org_or_team.includes("ORG_"))} | ||||
|                               <td class="px-6 py-4 whitespace-nowrap"> | ||||
|                                 {runner[`${$_("csv_import__team")}`] || | ||||
|                                   runner[`${$_("csv_import__class")}`] || | ||||
|                                   "---"} | ||||
|                               </td> | ||||
|                             {/if} | ||||
|                           </tr> | ||||
|                         {/if} | ||||
|                       {/each} | ||||
|                     </tbody> | ||||
|                   </table> | ||||
|                 </div> | ||||
|                 <button | ||||
|                   disabled={!importButtonEnabled} | ||||
|                   class:opacity-50={!importButtonEnabled} | ||||
|                   on:click={importAction} | ||||
|                   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" | ||||
|                 > | ||||
|                   {$_("import-runners")} | ||||
|                 </button> | ||||
|                 <button | ||||
|                   on:click={() => { | ||||
|                     cancelModal(); | ||||
|                   }} | ||||
|                   type="button" | ||||
|                   class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|                 > | ||||
|                   {$_("cancel")} | ||||
|                 </button> | ||||
|               </div> | ||||
|             {/if} | ||||
|           </div> | ||||
|         </div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| 	<div | ||||
| 		class="fixed z-10 inset-0 overflow-y-hidden" | ||||
| 		use:clickOutside | ||||
| 		on:click_outside={() => { | ||||
| 			cancelModal(); | ||||
| 		}} | ||||
| 	> | ||||
| 		<div | ||||
| 			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
| 		> | ||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
| 				<div | ||||
| 					class="absolute inset-0 bg-gray-500 opacity-75" | ||||
| 					data-id="modal_backdrop" | ||||
| 				/> | ||||
| 			</div> | ||||
| 			<span | ||||
| 				class="hidden sm:inline-block sm:align-middle sm:h-screen" | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div | ||||
| 					class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl lg:rounded-xl" | ||||
| 				> | ||||
| 					<div class=""> | ||||
| 						<div | ||||
| 							class="flex-shrink-0 flex items-center justify-center size-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" /> | ||||
| 								<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 | ||||
| 							> | ||||
| 						</div> | ||||
| 						<div class="mt-3 sm:mt-0 sm:text-left w-full"> | ||||
| 							<h3 class="text-lg leading-6 font-bold mt-2 text-gray-900"> | ||||
| 								{$_("runner-import")} | ||||
| 							</h3> | ||||
| 						</div> | ||||
| 					</div> | ||||
| 					<div class="sm:text-left w-full"> | ||||
| 						{#if json_output.length === 0} | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500"> | ||||
| 									{$_("please-provide-the-required-csv-xlsx-file")} | ||||
| 								</p> | ||||
| 							</div> | ||||
| 							<div class="overflow-hidden relative mt-4 mb-4"> | ||||
| 								<input | ||||
| 									accept=".csv, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" | ||||
| 									bind:files | ||||
| 									type="file" | ||||
| 								/> | ||||
| 							</div> | ||||
| 							<div class="overflow-hidden relative mt-4 mb-4"> | ||||
| 								<button | ||||
| 									on:click={() => { | ||||
| 										cancelModal(); | ||||
| 									}} | ||||
| 									type="button" | ||||
| 									class="w-full 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 hidden lg:block" | ||||
| 								> | ||||
| 									{$_("cancel")} | ||||
| 								</button> | ||||
| 							</div> | ||||
| 						{/if} | ||||
| 						{#if json_output.length > 0} | ||||
| 							{#if opened_from === "OrgOverview"} | ||||
| 								<p>{$_("import__target-organization")}</p> | ||||
| 								<select | ||||
| 									name="team" | ||||
| 									bind:value={selected_org} | ||||
| 									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-neutral-800 rounded-md p-2" | ||||
| 								> | ||||
| 									{#each passed_orgs as o} | ||||
| 										<option value={o.id}>{o.name}</option> | ||||
| 									{/each} | ||||
| 								</select> | ||||
| 								<p>{$_("confirm-runner-import")}</p> | ||||
| 							{/if} | ||||
| 							{#if opened_from === "RunnerOverview"} | ||||
| 								<p>{$_("group")}</p> | ||||
| 								<select | ||||
| 									bind:value={selected_org_or_team} | ||||
| 									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-neutral-800 rounded-md p-2" | ||||
| 								> | ||||
| 									{#each groups as g} | ||||
| 										<option value={g.value}>{g.label}</option> | ||||
| 									{/each} | ||||
| 								</select> | ||||
| 							{/if} | ||||
| 							{#if opened_from === "OrgDetail"} | ||||
| 								<p> | ||||
| 									{$_("runnerimport_verify_runners_org", { | ||||
| 										values: { org_name: passed_org.name }, | ||||
| 									})} | ||||
| 								</p> | ||||
| 							{/if} | ||||
| 							<div class="relative w-full mt-4 mb-4"> | ||||
| 								<div class="w-full overflow-x-auto max-h-[50vh]"> | ||||
| 									<table class="divide-y divide-gray-200 w-full"> | ||||
| 										<thead class="bg-gray-50"> | ||||
| 											<tr class="odd:bg-white even:bg-gray-100"> | ||||
| 												<th | ||||
| 													scope="col" | ||||
| 													class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
| 												> | ||||
| 													{$_("csv_import__firstname")} | ||||
| 												</th> | ||||
| 												<th | ||||
| 													scope="col" | ||||
| 													class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
| 												> | ||||
| 													{$_("csv_import__middlename")} | ||||
| 												</th> | ||||
| 												<th | ||||
| 													scope="col" | ||||
| 													class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
| 												> | ||||
| 													{$_("csv_import__lastname")} | ||||
| 												</th> | ||||
| 												{#if (opened_from !== "TeamDetail" && opened_from !== "RunnerOverview") || (opened_from === "RunnerOverview" && selected_org_or_team.includes("ORG_"))} | ||||
| 													<th | ||||
| 														scope="col" | ||||
| 														class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider" | ||||
| 													> | ||||
| 														{$_("csv_import__team")} | ||||
| 													</th> | ||||
| 												{/if} | ||||
| 											</tr> | ||||
| 										</thead> | ||||
| 										<tbody class="divide-y divide-gray-200"> | ||||
| 											{#each json_output as runner} | ||||
| 												{#if Object.values(runner) | ||||
| 													.toString() | ||||
| 													.toLowerCase() | ||||
| 													.includes(searchvalue)} | ||||
| 													<tr class="odd:bg-white even:bg-gray-100"> | ||||
| 														<td class="px-6 py-4 whitespace-nowrap"> | ||||
| 															{runner[`${$_("csv_import__firstname")}`]} | ||||
| 														</td> | ||||
| 														<td class="px-6 py-4 whitespace-nowrap"> | ||||
| 															{runner[`${$_("csv_import__middlename")}`] || ""} | ||||
| 														</td> | ||||
| 														<td class="px-6 py-4 whitespace-nowrap"> | ||||
| 															{runner[`${$_("csv_import__lastname")}`]} | ||||
| 														</td> | ||||
| 														{#if (opened_from !== "TeamDetail" && opened_from !== "RunnerOverview") || (opened_from === "RunnerOverview" && selected_org_or_team.includes("ORG_"))} | ||||
| 															<td class="px-6 py-4 whitespace-nowrap"> | ||||
| 																{runner[`${$_("csv_import__team")}`] || | ||||
| 																	runner[`${$_("csv_import__class")}`] || | ||||
| 																	"---"} | ||||
| 															</td> | ||||
| 														{/if} | ||||
| 													</tr> | ||||
| 												{/if} | ||||
| 											{/each} | ||||
| 										</tbody> | ||||
| 									</table> | ||||
| 								</div> | ||||
| 								<button | ||||
| 									disabled={!importButtonEnabled} | ||||
| 									class:opacity-50={!importButtonEnabled} | ||||
| 									on:click={importAction} | ||||
| 									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" | ||||
| 								> | ||||
| 									{$_("import-runners")} | ||||
| 								</button> | ||||
| 								<button | ||||
| 									on:click={() => { | ||||
| 										cancelModal(); | ||||
| 									}} | ||||
| 									type="button" | ||||
| 									class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
| 								> | ||||
| 									{$_("cancel")} | ||||
| 								</button> | ||||
| 							</div> | ||||
| 						{/if} | ||||
| 					</div> | ||||
| 				</div> | ||||
| 			</div> | ||||
| 		</div> | ||||
| 	</div> | ||||
| {/if} | ||||
|   | ||||
| @@ -180,6 +180,7 @@ | ||||
| 	import store from "../../store"; | ||||
| 	import AddRunnerModal from "./AddRunnerModal.svelte"; | ||||
| 	import ImportRunnerModal from "./ImportRunnerModal.svelte"; | ||||
| 	import toast from "svelte-french-toast"; | ||||
| 	$: current_runners = []; | ||||
| 	export let modal_open = false; | ||||
| 	export let import_modal_open = false; | ||||
|   | ||||
| @@ -68,14 +68,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -88,15 +88,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -112,18 +112,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-scan-fixed-only")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-nessecary-information-to-create-a-new-scan" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="donor" | ||||
| @@ -180,13 +180,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -195,7 +195,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -33,14 +33,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -53,15 +53,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 xmlns="http://www.w3.org/2000/svg" | ||||
| @@ -76,21 +76,21 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("please-confirm-the-deletion-of-scan")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 #{delete_scan.id} | ||||
|               </div> | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={submit} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("delete")} | ||||
|           </button> | ||||
| @@ -99,7 +99,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -72,14 +72,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -92,15 +92,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -115,18 +115,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:mt-0"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-scanstation")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-create-a-new-scanstation" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="track" | ||||
| @@ -188,13 +188,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -203,7 +203,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -24,12 +24,12 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={cancelDelete} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -42,15 +42,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -62,11 +62,11 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("attention")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "do-you-want-to-delete-this-donor-with-all-related-donations" | ||||
| @@ -78,18 +78,18 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={deleteStation} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("confirm-delete-station-with-all-scans")} | ||||
|           </button> | ||||
|           <button | ||||
|             on:click={cancelDelete} | ||||
|             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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel-keep-station")} | ||||
|           </button> | ||||
|   | ||||
| @@ -60,9 +60,9 @@ | ||||
| 	{#if valueCopy != null} | ||||
| 		<textarea bind:this={areaDom}>{valueCopy}</textarea> | ||||
| 	{/if} | ||||
| 	<div class="fixed z-10 inset-0 overflow-y-auto"> | ||||
| 	<div class="fixed z-10 inset-0 overflow-y-hidden"> | ||||
| 		<div | ||||
| 			class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
| 			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
| 		> | ||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
| 				<div | ||||
| @@ -75,15 +75,15 @@ | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
| 					<div class="sm:flex sm:items-start"> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
| 					<div class=""> | ||||
| 						<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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
| 						> | ||||
| 							<svg | ||||
| 								class="h-6 w-6 text-blue-600" | ||||
| @@ -96,11 +96,11 @@ | ||||
| 								/></svg | ||||
| 							> | ||||
| 						</div> | ||||
| 						<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
| 						<div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
| 							<h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
| 								{$_("token")} | ||||
| 							</h3> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500"> | ||||
| 									{$_( | ||||
| 										"the-scanstations-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again" | ||||
| @@ -109,7 +109,7 @@ | ||||
| 									{$_("please-copy-the-token-and-store-it-somewhere-save")} | ||||
| 								</p> | ||||
| 							</div> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<label | ||||
| 									for="token" | ||||
| 									class="block text-sm font-medium text-gray-700" | ||||
| @@ -184,11 +184,11 @@ | ||||
| 						/> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				<div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
| 				<div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
| 					<button | ||||
| 						on:click={close} | ||||
| 						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-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
| 						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-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
| 					> | ||||
| 						{$_("yes-i-copied-the-token")} | ||||
| 					</button> | ||||
|   | ||||
| @@ -25,12 +25,12 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={cancelDelete} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -43,15 +43,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -63,11 +63,11 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("attention")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_("do-you-really-want-to-delete-your-profile")} | ||||
|                   <br /> | ||||
| @@ -81,18 +81,18 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={deleteMe} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("confirm-delete-my-user-profile")} | ||||
|           </button> | ||||
|           <button | ||||
|             on:click={cancelDelete} | ||||
|             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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel-keep-my-profile")} | ||||
|           </button> | ||||
|   | ||||
| @@ -66,7 +66,7 @@ | ||||
|   <div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8"> | ||||
|     <span class="text-3xl font-bold">{$_("settings")}</span> | ||||
|     <div> | ||||
|       <div class="md:grid md:grid-cols-3 md:gap-6"> | ||||
|       <div class="md:grid md:grid-cols-3 md:gap-2 lg:gap-6"> | ||||
|         <div class="md:col-span-1"> | ||||
|           <div class="sm:px-0"> | ||||
|             <h3 class="text-lg font-medium leading-6 text-gray-900"> | ||||
| @@ -174,7 +174,7 @@ | ||||
|   </div> | ||||
|   <div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8"> | ||||
|     <div> | ||||
|       <div class="md:grid md:grid-cols-3 md:gap-6"> | ||||
|       <div class="md:grid md:grid-cols-3 md:gap-2 lg:gap-6"> | ||||
|         <div class="md:col-span-1"> | ||||
|           <div class="sm:px-0"> | ||||
|             <h3 class="text-lg font-medium leading-6 text-gray-900"> | ||||
| @@ -245,7 +245,7 @@ | ||||
|   </div> | ||||
|   <div class="max-w-7xl mx-auto py-6 px-4 sm:px-6 lg:px-8"> | ||||
|     <div> | ||||
|       <div class="md:grid md:grid-cols-3 md:gap-6"> | ||||
|       <div class="md:grid md:grid-cols-3 md:gap-2 lg:gap-6"> | ||||
|         <div class="md:col-span-1"> | ||||
|           <div class="sm:px-0"> | ||||
|             <h3 class="text-lg font-medium leading-6 text-gray-900"> | ||||
| @@ -268,7 +268,7 @@ | ||||
|                       on:click={() => { | ||||
|                         modal_open = true; | ||||
|                       }} | ||||
|                       class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:" | ||||
|                       class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|                       >{$_("confirm-deletion")}</button | ||||
|                     > | ||||
|                     <button | ||||
| @@ -285,7 +285,7 @@ | ||||
|                         delete_triggered = true; | ||||
|                       }} | ||||
|                       type="button" | ||||
|                       class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:" | ||||
|                       class="w-full justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|                       >{$_("delete-profile")}</button | ||||
|                     > | ||||
|                   {/if} | ||||
|   | ||||
| @@ -58,14 +58,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -78,15 +78,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -101,18 +101,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-statsclient")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-create-a-new-statsclient" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="description" | ||||
| @@ -133,13 +133,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -148,7 +148,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -23,12 +23,12 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={cancelDelete} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -41,15 +41,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -61,11 +61,11 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <!-- <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <!-- <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_('attention')} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     'do-you-want-to-delete-this-donor-with-all-related-donations' | ||||
| @@ -77,18 +77,18 @@ | ||||
|             </div> --> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={deleteClient} | ||||
|             type="button" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("confirm-delete-statsclient")} | ||||
|           </button> | ||||
|           <button | ||||
|             on:click={cancelDelete} | ||||
|             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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel-keep-statsclient")} | ||||
|           </button> | ||||
|   | ||||
| @@ -37,9 +37,9 @@ | ||||
|   {#if valueCopy != null} | ||||
|     <textarea bind:this={areaDom}>{valueCopy}</textarea> | ||||
|   {/if} | ||||
|   <div class="fixed z-10 inset-0 overflow-y-auto"> | ||||
|   <div class="fixed z-10 inset-0 overflow-y-hidden"> | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -52,15 +52,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -73,11 +73,11 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("token")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "the-statsclient-api-token-will-only-get-displayed-once-you-wont-be-able-to-change-or-view-it-again" | ||||
| @@ -86,7 +86,7 @@ | ||||
|                   {$_("please-copy-the-token-and-store-it-somewhere-save")} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <label | ||||
|                   for="token" | ||||
|                   class="block text-sm font-medium text-gray-700" | ||||
| @@ -123,11 +123,11 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             on:click={close} | ||||
|             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-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
|             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-green-500 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
|           > | ||||
|             {$_("yes-i-copied-the-token")} | ||||
|           </button> | ||||
|   | ||||
| @@ -69,14 +69,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -89,15 +89,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-md text-left shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -112,18 +112,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-team")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-team" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -184,13 +184,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -199,7 +199,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -26,12 +26,12 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
| 	<div | ||||
| 		class="fixed z-10 inset-0 overflow-y-auto" | ||||
| 		class="fixed z-10 inset-0 overflow-y-hidden" | ||||
| 		use:clickOutside | ||||
| 		on:click_outside={cancelDelete} | ||||
| 	> | ||||
| 		<div | ||||
| 			class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
| 			class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
| 		> | ||||
| 			<div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
| 				<div | ||||
| @@ -44,15 +44,15 @@ | ||||
| 				aria-hidden="true">​</span | ||||
| 			> | ||||
| 			<div | ||||
| 				class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
| 				class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
| 				role="dialog" | ||||
| 				aria-modal="true" | ||||
| 				aria-labelledby="modal-headline" | ||||
| 			> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
| 					<div class="sm:flex sm:items-start"> | ||||
| 				<div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
| 					<div class=""> | ||||
| 						<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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
| 						> | ||||
| 							<svg | ||||
| 								class="h-6 w-6 text-blue-600" | ||||
| @@ -67,13 +67,13 @@ | ||||
| 								/></svg | ||||
| 							> | ||||
| 						</div> | ||||
| 						<div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
| 						<div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
| 							<h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
| 								{$_("do-you-want-to-delete-the-team-delete_team-name", { | ||||
| 									values: { teamname: delete_team.name }, | ||||
| 								})} | ||||
| 							</h3> | ||||
| 							<div class="mt-2 mb-6"> | ||||
| 							<div class="mb-6"> | ||||
| 								<p class="text-sm text-gray-500"> | ||||
| 									{$_("all-associated-runners-will-be-deleted-too")} | ||||
| 								</p> | ||||
| @@ -81,18 +81,18 @@ | ||||
| 						</div> | ||||
| 					</div> | ||||
| 				</div> | ||||
| 				<div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
| 				<div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
| 					<button | ||||
| 						on:click={deleteTeam} | ||||
| 						type="button" | ||||
| 						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500 sm:ml-3 sm:w-auto sm:text-sm" | ||||
| 						class="w-full inline-flex justify-center rounded-md border border-transparent shadow-sm px-4 py-2 bg-red-600 text-base font-medium text-white hover:bg-red-700 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-red-500" | ||||
| 					> | ||||
| 						{$_("confirm-delete-team-and-associated-runners")} | ||||
| 					</button> | ||||
| 					<button | ||||
| 						on:click={cancelDelete} | ||||
| 						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" | ||||
| 						class="w-full 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 hidden lg:block" | ||||
| 					> | ||||
| 						{$_("cancel-keep-team")} | ||||
| 					</button> | ||||
|   | ||||
| @@ -67,14 +67,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -87,15 +87,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -110,18 +110,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3 sm:text-left max-h-[75vh] overflow-y-auto"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-track")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-track" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="trackname" | ||||
| @@ -215,13 +215,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -230,7 +230,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -84,14 +84,14 @@ | ||||
|  | ||||
| {#if modal_open} | ||||
|   <div | ||||
|     class="fixed z-10 inset-0 overflow-y-auto" | ||||
|     class="fixed z-10 inset-0 overflow-y-hidden" | ||||
|     use:clickOutside | ||||
|     on:click_outside={() => { | ||||
|       modal_open = false; | ||||
|     }} | ||||
|   > | ||||
|     <div | ||||
|       class="flex items-end justify-center min-h-screen pt-4 px-4 pb-4 text-center sm:block sm:p-0" | ||||
|       class="flex items-end justify-center h-screen text-center sm:block p-0 lg:p-4" | ||||
|     > | ||||
|       <div class="fixed inset-0 transition-opacity" aria-hidden="true"> | ||||
|         <div | ||||
| @@ -104,15 +104,15 @@ | ||||
|         aria-hidden="true">​</span | ||||
|       > | ||||
|       <div | ||||
|         class="inline-block align-bottom bg-white rounded-lg text-left overflow-hidden shadow-xl transform transition-all sm:my-8 sm:align-middle sm:max-w-lg sm:w-full" | ||||
|         class="inline-block align-bottom text-left shadow-xl transform transition-all sm:align-middle w-full lg:w-auto min-w-auto lg:min-w-[35vw]" | ||||
|         role="dialog" | ||||
|         aria-modal="true" | ||||
|         aria-labelledby="modal-headline" | ||||
|       > | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t"> | ||||
|           <div class="sm:flex sm:items-start"> | ||||
|         <div class="bg-white px-4 pt-5 pb-4 sm:p-6 sm:pb-4 rounded-t-xl"> | ||||
|           <div class=""> | ||||
|             <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="flex-shrink-0 flex items-center justify-center size-12 rounded-full bg-blue-100 sm:mx-0 sm:h-10 sm:w-10" | ||||
|             > | ||||
|               <svg | ||||
|                 class="h-6 w-6 text-blue-600" | ||||
| @@ -127,18 +127,18 @@ | ||||
|                 /></svg | ||||
|               > | ||||
|             </div> | ||||
|             <div class="mt-3 text-center sm:mt-0 sm:ml-4 sm:text-left"> | ||||
|             <div class="mt-3"> | ||||
|               <h3 class="text-lg leading-6 font-medium text-gray-900"> | ||||
|                 {$_("create-a-new-user")} | ||||
|               </h3> | ||||
|               <div class="mt-2 mb-6"> | ||||
|               <div class="mb-6"> | ||||
|                 <p class="text-sm text-gray-500"> | ||||
|                   {$_( | ||||
|                     "please-provide-the-required-information-to-add-a-new-user" | ||||
|                   )} | ||||
|                 </p> | ||||
|               </div> | ||||
|               <div class="grid grid-cols-6 gap-6"> | ||||
|               <div class="grid grid-cols-6 gap-2 lg:gap-6 text-left"> | ||||
|                 <div class="col-span-6"> | ||||
|                   <label | ||||
|                     for="firstname" | ||||
| @@ -272,13 +272,13 @@ | ||||
|             </div> | ||||
|           </div> | ||||
|         </div> | ||||
|         <div class="bg-gray-50 px-4 py-3 sm:px-6 grid gap-2 rounded-b"> | ||||
|         <div class="bg-gray-50 px-4 lg:py-3 sm:px-6 grid gap-2 lg:rounded-b-xl pt-3 pb-10"> | ||||
|           <button | ||||
|             disabled={!createbtnenabled} | ||||
|             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" | ||||
|             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" | ||||
|           > | ||||
|             {$_("create")} | ||||
|           </button> | ||||
| @@ -287,7 +287,7 @@ | ||||
|               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" | ||||
|             class="w-full 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 hidden lg:block" | ||||
|           > | ||||
|             {$_("cancel")} | ||||
|           </button> | ||||
|   | ||||
| @@ -101,20 +101,20 @@ | ||||
|     "count_teams": "Teams", | ||||
|     "create": "Erstellen", | ||||
|     "create-a-new": "Erstelle eine neue", | ||||
|     "create-a-new-card": "Neue Läuferkarte erstellen", | ||||
|     "create-a-new-card": "Läuferkarte erstellen", | ||||
|     "create-a-new-contact": "Kontakt erstellen", | ||||
|     "create-a-new-distance-donation": "Erstelle ein neues Sponsoring", | ||||
|     "create-a-new-donor": "Neuen Sponsor erstellen", | ||||
|     "create-a-new-fixed-donation": "Erstelle eine neue Festbetragsspende", | ||||
|     "create-a-new-organization": "Neue Organisation anlegen", | ||||
|     "create-a-new-runner": "Neuen Läufer erstellen", | ||||
|     "create-a-new-scan-fixed-only": "Neuen Scan erstellen (nur mit Festdistanz)", | ||||
|     "create-a-new-scanstation": "Neue Station erstellen", | ||||
|     "create-a-new-statsclient": "Neuen Statsclient erstellen", | ||||
|     "create-a-new-donor": "Sponsor erstellen", | ||||
|     "create-a-new-fixed-donation": "Festbetragsspende erstellen", | ||||
|     "create-a-new-organization": "Organisation anlegen", | ||||
|     "create-a-new-runner": "Läufer erstellen", | ||||
|     "create-a-new-scan-fixed-only": "Scan erstellen (nur mit Festdistanz)", | ||||
|     "create-a-new-scanstation": "Station erstellen", | ||||
|     "create-a-new-statsclient": "Statsclient erstellen", | ||||
|     "create-a-new-team": "Erstelle ein neues Team", | ||||
|     "create-a-new-track": "Neue Laufstrecke erstellen", | ||||
|     "create-a-new-user": "Neuen Benutzer anlegen", | ||||
|     "create-a-new-user-group": "Erstelle eine neue Gruppe", | ||||
|     "create-a-new-track": "Laufstrecke erstellen", | ||||
|     "create-a-new-user": "Benutzer anlegen", | ||||
|     "create-a-new-user-group": "Gruppe erstellen", | ||||
|     "create-and-generate-pdf": "Erstellen und PDF herunterladen", | ||||
|     "create-bulk-blanco-cards": "Blankokarten erstellen", | ||||
|     "create-bulk-cards": "Blankokarten erstellen", | ||||
| @@ -204,6 +204,7 @@ | ||||
|     "donors-are-being-loaded": "Sponsoren werden geladen", | ||||
|     "dont-have-your-email-connected": "Deine E-Mail ist nicht verknüpft?", | ||||
|     "dont-panic-were-resetting-it": "Keine Panik, wir setzen es zurück ✌", | ||||
|     "download_laeuft": "Download läuft...", | ||||
|     "e-mail-adress": "E-Mail-Adresse", | ||||
|     "edit": "Bearbeiten", | ||||
|     "edit-a-card": "Läuferkarte bearbeiten", | ||||
|   | ||||
| @@ -204,6 +204,7 @@ | ||||
|     "donors-are-being-loaded": "donors are being loaded", | ||||
|     "dont-have-your-email-connected": "Don't have your email connected?", | ||||
|     "dont-panic-were-resetting-it": "Don't panic, we're resetting it ✌", | ||||
|     "download_laeuft": "Download in progress...", | ||||
|     "e-mail-adress": "E-Mail Adress", | ||||
|     "edit": "Edit", | ||||
|     "edit-a-card": "Edit a card", | ||||
|   | ||||
		Reference in New Issue
	
	Block a user