react-ecosistema-unp 1.7.25 → 1.7.27
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/README.md +53 -1
- package/dist/lib/utils/Url.d.ts +2 -3
- package/dist/tables/tabla-registros/tabla/Tabla.js +27 -27
- package/dist/utils/Url.js +9 -10
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -59,4 +59,56 @@ npm install react-ecosistema-unp@latest
|
|
|
59
59
|
|
|
60
60
|
<br>
|
|
61
61
|
|
|
62
|
-
* [Estilos]()
|
|
62
|
+
* [Estilos]()
|
|
63
|
+
|
|
64
|
+
# Usabilidad: Selección de Filas en la Tabla
|
|
65
|
+
|
|
66
|
+
La función de selección de filas permite al usuario seleccionar una o varias filas en la tabla y agrupar visualmente aquellas que comparten el mismo valor de `tipoMesa`, posicionándolas inmediatamente debajo de la fila seleccionada.
|
|
67
|
+
|
|
68
|
+
## ¿Cuándo se activa esta función?
|
|
69
|
+
|
|
70
|
+
La agrupación automática de filas por `tipoMesa` solo se activa cuando se cumplen **ambas** condiciones:
|
|
71
|
+
|
|
72
|
+
- Se pasa la prop `enableRowSelection` al componente de tabla.
|
|
73
|
+
- Se define la prop `onSelectionChange`, que recibe el array de identificadores seleccionados.
|
|
74
|
+
|
|
75
|
+
## Props requeridas
|
|
76
|
+
|
|
77
|
+
| Prop | Tipo | Descripción |
|
|
78
|
+
|---------------------|--------------|-----------------------------------------------------------------------------|
|
|
79
|
+
| `enableRowSelection`| `boolean` | Habilita la selección de filas. |
|
|
80
|
+
| `onSelectionChange` | `(ids: string[]) => void` | Callback que recibe los ids de las filas seleccionadas. |
|
|
81
|
+
|
|
82
|
+
## Comportamiento
|
|
83
|
+
|
|
84
|
+
1. Al seleccionar una fila, todas las filas con el mismo valor en la columna `tipoMesa` se agrupan y se posicionan inmediatamente debajo de la fila seleccionada.
|
|
85
|
+
2. Si se seleccionan varias filas de diferentes `tipoMesa`, cada grupo se posiciona debajo de la primera fila seleccionada de su tipo.
|
|
86
|
+
3. La selección se realiza por el identificador único de la fila (`numeroRegistro`), lo que garantiza que la selección se mantenga aunque el orden de las filas cambie.
|
|
87
|
+
4. No se generan duplicados: cada fila aparece solo una vez en la tabla.
|
|
88
|
+
5. El reordenamiento solo ocurre cuando ambas props están presentes; de lo contrario, la tabla mantiene su orden original.
|
|
89
|
+
|
|
90
|
+
## Ejemplo de uso
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
import { TablaRegistros } from '.../lib/tables';
|
|
94
|
+
|
|
95
|
+
const columns = [
|
|
96
|
+
// ...definición de columnas...
|
|
97
|
+
];
|
|
98
|
+
|
|
99
|
+
const [selectedIds, setSelectedIds] = useState<string[]>([]);
|
|
100
|
+
|
|
101
|
+
<TablaRegistros
|
|
102
|
+
columns={columns}
|
|
103
|
+
data={data}
|
|
104
|
+
enableRowSelection
|
|
105
|
+
onSelectionChange={setSelectedIds}
|
|
106
|
+
// ...otros props...
|
|
107
|
+
/>;
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Notas adicionales
|
|
111
|
+
|
|
112
|
+
- El identificador único de cada fila debe estar en la propiedad `numeroRegistro`.
|
|
113
|
+
- El comportamiento de agrupación es transparente para el usuario y no requiere configuración adicional.
|
|
114
|
+
- Si se desea desactivar la agrupación, basta con omitir alguna de las props requeridas.
|
package/dist/lib/utils/Url.d.ts
CHANGED
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
export declare const urlBase = "https://
|
|
2
|
-
export declare const urlRequest = "https://ecosistemapruebas.unp.gov.co/api-eiunp";
|
|
1
|
+
export declare const urlBase = "https://ecosistema.unp.gov.co";
|
|
3
2
|
export declare const urlMedidasEmergencia = "/sistema/medidas-emergencia";
|
|
4
3
|
export declare const urlActaReunion = "/sistema/acta-reunion";
|
|
5
4
|
export declare const urlSolicitudViatico = "/sistema/solicitud-viaticos";
|
|
6
|
-
export declare const urlCertificadoLaboral = "/sg/gc/
|
|
5
|
+
export declare const urlCertificadoLaboral = "/sg/gc/certificado";
|
|
7
6
|
export declare const urlHome = "/sitema/inicio";
|
|
8
7
|
export declare const urlAuthLocal = "http://localhost:8000/";
|
|
9
8
|
export declare const urlAuthDev = "https://ecosistemadesarrollo.unp.gov.co/";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as s, jsxs as d } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
3
|
-
import { v as
|
|
2
|
+
import X, { useState as m, useEffect as Y } from "react";
|
|
3
|
+
import { v as Z, w as S } from "../../../index-DDjnZyBf.js";
|
|
4
4
|
import { a as w, b as ee, c as te, d as re } from "../../../index-D3WseyJh.js";
|
|
5
5
|
import { T as se } from "../../../Table-C5ydZooy.js";
|
|
6
6
|
import { F as oe, a as ie } from "../../../FormGroup-BLpFcIN5.js";
|
|
@@ -10,10 +10,10 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
10
10
|
displayedData: f,
|
|
11
11
|
// tableData,
|
|
12
12
|
hasMoreData: x,
|
|
13
|
-
setHasMoreData:
|
|
14
|
-
visibleData:
|
|
15
|
-
setVisibleData:
|
|
16
|
-
handleCellClick:
|
|
13
|
+
setHasMoreData: I,
|
|
14
|
+
visibleData: D,
|
|
15
|
+
setVisibleData: O,
|
|
16
|
+
handleCellClick: P,
|
|
17
17
|
totalDias: v,
|
|
18
18
|
isShared: b,
|
|
19
19
|
//
|
|
@@ -25,33 +25,33 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
25
25
|
onSelectionChange: C,
|
|
26
26
|
enableRowSelection: h = !1,
|
|
27
27
|
// Indicador para aumentar la selección de casos por gestionar
|
|
28
|
-
extendedSelection:
|
|
28
|
+
extendedSelection: _,
|
|
29
29
|
cellSelectionColor: U
|
|
30
30
|
}) => {
|
|
31
31
|
const [l, V] = m({
|
|
32
32
|
key: null,
|
|
33
33
|
direction: null
|
|
34
|
-
}), [c, W] = m([]), [y,
|
|
35
|
-
|
|
34
|
+
}), [c, W] = m([]), [y, B] = m(null), [k, A] = m(null);
|
|
35
|
+
Y(() => {
|
|
36
36
|
C == null || C(c);
|
|
37
37
|
}, [c]);
|
|
38
38
|
const $ = (e, o) => {
|
|
39
|
-
const r = k ||
|
|
39
|
+
const r = k || j, i = r.findIndex((p) => p.numeroRegistro === e);
|
|
40
40
|
if (i === -1) return;
|
|
41
41
|
const n = r[i], t = c.includes(e);
|
|
42
42
|
let a = [];
|
|
43
43
|
if (t)
|
|
44
|
-
a = c.filter((p) => p !== e), a.length === 0 && (
|
|
44
|
+
a = c.filter((p) => p !== e), a.length === 0 && (A(null), B(null));
|
|
45
45
|
else if (c.length === 0) {
|
|
46
|
-
a = [e],
|
|
47
|
-
const p = n.tipoMesa, K = r.filter((g) => g.tipoMesa === p && g.numeroRegistro !== e),
|
|
48
|
-
|
|
46
|
+
a = [e], B(n.tipoMesa);
|
|
47
|
+
const p = n.tipoMesa, K = r.filter((g) => g.tipoMesa === p && g.numeroRegistro !== e), E = r.filter((g) => g.tipoMesa !== p), z = r.findIndex((g) => g.numeroRegistro === e), L = E.slice(0, z), Q = E.slice(z);
|
|
48
|
+
A([...L, n, ...K, ...Q]);
|
|
49
49
|
} else {
|
|
50
50
|
if (y && n.tipoMesa !== y) return;
|
|
51
51
|
a = [...c, e];
|
|
52
52
|
}
|
|
53
53
|
W(a);
|
|
54
|
-
},
|
|
54
|
+
}, G = { i: 0 }, H = (e) => {
|
|
55
55
|
if (v) {
|
|
56
56
|
const o = e / v * 100;
|
|
57
57
|
return o <= 25 ? { backgroundColor: "#3AB34A", color: "#FFFFFF" } : o <= 50 ? { backgroundColor: "#F8EB10", color: "#000000" } : o <= 75 ? { backgroundColor: "#F79122", color: "#000000" } : { backgroundColor: "#E91720", color: "#FFFFFF" };
|
|
@@ -59,16 +59,16 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
59
59
|
return { backgroundColor: "transparent", color: "inherit" };
|
|
60
60
|
}, q = (e) => {
|
|
61
61
|
const { scrollTop: o, clientHeight: r, scrollHeight: i } = e.currentTarget;
|
|
62
|
-
i - o <= r + 50 && x &&
|
|
62
|
+
i - o <= r + 50 && x && O((n) => {
|
|
63
63
|
const t = n + 5;
|
|
64
|
-
return t >= f.length &&
|
|
64
|
+
return t >= f.length && I(!1), Math.min(t, f.length);
|
|
65
65
|
});
|
|
66
66
|
}, J = (e) => {
|
|
67
67
|
V((o) => ({
|
|
68
68
|
key: e,
|
|
69
69
|
direction: o.key === e && o.direction === "asc" ? "desc" : "asc"
|
|
70
70
|
}));
|
|
71
|
-
},
|
|
71
|
+
}, j = (() => {
|
|
72
72
|
if (!l.key) return f;
|
|
73
73
|
if (b) {
|
|
74
74
|
const [e, o] = f.reduce(
|
|
@@ -84,7 +84,7 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
84
84
|
const r = e[l.key], i = o[l.key];
|
|
85
85
|
return typeof r == "number" && typeof i == "number" ? l.direction === "asc" ? r - i : i - r : typeof r == "string" && typeof i == "string" ? l.direction === "asc" ? r.localeCompare(i) : i.localeCompare(r) : 0;
|
|
86
86
|
});
|
|
87
|
-
})(), F = k || (l.direction === "asc" || l.direction === "desc" ?
|
|
87
|
+
})(), F = k || (l.direction === "asc" || l.direction === "desc" ? j : f);
|
|
88
88
|
return /* @__PURE__ */ s("div", { className: "table_container", children: /* @__PURE__ */ s("div", { className: "table-scroll", onScroll: q, children: /* @__PURE__ */ d(se, { striped: !0, hover: !0, children: [
|
|
89
89
|
/* @__PURE__ */ d("thead", { children: [
|
|
90
90
|
/* @__PURE__ */ d("tr", { children: [
|
|
@@ -132,11 +132,11 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
132
132
|
] })
|
|
133
133
|
] }),
|
|
134
134
|
/* @__PURE__ */ d("tbody", { children: [
|
|
135
|
-
F.slice(0,
|
|
135
|
+
F.slice(0, D).map((e, o) => {
|
|
136
136
|
let r = !1;
|
|
137
|
-
b ? e.estadoRegistro === "en_gestion" ? r = !0 : e.estadoRegistro === "por_gestionar" &&
|
|
137
|
+
b ? e.estadoRegistro === "en_gestion" ? r = !0 : e.estadoRegistro === "por_gestionar" && (!_ && G.i < 60 ? (r = !0, G.i++) : _ && (r = !0)) : r = !0;
|
|
138
138
|
const i = h && y != null && e.tipoMesa !== y, n = c.includes(e.numeroRegistro);
|
|
139
|
-
return /* @__PURE__ */ d(
|
|
139
|
+
return /* @__PURE__ */ d(X.Fragment, { children: [
|
|
140
140
|
/* @__PURE__ */ d(
|
|
141
141
|
"tr",
|
|
142
142
|
{
|
|
@@ -156,13 +156,13 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
156
156
|
onClick: (t) => {
|
|
157
157
|
t.stopPropagation(), i || $(e.numeroRegistro);
|
|
158
158
|
},
|
|
159
|
-
children: n ? /* @__PURE__ */ s(re, { size: 18, style: { color: "#505050ff" } }) : /* @__PURE__ */ s(
|
|
159
|
+
children: n ? /* @__PURE__ */ s(re, { size: 18, style: { color: "#505050ff" } }) : /* @__PURE__ */ s(Z, { size: 18, style: { color: "#505050ff" } })
|
|
160
160
|
}
|
|
161
161
|
),
|
|
162
162
|
u.map((t, a) => /* @__PURE__ */ s(
|
|
163
163
|
"td",
|
|
164
164
|
{
|
|
165
|
-
onClick: () => r ?
|
|
165
|
+
onClick: () => r ? P(t, e) : {},
|
|
166
166
|
style: {
|
|
167
167
|
cursor: (t.hasModal || t.redirectTo) && r ? "pointer" : "default",
|
|
168
168
|
"--cell-selection-bg-color": U || void 0
|
|
@@ -182,10 +182,10 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
182
182
|
padding: "8px",
|
|
183
183
|
borderRadius: "100px",
|
|
184
184
|
width: "40px",
|
|
185
|
-
backgroundColor:
|
|
185
|
+
backgroundColor: H(
|
|
186
186
|
e.diasHabiles
|
|
187
187
|
).backgroundColor,
|
|
188
|
-
color:
|
|
188
|
+
color: H(
|
|
189
189
|
e.diasHabiles
|
|
190
190
|
).color
|
|
191
191
|
},
|
|
@@ -210,7 +210,7 @@ import '../../../assets/Tabla.css';const ue = ({
|
|
|
210
210
|
fontWeight: "600",
|
|
211
211
|
color: o % 2 === 0 ? "#365072" : "#303D50",
|
|
212
212
|
backgroundColor: o % 2 === 0 ? "#fefefe" : "#f9fafa"
|
|
213
|
-
}, children: /* @__PURE__ */ s(
|
|
213
|
+
}, children: /* @__PURE__ */ s(S, { style: { fontSize: "1.3rem" } }) }) }) })
|
|
214
214
|
] }, o);
|
|
215
215
|
}),
|
|
216
216
|
x && /* @__PURE__ */ s("tr", { children: /* @__PURE__ */ s("td", { colSpan: u.length, className: "text-center", children: "Cargando más datos..." }) })
|
package/dist/utils/Url.js
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
const t = "https://
|
|
1
|
+
const t = "https://ecosistema.unp.gov.co", o = "/sistema/medidas-emergencia", s = "/sistema/acta-reunion", c = "/sistema/solicitud-viaticos", e = "/sg/gc/certificado", i = "/sitema/inicio", a = "http://localhost:8000/", u = "https://ecosistemadesarrollo.unp.gov.co/", n = "https://ecosistemapruebas.unp.gov.co/", r = "https://ecosistema.unp.gov.co/";
|
|
2
2
|
export {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
s as urlActaReunion,
|
|
4
|
+
u as urlAuthDev,
|
|
5
|
+
a as urlAuthLocal,
|
|
6
|
+
r as urlAuthProd,
|
|
7
|
+
n as urlAuthTest,
|
|
8
8
|
t as urlBase,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
e as urlCertificadoLaboral,
|
|
10
|
+
i as urlHome,
|
|
11
11
|
o as urlMedidasEmergencia,
|
|
12
|
-
|
|
13
|
-
e as urlSolicitudViatico
|
|
12
|
+
c as urlSolicitudViatico
|
|
14
13
|
};
|