import { createEffect, createSignal, untrack, type JSX } from "solid-js";
import type { SearchPanelDom } from "../../eh";
import texts from "../../i18n";
import { DomNode } from "../Widgets/ExternalDom";
import { Icon } from "../Widgets/Icon";
const TOUCH_SEARCH_OPTION_CLASS =
"appearance-none inline-flex ui-hit-min-h-sm items-center ui-px-md border-0 ui-rounded-sm bg-transparent ehp-color-site-accent text-left textsize-md font-700 font-inherit leading-[1.2] no-underline cursor-pointer [touch-action:manipulation] active:bg-[var(--color-site-accent-hover)]";
const TOUCH_SEARCH_ACTION_CLASS =
"appearance-none inline-flex box-border w-[var(--ui-control-size-xl)] h-[var(--ui-control-size-xl)] items-center justify-center p-0 ui-rounded-sm border-0 bg-transparent cursor-pointer transition-[background-color,transform] duration-120 [touch-action:manipulation] active:(scale-96 bg-[var(--color-site-item-hover)]) [--ehpeek-touch-search-icon-size:var(--ui-icon-size-lg)]";
export function TouchSearchPanel(props: { after?: JSX.Element; source: SearchPanelDom }) {
return (
);
}
export function TouchSearchCategoryToggle(props: { source: SearchPanelDom }) {
const [open, setOpen] = createSignal(false);
createEffect(() => props.source.handle.updateCategoryVisibility(open()));
return setOpen((value) => !value)} />;
}
export function TouchSearchOptionToggle(props: {
option: "advancedOptions" | "fileSearch";
source: SearchPanelDom;
}) {
const [open, setOpen] = createSignal(false);
const toggle = () => {
if (props.option === "advancedOptions") {
props.source.handle.toggleAdvancedOptions();
} else {
props.source.handle.toggleFileSearch();
}
setOpen((value) => !value);
};
return ;
}
function ToggleButton(props: { expanded: boolean; label: string; onClick: () => void }) {
return (
);
}
export function TouchSearchAction(props: { action: "search" | "clear"; source: SearchPanelDom }) {
const source = untrack(() => props.source);
const search = untrack(() => props.action === "search");
const label = search ? source.data.searchLabel : source.data.clearLabel ?? "";
return (
);
}