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

54 lines (53 loc) 1.88 kB
import { useLocation, useNavigate, useRevalidator } from "@remix-run/react"; import { useMemo } from "react"; import { createNextAdminComponents } from "./components.mjs"; import { createRouterAdapter } from "./context.mjs"; const useRemixRouterAdapter = ()=>{ const location = useLocation(); const navigate = useNavigate(); const revalidator = useRevalidator(); const pathname = location.pathname; const query = useMemo(()=>new URLSearchParams(location.search), [ location.search ]); const push = (params)=>{ navigate({ pathname: params.pathname, search: params.query ? new URLSearchParams(params.query).toString() : void 0 }); }; const replace = (params)=>{ navigate({ pathname: params.pathname, search: params.query ? new URLSearchParams(params.query).toString() : void 0 }, { replace: true }); }; const refresh = ()=>{ revalidator.revalidate(); }; const setQuery = (queryArg, merge = false)=>{ const currentQuery = Object.fromEntries(query); const newQuery = merge ? { ...currentQuery, ...queryArg } : queryArg; const searchParams = new URLSearchParams(); for (const [key, value] of Object.entries(newQuery))if (value) searchParams.set(key, value); window.location.search = searchParams.toString(); }; return { router: { push, replace, refresh, setQuery }, pathname, query: Object.fromEntries(query) }; }; const NextAdminRouterAdapter = createRouterAdapter(useRemixRouterAdapter); const { NextAdmin, MainLayout } = createNextAdminComponents(NextAdminRouterAdapter); export { MainLayout, NextAdmin, NextAdminRouterAdapter, useRemixRouterAdapter };