Skip to Content
DocumentationControlled Mode

Controlled Mode Example

Full control over the picker state.

Demo

State:Closed

Code

ControlledExample.tsx
import { useState } from 'react'; import { MediaPicker } from '@koo-labs/media-picker'; import '@koo-labs/media-picker/styles.css'; export default function ControlledExample() { const [isOpen, setIsOpen] = useState(false); const [media, setMedia] = useState(null); return ( <div> <button onClick={() => setIsOpen(true)}> Open Picker </button> <span>State: {isOpen ? 'Open' : 'Closed'}</span> <MediaPicker open={isOpen} onOpenChange={setIsOpen} onSelect={(m) => { setMedia(Array.isArray(m) ? m[0] : m); setIsOpen(false); }} onCancel={() => setIsOpen(false)} /> {media && ( <img src={media.src.medium} alt={media.alt} /> )} </div> ); }

Controlled Props

PropTypeDescription
openbooleanControl the open state
onOpenChange(open: boolean) => voidCalled when open state should change
onSelect(media: Media[]) => voidCalled when selection is confirmed
onCancel() => voidCalled when picker is cancelled

Use Cases

  • Persist selection across sessions
  • Implement custom open/close triggers
  • Sync selection with form state
  • Preview selected items outside the picker