Skip to main content

Hooks and Utils

Following utils can be imported from @findkit/ui for slot component usage.

Functions starting with the use keyword are Preact hooks.

useParams()​

Slot override hook version of updateParams.

Example

import { FindkitUI, html, useInput } from "@findkit/ui";

const ui = new FindkitUI({
publicToken: "<TOKEN>",
slots: {
Header(props) {
const [params, setParams] = useParams();
const checked = params.filter.tags === "crawler";

return html`
${props.children}
<label>
<input
type="checkbox"
checked=${checked}
onChange=${() => {
setParams((params) => {
if (checked) {
params.filter.tags = "crawler";
} else {
delete params.filter.tags;
}
});
}}
/>
Limit results with tag "crawler"
</label>
`;
},
},
});
api docs

useGroups()​

Slot override Hook version of updateGroups.

Example

const [groups, setGroups] = useGroups();

const onClick = () => {
setGroups((group1, groups2 /* ...groups */) => {
group1.title = "new title";
group2.params.filter.tags = "crawler";
});
};
api docs

useTerms()​

Return the search terms used for the current search results.

api docs

useInput()​

Hook for binding custom inputs as the search terms inputs. Usually used in the Header slot to override the default search input with a fully custom one

import { FindkitUI, html, useInput } from "@findkit/ui";

const ui = new FindkitUI({
publicToken: "<TOKEN>",
slots: {
Header(props) {
const ref = useInput();
return html`<input type="text" ref=${ref} />`;
},
},
});
api docs

useTotalHitCount()​

Return total hit count. Includes count from all groups if multiple groups are used.

api docs

useLoading()​

Delayed loading event as a hook. Return true when a network requet is taking longer than usual. Use to to implement custom loading indicators in a slot overrides.

api docs

useLang()​

Return the current UI language. Can be used to implement custom ui string translations on slot overrides. See setLang.

api docs

useTranslate()​

New in v0.19.0

Get the translation function. Can render existing translations but it can also render custom translations. See also addTranslation

import { FindkitUI, useTranslate } from "@findkit/ui";

const ui = new FindkitUI({
publicToken: "<TOKEN>",
slots: {
Header(props) {
const t = useTranslate();
return html`${t("greet", { name: "Matt" })}`;
},
},
});

ui.addTranslation(
"en",
{}, // Override build-in translations
{ // Custom translations
greet: "Hello {{name}}!",
},
);

When using Typescript the translation key is constrained to the internal keys. Use type argument to widen it.

const t = useTranslate<"greet" | "another">();
api docs

useCustomRouterData()​

New in v0.16.0

Preact Hook version of the setCustomRouterData method. Works like useState but the value must be a flat object of string values. Eg. {[key: string]: string}

import { FindkitUI, html, useCustomRouterData, useParams } from "@findkit/ui";

const ui = new FindkitUI({
publicToken: "<TOKEN>",
slots: {
Header(props) {
const [data, setData] = useCustomRouterData({ value: "yes" });
const [params, setParams] = useParams();

const onClick = () => {
setData((data) => {
if (data.value === "yes") {
data.value = "no";
} else {
data.value = "yes";
}
});

// Update search params
updateParams(/* ... */);
};

return html`
<button type="button" onClick=${onClick}>${data.value}</button>
`;
},
},
});
api docs

useResults()​

New in v0.20.0

Access the search results by groups. Returns an array of GroupResults objects. If you are not using groups just use the first item in the array: const results = useResults()[0].

preact​

Object of commonly used Preact Hooks. See the api docs for details.

api docs

html​

Prebound HTM (Hyperscript Tagged Markup) tagged template. For more information see: https://github.com/developit/htm

api docs

h​

The Preact JSX pragma

api docs