antd-crud-table 0.2.0 → 0.4.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.
- package/dist/CrudTable.cjs +1 -1
- package/dist/CrudTable.d.ts +7 -11
- package/dist/CrudTable.js +226 -132
- package/dist/CrudTableLazy.cjs +1 -1
- package/dist/CrudTableLazy.d.ts +1 -0
- package/dist/CrudTableLazy.js +13 -22
- package/dist/exportData.cjs +13 -0
- package/dist/exportData.js +64 -0
- package/dist/index.d.ts +0 -3
- package/dist/useCrudTable.cjs +1 -1
- package/dist/useCrudTable.js +1 -1
- package/dist/useLocalStorageCrud.cjs +1 -0
- package/dist/useLocalStorageCrud.js +201 -0
- package/package.json +13 -1
- package/dist/CrudTable-CDqv0ksy.cjs +0 -387
- package/dist/CrudTable-DbG9ZeYQ.js +0 -73031
- package/dist/CrudTableExperimental.cjs +0 -1
- package/dist/CrudTableExperimental.d.ts +0 -34
- package/dist/CrudTableExperimental.js +0 -304
- package/dist/CrudTableExperimentalLazy.d.ts +0 -4
- package/dist/chunk-BZRuZbSa.cjs +0 -1
- package/dist/chunk-DrlAKpkd.js +0 -23
- package/dist/jsx-runtime-Blo4gjKb.js +0 -475
- package/dist/jsx-runtime-D8R_Hd8N.cjs +0 -16
- package/dist/message-C5ORE39N.cjs +0 -124
- package/dist/message-C9NNC2sM.js +0 -7083
package/dist/useCrudTable.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./
|
|
1
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`}),require(`./CrudTable.cjs`);let e=require(`antd`),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.message.error(n)}},[s.current,s.pageSize,l,a]);return{refresh:u,create:(0,t.useCallback)(async t=>{if(!l.create)return e.message.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.message.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.message.error(n),null}},[l,a,u]),update:(0,t.useCallback)(async(t,n)=>{if(!l.update)return e.message.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.message.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.message.error(n),null}},[l,a,i,u]),delete:(0,t.useCallback)(async t=>{if(!l.delete)return e.message.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.message.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.message.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;
|
package/dist/useCrudTable.js
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}}),require(`./CrudTable.cjs`);let e=require(`antd`),t=require(`react`);var n=(e,t=[])=>{try{let n=localStorage.getItem(e);return n?JSON.parse(n):t}catch{return t}},r=(e,t)=>{try{localStorage.setItem(e,JSON.stringify(t))}catch(e){console.error(`Failed to save to localStorage:`,e)}},i=(e,t,i=[])=>({getList:async t=>{let{current:r=1,pageSize:a=10,sortBy:o,sortOrder:s,...c}=t,l=n(e,i);Object.entries(c).forEach(([e,t])=>{t!=null&&t!==``&&e!==`current`&&e!==`pageSize`&&(l=l.filter(n=>{let r=n[e];return r==null?!1:String(r).toLowerCase().includes(String(t).toLowerCase())}))}),o&&s&&l.sort((e,t)=>{let n=e[o],r=t[o];if(n==null)return 1;if(r==null)return-1;let i=n>r?1:n<r?-1:0;return s===`ascend`?i:-i});let u=(r-1)*a;return{data:l.slice(u,u+a),total:l.length,success:!0}},create:async a=>{let o=n(e,i),s=o.length>0?Math.max(...o.map(e=>Number(e[t])||0),0):0,c={[t]:s+1,...a,createdAt:new Date().toISOString(),updatedAt:new Date().toISOString()};return o.push(c),r(e,o),c},update:async(a,o)=>{let s=n(e,i),c=s.findIndex(e=>e[t]===a);if(c===-1)throw Error(`Item not found`);return s[c]={...s[c],...o,updatedAt:new Date().toISOString()},r(e,s),s[c]},delete:async a=>{r(e,n(e,i).filter(e=>e[t]!==a))}}),a=(n,r,a=[],o)=>{let s=(0,t.useRef)(null),[c,l]=(0,t.useState)({loading:!1,error:null,data:[],total:0,current:1,pageSize:o?.defaultPageSize||10}),u=i(r,n,a),d=(0,t.useCallback)(async()=>{l(e=>({...e,loading:!0,error:null}));try{let e={current:c.current,pageSize:c.pageSize},t=await u.getList(e);l(e=>({...e,data:t.data,total:t.total,loading:!1}))}catch(t){let n=t instanceof Error?t.message:`Failed to fetch data`;l(e=>({...e,loading:!1,error:n})),o?.onError?.(`fetch`,t),e.message.error(n)}},[c.current,c.pageSize,u,o]);return(0,t.useEffect)(()=>{d()},[]),{refresh:d,create:(0,t.useCallback)(async t=>{try{l(e=>({...e,loading:!0}));let n=await u.create(t);return o?.optimisticUpdates?l(e=>({...e,data:[...e.data,n],total:e.total+1,loading:!1})):await d(),o?.onSuccess?.(`create`,n),e.message.success(`Created successfully`),s.current?.reload(),n}catch(t){l(e=>({...e,loading:!1}));let n=t instanceof Error?t.message:`Create failed`;return o?.onError?.(`create`,t),e.message.error(n),null}},[u,o,d]),update:(0,t.useCallback)(async(t,r)=>{try{l(e=>({...e,loading:!0}));let i=await u.update(t,r);return o?.optimisticUpdates?l(e=>({...e,data:e.data.map(e=>e[n]===t?{...e,...i}:e),loading:!1})):await d(),o?.onSuccess?.(`update`,i),e.message.success(`Updated successfully`),s.current?.reload(),i}catch(t){l(e=>({...e,loading:!1}));let n=t instanceof Error?t.message:`Update failed`;return o?.onError?.(`update`,t),e.message.error(n),null}},[u,o,n,d]),delete:(0,t.useCallback)(async t=>{try{return l(e=>({...e,loading:!0})),await u.delete(t),o?.optimisticUpdates?l(e=>({...e,data:e.data.filter(e=>e[n]!==t),total:e.total-1,loading:!1})):await d(),o?.onSuccess?.(`delete`,t),e.message.success(`Deleted successfully`),s.current?.reload(),!0}catch(t){l(e=>({...e,loading:!1}));let n=t instanceof Error?t.message:`Delete failed`;return o?.onError?.(`delete`,t),e.message.error(n),!1}},[u,o,n,d]),setPageSize:(0,t.useCallback)(e=>{l(t=>({...t,pageSize:e,current:1}))},[]),setCurrentPage:(0,t.useCallback)(e=>{l(t=>({...t,current:e}))},[]),state:c,actionRef:s}};exports.default=a,exports.useLocalStorageCrud=a;
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { message as e } from "antd";
|
|
2
|
+
import { useCallback as t, useEffect as n, useRef as r, useState as i } from "react";
|
|
3
|
+
//#region lib/hooks/useLocalStorageCrud.ts
|
|
4
|
+
var a = (e, t = []) => {
|
|
5
|
+
try {
|
|
6
|
+
let n = localStorage.getItem(e);
|
|
7
|
+
return n ? JSON.parse(n) : t;
|
|
8
|
+
} catch {
|
|
9
|
+
return t;
|
|
10
|
+
}
|
|
11
|
+
}, o = (e, t) => {
|
|
12
|
+
try {
|
|
13
|
+
localStorage.setItem(e, JSON.stringify(t));
|
|
14
|
+
} catch (e) {
|
|
15
|
+
console.error("Failed to save to localStorage:", e);
|
|
16
|
+
}
|
|
17
|
+
}, s = (e, t, n = []) => ({
|
|
18
|
+
getList: async (t) => {
|
|
19
|
+
let { current: r = 1, pageSize: i = 10, sortBy: o, sortOrder: s, ...c } = t, l = a(e, n);
|
|
20
|
+
Object.entries(c).forEach(([e, t]) => {
|
|
21
|
+
t != null && t !== "" && e !== "current" && e !== "pageSize" && (l = l.filter((n) => {
|
|
22
|
+
let r = n[e];
|
|
23
|
+
return r == null ? !1 : String(r).toLowerCase().includes(String(t).toLowerCase());
|
|
24
|
+
}));
|
|
25
|
+
}), o && s && l.sort((e, t) => {
|
|
26
|
+
let n = e[o], r = t[o];
|
|
27
|
+
if (n == null) return 1;
|
|
28
|
+
if (r == null) return -1;
|
|
29
|
+
let i = n > r ? 1 : n < r ? -1 : 0;
|
|
30
|
+
return s === "ascend" ? i : -i;
|
|
31
|
+
});
|
|
32
|
+
let u = (r - 1) * i;
|
|
33
|
+
return {
|
|
34
|
+
data: l.slice(u, u + i),
|
|
35
|
+
total: l.length,
|
|
36
|
+
success: !0
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
create: async (r) => {
|
|
40
|
+
let i = a(e, n), s = i.length > 0 ? Math.max(...i.map((e) => Number(e[t]) || 0), 0) : 0, c = {
|
|
41
|
+
[t]: s + 1,
|
|
42
|
+
...r,
|
|
43
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
44
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
45
|
+
};
|
|
46
|
+
return i.push(c), o(e, i), c;
|
|
47
|
+
},
|
|
48
|
+
update: async (r, i) => {
|
|
49
|
+
let s = a(e, n), c = s.findIndex((e) => e[t] === r);
|
|
50
|
+
if (c === -1) throw Error("Item not found");
|
|
51
|
+
return s[c] = {
|
|
52
|
+
...s[c],
|
|
53
|
+
...i,
|
|
54
|
+
updatedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
55
|
+
}, o(e, s), s[c];
|
|
56
|
+
},
|
|
57
|
+
delete: async (r) => {
|
|
58
|
+
o(e, a(e, n).filter((e) => e[t] !== r));
|
|
59
|
+
}
|
|
60
|
+
}), c = (a, o, c = [], l) => {
|
|
61
|
+
let u = r(null), [d, f] = i({
|
|
62
|
+
loading: !1,
|
|
63
|
+
error: null,
|
|
64
|
+
data: [],
|
|
65
|
+
total: 0,
|
|
66
|
+
current: 1,
|
|
67
|
+
pageSize: l?.defaultPageSize || 10
|
|
68
|
+
}), p = s(o, a, c), m = t(async () => {
|
|
69
|
+
f((e) => ({
|
|
70
|
+
...e,
|
|
71
|
+
loading: !0,
|
|
72
|
+
error: null
|
|
73
|
+
}));
|
|
74
|
+
try {
|
|
75
|
+
let e = {
|
|
76
|
+
current: d.current,
|
|
77
|
+
pageSize: d.pageSize
|
|
78
|
+
}, t = await p.getList(e);
|
|
79
|
+
f((e) => ({
|
|
80
|
+
...e,
|
|
81
|
+
data: t.data,
|
|
82
|
+
total: t.total,
|
|
83
|
+
loading: !1
|
|
84
|
+
}));
|
|
85
|
+
} catch (t) {
|
|
86
|
+
let n = t instanceof Error ? t.message : "Failed to fetch data";
|
|
87
|
+
f((e) => ({
|
|
88
|
+
...e,
|
|
89
|
+
loading: !1,
|
|
90
|
+
error: n
|
|
91
|
+
})), l?.onError?.("fetch", t), e.error(n);
|
|
92
|
+
}
|
|
93
|
+
}, [
|
|
94
|
+
d.current,
|
|
95
|
+
d.pageSize,
|
|
96
|
+
p,
|
|
97
|
+
l
|
|
98
|
+
]);
|
|
99
|
+
return n(() => {
|
|
100
|
+
m();
|
|
101
|
+
}, []), {
|
|
102
|
+
refresh: m,
|
|
103
|
+
create: t(async (t) => {
|
|
104
|
+
try {
|
|
105
|
+
f((e) => ({
|
|
106
|
+
...e,
|
|
107
|
+
loading: !0
|
|
108
|
+
}));
|
|
109
|
+
let n = await p.create(t);
|
|
110
|
+
return l?.optimisticUpdates ? f((e) => ({
|
|
111
|
+
...e,
|
|
112
|
+
data: [...e.data, n],
|
|
113
|
+
total: e.total + 1,
|
|
114
|
+
loading: !1
|
|
115
|
+
})) : await m(), l?.onSuccess?.("create", n), e.success("Created successfully"), u.current?.reload(), n;
|
|
116
|
+
} catch (t) {
|
|
117
|
+
f((e) => ({
|
|
118
|
+
...e,
|
|
119
|
+
loading: !1
|
|
120
|
+
}));
|
|
121
|
+
let n = t instanceof Error ? t.message : "Create failed";
|
|
122
|
+
return l?.onError?.("create", t), e.error(n), null;
|
|
123
|
+
}
|
|
124
|
+
}, [
|
|
125
|
+
p,
|
|
126
|
+
l,
|
|
127
|
+
m
|
|
128
|
+
]),
|
|
129
|
+
update: t(async (t, n) => {
|
|
130
|
+
try {
|
|
131
|
+
f((e) => ({
|
|
132
|
+
...e,
|
|
133
|
+
loading: !0
|
|
134
|
+
}));
|
|
135
|
+
let r = await p.update(t, n);
|
|
136
|
+
return l?.optimisticUpdates ? f((e) => ({
|
|
137
|
+
...e,
|
|
138
|
+
data: e.data.map((e) => e[a] === t ? {
|
|
139
|
+
...e,
|
|
140
|
+
...r
|
|
141
|
+
} : e),
|
|
142
|
+
loading: !1
|
|
143
|
+
})) : await m(), l?.onSuccess?.("update", r), e.success("Updated successfully"), u.current?.reload(), r;
|
|
144
|
+
} catch (t) {
|
|
145
|
+
f((e) => ({
|
|
146
|
+
...e,
|
|
147
|
+
loading: !1
|
|
148
|
+
}));
|
|
149
|
+
let n = t instanceof Error ? t.message : "Update failed";
|
|
150
|
+
return l?.onError?.("update", t), e.error(n), null;
|
|
151
|
+
}
|
|
152
|
+
}, [
|
|
153
|
+
p,
|
|
154
|
+
l,
|
|
155
|
+
a,
|
|
156
|
+
m
|
|
157
|
+
]),
|
|
158
|
+
delete: t(async (t) => {
|
|
159
|
+
try {
|
|
160
|
+
return f((e) => ({
|
|
161
|
+
...e,
|
|
162
|
+
loading: !0
|
|
163
|
+
})), await p.delete(t), l?.optimisticUpdates ? f((e) => ({
|
|
164
|
+
...e,
|
|
165
|
+
data: e.data.filter((e) => e[a] !== t),
|
|
166
|
+
total: e.total - 1,
|
|
167
|
+
loading: !1
|
|
168
|
+
})) : await m(), l?.onSuccess?.("delete", t), e.success("Deleted successfully"), u.current?.reload(), !0;
|
|
169
|
+
} catch (t) {
|
|
170
|
+
f((e) => ({
|
|
171
|
+
...e,
|
|
172
|
+
loading: !1
|
|
173
|
+
}));
|
|
174
|
+
let n = t instanceof Error ? t.message : "Delete failed";
|
|
175
|
+
return l?.onError?.("delete", t), e.error(n), !1;
|
|
176
|
+
}
|
|
177
|
+
}, [
|
|
178
|
+
p,
|
|
179
|
+
l,
|
|
180
|
+
a,
|
|
181
|
+
m
|
|
182
|
+
]),
|
|
183
|
+
setPageSize: t((e) => {
|
|
184
|
+
f((t) => ({
|
|
185
|
+
...t,
|
|
186
|
+
pageSize: e,
|
|
187
|
+
current: 1
|
|
188
|
+
}));
|
|
189
|
+
}, []),
|
|
190
|
+
setCurrentPage: t((e) => {
|
|
191
|
+
f((t) => ({
|
|
192
|
+
...t,
|
|
193
|
+
current: e
|
|
194
|
+
}));
|
|
195
|
+
}, []),
|
|
196
|
+
state: d,
|
|
197
|
+
actionRef: u
|
|
198
|
+
};
|
|
199
|
+
};
|
|
200
|
+
//#endregion
|
|
201
|
+
export { c as default, c as useLocalStorageCrud };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "antd-crud-table",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"homepage": "https://github.com/maifeeulasad/antd-crud-table",
|
|
7
7
|
"repository": {
|
|
@@ -56,6 +56,17 @@
|
|
|
56
56
|
"types": "./dist/CrudTableLazy.d.ts",
|
|
57
57
|
"import": "./dist/CrudTableLazy.js",
|
|
58
58
|
"require": "./dist/CrudTableLazy.cjs"
|
|
59
|
+
},
|
|
60
|
+
"./hooks/useCrudTable": {
|
|
61
|
+
"types": "./dist/hooks/useCrudTable.d.ts",
|
|
62
|
+
"import": "./dist/useCrudTable.js",
|
|
63
|
+
"require": "./dist/useCrudTable.cjs"
|
|
64
|
+
},
|
|
65
|
+
"./hooks/useLocalStorageCrud": {
|
|
66
|
+
"types": "./dist/hooks/useLocalStorageCrud.d.ts"
|
|
67
|
+
},
|
|
68
|
+
"./utils/exportData": {
|
|
69
|
+
"types": "./dist/utils/exportData.d.ts"
|
|
59
70
|
}
|
|
60
71
|
},
|
|
61
72
|
"files": [
|
|
@@ -66,6 +77,7 @@
|
|
|
66
77
|
"build:static": "tsc -b && vite build",
|
|
67
78
|
"build:lib": "tsc --p ./tsconfig.build.json && vite build --config vite.config.lib.ts",
|
|
68
79
|
"lint": "eslint .",
|
|
80
|
+
"lint:fix": "eslint . --fix",
|
|
69
81
|
"preview": "vite preview"
|
|
70
82
|
}
|
|
71
83
|
}
|