@juv/codego-react-ui 3.5.0 → 3.5.2
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/index.cjs +28 -22
- package/dist/index.global.js +28 -22
- package/dist/index.js +28 -22
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -1599,7 +1599,7 @@ function decryptLaravelPayload(payload, secretKey) {
|
|
|
1599
1599
|
throw new Error("Unsupported Laravel cipher (AEAD tag present). Expected AES-*-CBC payload.");
|
|
1600
1600
|
}
|
|
1601
1601
|
const key = parseLaravelKey(resolvedKey);
|
|
1602
|
-
const expectedMac = import_crypto_js.default.HmacSHA256(parsed.iv + parsed.value, key).toString();
|
|
1602
|
+
const expectedMac = import_crypto_js.default.HmacSHA256(parsed.iv + parsed.value, key).toString(import_crypto_js.default.enc.Hex);
|
|
1603
1603
|
if (expectedMac !== parsed.mac) {
|
|
1604
1604
|
throw new Error("Invalid payload MAC (wrong key or tampered payload).");
|
|
1605
1605
|
}
|
|
@@ -1670,23 +1670,25 @@ function useServerBulletin({
|
|
|
1670
1670
|
if (cancelled) return;
|
|
1671
1671
|
const payload = encrypt ? decryptLaravelPayload(res, key) : res;
|
|
1672
1672
|
if (encrypt && decryptPayloadLog) console.log("[useServerBulletin] decrypted:", payload);
|
|
1673
|
-
const rows = payload.data;
|
|
1673
|
+
const rows = Array.isArray(payload) ? payload : payload.data ?? [];
|
|
1674
1674
|
setItems(transform ? rows.map(transform) : rows);
|
|
1675
|
-
|
|
1676
|
-
|
|
1677
|
-
|
|
1678
|
-
|
|
1679
|
-
|
|
1680
|
-
|
|
1681
|
-
|
|
1682
|
-
|
|
1683
|
-
|
|
1684
|
-
|
|
1685
|
-
|
|
1686
|
-
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1675
|
+
if (!Array.isArray(payload)) {
|
|
1676
|
+
const rawTotal = payload.total;
|
|
1677
|
+
const rawPerPage = payload.per_page;
|
|
1678
|
+
const rawLastPage = payload.last_page;
|
|
1679
|
+
const lastPage = rawLastPage ?? Math.ceil(rawTotal / rawPerPage);
|
|
1680
|
+
const pg = payload.pagination ?? {
|
|
1681
|
+
first_page_url: payload.first_page_url ?? `${url}?page=1`,
|
|
1682
|
+
last_page_url: payload.last_page_url ?? `${url}?page=${lastPage}`,
|
|
1683
|
+
last_page: lastPage,
|
|
1684
|
+
next_page_url: payload.next_page_url !== void 0 ? payload.next_page_url : currentPage < lastPage ? `${url}?page=${currentPage + 1}` : null,
|
|
1685
|
+
prev_page_url: payload.prev_page_url !== void 0 ? payload.prev_page_url : currentPage > 1 ? `${url}?page=${currentPage - 1}` : null,
|
|
1686
|
+
per_page: rawPerPage,
|
|
1687
|
+
total: rawTotal,
|
|
1688
|
+
links: payload.links ?? []
|
|
1689
|
+
};
|
|
1690
|
+
setPagination(pg);
|
|
1691
|
+
}
|
|
1690
1692
|
}).catch((err) => {
|
|
1691
1693
|
if (cancelled) return;
|
|
1692
1694
|
setError(err?.response?.data?.message ?? err.message ?? "Request failed");
|
|
@@ -2237,13 +2239,13 @@ function BulletinBoard({
|
|
|
2237
2239
|
const categories = React8.useMemo(() => {
|
|
2238
2240
|
if (categoriesProp) return categoriesProp;
|
|
2239
2241
|
const set = /* @__PURE__ */ new Set();
|
|
2240
|
-
items.forEach((i) => {
|
|
2242
|
+
(items ?? []).forEach((i) => {
|
|
2241
2243
|
if (i.category) set.add(i.category);
|
|
2242
2244
|
});
|
|
2243
2245
|
return Array.from(set);
|
|
2244
2246
|
}, [items, categoriesProp]);
|
|
2245
2247
|
const filtered = React8.useMemo(() => {
|
|
2246
|
-
let list = items;
|
|
2248
|
+
let list = items ?? [];
|
|
2247
2249
|
if (search.trim()) {
|
|
2248
2250
|
const q = search.toLowerCase();
|
|
2249
2251
|
list = list.filter(
|
|
@@ -2252,7 +2254,7 @@ function BulletinBoard({
|
|
|
2252
2254
|
}
|
|
2253
2255
|
if (category) list = list.filter((i) => i.category === category);
|
|
2254
2256
|
return [...list].sort((a, b) => (b.pinned ? 1 : 0) - (a.pinned ? 1 : 0));
|
|
2255
|
-
}, [items, search, category]);
|
|
2257
|
+
}, [items ?? [], search, category]);
|
|
2256
2258
|
const showToolbar = searchable || filterable && categories.length > 0;
|
|
2257
2259
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
2258
2260
|
showHeader && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -7651,8 +7653,10 @@ function Table({
|
|
|
7651
7653
|
onBulkDelete?.(selectedIds);
|
|
7652
7654
|
setSelectedIds([]);
|
|
7653
7655
|
defaultActions?.onReload?.();
|
|
7656
|
+
toast({ variant: "success", title: "Deleted", description: `${selectedIds.length} record${selectedIds.length !== 1 ? "s" : ""} deleted successfully.` });
|
|
7654
7657
|
} catch (err) {
|
|
7655
|
-
|
|
7658
|
+
const msg = err?.response?.data?.message ?? err.message ?? "Bulk delete failed";
|
|
7659
|
+
toast({ variant: "error", title: "Delete failed", description: msg });
|
|
7656
7660
|
} finally {
|
|
7657
7661
|
setBulkLoading(false);
|
|
7658
7662
|
}
|
|
@@ -7668,8 +7672,10 @@ function Table({
|
|
|
7668
7672
|
setTableData([]);
|
|
7669
7673
|
setSelectedIds([]);
|
|
7670
7674
|
defaultActions?.onReload?.();
|
|
7675
|
+
toast({ variant: "success", title: "Deleted", description: "All records deleted successfully." });
|
|
7671
7676
|
} catch (err) {
|
|
7672
|
-
|
|
7677
|
+
const msg = err?.response?.data?.message ?? err.message ?? "Delete all failed";
|
|
7678
|
+
toast({ variant: "error", title: "Delete failed", description: msg });
|
|
7673
7679
|
} finally {
|
|
7674
7680
|
setBulkLoading(false);
|
|
7675
7681
|
}
|
package/dist/index.global.js
CHANGED
|
@@ -64773,7 +64773,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
64773
64773
|
throw new Error("Unsupported Laravel cipher (AEAD tag present). Expected AES-*-CBC payload.");
|
|
64774
64774
|
}
|
|
64775
64775
|
const key = parseLaravelKey(resolvedKey);
|
|
64776
|
-
const expectedMac = import_crypto_js.default.HmacSHA256(parsed.iv + parsed.value, key).toString();
|
|
64776
|
+
const expectedMac = import_crypto_js.default.HmacSHA256(parsed.iv + parsed.value, key).toString(import_crypto_js.default.enc.Hex);
|
|
64777
64777
|
if (expectedMac !== parsed.mac) {
|
|
64778
64778
|
throw new Error("Invalid payload MAC (wrong key or tampered payload).");
|
|
64779
64779
|
}
|
|
@@ -64844,23 +64844,25 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
64844
64844
|
if (cancelled) return;
|
|
64845
64845
|
const payload = encrypt ? decryptLaravelPayload(res, key) : res;
|
|
64846
64846
|
if (encrypt && decryptPayloadLog) console.log("[useServerBulletin] decrypted:", payload);
|
|
64847
|
-
const rows = payload.data;
|
|
64847
|
+
const rows = Array.isArray(payload) ? payload : payload.data ?? [];
|
|
64848
64848
|
setItems(transform ? rows.map(transform) : rows);
|
|
64849
|
-
|
|
64850
|
-
|
|
64851
|
-
|
|
64852
|
-
|
|
64853
|
-
|
|
64854
|
-
|
|
64855
|
-
|
|
64856
|
-
|
|
64857
|
-
|
|
64858
|
-
|
|
64859
|
-
|
|
64860
|
-
|
|
64861
|
-
|
|
64862
|
-
|
|
64863
|
-
|
|
64849
|
+
if (!Array.isArray(payload)) {
|
|
64850
|
+
const rawTotal = payload.total;
|
|
64851
|
+
const rawPerPage = payload.per_page;
|
|
64852
|
+
const rawLastPage = payload.last_page;
|
|
64853
|
+
const lastPage = rawLastPage ?? Math.ceil(rawTotal / rawPerPage);
|
|
64854
|
+
const pg = payload.pagination ?? {
|
|
64855
|
+
first_page_url: payload.first_page_url ?? `${url2}?page=1`,
|
|
64856
|
+
last_page_url: payload.last_page_url ?? `${url2}?page=${lastPage}`,
|
|
64857
|
+
last_page: lastPage,
|
|
64858
|
+
next_page_url: payload.next_page_url !== void 0 ? payload.next_page_url : currentPage < lastPage ? `${url2}?page=${currentPage + 1}` : null,
|
|
64859
|
+
prev_page_url: payload.prev_page_url !== void 0 ? payload.prev_page_url : currentPage > 1 ? `${url2}?page=${currentPage - 1}` : null,
|
|
64860
|
+
per_page: rawPerPage,
|
|
64861
|
+
total: rawTotal,
|
|
64862
|
+
links: payload.links ?? []
|
|
64863
|
+
};
|
|
64864
|
+
setPagination(pg);
|
|
64865
|
+
}
|
|
64864
64866
|
}).catch((err) => {
|
|
64865
64867
|
if (cancelled) return;
|
|
64866
64868
|
setError(err?.response?.data?.message ?? err.message ?? "Request failed");
|
|
@@ -65411,13 +65413,13 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
65411
65413
|
const categories = React8.useMemo(() => {
|
|
65412
65414
|
if (categoriesProp) return categoriesProp;
|
|
65413
65415
|
const set = /* @__PURE__ */ new Set();
|
|
65414
|
-
items.forEach((i) => {
|
|
65416
|
+
(items ?? []).forEach((i) => {
|
|
65415
65417
|
if (i.category) set.add(i.category);
|
|
65416
65418
|
});
|
|
65417
65419
|
return Array.from(set);
|
|
65418
65420
|
}, [items, categoriesProp]);
|
|
65419
65421
|
const filtered = React8.useMemo(() => {
|
|
65420
|
-
let list = items;
|
|
65422
|
+
let list = items ?? [];
|
|
65421
65423
|
if (search.trim()) {
|
|
65422
65424
|
const q = search.toLowerCase();
|
|
65423
65425
|
list = list.filter(
|
|
@@ -65426,7 +65428,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
65426
65428
|
}
|
|
65427
65429
|
if (category) list = list.filter((i) => i.category === category);
|
|
65428
65430
|
return [...list].sort((a, b) => (b.pinned ? 1 : 0) - (a.pinned ? 1 : 0));
|
|
65429
|
-
}, [items, search, category]);
|
|
65431
|
+
}, [items ?? [], search, category]);
|
|
65430
65432
|
const showToolbar = searchable || filterable && categories.length > 0;
|
|
65431
65433
|
return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
65432
65434
|
showHeader && /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -70809,8 +70811,10 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
70809
70811
|
onBulkDelete?.(selectedIds);
|
|
70810
70812
|
setSelectedIds([]);
|
|
70811
70813
|
defaultActions?.onReload?.();
|
|
70814
|
+
toast({ variant: "success", title: "Deleted", description: `${selectedIds.length} record${selectedIds.length !== 1 ? "s" : ""} deleted successfully.` });
|
|
70812
70815
|
} catch (err) {
|
|
70813
|
-
|
|
70816
|
+
const msg = err?.response?.data?.message ?? err.message ?? "Bulk delete failed";
|
|
70817
|
+
toast({ variant: "error", title: "Delete failed", description: msg });
|
|
70814
70818
|
} finally {
|
|
70815
70819
|
setBulkLoading(false);
|
|
70816
70820
|
}
|
|
@@ -70826,8 +70830,10 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
70826
70830
|
setTableData([]);
|
|
70827
70831
|
setSelectedIds([]);
|
|
70828
70832
|
defaultActions?.onReload?.();
|
|
70833
|
+
toast({ variant: "success", title: "Deleted", description: "All records deleted successfully." });
|
|
70829
70834
|
} catch (err) {
|
|
70830
|
-
|
|
70835
|
+
const msg = err?.response?.data?.message ?? err.message ?? "Delete all failed";
|
|
70836
|
+
toast({ variant: "error", title: "Delete failed", description: msg });
|
|
70831
70837
|
} finally {
|
|
70832
70838
|
setBulkLoading(false);
|
|
70833
70839
|
}
|
package/dist/index.js
CHANGED
|
@@ -1478,7 +1478,7 @@ function decryptLaravelPayload(payload, secretKey) {
|
|
|
1478
1478
|
throw new Error("Unsupported Laravel cipher (AEAD tag present). Expected AES-*-CBC payload.");
|
|
1479
1479
|
}
|
|
1480
1480
|
const key = parseLaravelKey(resolvedKey);
|
|
1481
|
-
const expectedMac = CryptoJS.HmacSHA256(parsed.iv + parsed.value, key).toString();
|
|
1481
|
+
const expectedMac = CryptoJS.HmacSHA256(parsed.iv + parsed.value, key).toString(CryptoJS.enc.Hex);
|
|
1482
1482
|
if (expectedMac !== parsed.mac) {
|
|
1483
1483
|
throw new Error("Invalid payload MAC (wrong key or tampered payload).");
|
|
1484
1484
|
}
|
|
@@ -1549,23 +1549,25 @@ function useServerBulletin({
|
|
|
1549
1549
|
if (cancelled) return;
|
|
1550
1550
|
const payload = encrypt ? decryptLaravelPayload(res, key) : res;
|
|
1551
1551
|
if (encrypt && decryptPayloadLog) console.log("[useServerBulletin] decrypted:", payload);
|
|
1552
|
-
const rows = payload.data;
|
|
1552
|
+
const rows = Array.isArray(payload) ? payload : payload.data ?? [];
|
|
1553
1553
|
setItems(transform ? rows.map(transform) : rows);
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1554
|
+
if (!Array.isArray(payload)) {
|
|
1555
|
+
const rawTotal = payload.total;
|
|
1556
|
+
const rawPerPage = payload.per_page;
|
|
1557
|
+
const rawLastPage = payload.last_page;
|
|
1558
|
+
const lastPage = rawLastPage ?? Math.ceil(rawTotal / rawPerPage);
|
|
1559
|
+
const pg = payload.pagination ?? {
|
|
1560
|
+
first_page_url: payload.first_page_url ?? `${url}?page=1`,
|
|
1561
|
+
last_page_url: payload.last_page_url ?? `${url}?page=${lastPage}`,
|
|
1562
|
+
last_page: lastPage,
|
|
1563
|
+
next_page_url: payload.next_page_url !== void 0 ? payload.next_page_url : currentPage < lastPage ? `${url}?page=${currentPage + 1}` : null,
|
|
1564
|
+
prev_page_url: payload.prev_page_url !== void 0 ? payload.prev_page_url : currentPage > 1 ? `${url}?page=${currentPage - 1}` : null,
|
|
1565
|
+
per_page: rawPerPage,
|
|
1566
|
+
total: rawTotal,
|
|
1567
|
+
links: payload.links ?? []
|
|
1568
|
+
};
|
|
1569
|
+
setPagination(pg);
|
|
1570
|
+
}
|
|
1569
1571
|
}).catch((err) => {
|
|
1570
1572
|
if (cancelled) return;
|
|
1571
1573
|
setError(err?.response?.data?.message ?? err.message ?? "Request failed");
|
|
@@ -2116,13 +2118,13 @@ function BulletinBoard({
|
|
|
2116
2118
|
const categories = React8.useMemo(() => {
|
|
2117
2119
|
if (categoriesProp) return categoriesProp;
|
|
2118
2120
|
const set = /* @__PURE__ */ new Set();
|
|
2119
|
-
items.forEach((i) => {
|
|
2121
|
+
(items ?? []).forEach((i) => {
|
|
2120
2122
|
if (i.category) set.add(i.category);
|
|
2121
2123
|
});
|
|
2122
2124
|
return Array.from(set);
|
|
2123
2125
|
}, [items, categoriesProp]);
|
|
2124
2126
|
const filtered = React8.useMemo(() => {
|
|
2125
|
-
let list = items;
|
|
2127
|
+
let list = items ?? [];
|
|
2126
2128
|
if (search.trim()) {
|
|
2127
2129
|
const q = search.toLowerCase();
|
|
2128
2130
|
list = list.filter(
|
|
@@ -2131,7 +2133,7 @@ function BulletinBoard({
|
|
|
2131
2133
|
}
|
|
2132
2134
|
if (category) list = list.filter((i) => i.category === category);
|
|
2133
2135
|
return [...list].sort((a, b) => (b.pinned ? 1 : 0) - (a.pinned ? 1 : 0));
|
|
2134
|
-
}, [items, search, category]);
|
|
2136
|
+
}, [items ?? [], search, category]);
|
|
2135
2137
|
const showToolbar = searchable || filterable && categories.length > 0;
|
|
2136
2138
|
return /* @__PURE__ */ jsxs9("div", { className: cn("flex flex-col gap-4", className), children: [
|
|
2137
2139
|
showHeader && /* @__PURE__ */ jsxs9("div", { className: "flex items-center justify-between gap-2", children: [
|
|
@@ -7530,8 +7532,10 @@ function Table({
|
|
|
7530
7532
|
onBulkDelete?.(selectedIds);
|
|
7531
7533
|
setSelectedIds([]);
|
|
7532
7534
|
defaultActions?.onReload?.();
|
|
7535
|
+
toast({ variant: "success", title: "Deleted", description: `${selectedIds.length} record${selectedIds.length !== 1 ? "s" : ""} deleted successfully.` });
|
|
7533
7536
|
} catch (err) {
|
|
7534
|
-
|
|
7537
|
+
const msg = err?.response?.data?.message ?? err.message ?? "Bulk delete failed";
|
|
7538
|
+
toast({ variant: "error", title: "Delete failed", description: msg });
|
|
7535
7539
|
} finally {
|
|
7536
7540
|
setBulkLoading(false);
|
|
7537
7541
|
}
|
|
@@ -7547,8 +7551,10 @@ function Table({
|
|
|
7547
7551
|
setTableData([]);
|
|
7548
7552
|
setSelectedIds([]);
|
|
7549
7553
|
defaultActions?.onReload?.();
|
|
7554
|
+
toast({ variant: "success", title: "Deleted", description: "All records deleted successfully." });
|
|
7550
7555
|
} catch (err) {
|
|
7551
|
-
|
|
7556
|
+
const msg = err?.response?.data?.message ?? err.message ?? "Delete all failed";
|
|
7557
|
+
toast({ variant: "error", title: "Delete failed", description: msg });
|
|
7552
7558
|
} finally {
|
|
7553
7559
|
setBulkLoading(false);
|
|
7554
7560
|
}
|