forked from MapComplete/MapComplete
		
	Fix: cleanup of wikipedia panel, fix #1570
This commit is contained in:
		
							parent
							
								
									0df56064fa
								
							
						
					
					
						commit
						203f24fca0
					
				
					 2 changed files with 67 additions and 57 deletions
				
			
		|  | @ -1,29 +1,32 @@ | |||
| <script lang="ts"> | ||||
|   import type { FullWikipediaDetails } from "../../Logic/Web/Wikipedia" | ||||
|   import { Store } from "../../Logic/UIEventSource" | ||||
|   import FromHtml from "../Base/FromHtml.svelte" | ||||
|   import Loading from "../Base/Loading.svelte" | ||||
|   import { Disclosure, DisclosureButton, DisclosurePanel } from "@rgossiaux/svelte-headlessui" | ||||
|   import { ChevronRightIcon } from "@rgossiaux/svelte-heroicons/solid" | ||||
|   import ToSvelte from "../Base/ToSvelte.svelte" | ||||
|   import WikidataPreviewBox from "./WikidataPreviewBox" | ||||
|   import Tr from "../Base/Tr.svelte" | ||||
|   import Translations from "../i18n/Translations" | ||||
|   import type { FullWikipediaDetails } from "../../Logic/Web/Wikipedia"; | ||||
|   import { Store } from "../../Logic/UIEventSource"; | ||||
|   import FromHtml from "../Base/FromHtml.svelte"; | ||||
|   import Loading from "../Base/Loading.svelte"; | ||||
|   import { Disclosure, DisclosureButton, DisclosurePanel } from "@rgossiaux/svelte-headlessui"; | ||||
|   import { ChevronRightIcon } from "@rgossiaux/svelte-heroicons/solid"; | ||||
|   import ToSvelte from "../Base/ToSvelte.svelte"; | ||||
|   import WikidataPreviewBox from "./WikidataPreviewBox"; | ||||
|   import Tr from "../Base/Tr.svelte"; | ||||
|   import Translations from "../i18n/Translations"; | ||||
| 
 | ||||
|   /** | ||||
|    * Small helper | ||||
|    */ | ||||
|   export let wikipediaDetails: Store<FullWikipediaDetails> | ||||
|   export let wikipediaDetails: Store<FullWikipediaDetails>; | ||||
| </script> | ||||
| 
 | ||||
| {#if $wikipediaDetails.articleUrl} | ||||
| 
 | ||||
|   <a class="flex" href={$wikipediaDetails.articleUrl} rel="noreferrer" target="_blank"> | ||||
|     <img class="h-6 w-6" src="./assets/svg/wikipedia.svg" /> | ||||
|     <Tr t={Translations.t.general.wikipedia.fromWikipedia} /> | ||||
|   </a> | ||||
| 
 | ||||
| {/if} | ||||
| {#if $wikipediaDetails.wikidata} | ||||
|   <ToSvelte construct={WikidataPreviewBox.WikidataResponsePreview($wikipediaDetails.wikidata)} /> | ||||
| {/if} | ||||
| {#if $wikipediaDetails.articleUrl} | ||||
| 
 | ||||
|   {#if $wikipediaDetails.firstParagraph === "" || $wikipediaDetails.firstParagraph === undefined} | ||||
|     <Loading> | ||||
|  | @ -48,3 +51,4 @@ | |||
|     </Disclosure> | ||||
|   </span> | ||||
|   {/if} | ||||
| {/if} | ||||
|  |  | |||
|  | @ -2,31 +2,34 @@ | |||
|   /** | ||||
|    * Shows one or more wikidata info boxes or wikipedia articles in a tabbed component. | ||||
|    */ | ||||
|   import type { FullWikipediaDetails } from "../../Logic/Web/Wikipedia" | ||||
|   import Wikipedia from "../../Logic/Web/Wikipedia" | ||||
|   import Locale from "../i18n/Locale" | ||||
|   import { Store } from "../../Logic/UIEventSource" | ||||
|   import { Tab, TabGroup, TabList, TabPanel, TabPanels } from "@rgossiaux/svelte-headlessui" | ||||
|   import WikipediaTitle from "./WikipediaTitle.svelte" | ||||
|   import WikipediaArticle from "./WikipediaArticle.svelte" | ||||
|   import { onDestroy } from "svelte" | ||||
|   import type { FullWikipediaDetails } from "../../Logic/Web/Wikipedia"; | ||||
|   import Wikipedia from "../../Logic/Web/Wikipedia"; | ||||
|   import Locale from "../i18n/Locale"; | ||||
|   import { Store } from "../../Logic/UIEventSource"; | ||||
|   import { Tab, TabGroup, TabList, TabPanel, TabPanels } from "@rgossiaux/svelte-headlessui"; | ||||
|   import WikipediaTitle from "./WikipediaTitle.svelte"; | ||||
|   import WikipediaArticle from "./WikipediaArticle.svelte"; | ||||
|   import { onDestroy } from "svelte"; | ||||
| 
 | ||||
|   /** | ||||
|    * Either a wikidata item or a '<language>:<article>' link | ||||
|    */ | ||||
|   export let wikiIds: Store<string[]> | ||||
|   export let wikiIds: Store<string[]>; | ||||
|   let wikipediaStores: Store<Store<FullWikipediaDetails>[]> = Locale.language.bind((language) => | ||||
|     wikiIds.map((wikiIds) => wikiIds.map((id) => Wikipedia.fetchArticleAndWikidata(id, language))) | ||||
|   ) | ||||
|   let _wikipediaStores | ||||
|   ); | ||||
|   let _wikipediaStores; | ||||
|   onDestroy( | ||||
|     wikipediaStores.addCallbackAndRunD((wikipediaStores) => { | ||||
|       _wikipediaStores = wikipediaStores | ||||
|       _wikipediaStores = wikipediaStores; | ||||
|     }) | ||||
|   ) | ||||
|   ); | ||||
| </script> | ||||
| 
 | ||||
| {#if _wikipediaStores !== undefined} | ||||
|   {#if _wikipediaStores.length === 1} | ||||
|     <WikipediaArticle wikipediaDetails={_wikipediaStores[0]} /> | ||||
|   {:else} | ||||
|     <TabGroup> | ||||
|       <TabList> | ||||
|         {#each _wikipediaStores as store (store.tag)} | ||||
|  | @ -44,13 +47,16 @@ | |||
|       </TabPanels> | ||||
|     </TabGroup> | ||||
|   {/if} | ||||
| {/if} | ||||
| 
 | ||||
| <style> | ||||
|     /* Actually used, don't remove*/ | ||||
|     .tab-selected { | ||||
|         background-color: rgb(59 130 246); | ||||
|         color: rgb(255 255 255); | ||||
|     } | ||||
| 
 | ||||
|     /* Actually used, don't remove*/ | ||||
|     .tab-unselected { | ||||
|         background-color: rgb(255 255 255); | ||||
|         color: rgb(0 0 0); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue