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