mirror of
				https://github.com/em-squared/5e-drs.git
				synced 2025-10-30 21:24:18 +00:00 
			
		
		
		
	tooltips pour les états préjudiciables
This commit is contained in:
		
							parent
							
								
									7c23239138
								
							
						
					
					
						commit
						b508862c9b
					
				
					 8 changed files with 156 additions and 4 deletions
				
			
		|  | @ -114,6 +114,17 @@ export const tooltips = { | |||
|       "Toute attaque qui touche la créature est obligatoirement un coup critique si l'assaillant se trouve dans un rayon de 1,50 mètre autour d'elle." | ||||
|     ] | ||||
|   }, | ||||
|   'paralyse': { | ||||
|     id: 'paralyse', | ||||
|     basePath: '/gerer-la-sante-du-personnage/', | ||||
|     title: 'Paralysé', | ||||
|     description: [ | ||||
|       "Une créature <em>paralysée</em> est <em>neutralisée</em> (voir l'état) et ne peut ni parler ni se déplacer.", | ||||
|       "La créature rate automatiquement tous ses jets de sauvegarde de Force et de Dextérité.", | ||||
|       "Les attaques visant la créature bénéficient d'un <em>avantage</em>.", | ||||
|       "Toute attaque qui touche la créature est obligatoirement un coup critique si l'assaillant se trouve dans un rayon de 1,50 mètre autour d'elle." | ||||
|     ] | ||||
|   }, | ||||
|   'petrifie': { | ||||
|     id: 'petrifie', | ||||
|     basePath: '/gerer-la-sante-du-personnage/', | ||||
|  |  | |||
|  | @ -23,6 +23,7 @@ | |||
| <script> | ||||
| import {displayItemMeta} from '@theme/util/magicItemHelpers' | ||||
| import MarkdownIt from 'markdown-it' | ||||
| import { handleTooltips } from '@theme/util' | ||||
| 
 | ||||
| export default { | ||||
|   name: 'MagicItem', | ||||
|  | @ -39,6 +40,17 @@ export default { | |||
|     displayItemMeta () { | ||||
|       return displayItemMeta(this.magicItem.frontmatter) | ||||
|     } | ||||
|   }, | ||||
| 
 | ||||
|   mounted () { | ||||
|     setTimeout(function () { | ||||
|       handleTooltips() | ||||
|     }, 100); | ||||
|     this.$router.afterEach(() => { | ||||
|       setTimeout(function () { | ||||
|         handleTooltips() | ||||
|       }, 100) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -168,6 +168,8 @@ import { | |||
|   displayMonsterTypeSizeAlignment | ||||
| } from '@theme/util/monsterHelpers' | ||||
| 
 | ||||
| import { handleTooltips } from '@theme/util' | ||||
| 
 | ||||
| import {stats} from '../../data/stats.js' | ||||
| import {armorTypes} from '../../data/armorTypes.js' | ||||
| import MarkdownIt from 'markdown-it' | ||||
|  | @ -508,6 +510,14 @@ export default { | |||
| 
 | ||||
|   mounted () { | ||||
|     //console.log(this.$page) | ||||
|     setTimeout(function () { | ||||
|       handleTooltips() | ||||
|     }, 100); | ||||
|     this.$router.afterEach(() => { | ||||
|       setTimeout(function () { | ||||
|         handleTooltips() | ||||
|       }, 100) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -7,9 +7,20 @@ | |||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { handleTooltips } from '@theme/util' | ||||
| export default { | ||||
|   name: 'Page', | ||||
|   components: { } | ||||
|   components: { }, | ||||
|   mounted () { | ||||
|     setTimeout(function () { | ||||
|       handleTooltips() | ||||
|     }, 100); | ||||
|     this.$router.afterEach(() => { | ||||
|       setTimeout(function () { | ||||
|         handleTooltips() | ||||
|       }, 100) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
|  |  | |||
|  | @ -41,6 +41,7 @@ | |||
| <script> | ||||
| import { displaySchoolLevel } from '@theme/util/spellHelpers' | ||||
| import MarkdownIt from 'markdown-it' | ||||
| import { handleTooltips } from '@theme/util' | ||||
| 
 | ||||
| export default { | ||||
|   name: 'Spell', | ||||
|  | @ -61,6 +62,14 @@ export default { | |||
| 
 | ||||
|   mounted () { | ||||
|     // console.log(this.spell) | ||||
|     setTimeout(function () { | ||||
|       handleTooltips() | ||||
|     }, 100); | ||||
|     this.$router.afterEach(() => { | ||||
|       setTimeout(function () { | ||||
|         handleTooltips() | ||||
|       }, 100) | ||||
|     }) | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -29,8 +29,8 @@ | |||
|         <v-btn color="primary" class="d-print-none" fab bottom right fixed @click="toTop" v-show="toTopButton" v-scroll="onScroll"> | ||||
|           <v-icon class="d-print-none">mdi-chevron-up</v-icon> | ||||
|         </v-btn> | ||||
|     </v-fab-transition> | ||||
|   </v-main> | ||||
|       </v-fab-transition> | ||||
|     </v-main> | ||||
| 
 | ||||
|     <v-bottom-sheet v-model="cookieConsentDialog" hide-overlay> | ||||
|       <v-sheet class="" tile> | ||||
|  | @ -64,6 +64,13 @@ | |||
|       </v-card> | ||||
|     </v-dialog> | ||||
| 
 | ||||
|     <div id="tooltip"> | ||||
|       <div id="tooltip-title" class="tooltip-title"> | ||||
|       </div> | ||||
|       <div id="tooltip-content" class="tooltip-content"> | ||||
|       </div> | ||||
|     </div> | ||||
| 
 | ||||
|   </v-app> | ||||
| </template> | ||||
| 
 | ||||
|  | @ -74,6 +81,7 @@ import NavDrawer from '@theme/components/NavDrawer.vue' | |||
| import RightDrawer from '@theme/components/RightDrawer.vue' | ||||
| import Vue from 'vue' | ||||
| import Cookies from 'js-cookie' | ||||
| import { tooltips } from '../../data/ruleTooltips.js' | ||||
| 
 | ||||
| export default { | ||||
|   name: 'GlobalLayout', | ||||
|  | @ -188,7 +196,7 @@ export default { | |||
|       setTimeout(function () { | ||||
|         self.hintCopied = '' | ||||
|       }, 2000) | ||||
|     } | ||||
|     }, | ||||
|   } | ||||
| } | ||||
| </script> | ||||
|  |  | |||
|  | @ -1,3 +1,40 @@ | |||
| #tooltip { | ||||
|   position: absolute; | ||||
|   display: none; | ||||
|   z-index: 1000; | ||||
| 
 | ||||
|   text-align: left; | ||||
|   width: 50vw; | ||||
|   max-width: 555px; | ||||
|   min-width: 350px; | ||||
|   background-color: #fff; | ||||
|   color: #555; | ||||
|   box-shadow: 0 0 12px #333; | ||||
|   border-radius: 5px; | ||||
| 
 | ||||
|   .tooltip-title { | ||||
|     background-color: $color-hero; | ||||
|     &.tooltip-spell { | ||||
|       background-color: $color-dragon; | ||||
|     } | ||||
|     // &.tooltip-condition { | ||||
|     // } | ||||
|     color: #fff; | ||||
|     font-family: 'Oswald', sans-serif; | ||||
|     font-weight: bold; | ||||
|     padding: 12px; | ||||
|     border-radius: 5px 5px 0 0; | ||||
|   } | ||||
| 
 | ||||
|   .tooltip-content { | ||||
|     padding: 12px; | ||||
|     ul { | ||||
|       margin: 0; | ||||
|       padding: 0 0 0 15px; | ||||
|     } | ||||
|   } | ||||
| } | ||||
| 
 | ||||
| .v-tooltip__content { | ||||
|   &.spell-tooltip-container, | ||||
|   &.condition-tooltip-container { | ||||
|  |  | |||
|  | @ -262,3 +262,57 @@ export function isResourceInLibrary (resource, library) { | |||
|   } | ||||
|   return false | ||||
| } | ||||
| 
 | ||||
| /* | ||||
| ** Handles rule tooltips like conditions | ||||
| */ | ||||
| import { tooltips } from '../../data/ruleTooltips.js' | ||||
| export function handleTooltips (component) { | ||||
|   if (!component) { | ||||
|     component = document | ||||
|   } | ||||
|   // Gestion des tooltips
 | ||||
|   let tooltip = document.getElementById('tooltip') | ||||
|   let tooltipTitle = document.getElementById('tooltip-title') | ||||
|   let tooltipContent = document.getElementById('tooltip-content') | ||||
|   window.onmousemove = function (e) { | ||||
|     var x = e.pageX + 20, | ||||
|         y = e.pageY + 20; | ||||
| 
 | ||||
|     tooltip.style.top = y + 'px'; | ||||
|     tooltip.style.left = x + 'px'; | ||||
| 
 | ||||
|     // Get calculated tooltip coordinates and size
 | ||||
|     var tooltip_rect = tooltip.getBoundingClientRect(); | ||||
|     // Corrections if out of window
 | ||||
|     if ((tooltip_rect.x + tooltip_rect.width) > window.innerWidth) // Out on the right
 | ||||
|       x = x - tooltip_rect.width - 20;  // Simulate a "right: tipX" position
 | ||||
|     if ((tooltip_rect.y + tooltip_rect.height) > window.innerHeight) // Out on the bottom
 | ||||
|       y = y - tooltip_rect.height - 20; // Align on the bottom
 | ||||
| 
 | ||||
|     // Apply corrected position
 | ||||
|     tooltip.style.top = y + 'px'; | ||||
|     tooltip.style.left = x + 'px'; | ||||
|   } | ||||
|   // Arborescence des liens
 | ||||
|   let links = component.querySelectorAll("a") | ||||
|   for (var l of links) { | ||||
|     let hash = l.hash.replace('#', '') | ||||
|     if (hash != "" && tooltips[hash]) { | ||||
|       l.addEventListener("mouseover", function( event ) { | ||||
|         tooltipTitle.innerHTML = tooltips[hash].title | ||||
|         let tcontent = '<ul>' | ||||
|         for (var d of tooltips[hash].description) { | ||||
|           tcontent += '<li>' + d + '</li>' | ||||
|         } | ||||
|         tcontent += '</ul>' | ||||
|         tooltipContent.innerHTML = tcontent | ||||
|         tooltip.style.display = 'block' | ||||
|       }, false); | ||||
| 
 | ||||
|       l.addEventListener("mouseout", function( event ) { | ||||
|         tooltip.style.display = 'none' | ||||
|       }, false); | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Maxime Moraine
						Maxime Moraine