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