UNPKG

rez-table-listing-mui

Version:

A rez table listing component built on TanStack Table

106 lines (92 loc) 3.11 kB
import { Column } from "@tanstack/react-table"; import { alignProps } from "../../types/common"; import { CSSProperties } from "react"; import axios from "axios"; export const formatClassName = (className: string): string => { return className.replace(/\s+/g, " ").trim(); }; export const getColumnAlignment = (align: string) => { const contentAlignment = { left: "flex-start", center: "center", right: "flex-end", }; const alignment = contentAlignment[(align as alignProps) || "left"]; return alignment; }; export const getColumnPinningStyles = <T>(column: Column<T>): CSSProperties => { const isPinned = column.getIsPinned(); const isLastLeftPinnedColumn = isPinned === "left" && column.getIsLastColumn("left"); const isFirstRightPinnedColumn = isPinned === "right" && column.getIsFirstColumn("right"); return { boxShadow: isLastLeftPinnedColumn ? "-4px 0 4px -4px gray inset" : isFirstRightPinnedColumn ? "4px 0 4px -4px gray inset" : undefined, background: "inherit", left: isPinned === "left" ? `${column.getStart("left")}px` : undefined, right: isPinned === "right" ? `${column.getAfter("right")}px` : undefined, position: isPinned ? "sticky" : "relative", width: column.getSize(), }; }; export const getColumnPinningStylesBody = <T>( column: Column<T> ): CSSProperties => { const isPinned = column.getIsPinned(); const isLastLeftPinnedColumn = isPinned === "left" && column.getIsLastColumn("left"); const isFirstRightPinnedColumn = isPinned === "right" && column.getIsFirstColumn("right"); return { boxShadow: isLastLeftPinnedColumn ? "-4px 0 4px -4px gray inset" : isFirstRightPinnedColumn ? "4px 0 4px -4px gray inset" : undefined, background: "inherit", left: isPinned === "left" ? `${column.getStart("left")}px` : undefined, right: isPinned === "right" ? `${column.getAfter("right")}px` : undefined, position: isPinned ? "sticky" : "relative", width: column.getSize(), }; }; export function customDebounce<T extends (...args: any[]) => any>( func: T, delay: number ): (...args: Parameters<T>) => void { let timerId: ReturnType<typeof setTimeout> | null = null; return function (this: ThisParameterType<T>, ...args: Parameters<T>): void { if (timerId) clearTimeout(timerId); timerId = setTimeout(() => { func.apply(this, args); }, delay); }; } //ENTITY TYPE export const ENTITY_TYPE = "NTM"; // uat http://13.200.182.92:4010/api // local http://localhost:4010/api // API INTEGRATION export const api = axios.create({ baseURL: "http://localhost:6010/api", timeout: 10000, headers: { "Content-Type": "application/json", }, }); api.interceptors.request.use( (config) => { const token = localStorage.getItem("authToken"); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }, (error) => { return Promise.reject(error); } );