@premieroctet/next-admin
Version:
Next-Admin provides a customizable and turnkey admin dashboard for applications built with Next.js and powered by the Prisma ORM. It aims to simplify the development process by providing a turnkey admin system that can be easily integrated into your proje
41 lines (40 loc) • 1.3 kB
JavaScript
import { useState } from "react";
import { useConfig } from "../context/ConfigContext.mjs";
import { useI18n } from "../context/I18nContext.mjs";
import { buildQueryBlocks, buildUIBlocks, validateQuery } from "../utils/advancedSearch.mjs";
import { useRouterInternal } from "./useRouterInternal.mjs";
const useAdvancedSearch = ({ resource, schema })=>{
const { router, query } = useRouterInternal();
const { options } = useConfig();
const { t } = useI18n();
const [uiBlocks, setUiBlocks] = useState(()=>{
if (query.q) {
const blocks = validateQuery(query.q);
if (!blocks) return null;
return buildUIBlocks(blocks, {
resource,
schema,
options: options?.model,
t
});
}
});
const submitSearch = ()=>{
if (uiBlocks?.length) router.setQuery({
q: JSON.stringify(buildQueryBlocks(uiBlocks, {
resource,
schema
}))
}, true);
else router.setQuery({
q: null
}, true);
};
return {
uiBlocks,
setUiBlocks,
submitSearch
};
};
const hooks_useAdvancedSearch = useAdvancedSearch;
export { hooks_useAdvancedSearch as default };