raw-auto-table-zod 0.0.2 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auto-table/utils/ComponentRegistryHelper.d.ts +1 -2
- package/dist/auto-table/utils/FieldChanger.d.ts +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
- package/dist/auto-table/enums/enums.d.ts +0 -11
@@ -1,3 +1,2 @@
|
|
1
1
|
import type { AutoTableComponentContextType } from "../types/base-components";
|
2
|
-
declare const ComponentRegistryHelper: (props: AutoTableComponentContextType) => AutoTableComponentContextType;
|
3
|
-
export default ComponentRegistryHelper;
|
2
|
+
export declare const ComponentRegistryHelper: (props: AutoTableComponentContextType) => AutoTableComponentContextType;
|
@@ -6,7 +6,7 @@ interface FieldChangerProps {
|
|
6
6
|
addValueTextBefore?: string;
|
7
7
|
randomData?: Record<string, any>;
|
8
8
|
}
|
9
|
-
export
|
9
|
+
export declare function FieldCustomizer(props: FieldChangerProps): string;
|
10
10
|
export declare const decodeFieldCustomizer: (fieldCustomizer: string) => {
|
11
11
|
decodeData: FieldChangerProps | null;
|
12
12
|
description: string | null;
|
package/dist/index.d.ts
CHANGED
@@ -122,11 +122,14 @@ interface FieldChangerProps {
|
|
122
122
|
addValueTextBefore?: string;
|
123
123
|
randomData?: Record<string, any>;
|
124
124
|
}
|
125
|
+
declare function FieldCustomizer(props: FieldChangerProps): string;
|
125
126
|
declare const decodeFieldCustomizer: (fieldCustomizer: string) => {
|
126
127
|
decodeData: FieldChangerProps | null;
|
127
128
|
description: string | null;
|
128
129
|
success: boolean;
|
129
130
|
};
|
130
131
|
|
131
|
-
|
132
|
+
declare const ComponentRegistryHelper: (props: AutoTableComponentContextType) => AutoTableComponentContextType;
|
133
|
+
|
134
|
+
export { AutoTableComponentsProvider, ComponentRegistryHelper, FieldCustomizer, RawAutoTable, decodeFieldCustomizer };
|
132
135
|
export type { AutoTableComponentContextType, ExtraColumnConfig, GenerateColumns, InsertAfterColumn, RawAutoTableProps, TableBooleanComponentType, TableDateComponentType, TableEnumComponentType, TableImageComponentType, TableMultiBooleanComponentType, TableMultiDateComponentType, TableMultiEnumComponentType, TableMultiNumberComponentType, TableMultiStringComponentType, TableNumberComponentType, TableTextComponentType, TableType, Table_TBody_Type, Table_TD_Type, Table_TH_Type, Table_THead_Type, Table_TR_Type };
|
package/dist/index.js
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
"use strict";var e=require("react/jsx-runtime"),n=require("react"),t=require("@tanstack/react-table"),r=require("zod-helper");const a={text:({value:n})=>e.jsx(e.Fragment,{children:n}),number:({value:n})=>e.jsx(e.Fragment,{children:n}),enum:({value:n})=>e.jsx(e.Fragment,{children:n}),image:({value:n})=>e.jsx(e.Fragment,{children:n}),date:({value:n})=>e.jsx(e.Fragment,{children:n}),boolean:({value:n})=>e.jsx(e.Fragment,{children:n}),Table:n=>e.jsx("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e.jsx("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e.jsx("td",{...t,children:n}),TableTH:({children:n,...t})=>e.jsx("th",{...t,children:n}),TableTHead:({children:n,...t})=>e.jsx("thead",{...t,children:n}),TableTR:({children:n,...t})=>e.jsx("tr",{...t,children:n}),multi_enum:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_string:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_number:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_date:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_boolean:({value:n})=>e.jsx(e.Fragment,{children:n})},
|
1
|
+
"use strict";var e=require("react/jsx-runtime"),n=require("react"),t=require("@tanstack/react-table"),r=require("zod-helper");const a={text:({value:n})=>e.jsx(e.Fragment,{children:n}),number:({value:n})=>e.jsx(e.Fragment,{children:n}),enum:({value:n})=>e.jsx(e.Fragment,{children:n}),image:({value:n})=>e.jsx(e.Fragment,{children:n}),date:({value:n})=>e.jsx(e.Fragment,{children:n}),boolean:({value:n})=>e.jsx(e.Fragment,{children:n}),Table:n=>e.jsx("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e.jsx("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e.jsx("td",{...t,children:n}),TableTH:({children:n,...t})=>e.jsx("th",{...t,children:n}),TableTHead:({children:n,...t})=>e.jsx("thead",{...t,children:n}),TableTR:({children:n,...t})=>e.jsx("tr",{...t,children:n}),multi_enum:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_string:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_number:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_date:({value:n})=>e.jsx(e.Fragment,{children:n}),multi_boolean:({value:n})=>e.jsx(e.Fragment,{children:n})},s=n.createContext(a),useComponentContext=()=>n.useContext(s);const decodeFieldCustomizer=e=>{try{return{decodeData:JSON.parse(e),description:null,success:!0}}catch{return{decodeData:null,description:e,success:!1}}};function useAutoTableData({schema:a,replaceColumns:s=[],data:l,changePositionOfFields:o,extraCustomColumns:i=[]}){const c=((n,t,r)=>{const a=useComponentContext(),s=new Map;for(const e of t)"accessorKey"in e&&"string"==typeof e.accessorKey&&s.set(e.accessorKey,e);const l=n.map((n=>{const t=n.key;if(s.has(t))return s.get(t);const r=(e=>{switch(e){case"date":return"date";case"enum":return"enum";case"image":return"image";case"number":return"number";case"string":return"text";case"boolean":return"boolean";case"multi-string":return"multi_string";case"multi-number":return"multi_number";case"multi-date":return"multi_date";case"multi-boolean":return"multi_boolean";case"multi-enum":return"multi_enum"}})(n.type),l=a[r],{decodeData:o}=decodeFieldCustomizer(n.description??"");return{header:(i=o?.isChangeLabel?o.label??t:t,i.split(".").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),accessorKey:t,cell:({getValue:r,row:a})=>{const s=r(),i=a.original;let c=s;return s instanceof Date&&(c=s.toISOString()),l?e.jsx(l,{value:c,rawData:i,defaultValue:n.enums,title:t,description:n.description,...o}):s instanceof Date?e.jsx(e.Fragment,{children:s.toISOString()}):e.jsx(e.Fragment,{children:JSON.stringify(s)})}};var i}));for(const e of t){const t="accessorKey"in e&&"string"==typeof e.accessorKey?e.accessorKey:void 0;t&&!n.some((e=>e.key===t))&&l.push(e)}if(r&&r.length>0)for(const e of r){const[n,t=null]=e.insertPosition?.split(":")??[];n&&t?"before"===t?l.splice(l.findIndex((e=>e.accessorKey===n)),0,e):"after"===t?l.splice(l.findIndex((e=>e.accessorKey===n))+1,0,e):l.push(e):l.push(e)}return l})(n.useMemo((()=>{const e=new r.ZodTableClassed(a);return o&&e.changeJsonFieldPositions(o),{columns:e.convertToTableUseableFormat()}}),[o,a]).columns,s,i);return{table:t.useReactTable({data:l,columns:c,getCoreRowModel:t.getCoreRowModel()}),Component:useComponentContext()}}exports.AutoTableComponentsProvider=({children:n,components:t})=>{const r={...a,...t};return e.jsx(s.Provider,{value:r,children:n})},exports.ComponentRegistryHelper=e=>e,exports.FieldCustomizer=function FieldCustomizer(e){return JSON.stringify({custom:!0,...e})},exports.RawAutoTable=function RawAutoTable(n){const{table:r,Component:a}=useAutoTableData(n),{onRowClick:s,isActionColumnComponentEnabled:l,actionColumnComponent:o,actionHeaderComponent:i,extraCustomColumns:c,isExtraCustomColumnsEnabled:u}=n;return e.jsxs(a.Table,{children:[e.jsx(a.TableTHead,{children:r.getHeaderGroups().map((n=>e.jsxs(a.TableTR,{children:[n.headers.map((n=>e.jsx(a.TableTH,{children:n.isPlaceholder?null:t.flexRender(n.column.columnDef.header,n.getContext())},n.id))),l&&e.jsx(a.TableTH,{children:i?e.jsx(i,{defaultName:"Action"}):"Action"})]},n.id)))}),e.jsx(a.TableTBody,{children:r.getRowModel().rows.map((n=>e.jsxs(a.TableTR,{children:[n.getVisibleCells().map((r=>e.jsx(a.TableTD,{onClick:()=>{if(u){const e=c?.some((e=>e.disableOnRowClick));if(e)return}s&&s?.(n.original)},children:t.flexRender(r.column.columnDef.cell,r.getContext())},r.id))),l&&e.jsx(a.TableTD,{children:o?e.jsx(o,{row:n.original}):"Please provide a component for the action column"})]},n.id)))})]})},exports.decodeFieldCustomizer=decodeFieldCustomizer;
|
2
2
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/index.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport default function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\n\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\tconst Component = Components[componentKey] as React.FC<any>;\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t<Component.TableTBody>\r\n\t\t\t\t{table.getRowModel().rows.map((row) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</Component.TableTBody>\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","ComponentContext","createContext","useComponentContext","useContext","decodeFieldCustomizer","fieldCustomizer","decodeData","JSON","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","stringify","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","components","jsx","Provider","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","getRowModel","rows","getVisibleCells","onClick","disableOnRowClick"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/utils/ComponentRegistryHelper.tsx","../package/auto-table/index.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\tconst Component = Components[componentKey] as React.FC<any>;\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import type { AutoTableComponentContextType } from \"../types/base-components\";\r\n\r\nexport const ComponentRegistryHelper = (\r\n\tprops: AutoTableComponentContextType,\r\n) => {\r\n\treturn props;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t<Component.TableTBody>\r\n\t\t\t\t{table.getRowModel().rows.map((row) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</Component.TableTBody>\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","ComponentContext","createContext","useComponentContext","useContext","decodeFieldCustomizer","fieldCustomizer","decodeData","JSON","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","stringify","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","components","jsx","Provider","FieldCustomizer","custom","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","getRowModel","rows","getVisibleCells","onClick","disableOnRowClick"],"mappings":"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"}
|
package/dist/index.mjs
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
import{jsx as e,Fragment as n,jsxs as t}from"react/jsx-runtime";import{createContext as r,useContext as l,useMemo as
|
1
|
+
import{jsx as e,Fragment as n,jsxs as t}from"react/jsx-runtime";import{createContext as r,useContext as l,useMemo as o}from"react";import{useReactTable as a,getCoreRowModel as i,flexRender as c}from"@tanstack/react-table";import{ZodTableClassed as s}from"zod-helper";const u={text:({value:t})=>e(n,{children:t}),number:({value:t})=>e(n,{children:t}),enum:({value:t})=>e(n,{children:t}),image:({value:t})=>e(n,{children:t}),date:({value:t})=>e(n,{children:t}),boolean:({value:t})=>e(n,{children:t}),Table:n=>e("table",{...n,children:n.children}),TableTBody:({children:n,...t})=>e("tbody",{...t,children:n}),TableTD:({children:n,...t})=>e("td",{...t,children:n}),TableTH:({children:n,...t})=>e("th",{...t,children:n}),TableTHead:({children:n,...t})=>e("thead",{...t,children:n}),TableTR:({children:n,...t})=>e("tr",{...t,children:n}),multi_enum:({value:t})=>e(n,{children:t}),multi_string:({value:t})=>e(n,{children:t}),multi_number:({value:t})=>e(n,{children:t}),multi_date:({value:t})=>e(n,{children:t}),multi_boolean:({value:t})=>e(n,{children:t})},d=r(u),useComponentContext=()=>l(d),AutoTableComponentsProvider=({children:n,components:t})=>{const r={...u,...t};return e(d.Provider,{value:r,children:n})};function FieldCustomizer(e){return JSON.stringify({custom:!0,...e})}const decodeFieldCustomizer=e=>{try{return{decodeData:JSON.parse(e),description:null,success:!0}}catch{return{decodeData:null,description:e,success:!1}}};function useAutoTableData({schema:t,replaceColumns:r=[],data:l,changePositionOfFields:c,extraCustomColumns:u=[]}){const d=((t,r,l)=>{const o=useComponentContext(),a=new Map;for(const e of r)"accessorKey"in e&&"string"==typeof e.accessorKey&&a.set(e.accessorKey,e);const i=t.map((t=>{const r=t.key;if(a.has(r))return a.get(r);const l=(e=>{switch(e){case"date":return"date";case"enum":return"enum";case"image":return"image";case"number":return"number";case"string":return"text";case"boolean":return"boolean";case"multi-string":return"multi_string";case"multi-number":return"multi_number";case"multi-date":return"multi_date";case"multi-boolean":return"multi_boolean";case"multi-enum":return"multi_enum"}})(t.type),i=o[l],{decodeData:c}=decodeFieldCustomizer(t.description??"");return{header:(s=c?.isChangeLabel?c.label??r:r,s.split(".").map((e=>e.charAt(0).toUpperCase()+e.slice(1))).join(" ")),accessorKey:r,cell:({getValue:l,row:o})=>{const a=l(),s=o.original;let u=a;return a instanceof Date&&(u=a.toISOString()),i?e(i,{value:u,rawData:s,defaultValue:t.enums,title:r,description:t.description,...c}):a instanceof Date?e(n,{children:a.toISOString()}):e(n,{children:JSON.stringify(a)})}};var s}));for(const e of r){const n="accessorKey"in e&&"string"==typeof e.accessorKey?e.accessorKey:void 0;n&&!t.some((e=>e.key===n))&&i.push(e)}if(l&&l.length>0)for(const e of l){const[n,t=null]=e.insertPosition?.split(":")??[];n&&t?"before"===t?i.splice(i.findIndex((e=>e.accessorKey===n)),0,e):"after"===t?i.splice(i.findIndex((e=>e.accessorKey===n))+1,0,e):i.push(e):i.push(e)}return i})(o((()=>{const e=new s(t);return c&&e.changeJsonFieldPositions(c),{columns:e.convertToTableUseableFormat()}}),[c,t]).columns,r,u);return{table:a({data:l,columns:d,getCoreRowModel:i()}),Component:useComponentContext()}}function RawAutoTable(n){const{table:r,Component:l}=useAutoTableData(n),{onRowClick:o,isActionColumnComponentEnabled:a,actionColumnComponent:i,actionHeaderComponent:s,extraCustomColumns:u,isExtraCustomColumnsEnabled:d}=n;return t(l.Table,{children:[e(l.TableTHead,{children:r.getHeaderGroups().map((n=>t(l.TableTR,{children:[n.headers.map((n=>e(l.TableTH,{children:n.isPlaceholder?null:c(n.column.columnDef.header,n.getContext())},n.id))),a&&e(l.TableTH,{children:s?e(s,{defaultName:"Action"}):"Action"})]},n.id)))}),e(l.TableTBody,{children:r.getRowModel().rows.map((n=>t(l.TableTR,{children:[n.getVisibleCells().map((t=>e(l.TableTD,{onClick:()=>{if(d){const e=u?.some((e=>e.disableOnRowClick));if(e)return}o&&o?.(n.original)},children:c(t.column.columnDef.cell,t.getContext())},t.id))),a&&e(l.TableTD,{children:i?e(i,{row:n.original}):"Please provide a component for the action column"})]},n.id)))})]})}const ComponentRegistryHelper=e=>e;export{AutoTableComponentsProvider,ComponentRegistryHelper,FieldCustomizer,RawAutoTable,decodeFieldCustomizer};
|
2
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.mjs","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/index.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport default function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\n\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\tconst Component = Components[componentKey] as React.FC<any>;\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t<Component.TableTBody>\r\n\t\t\t\t{table.getRowModel().rows.map((row) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</Component.TableTBody>\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","ComponentContext","createContext","useComponentContext","useContext","AutoTableComponentsProvider","components","Provider","decodeFieldCustomizer","fieldCustomizer","decodeData","JSON","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","stringify","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","getRowModel","rows","getVisibleCells","onClick","disableOnRowClick"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.mjs","sources":["../package/auto-table/context/useComponentContext.tsx","../package/auto-table/utils/FieldChanger.tsx","../package/auto-table/hooks/useAutoTableData.tsx","../package/auto-table/core/useGenerate-columns.tsx","../package/auto-table/index.tsx","../package/auto-table/utils/ComponentRegistryHelper.tsx"],"sourcesContent":["/* eslint-disable react-refresh/only-export-components */\r\nimport { type ReactNode, createContext, useContext } from \"react\";\r\n\r\nimport type {\r\n\tAutoTableComponentContextType,\r\n\tTableType,\r\n\tTable_TBody_Type,\r\n\tTable_TD_Type,\r\n\tTable_TH_Type,\r\n\tTable_THead_Type,\r\n\tTable_TR_Type,\r\n} from \"../types/base-components\";\r\n\r\nconst defaultComponents: AutoTableComponentContextType = {\r\n\ttext: ({ value }) => <>{value}</>,\r\n\tnumber: ({ value }) => <>{value}</>,\r\n\tenum: ({ value }) => <>{value}</>,\r\n\timage: ({ value }) => <>{value}</>,\r\n\tdate: ({ value }) => <>{value}</>,\r\n\tboolean: ({ value }) => <>{value}</>,\r\n\tTable: (props: TableType) => <table {...props}>{props.children}</table>,\r\n\tTableTBody: ({ children, ...props }: Table_TBody_Type) => (\r\n\t\t<tbody {...props}>{children}</tbody>\r\n\t),\r\n\tTableTD: ({ children, ...props }: Table_TD_Type) => (\r\n\t\t<td {...props}>{children}</td>\r\n\t),\r\n\tTableTH: ({ children, ...props }: Table_TH_Type) => (\r\n\t\t<th {...props}>{children}</th>\r\n\t),\r\n\tTableTHead: ({ children, ...props }: Table_THead_Type) => (\r\n\t\t<thead {...props}>{children}</thead>\r\n\t),\r\n\tTableTR: ({ children, ...props }: Table_TR_Type) => (\r\n\t\t<tr {...props}>{children}</tr>\r\n\t),\r\n\tmulti_enum: ({ value }) => <>{value}</>,\r\n\tmulti_string: ({ value }) => <>{value}</>,\r\n\tmulti_number: ({ value }) => <>{value}</>,\r\n\tmulti_date: ({ value }) => <>{value}</>,\r\n\tmulti_boolean: ({ value }) => <>{value}</>,\r\n};\r\n\r\nconst ComponentContext =\r\n\tcreateContext<AutoTableComponentContextType>(defaultComponents);\r\n\r\nexport const useComponentContext = () => useContext(ComponentContext);\r\n\r\ntype ComponentProviderProps = {\r\n\tchildren: ReactNode;\r\n\tcomponents?: Partial<AutoTableComponentContextType>;\r\n};\r\n\r\nexport const AutoTableComponentsProvider = ({\r\n\tchildren,\r\n\tcomponents,\r\n}: ComponentProviderProps) => {\r\n\tconst value = {\r\n\t\t...defaultComponents,\r\n\t\t...components,\r\n\t};\r\n\r\n\treturn (\r\n\t\t<ComponentContext.Provider value={value}>\r\n\t\t\t{children}\r\n\t\t</ComponentContext.Provider>\r\n\t);\r\n};\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\ninterface FieldChangerProps {\r\n\tisChangeLabel?: boolean;\r\n\tlabel?: string;\r\n\tisImage?: boolean;\r\n\taddValueTextAfter?: string;\r\n\taddValueTextBefore?: string;\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\trandomData?: Record<string, any>;\r\n}\r\n\r\nexport function FieldCustomizer(props: FieldChangerProps) {\r\n\treturn JSON.stringify({\r\n\t\tcustom: true,\r\n\t\t...props,\r\n\t});\r\n}\r\nexport const decodeFieldCustomizer = (\r\n\tfieldCustomizer: string,\r\n): {\r\n\tdecodeData: FieldChangerProps | null;\r\n\tdescription: string | null;\r\n\tsuccess: boolean;\r\n} => {\r\n\ttry {\r\n\t\treturn {\r\n\t\t\tdecodeData: JSON.parse(fieldCustomizer) as FieldChangerProps,\r\n\t\t\tdescription: null,\r\n\t\t\tsuccess: true,\r\n\t\t};\r\n\t} catch {\r\n\t\treturn {\r\n\t\t\tdecodeData: null,\r\n\t\t\tdescription: fieldCustomizer,\r\n\t\t\tsuccess: false,\r\n\t\t};\r\n\t}\r\n};\r\n","import { getCoreRowModel, useReactTable } from \"@tanstack/react-table\";\r\nimport { useMemo } from \"react\";\r\nimport type { z } from \"zod\";\r\nimport { ZodTableClassed } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport { useGenerateColumns } from \"../core/useGenerate-columns\";\r\nimport type { RawAutoTableProps } from \"../types/AutoTable-types\";\r\n\r\nexport default function useAutoTableData<T extends z.ZodTypeAny>({\r\n\tschema,\r\n\treplaceColumns = [],\r\n\tdata,\r\n\tchangePositionOfFields,\r\n\textraCustomColumns = [],\r\n}: RawAutoTableProps<T>) {\r\n\tconst zodAutoTable = useMemo(() => {\r\n\t\tconst zodAutoTable = new ZodTableClassed(schema);\r\n\t\tif (changePositionOfFields) {\r\n\t\t\tzodAutoTable.changeJsonFieldPositions(changePositionOfFields);\r\n\t\t}\r\n\t\treturn {\r\n\t\t\tcolumns: zodAutoTable.convertToTableUseableFormat(),\r\n\t\t};\r\n\t}, [changePositionOfFields, schema]);\r\n\tconst columns = useGenerateColumns(\r\n\t\tzodAutoTable.columns,\r\n\t\treplaceColumns,\r\n\t\textraCustomColumns,\r\n\t);\r\n\tconst table = useReactTable({\r\n\t\tdata,\r\n\t\tcolumns,\r\n\t\tgetCoreRowModel: getCoreRowModel(),\r\n\t});\r\n\tconst Component = useComponentContext();\r\n\treturn { table, Component };\r\n}\r\n","/* eslint-disable @typescript-eslint/no-explicit-any */\r\nimport type { ColumnDef } from \"@tanstack/react-table\";\r\nimport type { FlattenSchemaWithKeyAndTypes } from \"zod-helper\";\r\nimport { useComponentContext } from \"../context/useComponentContext\";\r\nimport type { ExtraColumnConfig } from \"../types/AutoTable-types\";\r\nimport { decodeFieldCustomizer } from \"../utils/FieldChanger\";\r\ntype fieldDataType =\r\n\t| \"string\"\r\n\t| \"number\"\r\n\t| \"boolean\"\r\n\t| \"date\"\r\n\t| \"enum\"\r\n\t| \"image\"\r\n\t| \"multi-string\"\r\n\t| \"multi-number\"\r\n\t| \"multi-date\"\r\n\t| \"multi-boolean\"\r\n\t| \"multi-enum\";\r\n\r\nconst getComponentKey = (type: fieldDataType) => {\r\n\tswitch (type) {\r\n\t\tcase \"date\":\r\n\t\t\treturn \"date\";\r\n\t\tcase \"enum\":\r\n\t\t\treturn \"enum\";\r\n\t\tcase \"image\":\r\n\t\t\treturn \"image\";\r\n\t\tcase \"number\":\r\n\t\t\treturn \"number\";\r\n\t\tcase \"string\":\r\n\t\t\treturn \"text\";\r\n\t\tcase \"boolean\":\r\n\t\t\treturn \"boolean\";\r\n\t\tcase \"multi-string\":\r\n\t\t\treturn \"multi_string\";\r\n\t\tcase \"multi-number\":\r\n\t\t\treturn \"multi_number\";\r\n\t\tcase \"multi-date\":\r\n\t\t\treturn \"multi_date\";\r\n\t\tcase \"multi-boolean\":\r\n\t\t\treturn \"multi_boolean\";\r\n\t\tcase \"multi-enum\":\r\n\t\t\treturn \"multi_enum\";\r\n\t}\r\n};\r\nconst getColumnName = (name: string) => {\r\n\t// name to Name , address.street to Address Street , address.owner.name to Address Owner Name\r\n\tconst words = name.split(\".\");\r\n\treturn words\r\n\t\t.map((word) => word.charAt(0).toUpperCase() + word.slice(1))\r\n\t\t.join(\" \");\r\n};\r\nexport const useGenerateColumns = (\r\n\tfields: FlattenSchemaWithKeyAndTypes[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\treplaceColumns: ColumnDef<any>[],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\textraCustomColumns: ExtraColumnConfig<any>[\"extraCustomColumns\"],\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n): ColumnDef<any>[] => {\r\n\tconst Components = useComponentContext();\r\n\t// Step 1: Create a map of replace columns where accessorKey exists\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst replaceMap = new Map<string, ColumnDef<any>>();\r\n\tfor (const col of replaceColumns) {\r\n\t\tif (\"accessorKey\" in col && typeof col.accessorKey === \"string\") {\r\n\t\t\treplaceMap.set(col.accessorKey, col);\r\n\t\t}\r\n\t}\r\n\r\n\t// Step 2: Generate columns from fields\r\n\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\tconst columns: ColumnDef<any>[] = fields.map((field) => {\r\n\t\tconst key = field.key;\r\n\t\tif (replaceMap.has(key)) {\r\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: <explanation>\r\n\t\t\treturn replaceMap.get(key)!;\r\n\t\t}\r\n\r\n\t\tconst componentKey = getComponentKey(field.type as fieldDataType);\r\n\t\t// biome-ignore lint/suspicious/noExplicitAny: <explanation>\r\n\t\tconst Component = Components[componentKey] as React.FC<any>;\r\n\t\tconst { decodeData } = decodeFieldCustomizer(field.description ?? \"\");\r\n\r\n\t\treturn {\r\n\t\t\theader: getColumnName(\r\n\t\t\t\tdecodeData?.isChangeLabel ? (decodeData.label ?? key) : key,\r\n\t\t\t),\r\n\t\t\taccessorKey: key,\r\n\t\t\tcell: ({ getValue, row }) => {\r\n\t\t\t\tconst value = getValue();\r\n\t\t\t\tconst rawData = row.original;\r\n\r\n\t\t\t\t// Convert Date objects to strings before passing to components\r\n\t\t\t\tlet processedValue = value;\r\n\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\tprocessedValue = value.toISOString();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!Component) {\r\n\t\t\t\t\t// Handle Date objects or other non-renderable values\r\n\t\t\t\t\tif (value instanceof Date) {\r\n\t\t\t\t\t\treturn <>{value.toISOString()}</>;\r\n\t\t\t\t\t}\r\n\t\t\t\t\treturn <>{JSON.stringify(value)}</>;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn (\r\n\t\t\t\t\t<Component\r\n\t\t\t\t\t\tvalue={processedValue}\r\n\t\t\t\t\t\trawData={rawData}\r\n\t\t\t\t\t\tdefaultValue={field.enums}\r\n\t\t\t\t\t\ttitle={key}\r\n\t\t\t\t\t\tdescription={field.description}\r\n\t\t\t\t\t\t{...decodeData}\r\n\t\t\t\t\t/>\r\n\t\t\t\t);\r\n\t\t\t},\r\n\t\t};\r\n\t});\r\n\r\n\t// Step 3: Add additional replaceColumns that don't conflict with fields\r\n\tfor (const col of replaceColumns) {\r\n\t\tconst key =\r\n\t\t\t\"accessorKey\" in col && typeof col.accessorKey === \"string\"\r\n\t\t\t\t? col.accessorKey\r\n\t\t\t\t: undefined;\r\n\t\tif (key && !fields.some((f) => f.key === key)) {\r\n\t\t\tcolumns.push(col);\r\n\t\t}\r\n\t}\r\n\tif (extraCustomColumns && extraCustomColumns.length > 0) {\r\n\t\tfor (const col of extraCustomColumns) {\r\n\t\t\t// insertPosition split by : and get the first part as the accessorKey and the second part as the insertPosition after,before\r\n\t\t\tconst [accessorKey, insertPosition = null] =\r\n\t\t\t\t// @ts-expect-error - insertPosition is not always defined and\r\n\t\t\t\tcol.insertPosition?.split(\":\") ?? [];\r\n\t\t\t// if accessorKey and insertPosition both exist then insert the column after the accessorKey\r\n\t\t\tif (accessorKey && insertPosition) {\r\n\t\t\t\t// columns.splice(\r\n\t\t\t\t// \tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t// \t0,\r\n\t\t\t\t// \tcol,\r\n\t\t\t\t// );\r\n\t\t\t\tif (insertPosition === \"before\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey),\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else if (insertPosition === \"after\") {\r\n\t\t\t\t\tcolumns.splice(\r\n\t\t\t\t\t\t// @ts-expect-error - accessorKey is not always defined and\r\n\t\t\t\t\t\tcolumns.findIndex((c) => c.accessorKey === accessorKey) + 1,\r\n\t\t\t\t\t\t0,\r\n\t\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\t\tcol,\r\n\t\t\t\t\t);\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\t\tcolumns.push(col);\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\t// @ts-expect-error - col is not always defined and\r\n\t\t\t\tcolumns.push(col);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\treturn columns;\r\n};\r\n","import { flexRender } from \"@tanstack/react-table\";\r\nimport type { z } from \"zod\";\r\nimport useAutoTableData from \"./hooks/useAutoTableData\";\r\nimport type { RawAutoTableProps } from \"./types/AutoTable-types\";\r\n\r\nexport default function RawAutoTable<T extends z.ZodTypeAny>(\r\n\tprops: RawAutoTableProps<T>,\r\n) {\r\n\tconst { table, Component } = useAutoTableData(props);\r\n\tconst {\r\n\t\tonRowClick,\r\n\t\tisActionColumnComponentEnabled,\r\n\t\tactionColumnComponent: ActionColumnComponent,\r\n\t\tactionHeaderComponent: ActionHeaderComponent,\r\n\t\textraCustomColumns,\r\n\t\tisExtraCustomColumnsEnabled,\r\n\t} = props;\r\n\treturn (\r\n\t\t<Component.Table>\r\n\t\t\t<Component.TableTHead>\r\n\t\t\t\t{table.getHeaderGroups().map((headerGroup) => (\r\n\t\t\t\t\t<Component.TableTR key={headerGroup.id}>\r\n\t\t\t\t\t\t{headerGroup.headers.map((header) => (\r\n\t\t\t\t\t\t\t<Component.TableTH key={header.id}>\r\n\t\t\t\t\t\t\t\t{header.isPlaceholder\r\n\t\t\t\t\t\t\t\t\t? null\r\n\t\t\t\t\t\t\t\t\t: flexRender(\r\n\t\t\t\t\t\t\t\t\t\t\theader.column.columnDef.header,\r\n\t\t\t\t\t\t\t\t\t\t\theader.getContext(),\r\n\t\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t))}\r\n\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t<Component.TableTH>\r\n\t\t\t\t\t\t\t\t{ActionHeaderComponent ? (\r\n\t\t\t\t\t\t\t\t\t<ActionHeaderComponent defaultName=\"Action\" />\r\n\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\"Action\"\r\n\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t</Component.TableTH>\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t))}\r\n\t\t\t</Component.TableTHead>\r\n\t\t\t<Component.TableTBody>\r\n\t\t\t\t{table.getRowModel().rows.map((row) => {\r\n\t\t\t\t\treturn (\r\n\t\t\t\t\t\t<Component.TableTR key={row.id}>\r\n\t\t\t\t\t\t\t{row.getVisibleCells().map((cell) => {\r\n\t\t\t\t\t\t\t\treturn (\r\n\t\t\t\t\t\t\t\t\t<Component.TableTD\r\n\t\t\t\t\t\t\t\t\t\tkey={cell.id}\r\n\t\t\t\t\t\t\t\t\t\tonClick={() => {\r\n\t\t\t\t\t\t\t\t\t\t\tif (isExtraCustomColumnsEnabled) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t// check if rowClick is Allowed for the extra custom columns\r\n\t\t\t\t\t\t\t\t\t\t\t\tconst disableOnRowClick = extraCustomColumns?.some(\r\n\t\t\t\t\t\t\t\t\t\t\t\t\t(column) => column.disableOnRowClick,\r\n\t\t\t\t\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t\t\t\t\t\tif (disableOnRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\t\treturn;\r\n\t\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t\tif (onRowClick) {\r\n\t\t\t\t\t\t\t\t\t\t\t\tonRowClick?.(row.original);\r\n\t\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t\t}}\r\n\t\t\t\t\t\t\t\t\t>\r\n\t\t\t\t\t\t\t\t\t\t{flexRender(cell.column.columnDef.cell, cell.getContext())}\r\n\t\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t\t);\r\n\t\t\t\t\t\t\t})}\r\n\t\t\t\t\t\t\t{isActionColumnComponentEnabled && (\r\n\t\t\t\t\t\t\t\t<Component.TableTD>\r\n\t\t\t\t\t\t\t\t\t{ActionColumnComponent ? (\r\n\t\t\t\t\t\t\t\t\t\t<ActionColumnComponent row={row.original} />\r\n\t\t\t\t\t\t\t\t\t) : (\r\n\t\t\t\t\t\t\t\t\t\t\"Please provide a component for the action column\"\r\n\t\t\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t\t\t</Component.TableTD>\r\n\t\t\t\t\t\t\t)}\r\n\t\t\t\t\t\t</Component.TableTR>\r\n\t\t\t\t\t);\r\n\t\t\t\t})}\r\n\t\t\t</Component.TableTBody>\r\n\t\t</Component.Table>\r\n\t);\r\n}\r\n","import type { AutoTableComponentContextType } from \"../types/base-components\";\r\n\r\nexport const ComponentRegistryHelper = (\r\n\tprops: AutoTableComponentContextType,\r\n) => {\r\n\treturn props;\r\n};\r\n"],"names":["defaultComponents","text","value","_jsx","_Fragment","children","number","enum","image","date","boolean","Table","props","TableTBody","TableTD","TableTH","TableTHead","TableTR","multi_enum","multi_string","multi_number","multi_date","multi_boolean","ComponentContext","createContext","useComponentContext","useContext","AutoTableComponentsProvider","components","Provider","FieldCustomizer","JSON","stringify","custom","decodeFieldCustomizer","fieldCustomizer","decodeData","parse","description","success","useAutoTableData","schema","replaceColumns","data","changePositionOfFields","extraCustomColumns","columns","fields","Components","replaceMap","Map","col","accessorKey","set","map","field","key","has","get","componentKey","type","getComponentKey","Component","header","name","isChangeLabel","label","split","word","charAt","toUpperCase","slice","join","cell","getValue","row","rawData","original","processedValue","Date","toISOString","defaultValue","enums","title","undefined","some","f","push","length","insertPosition","splice","findIndex","c","useGenerateColumns","useMemo","zodAutoTable","ZodTableClassed","changeJsonFieldPositions","convertToTableUseableFormat","table","useReactTable","getCoreRowModel","RawAutoTable","onRowClick","isActionColumnComponentEnabled","actionColumnComponent","ActionColumnComponent","actionHeaderComponent","ActionHeaderComponent","isExtraCustomColumnsEnabled","_jsxs","getHeaderGroups","headerGroup","headers","isPlaceholder","flexRender","column","columnDef","getContext","id","defaultName","getRowModel","rows","getVisibleCells","onClick","disableOnRowClick","ComponentRegistryHelper"],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,11 +0,0 @@
|
|
1
|
-
export declare enum AutoTableCellTypeEnum {
|
2
|
-
TEXT = "text",
|
3
|
-
NUMBER = "number",
|
4
|
-
NUMBER_WITH_DECIMALS = "numberWithDecimals",
|
5
|
-
BOOLEAN = "boolean",
|
6
|
-
DATE = "date",
|
7
|
-
DATE_TIME = "dateTime",
|
8
|
-
TIME = "time",
|
9
|
-
CURRENCY = "currency",
|
10
|
-
PERCENTAGE = "percentage"
|
11
|
-
}
|