next-recomponents 2.0.13 → 2.0.14
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.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +23 -13
- package/dist/index.mjs +31 -21
- package/package.json +1 -1
- package/src/modal/index.tsx +10 -10
- package/src/pop/index.tsx +29 -7
- package/src/pop/overlay.tsx +1 -0
package/dist/index.d.mts
CHANGED
|
@@ -224,6 +224,7 @@ declare function usePopup(): {
|
|
|
224
224
|
modal: (message: ReactNode, color?: PopupColor, icons?: boolean, full?: boolean) => Promise<void>;
|
|
225
225
|
PopupComponent: react_jsx_runtime.JSX.Element | null;
|
|
226
226
|
close: (confirmed: boolean, value?: string) => void;
|
|
227
|
+
updateMessage: (message: ReactNode) => void;
|
|
227
228
|
};
|
|
228
229
|
|
|
229
230
|
export { Alert, Button, Container, DocumentViewer, Form, Input, Modal, MyCalendar, Pre, Select, Table, Table3, type TableButtonProps, type TableButtonProps as TableEventProps, TextArea, regularExpresions, useDates, useExcel, useFormValues, usePopup, useResources };
|
package/dist/index.d.ts
CHANGED
|
@@ -224,6 +224,7 @@ declare function usePopup(): {
|
|
|
224
224
|
modal: (message: ReactNode, color?: PopupColor, icons?: boolean, full?: boolean) => Promise<void>;
|
|
225
225
|
PopupComponent: react_jsx_runtime.JSX.Element | null;
|
|
226
226
|
close: (confirmed: boolean, value?: string) => void;
|
|
227
|
+
updateMessage: (message: ReactNode) => void;
|
|
227
228
|
};
|
|
228
229
|
|
|
229
230
|
export { Alert, Button, Container, DocumentViewer, Form, Input, Modal, MyCalendar, Pre, Select, Table, Table3, type TableButtonProps, type TableButtonProps as TableEventProps, TextArea, regularExpresions, useDates, useExcel, useFormValues, usePopup, useResources };
|
package/dist/index.js
CHANGED
|
@@ -36783,7 +36783,7 @@ function Select({
|
|
|
36783
36783
|
}
|
|
36784
36784
|
|
|
36785
36785
|
// src/modal/index.tsx
|
|
36786
|
-
var import_react10 =
|
|
36786
|
+
var import_react10 = require("react");
|
|
36787
36787
|
|
|
36788
36788
|
// src/pop/index.tsx
|
|
36789
36789
|
var import_react9 = require("react");
|
|
@@ -37017,7 +37017,6 @@ function PopupOverlay({
|
|
|
37017
37017
|
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
37018
37018
|
var INITIAL_STATE = {
|
|
37019
37019
|
type: "alert",
|
|
37020
|
-
message: "",
|
|
37021
37020
|
visible: false,
|
|
37022
37021
|
inputValue: "",
|
|
37023
37022
|
color: "primary",
|
|
@@ -37026,9 +37025,12 @@ var INITIAL_STATE = {
|
|
|
37026
37025
|
};
|
|
37027
37026
|
function usePopup() {
|
|
37028
37027
|
const [popup, setPopup] = (0, import_react9.useState)(INITIAL_STATE);
|
|
37028
|
+
const messageRef = (0, import_react9.useRef)(null);
|
|
37029
37029
|
const open = (0, import_react9.useCallback)(
|
|
37030
37030
|
(partial) => {
|
|
37031
|
-
|
|
37031
|
+
const { message, ...rest } = partial;
|
|
37032
|
+
messageRef.current = message;
|
|
37033
|
+
setPopup({ ...rest, visible: true, inputValue: "" });
|
|
37032
37034
|
},
|
|
37033
37035
|
[]
|
|
37034
37036
|
);
|
|
@@ -37090,15 +37092,27 @@ function usePopup() {
|
|
|
37090
37092
|
),
|
|
37091
37093
|
[open]
|
|
37092
37094
|
);
|
|
37095
|
+
const updateMessage = (0, import_react9.useCallback)((message) => {
|
|
37096
|
+
messageRef.current = message;
|
|
37097
|
+
setPopup((prev) => ({ ...prev }));
|
|
37098
|
+
}, []);
|
|
37093
37099
|
const PopupComponent = popup.visible ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
37094
37100
|
PopupOverlay,
|
|
37095
37101
|
{
|
|
37096
|
-
popup,
|
|
37102
|
+
popup: { ...popup, message: messageRef.current },
|
|
37097
37103
|
onClose: close,
|
|
37098
37104
|
onInputChange: (v) => setPopup((prev) => ({ ...prev, inputValue: v }))
|
|
37099
37105
|
}
|
|
37100
37106
|
) : null;
|
|
37101
|
-
return {
|
|
37107
|
+
return {
|
|
37108
|
+
alert: alert2,
|
|
37109
|
+
confirm,
|
|
37110
|
+
prompt,
|
|
37111
|
+
modal,
|
|
37112
|
+
PopupComponent,
|
|
37113
|
+
close,
|
|
37114
|
+
updateMessage
|
|
37115
|
+
};
|
|
37102
37116
|
}
|
|
37103
37117
|
|
|
37104
37118
|
// src/modal/index.tsx
|
|
@@ -37109,16 +37123,12 @@ function Modal({
|
|
|
37109
37123
|
color = "primary"
|
|
37110
37124
|
}) {
|
|
37111
37125
|
const pop = usePopup();
|
|
37126
|
+
(0, import_react10.useEffect)(() => {
|
|
37127
|
+
pop.updateMessage(children);
|
|
37128
|
+
}, [children]);
|
|
37112
37129
|
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_jsx_runtime17.Fragment, { children: [
|
|
37113
37130
|
(0, import_react10.cloneElement)(button, {
|
|
37114
|
-
onClick:
|
|
37115
|
-
await pop.modal(
|
|
37116
|
-
import_react10.default.cloneElement(children, { hide: () => pop.close(false) }),
|
|
37117
|
-
color,
|
|
37118
|
-
false,
|
|
37119
|
-
true
|
|
37120
|
-
);
|
|
37121
|
-
}
|
|
37131
|
+
onClick: () => pop.modal(children, color, false, true)
|
|
37122
37132
|
}),
|
|
37123
37133
|
pop.PopupComponent
|
|
37124
37134
|
] });
|
package/dist/index.mjs
CHANGED
|
@@ -36769,10 +36769,10 @@ function Select({
|
|
|
36769
36769
|
}
|
|
36770
36770
|
|
|
36771
36771
|
// src/modal/index.tsx
|
|
36772
|
-
import
|
|
36772
|
+
import { cloneElement as cloneElement2, useEffect as useEffect6 } from "react";
|
|
36773
36773
|
|
|
36774
36774
|
// src/pop/index.tsx
|
|
36775
|
-
import { useState as useState8, useCallback } from "react";
|
|
36775
|
+
import { useState as useState8, useCallback, useRef as useRef4 } from "react";
|
|
36776
36776
|
|
|
36777
36777
|
// src/pop/actions.tsx
|
|
36778
36778
|
import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
@@ -37003,7 +37003,6 @@ function PopupOverlay({
|
|
|
37003
37003
|
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
37004
37004
|
var INITIAL_STATE = {
|
|
37005
37005
|
type: "alert",
|
|
37006
|
-
message: "",
|
|
37007
37006
|
visible: false,
|
|
37008
37007
|
inputValue: "",
|
|
37009
37008
|
color: "primary",
|
|
@@ -37012,9 +37011,12 @@ var INITIAL_STATE = {
|
|
|
37012
37011
|
};
|
|
37013
37012
|
function usePopup() {
|
|
37014
37013
|
const [popup, setPopup] = useState8(INITIAL_STATE);
|
|
37014
|
+
const messageRef = useRef4(null);
|
|
37015
37015
|
const open = useCallback(
|
|
37016
37016
|
(partial) => {
|
|
37017
|
-
|
|
37017
|
+
const { message, ...rest } = partial;
|
|
37018
|
+
messageRef.current = message;
|
|
37019
|
+
setPopup({ ...rest, visible: true, inputValue: "" });
|
|
37018
37020
|
},
|
|
37019
37021
|
[]
|
|
37020
37022
|
);
|
|
@@ -37076,15 +37078,27 @@ function usePopup() {
|
|
|
37076
37078
|
),
|
|
37077
37079
|
[open]
|
|
37078
37080
|
);
|
|
37081
|
+
const updateMessage = useCallback((message) => {
|
|
37082
|
+
messageRef.current = message;
|
|
37083
|
+
setPopup((prev) => ({ ...prev }));
|
|
37084
|
+
}, []);
|
|
37079
37085
|
const PopupComponent = popup.visible ? /* @__PURE__ */ jsx15(
|
|
37080
37086
|
PopupOverlay,
|
|
37081
37087
|
{
|
|
37082
|
-
popup,
|
|
37088
|
+
popup: { ...popup, message: messageRef.current },
|
|
37083
37089
|
onClose: close,
|
|
37084
37090
|
onInputChange: (v) => setPopup((prev) => ({ ...prev, inputValue: v }))
|
|
37085
37091
|
}
|
|
37086
37092
|
) : null;
|
|
37087
|
-
return {
|
|
37093
|
+
return {
|
|
37094
|
+
alert: alert2,
|
|
37095
|
+
confirm,
|
|
37096
|
+
prompt,
|
|
37097
|
+
modal,
|
|
37098
|
+
PopupComponent,
|
|
37099
|
+
close,
|
|
37100
|
+
updateMessage
|
|
37101
|
+
};
|
|
37088
37102
|
}
|
|
37089
37103
|
|
|
37090
37104
|
// src/modal/index.tsx
|
|
@@ -37095,16 +37109,12 @@ function Modal({
|
|
|
37095
37109
|
color = "primary"
|
|
37096
37110
|
}) {
|
|
37097
37111
|
const pop = usePopup();
|
|
37112
|
+
useEffect6(() => {
|
|
37113
|
+
pop.updateMessage(children);
|
|
37114
|
+
}, [children]);
|
|
37098
37115
|
return /* @__PURE__ */ jsxs10(Fragment2, { children: [
|
|
37099
37116
|
cloneElement2(button, {
|
|
37100
|
-
onClick:
|
|
37101
|
-
await pop.modal(
|
|
37102
|
-
React6.cloneElement(children, { hide: () => pop.close(false) }),
|
|
37103
|
-
color,
|
|
37104
|
-
false,
|
|
37105
|
-
true
|
|
37106
|
-
);
|
|
37107
|
-
}
|
|
37117
|
+
onClick: () => pop.modal(children, color, false, true)
|
|
37108
37118
|
}),
|
|
37109
37119
|
pop.PopupComponent
|
|
37110
37120
|
] });
|
|
@@ -37352,15 +37362,15 @@ function DocumentViewer({ item }) {
|
|
|
37352
37362
|
|
|
37353
37363
|
// src/table3/index.tsx
|
|
37354
37364
|
import React9, {
|
|
37355
|
-
useEffect as
|
|
37365
|
+
useEffect as useEffect9,
|
|
37356
37366
|
useMemo as useMemo6,
|
|
37357
37367
|
useReducer as useReducer2,
|
|
37358
|
-
useRef as
|
|
37368
|
+
useRef as useRef6,
|
|
37359
37369
|
useState as useState12
|
|
37360
37370
|
} from "react";
|
|
37361
37371
|
|
|
37362
37372
|
// src/table3/filter.tsx
|
|
37363
|
-
import { useEffect as
|
|
37373
|
+
import { useEffect as useEffect8, useMemo as useMemo4, useState as useState10 } from "react";
|
|
37364
37374
|
|
|
37365
37375
|
// src/table3/filters.tsx
|
|
37366
37376
|
import { jsx as jsx21, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
@@ -37514,7 +37524,7 @@ function Filter({
|
|
|
37514
37524
|
const hidden = Object.values(objectData).filter(
|
|
37515
37525
|
(d) => d._visible === false
|
|
37516
37526
|
);
|
|
37517
|
-
|
|
37527
|
+
useEffect8(() => {
|
|
37518
37528
|
if (data.length != Object.values(objectData).map((o) => (o == null ? void 0 : o._id) || (o == null ? void 0 : o.id)).length) {
|
|
37519
37529
|
const news = [...new Set(data.map((o) => o[h]))];
|
|
37520
37530
|
setSelected(news);
|
|
@@ -38202,7 +38212,7 @@ function Table3({
|
|
|
38202
38212
|
}
|
|
38203
38213
|
}
|
|
38204
38214
|
const [objectData, setObjectData] = useReducer2(dataReducer, null);
|
|
38205
|
-
|
|
38215
|
+
useEffect9(() => {
|
|
38206
38216
|
setObjectData(data);
|
|
38207
38217
|
setPage(1);
|
|
38208
38218
|
}, [data]);
|
|
@@ -38219,7 +38229,7 @@ function Table3({
|
|
|
38219
38229
|
return maxItems ? Math.ceil(Object.keys(objectData).length / maxItems) : 1;
|
|
38220
38230
|
}, [objectData, maxItems]);
|
|
38221
38231
|
const [sort, setSort] = useState12(sortBy);
|
|
38222
|
-
const modalRef =
|
|
38232
|
+
const modalRef = useRef6(null);
|
|
38223
38233
|
const [dialogRow, setDialogRow] = useState12({});
|
|
38224
38234
|
const context = {
|
|
38225
38235
|
objectData,
|
|
@@ -38247,7 +38257,7 @@ function Table3({
|
|
|
38247
38257
|
setSort,
|
|
38248
38258
|
...props
|
|
38249
38259
|
};
|
|
38250
|
-
|
|
38260
|
+
useEffect9(() => {
|
|
38251
38261
|
if ((dialogRow == null ? void 0 : dialogRow.id) || (dialogRow == null ? void 0 : dialogRow._id)) {
|
|
38252
38262
|
const newDialogRow = objectData[dialogRow == null ? void 0 : dialogRow.id] || objectData[dialogRow == null ? void 0 : dialogRow._id];
|
|
38253
38263
|
setDialogRow(newDialogRow);
|
package/package.json
CHANGED
package/src/modal/index.tsx
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
|
|
1
|
+
// Modal.tsx
|
|
2
|
+
import React, { ReactElement, cloneElement, useEffect } from "react";
|
|
2
3
|
import usePopup from "../pop";
|
|
3
4
|
export type PopupColor =
|
|
4
5
|
| "white"
|
|
@@ -8,6 +9,7 @@ export type PopupColor =
|
|
|
8
9
|
| "danger"
|
|
9
10
|
| "warning"
|
|
10
11
|
| "success";
|
|
12
|
+
|
|
11
13
|
export default function Modal({
|
|
12
14
|
button,
|
|
13
15
|
children,
|
|
@@ -21,19 +23,17 @@ export default function Modal({
|
|
|
21
23
|
}) {
|
|
22
24
|
const pop = usePopup();
|
|
23
25
|
|
|
26
|
+
// ✅ Cada vez que children cambia (estado del padre actualizado),
|
|
27
|
+
// propagamos el nuevo ReactNode al modal si está abierto
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
pop.updateMessage(children);
|
|
30
|
+
}, [children]);
|
|
31
|
+
|
|
24
32
|
return (
|
|
25
33
|
<>
|
|
26
34
|
{cloneElement(button, {
|
|
27
|
-
onClick:
|
|
28
|
-
await pop.modal(
|
|
29
|
-
React.cloneElement(children, { hide: () => pop.close(false) }),
|
|
30
|
-
color,
|
|
31
|
-
false,
|
|
32
|
-
true,
|
|
33
|
-
);
|
|
34
|
-
},
|
|
35
|
+
onClick: () => pop.modal(children, color, false, true),
|
|
35
36
|
})}
|
|
36
|
-
|
|
37
37
|
{pop.PopupComponent}
|
|
38
38
|
</>
|
|
39
39
|
);
|
package/src/pop/index.tsx
CHANGED
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
// usePopup.ts - Solución definitiva
|
|
1
2
|
"use client";
|
|
2
3
|
|
|
3
|
-
import { useState, useCallback, type ReactNode } from "react";
|
|
4
|
+
import { useState, useCallback, useRef, type ReactNode } from "react";
|
|
4
5
|
import { PopupColor, PopupState } from "./types";
|
|
5
6
|
import { PopupOverlay } from "./overlay";
|
|
6
7
|
|
|
7
|
-
|
|
8
|
+
type PopupStateWithoutMessage = Omit<PopupState, "message">;
|
|
9
|
+
|
|
10
|
+
const INITIAL_STATE: PopupStateWithoutMessage = {
|
|
8
11
|
type: "alert",
|
|
9
|
-
message: "",
|
|
10
12
|
visible: false,
|
|
11
13
|
inputValue: "",
|
|
12
14
|
color: "primary",
|
|
@@ -15,11 +17,15 @@ const INITIAL_STATE: PopupState = {
|
|
|
15
17
|
};
|
|
16
18
|
|
|
17
19
|
export default function usePopup() {
|
|
18
|
-
const [popup, setPopup] = useState<
|
|
20
|
+
const [popup, setPopup] = useState<PopupStateWithoutMessage>(INITIAL_STATE);
|
|
21
|
+
// El message vive FUERA del estado para no quedar congelado
|
|
22
|
+
const messageRef = useRef<ReactNode>(null);
|
|
19
23
|
|
|
20
24
|
const open = useCallback(
|
|
21
25
|
(partial: Omit<PopupState, "visible" | "inputValue">) => {
|
|
22
|
-
|
|
26
|
+
const { message, ...rest } = partial;
|
|
27
|
+
messageRef.current = message as any;
|
|
28
|
+
setPopup({ ...rest, visible: true, inputValue: "" });
|
|
23
29
|
},
|
|
24
30
|
[],
|
|
25
31
|
);
|
|
@@ -95,13 +101,29 @@ export default function usePopup() {
|
|
|
95
101
|
[open],
|
|
96
102
|
);
|
|
97
103
|
|
|
104
|
+
// ✅ Actualiza la ref en cada render cuando el modal está abierto
|
|
105
|
+
// Esto permite que cambios en el children del padre se reflejen
|
|
106
|
+
const updateMessage = useCallback((message: ReactNode) => {
|
|
107
|
+
messageRef.current = message;
|
|
108
|
+
// Fuerza re-render del PopupComponent
|
|
109
|
+
setPopup((prev) => ({ ...prev }));
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
98
112
|
const PopupComponent = popup.visible ? (
|
|
99
113
|
<PopupOverlay
|
|
100
|
-
popup={popup}
|
|
114
|
+
popup={{ ...popup, message: messageRef.current }}
|
|
101
115
|
onClose={close}
|
|
102
116
|
onInputChange={(v) => setPopup((prev) => ({ ...prev, inputValue: v }))}
|
|
103
117
|
/>
|
|
104
118
|
) : null;
|
|
105
119
|
|
|
106
|
-
return {
|
|
120
|
+
return {
|
|
121
|
+
alert,
|
|
122
|
+
confirm,
|
|
123
|
+
prompt,
|
|
124
|
+
modal,
|
|
125
|
+
PopupComponent,
|
|
126
|
+
close,
|
|
127
|
+
updateMessage,
|
|
128
|
+
};
|
|
107
129
|
}
|
package/src/pop/overlay.tsx
CHANGED
|
@@ -13,6 +13,7 @@ export function PopupOverlay({
|
|
|
13
13
|
const c = COLOR_CONFIG[popup.color];
|
|
14
14
|
const resolvedMessage =
|
|
15
15
|
typeof popup.message === "function" ? popup.message() : popup.message;
|
|
16
|
+
|
|
16
17
|
return (
|
|
17
18
|
<div
|
|
18
19
|
className={"fixed inset-0 flex items-center justify-center z-[1000] "}
|