rez-table-listing-mui
Version:
A rez table listing component built on TanStack Table
106 lines (92 loc) • 3.11 kB
text/typescript
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);
}
);