(props: {
isOpen: Accessor<boolean>
setIsOpen: (isOpen: boolean) => void
})
| 6 | import type { Accessor } from 'solid-js' |
| 7 | |
| 8 | export const Trigger = (props: { |
| 9 | isOpen: Accessor<boolean> |
| 10 | setIsOpen: (isOpen: boolean) => void |
| 11 | }) => { |
| 12 | const { settings } = createDevtoolsSettings() |
| 13 | const [containerRef, setContainerRef] = createSignal<HTMLElement>() |
| 14 | const styles = createStyles() |
| 15 | const buttonStyle = createMemo(() => { |
| 16 | return clsx( |
| 17 | styles().mainCloseBtn, |
| 18 | styles().mainCloseBtnPosition(settings().position), |
| 19 | styles().mainCloseBtnAnimation(props.isOpen(), settings().hideUntilHover), |
| 20 | ) |
| 21 | }) |
| 22 | |
| 23 | createEffect(() => { |
| 24 | const triggerComponent = settings().customTrigger |
| 25 | const el = containerRef() |
| 26 | if (triggerComponent && el) { |
| 27 | triggerComponent(el, { |
| 28 | theme: settings().theme, |
| 29 | }) |
| 30 | } |
| 31 | }) |
| 32 | |
| 33 | return ( |
| 34 | <Show when={!settings().triggerHidden}> |
| 35 | <button |
| 36 | type="button" |
| 37 | aria-label="Open TanStack Devtools" |
| 38 | class={buttonStyle()} |
| 39 | onClick={() => props.setIsOpen(!props.isOpen())} |
| 40 | > |
| 41 | <Show |
| 42 | when={settings().customTrigger} |
| 43 | fallback={<img src={TanStackLogo} alt="TanStack Devtools" />} |
| 44 | > |
| 45 | <div ref={setContainerRef} /> |
| 46 | </Show> |
| 47 | </button> |
| 48 | </Show> |
| 49 | ) |
| 50 | } |
no test coverage detected