@juv/codego-react-ui 3.3.8 → 3.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/index.cjs +15 -10
- package/dist/index.global.js +15 -10
- package/dist/index.js +15 -10
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -6405,6 +6405,16 @@ var import_react_dom2 = require("react-dom");
|
|
|
6405
6405
|
var import_axios3 = __toESM(require("axios"), 1);
|
|
6406
6406
|
var import_lucide_react17 = require("lucide-react");
|
|
6407
6407
|
var import_jsx_runtime32 = require("react/jsx-runtime");
|
|
6408
|
+
var csrfAxios = import_axios3.default.create();
|
|
6409
|
+
csrfAxios.interceptors.request.use((config) => {
|
|
6410
|
+
const method = (config.method ?? "").toUpperCase();
|
|
6411
|
+
if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
|
|
6412
|
+
const token = document.querySelector('meta[name="csrf-token"]')?.getAttribute("content");
|
|
6413
|
+
if (!token) throw new Error('[Table] CSRF token not found. Add <meta name="csrf-token" content="..."> to your HTML <head>.');
|
|
6414
|
+
config.headers.set("X-CSRF-Token", token);
|
|
6415
|
+
}
|
|
6416
|
+
return config;
|
|
6417
|
+
});
|
|
6408
6418
|
function useServerTable({ url, params, encrypt, key, decryptPayloadLog, columnOverrides, debounce = 300, transform, manual = false, refresh: refreshEnabled = false, refreshInterval = 0, hardReload, onSuccess, onError }) {
|
|
6409
6419
|
const [data, setData] = React28.useState([]);
|
|
6410
6420
|
const [columns, setColumns] = React28.useState([]);
|
|
@@ -6743,10 +6753,7 @@ function EditModal({
|
|
|
6743
6753
|
setLoading(true);
|
|
6744
6754
|
setError(null);
|
|
6745
6755
|
try {
|
|
6746
|
-
|
|
6747
|
-
await import_axios3.default.put(`${baseUrl}/${itemId}/update`, form, {
|
|
6748
|
-
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {}
|
|
6749
|
-
});
|
|
6756
|
+
await csrfAxios.put(`${baseUrl}/${itemId}/update`, form);
|
|
6750
6757
|
const updated = { ...item, ...form };
|
|
6751
6758
|
if (notif && (notif.type ?? "toast") === "notification") {
|
|
6752
6759
|
setBanner(true);
|
|
@@ -6837,10 +6844,7 @@ function DeleteModal({
|
|
|
6837
6844
|
setLoading(true);
|
|
6838
6845
|
setError(null);
|
|
6839
6846
|
try {
|
|
6840
|
-
|
|
6841
|
-
await import_axios3.default.delete(`${baseUrl}/${itemId}/delete`, {
|
|
6842
|
-
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {}
|
|
6843
|
-
});
|
|
6847
|
+
await csrfAxios.delete(`${baseUrl}/${itemId}/delete`);
|
|
6844
6848
|
onSuccess?.(item);
|
|
6845
6849
|
onClose();
|
|
6846
6850
|
} catch (err) {
|
|
@@ -6943,6 +6947,7 @@ function Table({
|
|
|
6943
6947
|
setTableData(data ?? []);
|
|
6944
6948
|
}, [data]);
|
|
6945
6949
|
const actionIdKey = defaultActions?.idKey ?? idKey;
|
|
6950
|
+
const safeBaseUrl = defaultActions?.baseUrl.replace(/\/+$/, "") ?? "";
|
|
6946
6951
|
const autoFields = React28.useMemo(() => {
|
|
6947
6952
|
if (!tableData.length) return [];
|
|
6948
6953
|
return Object.keys(tableData[0]).map((k) => ({
|
|
@@ -7344,7 +7349,7 @@ function Table({
|
|
|
7344
7349
|
{
|
|
7345
7350
|
item: editItem,
|
|
7346
7351
|
fields: editFields,
|
|
7347
|
-
baseUrl:
|
|
7352
|
+
baseUrl: safeBaseUrl,
|
|
7348
7353
|
itemId: String(editItem[actionIdKey] ?? ""),
|
|
7349
7354
|
notif: defaultActions.onSuccessNotif,
|
|
7350
7355
|
grid: defaultActions.editFormGrid,
|
|
@@ -7372,7 +7377,7 @@ function Table({
|
|
|
7372
7377
|
DeleteModal,
|
|
7373
7378
|
{
|
|
7374
7379
|
item: deleteItem,
|
|
7375
|
-
baseUrl:
|
|
7380
|
+
baseUrl: safeBaseUrl,
|
|
7376
7381
|
itemId: String(deleteItem[actionIdKey] ?? ""),
|
|
7377
7382
|
notif: defaultActions.onSuccessNotif,
|
|
7378
7383
|
onClose: () => setDeleteItem(null),
|
package/dist/index.global.js
CHANGED
|
@@ -69551,6 +69551,16 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
69551
69551
|
var React28 = __toESM(require_react(), 1);
|
|
69552
69552
|
var import_react_dom2 = __toESM(require_react_dom(), 1);
|
|
69553
69553
|
var import_jsx_runtime32 = __toESM(require_jsx_runtime(), 1);
|
|
69554
|
+
var csrfAxios = axios_default.create();
|
|
69555
|
+
csrfAxios.interceptors.request.use((config) => {
|
|
69556
|
+
const method = (config.method ?? "").toUpperCase();
|
|
69557
|
+
if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
|
|
69558
|
+
const token = document.querySelector('meta[name="csrf-token"]')?.getAttribute("content");
|
|
69559
|
+
if (!token) throw new Error('[Table] CSRF token not found. Add <meta name="csrf-token" content="..."> to your HTML <head>.');
|
|
69560
|
+
config.headers.set("X-CSRF-Token", token);
|
|
69561
|
+
}
|
|
69562
|
+
return config;
|
|
69563
|
+
});
|
|
69554
69564
|
function useServerTable({ url: url2, params, encrypt, key, decryptPayloadLog, columnOverrides, debounce = 300, transform, manual = false, refresh: refreshEnabled = false, refreshInterval = 0, hardReload, onSuccess, onError }) {
|
|
69555
69565
|
const [data, setData] = React28.useState([]);
|
|
69556
69566
|
const [columns, setColumns] = React28.useState([]);
|
|
@@ -69889,10 +69899,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
69889
69899
|
setLoading(true);
|
|
69890
69900
|
setError(null);
|
|
69891
69901
|
try {
|
|
69892
|
-
|
|
69893
|
-
await axios_default.put(`${baseUrl}/${itemId}/update`, form, {
|
|
69894
|
-
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {}
|
|
69895
|
-
});
|
|
69902
|
+
await csrfAxios.put(`${baseUrl}/${itemId}/update`, form);
|
|
69896
69903
|
const updated = { ...item, ...form };
|
|
69897
69904
|
if (notif && (notif.type ?? "toast") === "notification") {
|
|
69898
69905
|
setBanner(true);
|
|
@@ -69983,10 +69990,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
69983
69990
|
setLoading(true);
|
|
69984
69991
|
setError(null);
|
|
69985
69992
|
try {
|
|
69986
|
-
|
|
69987
|
-
await axios_default.delete(`${baseUrl}/${itemId}/delete`, {
|
|
69988
|
-
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {}
|
|
69989
|
-
});
|
|
69993
|
+
await csrfAxios.delete(`${baseUrl}/${itemId}/delete`);
|
|
69990
69994
|
onSuccess?.(item);
|
|
69991
69995
|
onClose();
|
|
69992
69996
|
} catch (err) {
|
|
@@ -70089,6 +70093,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
70089
70093
|
setTableData(data ?? []);
|
|
70090
70094
|
}, [data]);
|
|
70091
70095
|
const actionIdKey = defaultActions?.idKey ?? idKey;
|
|
70096
|
+
const safeBaseUrl = defaultActions?.baseUrl.replace(/\/+$/, "") ?? "";
|
|
70092
70097
|
const autoFields = React28.useMemo(() => {
|
|
70093
70098
|
if (!tableData.length) return [];
|
|
70094
70099
|
return Object.keys(tableData[0]).map((k) => ({
|
|
@@ -70490,7 +70495,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
70490
70495
|
{
|
|
70491
70496
|
item: editItem,
|
|
70492
70497
|
fields: editFields,
|
|
70493
|
-
baseUrl:
|
|
70498
|
+
baseUrl: safeBaseUrl,
|
|
70494
70499
|
itemId: String(editItem[actionIdKey] ?? ""),
|
|
70495
70500
|
notif: defaultActions.onSuccessNotif,
|
|
70496
70501
|
grid: defaultActions.editFormGrid,
|
|
@@ -70518,7 +70523,7 @@ ${n2.shaderPreludeCode.vertexSource}`, define: n2.shaderDefine }, defaultProject
|
|
|
70518
70523
|
DeleteModal,
|
|
70519
70524
|
{
|
|
70520
70525
|
item: deleteItem,
|
|
70521
|
-
baseUrl:
|
|
70526
|
+
baseUrl: safeBaseUrl,
|
|
70522
70527
|
itemId: String(deleteItem[actionIdKey] ?? ""),
|
|
70523
70528
|
notif: defaultActions.onSuccessNotif,
|
|
70524
70529
|
onClose: () => setDeleteItem(null),
|
package/dist/index.js
CHANGED
|
@@ -6285,6 +6285,16 @@ import { createPortal as createPortal3 } from "react-dom";
|
|
|
6285
6285
|
import axios3 from "axios";
|
|
6286
6286
|
import { ChevronLeft as ChevronLeft6, ChevronRight as ChevronRight8, Search as Search5, Trash2 as Trash22, ChevronsUpDown, ChevronUp, ChevronDown as ChevronDown4, X as X9, Eye as Eye2, Pencil as Pencil2, Trash as Trash3, Loader2 as Loader22 } from "lucide-react";
|
|
6287
6287
|
import { Fragment as Fragment11, jsx as jsx32, jsxs as jsxs30 } from "react/jsx-runtime";
|
|
6288
|
+
var csrfAxios = axios3.create();
|
|
6289
|
+
csrfAxios.interceptors.request.use((config) => {
|
|
6290
|
+
const method = (config.method ?? "").toUpperCase();
|
|
6291
|
+
if (["POST", "PUT", "PATCH", "DELETE"].includes(method)) {
|
|
6292
|
+
const token = document.querySelector('meta[name="csrf-token"]')?.getAttribute("content");
|
|
6293
|
+
if (!token) throw new Error('[Table] CSRF token not found. Add <meta name="csrf-token" content="..."> to your HTML <head>.');
|
|
6294
|
+
config.headers.set("X-CSRF-Token", token);
|
|
6295
|
+
}
|
|
6296
|
+
return config;
|
|
6297
|
+
});
|
|
6288
6298
|
function useServerTable({ url, params, encrypt, key, decryptPayloadLog, columnOverrides, debounce = 300, transform, manual = false, refresh: refreshEnabled = false, refreshInterval = 0, hardReload, onSuccess, onError }) {
|
|
6289
6299
|
const [data, setData] = React28.useState([]);
|
|
6290
6300
|
const [columns, setColumns] = React28.useState([]);
|
|
@@ -6623,10 +6633,7 @@ function EditModal({
|
|
|
6623
6633
|
setLoading(true);
|
|
6624
6634
|
setError(null);
|
|
6625
6635
|
try {
|
|
6626
|
-
|
|
6627
|
-
await axios3.put(`${baseUrl}/${itemId}/update`, form, {
|
|
6628
|
-
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {}
|
|
6629
|
-
});
|
|
6636
|
+
await csrfAxios.put(`${baseUrl}/${itemId}/update`, form);
|
|
6630
6637
|
const updated = { ...item, ...form };
|
|
6631
6638
|
if (notif && (notif.type ?? "toast") === "notification") {
|
|
6632
6639
|
setBanner(true);
|
|
@@ -6717,10 +6724,7 @@ function DeleteModal({
|
|
|
6717
6724
|
setLoading(true);
|
|
6718
6725
|
setError(null);
|
|
6719
6726
|
try {
|
|
6720
|
-
|
|
6721
|
-
await axios3.delete(`${baseUrl}/${itemId}/delete`, {
|
|
6722
|
-
headers: csrfToken ? { "X-CSRF-Token": csrfToken } : {}
|
|
6723
|
-
});
|
|
6727
|
+
await csrfAxios.delete(`${baseUrl}/${itemId}/delete`);
|
|
6724
6728
|
onSuccess?.(item);
|
|
6725
6729
|
onClose();
|
|
6726
6730
|
} catch (err) {
|
|
@@ -6823,6 +6827,7 @@ function Table({
|
|
|
6823
6827
|
setTableData(data ?? []);
|
|
6824
6828
|
}, [data]);
|
|
6825
6829
|
const actionIdKey = defaultActions?.idKey ?? idKey;
|
|
6830
|
+
const safeBaseUrl = defaultActions?.baseUrl.replace(/\/+$/, "") ?? "";
|
|
6826
6831
|
const autoFields = React28.useMemo(() => {
|
|
6827
6832
|
if (!tableData.length) return [];
|
|
6828
6833
|
return Object.keys(tableData[0]).map((k) => ({
|
|
@@ -7224,7 +7229,7 @@ function Table({
|
|
|
7224
7229
|
{
|
|
7225
7230
|
item: editItem,
|
|
7226
7231
|
fields: editFields,
|
|
7227
|
-
baseUrl:
|
|
7232
|
+
baseUrl: safeBaseUrl,
|
|
7228
7233
|
itemId: String(editItem[actionIdKey] ?? ""),
|
|
7229
7234
|
notif: defaultActions.onSuccessNotif,
|
|
7230
7235
|
grid: defaultActions.editFormGrid,
|
|
@@ -7252,7 +7257,7 @@ function Table({
|
|
|
7252
7257
|
DeleteModal,
|
|
7253
7258
|
{
|
|
7254
7259
|
item: deleteItem,
|
|
7255
|
-
baseUrl:
|
|
7260
|
+
baseUrl: safeBaseUrl,
|
|
7256
7261
|
itemId: String(deleteItem[actionIdKey] ?? ""),
|
|
7257
7262
|
notif: defaultActions.onSuccessNotif,
|
|
7258
7263
|
onClose: () => setDeleteItem(null),
|