antd-crud-table 0.0.13 → 0.1.0

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.
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=require("react"),y=require("./index-DygfPlBI.cjs"),M=S=>{const{baseUrl:e="",endpoints:i={},headers:w={},transform:t}=S.api,r={list:"/list",create:"/create",update:"/update",delete:"/delete",...i},n=async(u,c={})=>{const h=await fetch(`${e}${u}`,{headers:{"Content-Type":"application/json",...w},...c});if(!h.ok)throw new Error(`HTTP error! status: ${h.status}`);return h.json()};return{getList:async u=>{const c=new URL(`${e}${r.list}`,window.location.origin);Object.entries(u).forEach(([b,E])=>{E!=null&&c.searchParams.append(b,String(E))});const h=await n(c.pathname+c.search);return t!=null&&t.response?t.response(h):h},create:async u=>{const c=t!=null&&t.request?t.request(u):u;return n(r.create,{method:"POST",body:JSON.stringify(c)})},update:async(u,c)=>{const h=t!=null&&t.request?t.request(c):c;return n(`${r.update}/${u}`,{method:"PUT",body:JSON.stringify(h)})},delete:async u=>{await n(`${r.delete}/${u}`,{method:"DELETE"})}}},D=(S,e)=>{let i=[...S],w=Math.max(...i.map(t=>Number(t[e])||0))+1;return{getList:async t=>{const{current:r=1,pageSize:n=10,sortBy:u,sortOrder:c,...h}=t;let b=[...i];Object.entries(h).forEach(([s,l])=>{l!=null&&l!==""&&(b=b.filter(a=>String(a[s]).toLowerCase().includes(String(l).toLowerCase())))}),u&&c&&b.sort((s,l)=>{const a=s[u],o=l[u],p=a>o?1:a<o?-1:0;return c==="ascend"?p:-p});const E=(r-1)*n;return{data:b.slice(E,E+n),total:b.length,success:!0}},create:async t=>{const r={[e]:w++,...t};return i.push(r),r},update:async(t,r)=>{const n=i.findIndex(u=>u[e]===t);if(n===-1)throw new Error("Item not found");return i[n]={...i[n],...r},i[n]},delete:async t=>{const r=i.findIndex(n=>n[e]===t);if(r===-1)throw new Error("Item not found");i.splice(r,1)}}},T=(S,e)=>{const i=m.useRef(null),[w,t]=m.useState({loading:!1,error:null,data:[],total:0,current:1,pageSize:e.defaultPageSize||10}),r=(()=>{if("operations"in e)return e.operations;if("staticData"in e)return D(e.staticData,S);if("api"in e)return M(e);throw new Error("useCrudTable: Must provide either staticData, api config, or custom operations")})(),n=m.useCallback(async()=>{var d;t(s=>({...s,loading:!0,error:null}));try{const s={current:w.current,pageSize:w.pageSize},l=await r.getList(s);t(a=>({...a,data:l.data,total:l.total,loading:!1}))}catch(s){const l=s instanceof Error?s.message:"Failed to fetch data";t(a=>({...a,loading:!1,error:l})),(d=e.onError)==null||d.call(e,"fetch",s),y.staticMethods.error(l)}},[w.current,w.pageSize,r,e]),u=m.useCallback(async d=>{var s,l;if(!r.create)return y.staticMethods.error("Create operation not supported"),null;try{t(o=>({...o,loading:!0}));const a=await r.create(d);return e.optimisticUpdates?t(o=>({...o,data:[...o.data,a],total:o.total+1,loading:!1})):await n(),(s=e.onSuccess)==null||s.call(e,"create",a),y.staticMethods.success("Created successfully"),a}catch(a){t(p=>({...p,loading:!1}));const o=a instanceof Error?a.message:"Create failed";return(l=e.onError)==null||l.call(e,"create",a),y.staticMethods.error(o),null}},[r,e,n]),c=m.useCallback(async(d,s)=>{var l,a;if(!r.update)return y.staticMethods.error("Update operation not supported"),null;try{t(p=>({...p,loading:!0}));const o=await r.update(d,s);return e.optimisticUpdates?t(p=>({...p,data:p.data.map(C=>C[S]===d?{...C,...o}:C),loading:!1})):await n(),(l=e.onSuccess)==null||l.call(e,"update",o),y.staticMethods.success("Updated successfully"),o}catch(o){t(C=>({...C,loading:!1}));const p=o instanceof Error?o.message:"Update failed";return(a=e.onError)==null||a.call(e,"update",o),y.staticMethods.error(p),null}},[r,e,S,n]),h=m.useCallback(async d=>{var s,l;if(!r.delete)return y.staticMethods.error("Delete operation not supported"),!1;try{return t(a=>({...a,loading:!0})),await r.delete(d),e.optimisticUpdates?t(a=>({...a,data:a.data.filter(o=>o[S]!==d),total:a.total-1,loading:!1})):await n(),(s=e.onSuccess)==null||s.call(e,"delete",d),y.staticMethods.success("Deleted successfully"),!0}catch(a){t(p=>({...p,loading:!1}));const o=a instanceof Error?a.message:"Delete failed";return(l=e.onError)==null||l.call(e,"delete",a),y.staticMethods.error(o),!1}},[r,e,S,n]),b=m.useCallback(d=>{t(s=>({...s,pageSize:d,current:1}))},[]),E=m.useCallback(d=>{t(s=>({...s,current:d}))},[]);return{refresh:n,create:u,update:c,delete:h,setPageSize:b,setCurrentPage:E,state:w,actionRef:i}};exports.useCrudTable=T;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./chunk-BZRuZbSa.cjs`);const e=require(`./message-C5ORE39N.cjs`);let t=require(`react`);var n=e=>{let{baseUrl:t=``,endpoints:n={},headers:r={},transform:i}=e.api,a={list:`/list`,create:`/create`,update:`/update`,delete:`/delete`,...n},o=async(e,n={})=>{let i=await fetch(`${t}${e}`,{headers:{"Content-Type":`application/json`,...r},...n});if(!i.ok)throw Error(`HTTP error! status: ${i.status}`);return i.json()};return{getList:async e=>{let n=new URL(`${t}${a.list}`,window.location.origin);Object.entries(e).forEach(([e,t])=>{t!=null&&n.searchParams.append(e,String(t))});let r=await o(n.pathname+n.search);return i?.response?i.response(r):r},create:async e=>{let t=i?.request?i.request(e):e;return o(a.create,{method:`POST`,body:JSON.stringify(t)})},update:async(e,t)=>{let n=i?.request?i.request(t):t;return o(`${a.update}/${e}`,{method:`PUT`,body:JSON.stringify(n)})},delete:async e=>{await o(`${a.delete}/${e}`,{method:`DELETE`})}}},r=(e,t)=>{let n=[...e],r=Math.max(...n.map(e=>Number(e[t])||0))+1;return{getList:async e=>{let{current:t=1,pageSize:r=10,sortBy:i,sortOrder:a,...o}=e,s=[...n];Object.entries(o).forEach(([e,t])=>{t!=null&&t!==``&&(s=s.filter(n=>String(n[e]).toLowerCase().includes(String(t).toLowerCase())))}),i&&a&&s.sort((e,t)=>{let n=e[i],r=t[i],o=n>r?1:n<r?-1:0;return a===`ascend`?o:-o});let c=(t-1)*r;return{data:s.slice(c,c+r),total:s.length,success:!0}},create:async e=>{let i={[t]:r++,...e};return n.push(i),i},update:async(e,r)=>{let i=n.findIndex(n=>n[t]===e);if(i===-1)throw Error(`Item not found`);return n[i]={...n[i],...r},n[i]},delete:async e=>{let r=n.findIndex(n=>n[t]===e);if(r===-1)throw Error(`Item not found`);n.splice(r,1)}}},i=(i,a)=>{let o=(0,t.useRef)(null),[s,c]=(0,t.useState)({loading:!1,error:null,data:[],total:0,current:1,pageSize:a.defaultPageSize||10}),l=(()=>{if(`operations`in a)return a.operations;if(`staticData`in a)return r(a.staticData,i);if(`api`in a)return n(a);throw Error(`useCrudTable: Must provide either staticData, api config, or custom operations`)})(),u=(0,t.useCallback)(async()=>{c(e=>({...e,loading:!0,error:null}));try{let e={current:s.current,pageSize:s.pageSize},t=await l.getList(e);c(e=>({...e,data:t.data,total:t.total,loading:!1}))}catch(t){let n=t instanceof Error?t.message:`Failed to fetch data`;c(e=>({...e,loading:!1,error:n})),a.onError?.(`fetch`,t),e.t.error(n)}},[s.current,s.pageSize,l,a]);return{refresh:u,create:(0,t.useCallback)(async t=>{if(!l.create)return e.t.error(`Create operation not supported`),null;try{c(e=>({...e,loading:!0}));let n=await l.create(t);return a.optimisticUpdates?c(e=>({...e,data:[...e.data,n],total:e.total+1,loading:!1})):await u(),a.onSuccess?.(`create`,n),e.t.success(`Created successfully`),n}catch(t){c(e=>({...e,loading:!1}));let n=t instanceof Error?t.message:`Create failed`;return a.onError?.(`create`,t),e.t.error(n),null}},[l,a,u]),update:(0,t.useCallback)(async(t,n)=>{if(!l.update)return e.t.error(`Update operation not supported`),null;try{c(e=>({...e,loading:!0}));let r=await l.update(t,n);return a.optimisticUpdates?c(e=>({...e,data:e.data.map(e=>e[i]===t?{...e,...r}:e),loading:!1})):await u(),a.onSuccess?.(`update`,r),e.t.success(`Updated successfully`),r}catch(t){c(e=>({...e,loading:!1}));let n=t instanceof Error?t.message:`Update failed`;return a.onError?.(`update`,t),e.t.error(n),null}},[l,a,i,u]),delete:(0,t.useCallback)(async t=>{if(!l.delete)return e.t.error(`Delete operation not supported`),!1;try{return c(e=>({...e,loading:!0})),await l.delete(t),a.optimisticUpdates?c(e=>({...e,data:e.data.filter(e=>e[i]!==t),total:e.total-1,loading:!1})):await u(),a.onSuccess?.(`delete`,t),e.t.success(`Deleted successfully`),!0}catch(t){c(e=>({...e,loading:!1}));let n=t instanceof Error?t.message:`Delete failed`;return a.onError?.(`delete`,t),e.t.error(n),!1}},[l,a,i,u]),setPageSize:(0,t.useCallback)(e=>{c(t=>({...t,pageSize:e,current:1}))},[]),setCurrentPage:(0,t.useCallback)(e=>{c(t=>({...t,current:e}))},[]),state:s,actionRef:o}};exports.useCrudTable=i;
@@ -1,195 +1,235 @@
1
- import { useRef as D, useState as U, useCallback as C } from "react";
2
- import { s as y } from "./index-DNXRWKhU.js";
3
- const $ = (m) => {
4
- const { baseUrl: e = "", endpoints: i = {}, headers: S = {}, transform: t } = m.api, a = {
5
- list: "/list",
6
- create: "/create",
7
- update: "/update",
8
- delete: "/delete",
9
- ...i
10
- }, n = async (u, c = {}) => {
11
- const h = await fetch(`${e}${u}`, {
12
- headers: {
13
- "Content-Type": "application/json",
14
- ...S
15
- },
16
- ...c
17
- });
18
- if (!h.ok)
19
- throw new Error(`HTTP error! status: ${h.status}`);
20
- return h.json();
21
- };
22
- return {
23
- getList: async (u) => {
24
- const c = new URL(`${e}${a.list}`, window.location.origin);
25
- Object.entries(u).forEach(([w, E]) => {
26
- E != null && c.searchParams.append(w, String(E));
27
- });
28
- const h = await n(c.pathname + c.search);
29
- return t != null && t.response ? t.response(h) : h;
30
- },
31
- create: async (u) => {
32
- const c = t != null && t.request ? t.request(u) : u;
33
- return n(a.create, {
34
- method: "POST",
35
- body: JSON.stringify(c)
36
- });
37
- },
38
- update: async (u, c) => {
39
- const h = t != null && t.request ? t.request(c) : c;
40
- return n(`${a.update}/${u}`, {
41
- method: "PUT",
42
- body: JSON.stringify(h)
43
- });
44
- },
45
- delete: async (u) => {
46
- await n(`${a.delete}/${u}`, {
47
- method: "DELETE"
48
- });
49
- }
50
- };
51
- }, f = (m, e) => {
52
- let i = [...m], S = Math.max(...i.map((t) => Number(t[e]) || 0)) + 1;
53
- return {
54
- getList: async (t) => {
55
- const { current: a = 1, pageSize: n = 10, sortBy: u, sortOrder: c, ...h } = t;
56
- let w = [...i];
57
- Object.entries(h).forEach(([s, l]) => {
58
- l != null && l !== "" && (w = w.filter(
59
- (r) => String(r[s]).toLowerCase().includes(String(l).toLowerCase())
60
- ));
61
- }), u && c && w.sort((s, l) => {
62
- const r = s[u], o = l[u], p = r > o ? 1 : r < o ? -1 : 0;
63
- return c === "ascend" ? p : -p;
64
- });
65
- const E = (a - 1) * n;
66
- return {
67
- data: w.slice(E, E + n),
68
- total: w.length,
69
- success: !0
70
- };
71
- },
72
- create: async (t) => {
73
- const a = {
74
- [e]: S++,
75
- ...t
76
- };
77
- return i.push(a), a;
78
- },
79
- update: async (t, a) => {
80
- const n = i.findIndex((u) => u[e] === t);
81
- if (n === -1) throw new Error("Item not found");
82
- return i[n] = { ...i[n], ...a }, i[n];
83
- },
84
- delete: async (t) => {
85
- const a = i.findIndex((n) => n[e] === t);
86
- if (a === -1) throw new Error("Item not found");
87
- i.splice(a, 1);
88
- }
89
- };
90
- }, T = (m, e) => {
91
- const i = D(null), [S, t] = U({
92
- loading: !1,
93
- error: null,
94
- data: [],
95
- total: 0,
96
- current: 1,
97
- pageSize: e.defaultPageSize || 10
98
- }), a = (() => {
99
- if ("operations" in e)
100
- return e.operations;
101
- if ("staticData" in e)
102
- return f(e.staticData, m);
103
- if ("api" in e)
104
- return $(e);
105
- throw new Error("useCrudTable: Must provide either staticData, api config, or custom operations");
106
- })(), n = C(async () => {
107
- var d;
108
- t((s) => ({ ...s, loading: !0, error: null }));
109
- try {
110
- const s = {
111
- current: S.current,
112
- pageSize: S.pageSize
113
- }, l = await a.getList(s);
114
- t((r) => ({
115
- ...r,
116
- data: l.data,
117
- total: l.total,
118
- loading: !1
119
- }));
120
- } catch (s) {
121
- const l = s instanceof Error ? s.message : "Failed to fetch data";
122
- t((r) => ({ ...r, loading: !1, error: l })), (d = e.onError) == null || d.call(e, "fetch", s), y.error(l);
123
- }
124
- }, [S.current, S.pageSize, a, e]), u = C(async (d) => {
125
- var s, l;
126
- if (!a.create)
127
- return y.error("Create operation not supported"), null;
128
- try {
129
- t((o) => ({ ...o, loading: !0 }));
130
- const r = await a.create(d);
131
- return e.optimisticUpdates ? t((o) => ({
132
- ...o,
133
- data: [...o.data, r],
134
- total: o.total + 1,
135
- loading: !1
136
- })) : await n(), (s = e.onSuccess) == null || s.call(e, "create", r), y.success("Created successfully"), r;
137
- } catch (r) {
138
- t((p) => ({ ...p, loading: !1 }));
139
- const o = r instanceof Error ? r.message : "Create failed";
140
- return (l = e.onError) == null || l.call(e, "create", r), y.error(o), null;
141
- }
142
- }, [a, e, n]), c = C(async (d, s) => {
143
- var l, r;
144
- if (!a.update)
145
- return y.error("Update operation not supported"), null;
146
- try {
147
- t((p) => ({ ...p, loading: !0 }));
148
- const o = await a.update(d, s);
149
- return e.optimisticUpdates ? t((p) => ({
150
- ...p,
151
- data: p.data.map(
152
- (b) => b[m] === d ? { ...b, ...o } : b
153
- ),
154
- loading: !1
155
- })) : await n(), (l = e.onSuccess) == null || l.call(e, "update", o), y.success("Updated successfully"), o;
156
- } catch (o) {
157
- t((b) => ({ ...b, loading: !1 }));
158
- const p = o instanceof Error ? o.message : "Update failed";
159
- return (r = e.onError) == null || r.call(e, "update", o), y.error(p), null;
160
- }
161
- }, [a, e, m, n]), h = C(async (d) => {
162
- var s, l;
163
- if (!a.delete)
164
- return y.error("Delete operation not supported"), !1;
165
- try {
166
- return t((r) => ({ ...r, loading: !0 })), await a.delete(d), e.optimisticUpdates ? t((r) => ({
167
- ...r,
168
- data: r.data.filter((o) => o[m] !== d),
169
- total: r.total - 1,
170
- loading: !1
171
- })) : await n(), (s = e.onSuccess) == null || s.call(e, "delete", d), y.success("Deleted successfully"), !0;
172
- } catch (r) {
173
- t((p) => ({ ...p, loading: !1 }));
174
- const o = r instanceof Error ? r.message : "Delete failed";
175
- return (l = e.onError) == null || l.call(e, "delete", r), y.error(o), !1;
176
- }
177
- }, [a, e, m, n]), w = C((d) => {
178
- t((s) => ({ ...s, pageSize: d, current: 1 }));
179
- }, []), E = C((d) => {
180
- t((s) => ({ ...s, current: d }));
181
- }, []);
182
- return {
183
- refresh: n,
184
- create: u,
185
- update: c,
186
- delete: h,
187
- setPageSize: w,
188
- setCurrentPage: E,
189
- state: S,
190
- actionRef: i
191
- };
192
- };
193
- export {
194
- T as useCrudTable
1
+ import { t as e } from "./message-C9NNC2sM.js";
2
+ import { useCallback as t, useRef as n, useState as r } from "react";
3
+ //#region lib/hooks/useCrudTable.ts
4
+ var i = (e) => {
5
+ let { baseUrl: t = "", endpoints: n = {}, headers: r = {}, transform: i } = e.api, a = {
6
+ list: "/list",
7
+ create: "/create",
8
+ update: "/update",
9
+ delete: "/delete",
10
+ ...n
11
+ }, o = async (e, n = {}) => {
12
+ let i = await fetch(`${t}${e}`, {
13
+ headers: {
14
+ "Content-Type": "application/json",
15
+ ...r
16
+ },
17
+ ...n
18
+ });
19
+ if (!i.ok) throw Error(`HTTP error! status: ${i.status}`);
20
+ return i.json();
21
+ };
22
+ return {
23
+ getList: async (e) => {
24
+ let n = new URL(`${t}${a.list}`, window.location.origin);
25
+ Object.entries(e).forEach(([e, t]) => {
26
+ t != null && n.searchParams.append(e, String(t));
27
+ });
28
+ let r = await o(n.pathname + n.search);
29
+ return i?.response ? i.response(r) : r;
30
+ },
31
+ create: async (e) => {
32
+ let t = i?.request ? i.request(e) : e;
33
+ return o(a.create, {
34
+ method: "POST",
35
+ body: JSON.stringify(t)
36
+ });
37
+ },
38
+ update: async (e, t) => {
39
+ let n = i?.request ? i.request(t) : t;
40
+ return o(`${a.update}/${e}`, {
41
+ method: "PUT",
42
+ body: JSON.stringify(n)
43
+ });
44
+ },
45
+ delete: async (e) => {
46
+ await o(`${a.delete}/${e}`, { method: "DELETE" });
47
+ }
48
+ };
49
+ }, a = (e, t) => {
50
+ let n = [...e], r = Math.max(...n.map((e) => Number(e[t]) || 0)) + 1;
51
+ return {
52
+ getList: async (e) => {
53
+ let { current: t = 1, pageSize: r = 10, sortBy: i, sortOrder: a, ...o } = e, s = [...n];
54
+ Object.entries(o).forEach(([e, t]) => {
55
+ t != null && t !== "" && (s = s.filter((n) => String(n[e]).toLowerCase().includes(String(t).toLowerCase())));
56
+ }), i && a && s.sort((e, t) => {
57
+ let n = e[i], r = t[i], o = n > r ? 1 : n < r ? -1 : 0;
58
+ return a === "ascend" ? o : -o;
59
+ });
60
+ let c = (t - 1) * r;
61
+ return {
62
+ data: s.slice(c, c + r),
63
+ total: s.length,
64
+ success: !0
65
+ };
66
+ },
67
+ create: async (e) => {
68
+ let i = {
69
+ [t]: r++,
70
+ ...e
71
+ };
72
+ return n.push(i), i;
73
+ },
74
+ update: async (e, r) => {
75
+ let i = n.findIndex((n) => n[t] === e);
76
+ if (i === -1) throw Error("Item not found");
77
+ return n[i] = {
78
+ ...n[i],
79
+ ...r
80
+ }, n[i];
81
+ },
82
+ delete: async (e) => {
83
+ let r = n.findIndex((n) => n[t] === e);
84
+ if (r === -1) throw Error("Item not found");
85
+ n.splice(r, 1);
86
+ }
87
+ };
88
+ }, o = (o, s) => {
89
+ let c = n(null), [l, u] = r({
90
+ loading: !1,
91
+ error: null,
92
+ data: [],
93
+ total: 0,
94
+ current: 1,
95
+ pageSize: s.defaultPageSize || 10
96
+ }), d = (() => {
97
+ if ("operations" in s) return s.operations;
98
+ if ("staticData" in s) return a(s.staticData, o);
99
+ if ("api" in s) return i(s);
100
+ throw Error("useCrudTable: Must provide either staticData, api config, or custom operations");
101
+ })(), f = t(async () => {
102
+ u((e) => ({
103
+ ...e,
104
+ loading: !0,
105
+ error: null
106
+ }));
107
+ try {
108
+ let e = {
109
+ current: l.current,
110
+ pageSize: l.pageSize
111
+ }, t = await d.getList(e);
112
+ u((e) => ({
113
+ ...e,
114
+ data: t.data,
115
+ total: t.total,
116
+ loading: !1
117
+ }));
118
+ } catch (t) {
119
+ let n = t instanceof Error ? t.message : "Failed to fetch data";
120
+ u((e) => ({
121
+ ...e,
122
+ loading: !1,
123
+ error: n
124
+ })), s.onError?.("fetch", t), e.error(n);
125
+ }
126
+ }, [
127
+ l.current,
128
+ l.pageSize,
129
+ d,
130
+ s
131
+ ]);
132
+ return {
133
+ refresh: f,
134
+ create: t(async (t) => {
135
+ if (!d.create) return e.error("Create operation not supported"), null;
136
+ try {
137
+ u((e) => ({
138
+ ...e,
139
+ loading: !0
140
+ }));
141
+ let n = await d.create(t);
142
+ return s.optimisticUpdates ? u((e) => ({
143
+ ...e,
144
+ data: [...e.data, n],
145
+ total: e.total + 1,
146
+ loading: !1
147
+ })) : await f(), s.onSuccess?.("create", n), e.success("Created successfully"), n;
148
+ } catch (t) {
149
+ u((e) => ({
150
+ ...e,
151
+ loading: !1
152
+ }));
153
+ let n = t instanceof Error ? t.message : "Create failed";
154
+ return s.onError?.("create", t), e.error(n), null;
155
+ }
156
+ }, [
157
+ d,
158
+ s,
159
+ f
160
+ ]),
161
+ update: t(async (t, n) => {
162
+ if (!d.update) return e.error("Update operation not supported"), null;
163
+ try {
164
+ u((e) => ({
165
+ ...e,
166
+ loading: !0
167
+ }));
168
+ let r = await d.update(t, n);
169
+ return s.optimisticUpdates ? u((e) => ({
170
+ ...e,
171
+ data: e.data.map((e) => e[o] === t ? {
172
+ ...e,
173
+ ...r
174
+ } : e),
175
+ loading: !1
176
+ })) : await f(), s.onSuccess?.("update", r), e.success("Updated successfully"), r;
177
+ } catch (t) {
178
+ u((e) => ({
179
+ ...e,
180
+ loading: !1
181
+ }));
182
+ let n = t instanceof Error ? t.message : "Update failed";
183
+ return s.onError?.("update", t), e.error(n), null;
184
+ }
185
+ }, [
186
+ d,
187
+ s,
188
+ o,
189
+ f
190
+ ]),
191
+ delete: t(async (t) => {
192
+ if (!d.delete) return e.error("Delete operation not supported"), !1;
193
+ try {
194
+ return u((e) => ({
195
+ ...e,
196
+ loading: !0
197
+ })), await d.delete(t), s.optimisticUpdates ? u((e) => ({
198
+ ...e,
199
+ data: e.data.filter((e) => e[o] !== t),
200
+ total: e.total - 1,
201
+ loading: !1
202
+ })) : await f(), s.onSuccess?.("delete", t), e.success("Deleted successfully"), !0;
203
+ } catch (t) {
204
+ u((e) => ({
205
+ ...e,
206
+ loading: !1
207
+ }));
208
+ let n = t instanceof Error ? t.message : "Delete failed";
209
+ return s.onError?.("delete", t), e.error(n), !1;
210
+ }
211
+ }, [
212
+ d,
213
+ s,
214
+ o,
215
+ f
216
+ ]),
217
+ setPageSize: t((e) => {
218
+ u((t) => ({
219
+ ...t,
220
+ pageSize: e,
221
+ current: 1
222
+ }));
223
+ }, []),
224
+ setCurrentPage: t((e) => {
225
+ u((t) => ({
226
+ ...t,
227
+ current: e
228
+ }));
229
+ }, []),
230
+ state: l,
231
+ actionRef: c
232
+ };
195
233
  };
234
+ //#endregion
235
+ export { o as useCrudTable };
@@ -0,0 +1,37 @@
1
+ export type ExportFormat = 'csv' | 'json' | 'xlsx';
2
+ interface ColumnOption {
3
+ title?: string;
4
+ dataIndex?: string;
5
+ fieldType?: string;
6
+ enumOptions?: Record<string, {
7
+ text: string;
8
+ color?: string;
9
+ }>;
10
+ }
11
+ interface ExportOptions<T> {
12
+ data: T[];
13
+ columns: ColumnOption[];
14
+ filename?: string;
15
+ format?: ExportFormat;
16
+ }
17
+ /**
18
+ * Export data to CSV format
19
+ */
20
+ export declare const exportToCSV: <T>(options: ExportOptions<T>) => void;
21
+ /**
22
+ * Export data to JSON format
23
+ */
24
+ export declare const exportToJSON: <T>(options: ExportOptions<T>) => void;
25
+ /**
26
+ * Export data to XLSX format (using simple XML format)
27
+ */
28
+ export declare const exportToXLSX: <T extends Record<string, any>>(options: ExportOptions<T>) => void;
29
+ /**
30
+ * Export data with specified format
31
+ */
32
+ export declare const exportData: <T extends Record<string, any>>(options: ExportOptions<T>) => void;
33
+ /**
34
+ * Export all data (including paginated data)
35
+ */
36
+ export declare const exportAllData: <T extends Record<string, any>>(getAllData: () => Promise<T[]>, columns: ColumnOption[], filename?: string, format?: ExportFormat) => Promise<void>;
37
+ export default exportData;
package/package.json CHANGED
@@ -1,9 +1,9 @@
1
1
  {
2
2
  "name": "antd-crud-table",
3
3
  "private": false,
4
- "version": "0.0.13",
4
+ "version": "0.1.0",
5
5
  "type": "module",
6
- "homepage": ".",
6
+ "homepage": "https://github.com/maifeeulasad/antd-crud-table",
7
7
  "keywords": [
8
8
  "antd",
9
9
  "react",
@@ -13,12 +13,14 @@
13
13
  ],
14
14
  "license": "MIT",
15
15
  "author": "Maifee Ul Asad<maifeeulasad@gmail.com>",
16
- "dependencies": {
16
+ "peerDependencies": {
17
17
  "@ant-design/icons": "^6.0.0",
18
- "@ant-design/pro-components": "^2.8.7",
19
- "antd": "^5.24.8",
18
+ "@ant-design/pro-components": "^2.8.10",
19
+ "antd": "^6.3.6",
20
20
  "date-fns": "^4.1.0",
21
- "dayjs": "^1.11.13"
21
+ "dayjs": "^1.11.13",
22
+ "react": "^18.0.0",
23
+ "react-dom": "^18.0.0"
22
24
  },
23
25
  "devDependencies": {
24
26
  "@eslint/js": "^9.22.0",
@@ -34,26 +36,22 @@
34
36
  "react-dom": "^18.0.0",
35
37
  "typescript": "~5.7.2",
36
38
  "typescript-eslint": "^8.26.1",
37
- "vite": "^6.3.1",
39
+ "vite": "^8.0.8",
38
40
  "vite-plugin-dts": "^4.5.3"
39
41
  },
40
- "peerDependencies": {
41
- "react": "^18.0.0",
42
- "react-dom": "^18.0.0"
43
- },
44
42
  "main": "./dist/CrudTable.cjs",
45
43
  "module": "./dist/CrudTable.js",
46
44
  "types": "./dist/CrudTable.d.ts",
47
45
  "exports": {
48
46
  ".": {
47
+ "types": "./dist/CrudTable.d.ts",
49
48
  "import": "./dist/CrudTable.js",
50
- "require": "./dist/CrudTable.cjs",
51
- "types": "./dist/CrudTable.d.ts"
49
+ "require": "./dist/CrudTable.cjs"
52
50
  },
53
51
  "./CrudTableLazy": {
52
+ "types": "./dist/CrudTableLazy.d.ts",
54
53
  "import": "./dist/CrudTableLazy.js",
55
- "require": "./dist/CrudTableLazy.cjs",
56
- "types": "./dist/CrudTableLazy.d.ts"
54
+ "require": "./dist/CrudTableLazy.cjs"
57
55
  }
58
56
  },
59
57
  "files": [