import { createSignal, Show, type JSX, Component } from 'solid-js'; import Cog6Tooth from 'heroicons/24/outline/cog-6-tooth.svg'; import Plus from 'heroicons/24/outline/plus.svg'; import MagnifyingGlass from 'heroicons/24/solid/magnifying-glass.svg'; import PencilSquare from 'heroicons/24/solid/pencil-square.svg'; import Config from '@/components/modal/Config'; import NotePostForm from '@/components/NotePostForm'; import Popup, { PopupRef } from '@/components/utils/Popup'; import { createSearchColumn } from '@/core/column'; import useConfig from '@/core/useConfig'; import { useHandleCommand, useRequestCommand } from '@/hooks/useCommandBus'; import useModalState from '@/hooks/useModalState'; import resolveAsset from '@/utils/resolveAsset'; const SearchButton = () => { let popupRef: PopupRef | undefined; let inputRef: HTMLInputElement | undefined; const { saveColumn } = useConfig(); const request = useRequestCommand(); const [query, setQuery] = createSignal(''); const handleSearchSubmit: JSX.EventHandler = (ev) => { ev.preventDefault(); saveColumn(createSearchColumn({ query: query() })); request({ command: 'moveToLastColumn' }).catch((err) => console.error(err)); popupRef?.close(); setQuery(''); }; return ( { popupRef = r; }} position="right" button={ } onOpen={() => inputRef?.focus()} >
setQuery(ev.currentTarget.value)} />
); }; const SideBar: Component = () => { let textAreaRef: HTMLTextAreaElement | undefined; const { showAddColumn, showAbout } = useModalState(); const { config } = useConfig(); const [formOpened, setFormOpened] = createSignal(false); const [configOpened, setConfigOpened] = createSignal(false); const focusTextArea = () => { textAreaRef?.focus(); textAreaRef?.click(); }; const openForm = () => setFormOpened(true); const closeForm = () => setFormOpened(false); const toggleForm = () => setFormOpened((current) => !current); useHandleCommand(() => ({ commandType: 'openPostForm', handler: () => { openForm(); if (textAreaRef != null) { setTimeout(() => focusTextArea(), 100); } }, })); return (
{ textAreaRef = el; }} onClose={closeForm} />
setConfigOpened(false)} />
); }; export default SideBar;