kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
				
				
				
			feat(ui): delay closing of Popover
							rodzic
							
								
									c6937c31d8
								
							
						
					
					
						commit
						a90bd4bf33
					
				| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
<script setup lang="ts">
 | 
			
		||||
import { computed, ref, inject, provide, shallowReactive, watch, onScopeDispose } from 'vue'
 | 
			
		||||
import { whenever, useElementBounding, onClickOutside } from '@vueuse/core'
 | 
			
		||||
import { whenever, useElementBounding, onClickOutside, refDebounced } from '@vueuse/core'
 | 
			
		||||
 | 
			
		||||
import { isMobileView, useScreenSize } from '~/composables/screen'
 | 
			
		||||
import { POPOVER_INJECTION_KEY, POPOVER_CONTEXT_INJECTION_KEY } from '~/injection-keys'
 | 
			
		||||
| 
						 | 
				
			
			@ -13,6 +13,8 @@ import { type ColorProps, type DefaultProps, type RaisedProps, color } from '~/c
 | 
			
		|||
*/
 | 
			
		||||
 | 
			
		||||
const isOpen = defineModel<boolean>({ default: false })
 | 
			
		||||
// Delay closing by 300ms
 | 
			
		||||
const isOpenDelayed = refDebounced(isOpen, () => isOpen.value ? 0 : 300)
 | 
			
		||||
 | 
			
		||||
const { positioning = 'vertical', ...colorProps } = defineProps<{
 | 
			
		||||
  positioning?:'horizontal' | 'vertical'
 | 
			
		||||
| 
						 | 
				
			
			@ -136,7 +138,7 @@ watch(isOpen, (isOpen) => {
 | 
			
		|||
  </div>
 | 
			
		||||
 | 
			
		||||
  <teleport
 | 
			
		||||
    v-if="isOpen"
 | 
			
		||||
    v-if="isOpenDelayed"
 | 
			
		||||
    to="body"
 | 
			
		||||
  >
 | 
			
		||||
    <div
 | 
			
		||||
| 
						 | 
				
			
			@ -152,7 +154,10 @@ watch(isOpen, (isOpen) => {
 | 
			
		|||
        v-bind="color(colorProps)()"
 | 
			
		||||
        style="display:flex; flex-direction:column;"
 | 
			
		||||
      >
 | 
			
		||||
        <slot name="items" />
 | 
			
		||||
        <slot
 | 
			
		||||
          name="items"
 | 
			
		||||
          :close="() => isOpen = false"
 | 
			
		||||
        />
 | 
			
		||||
      </div>
 | 
			
		||||
    </div>
 | 
			
		||||
  </teleport>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Ładowanie…
	
		Reference in New Issue