@ -3,6 +3,7 @@
Popover,
Popover,
type PopoverSize
type PopoverSize
} from '$uix/eidos/components/popover';
} from '$uix/eidos/components/popover';
import type { MotionPresetName } from '$uix/eidos/lib/motion/registry';
import { compileMorfo } from '$uix/morfo';
import { compileMorfo } from '$uix/morfo';
import { popoverMorfo } from '@/uix/morfo/components/popover';
import { popoverMorfo } from '@/uix/morfo/components/popover';
import { getActiveUix } from '$active-uix';
import { getActiveUix } from '$active-uix';
@ -19,6 +20,7 @@
let open = $state(false);
let open = $state(false);
let modal = $state(false);
let modal = $state(false);
let size = $state< PopoverSize > ('md');
let size = $state< PopoverSize > ('md');
let motion = $state< MotionPresetName > ('spring-pop');
let side = $state< Side > ('bottom');
let side = $state< Side > ('bottom');
let sideOffset = $state(8);
let sideOffset = $state(8);
let align = $state< Align > ('center');
let align = $state< Align > ('center');
@ -120,6 +122,7 @@
showOverlay & & ' < Popover.Overlay / > ',
showOverlay & & ' < Popover.Overlay / > ',
' < Popover.Content ' ,
' < Popover.Content ' ,
size !== 'md' && ` size="${ size } "`,
size !== 'md' && ` size="${ size } "`,
motion !== 'slide-fade' && ` motion="${ motion } "`,
side !== 'bottom' && ` side="${ side } "`,
side !== 'bottom' && ` side="${ side } "`,
align !== 'center' && ` align="${ align } "`,
align !== 'center' && ` align="${ align } "`,
' >',
' >',
@ -176,7 +179,7 @@
>{ triggerLabel } </ Popover.Trigger >
>{ triggerLabel } </ Popover.Trigger >
< Popover.Portal >
< Popover.Portal >
{ #if showOverlay } < Popover.Overlay /> { /if }
{ #if showOverlay } < Popover.Overlay /> { /if }
< Popover.Content { size } { side} { sideOffset } { align } { alignOffset } { avoidCollisions } >
< Popover.Content { size } { motion} { side} { sideOffset } { align } { alignOffset } { avoidCollisions } >
{ #if showArrow } < Popover.Arrow /> { /if }
{ #if showArrow } < Popover.Arrow /> { /if }
< p style = "margin: 0 0 var(--uix-space-3) 0;" > { bodyText } </ p >
< p style = "margin: 0 0 var(--uix-space-3) 0;" > { bodyText } </ p >
{ #if showClose }
{ #if showClose }
@ -264,6 +267,14 @@
{ /each }
{ /each }
< / span >
< / span >
< / label >
< / label >
< label data-uix-control >
< span data-uix-control-label > motion < span data-uix-control-hint > Content prop · spring-pop = JS spring engine< / span > < / span >
< span data-uix-chips role = "radiogroup" >
{ #each [ 'slide-fade' , 'scale-fade' , 'fade' , 'spring-pop' ] as m }
< button data-uix-chip data-active = { motion === m } onclick= {() => ( motion = m as MotionPresetName )} > { m } </ button >
{ /each }
< / span >
< / label >
< label data-uix-control >
< label data-uix-control >
< span data-uix-control-label > sideOffset < span data-uix-control-hint > { sideOffset } px</ span ></ span >
< span data-uix-control-label > sideOffset < span data-uix-control-hint > { sideOffset } px</ span ></ span >
< input type = "range" min = "0" max = "32" step = "1" bind:value = { sideOffset } / >
< input type = "range" min = "0" max = "32" step = "1" bind:value = { sideOffset } / >