UNPKG

@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
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 };