The library flowbite-svelte
has component Popover
with open
property. The property changing by click on button. In order to control external event listener (no in example) I need to know current value of open
property. How to get it?
I tried to use open=
and bind:open=
, but buth undefined
when button clicked.
<script>
import { onMount } from 'svelte'
import { Popover } from 'flowbite-svelte'
let popover
let isOpen
onMount(() => {
popover.$on('show', () => {
console.log(popover.open) // undefined
console.log(isOpen) // undefined
})
})
</script>
<button>Click</button>
<Popover
<!-- open={isOpen} or bind:open={isOpen} -->
bind:this={popover}
trigger="click">
Some content
</Popover>
I found solution via debugging. When show
event occurs, callback has this
with popover instance. Inside this.$$.ctx
stored values by index from this.$$.props
.
<script>
import { onMount } from 'svelte'
import { Popover } from 'flowbite-svelte'
let popover
onMount(() => {
popover.$on('show', onPopoverOpenChanged)
})
function onPopoverOpenChanged() {
let indexPropOpen = this.$$.props.open
let isOpen = this.$$.ctx[indexPropOpen]
if (isOpen) {
} else {
}
}
</script>
<button>Click</button>
<Popover
bind:this={popover}
trigger="click">
Some content
</Popover>