@codeplex-sac/utils 0.0.3 → 0.0.6
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 +240 -4
- package/index.d.ts +5 -5
- package/index.mjs +5349 -4173
- package/lib/area-texto-ajustable/area-texto-ajustable.d.ts +61 -0
- package/lib/detector-clic-fuera/detector-clic-fuera.d.ts +33 -0
- package/lib/modal/modal.d.ts +58 -8
- package/lib/portal/portal.d.ts +32 -7
- package/lib/posicionador/posicionador.d.ts +73 -0
- package/lib/transiciones/transiciones.d.ts +97 -0
- package/lib/ventana-emergente/ventana-emergente.d.ts +55 -0
- package/package.json +5 -1
- package/lib/click-away-listener/click-away-listener.d.ts +0 -5
- package/lib/popover/popover.d.ts +0 -9
- package/lib/popper/popper.d.ts +0 -12
- package/lib/textarea-autosize/textarea-autosize.d.ts +0 -6
- package/lib/transitions/transitions.d.ts +0 -16
package/README.md
CHANGED
|
@@ -1,7 +1,243 @@
|
|
|
1
|
-
# utils
|
|
1
|
+
# @codeplex-sac/utils
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Paquete de utilidades transversales y componentes lógicos esenciales para el ecosistema **Codeplex-SAC**. Incluye herramientas para gestión de modales, portales, animaciones y detección de eventos DOM, todas optimizadas para un rendimiento superior y una API en **Español**.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 🚀 Instalación
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Se recomienda el uso de [bun](https://bun.sh) para una gestión de dependencias óptima.
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
bun add @codeplex-sac/utils @mui/material @emotion/react @emotion/styled
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 🏗️ Utilidades y Componentes Lógicos
|
|
16
|
+
|
|
17
|
+
### 🪟 Grupo 1: Estructura y Capas
|
|
18
|
+
|
|
19
|
+
#### CodeplexModal
|
|
20
|
+
Componente de diálogo avanzado con soporte para arrastre (Drag), redimensionamiento (Resize) y modo sin bloqueo (Modeless).
|
|
21
|
+
|
|
22
|
+
**Ejemplo de Uso:**
|
|
23
|
+
```tsx
|
|
24
|
+
import { CodeplexModal } from '@codeplex-sac/utils';
|
|
25
|
+
import { CodeplexBoton } from '@codeplex-sac/ui';
|
|
26
|
+
|
|
27
|
+
export const MiModal = () => (
|
|
28
|
+
<CodeplexModal
|
|
29
|
+
open={true}
|
|
30
|
+
title="Configuración Avanzada"
|
|
31
|
+
subtitle="Ajuste los parámetros del sistema"
|
|
32
|
+
draggable
|
|
33
|
+
resizable
|
|
34
|
+
footer={<CodeplexBoton texto="Guardar" />}
|
|
35
|
+
>
|
|
36
|
+
Contenido del modal aquí...
|
|
37
|
+
</CodeplexModal>
|
|
38
|
+
);
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
**Propiedades (Props):**
|
|
42
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
43
|
+
| :--- | :--- | :--- | :--- |
|
|
44
|
+
| `open` | `boolean` | - | Controla la visibilidad. |
|
|
45
|
+
| `onClose` | `Function` | - | Evento al cerrar (X, Esc, Click fuera). |
|
|
46
|
+
| `title` | `ReactNode` | - | Título superior. |
|
|
47
|
+
| `subtitle` | `string` | - | Texto informativo bajo el título. |
|
|
48
|
+
| `footer` | `ReactNode` | - | Acciones en la parte inferior. |
|
|
49
|
+
| `draggable` | `boolean` | `false` | Permite mover el modal arrastrando el encabezado. |
|
|
50
|
+
| `resizable` | `boolean` | `false` | Permite cambiar el tamaño desde la esquina inferior. |
|
|
51
|
+
| `locked` | `boolean` | `false` | Impide cerrar al hacer clic fuera o presionar ESC. |
|
|
52
|
+
| `modeless` | `boolean` | `false` | Modal sin fondo oscuro que permite interactuar con lo de atrás. |
|
|
53
|
+
| `maxWidth` | `'xs' \| 'sm' \| 'md' \| 'lg' \| 'xl'` | `'sm'` | Ancho máximo predefinido. |
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
#### CodeplexPortal
|
|
58
|
+
Permite renderizar contenido en un nodo DOM fuera de la jerarquía actual, ideal para romper el flujo de capas (z-index).
|
|
59
|
+
|
|
60
|
+
**Ejemplo de Uso:**
|
|
61
|
+
```tsx
|
|
62
|
+
import { CodeplexPortal } from '@codeplex-sac/utils';
|
|
63
|
+
|
|
64
|
+
export const Ejemplo = () => (
|
|
65
|
+
<CodeplexPortal idContenedor="capa-notificaciones">
|
|
66
|
+
<div>Este contenido se renderiza fuera de su padre.</div>
|
|
67
|
+
</CodeplexPortal>
|
|
68
|
+
);
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Propiedades (Props):**
|
|
72
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
73
|
+
| :--- | :--- | :--- | :--- |
|
|
74
|
+
| `idContenedor`| `string` | - | ID del elemento DOM donde se insertará el contenido. |
|
|
75
|
+
| `contenedor` | `Element` | `document.body` | Referencia directa al nodo DOM. |
|
|
76
|
+
| `deshabilitarPortal` | `boolean` | `false` | Si es true, renderiza el contenido en su posición original. |
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
#### CodeplexTransiciones
|
|
81
|
+
Suite de componentes para animar la entrada y salida de elementos con una API simplificada.
|
|
82
|
+
|
|
83
|
+
**Componentes Disponibles:**
|
|
84
|
+
- `CodeplexColapso` (Collapse): Anima la altura.
|
|
85
|
+
- `CodeplexDesvanecimiento` (Fade): Anima la opacidad.
|
|
86
|
+
- `CodeplexCrecimiento` (Grow): Anima escala y opacidad.
|
|
87
|
+
- `CodeplexZoom` (Zoom): Anima escala desde el centro.
|
|
88
|
+
- `CodeplexDeslizamiento` (Slide): Desplaza desde un borde.
|
|
89
|
+
|
|
90
|
+
**Ejemplo (Deslizamiento):**
|
|
91
|
+
```tsx
|
|
92
|
+
import { CodeplexDeslizamiento } from '@codeplex-sac/utils';
|
|
93
|
+
|
|
94
|
+
export const Ejemplo = ({ mostrar }) => (
|
|
95
|
+
<CodeplexDeslizamiento visible={mostrar} direccion="arriba">
|
|
96
|
+
<div>Contenido animado</div>
|
|
97
|
+
</CodeplexDeslizamiento>
|
|
98
|
+
);
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Propiedades Comunes:**
|
|
102
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
103
|
+
| :--- | :--- | :--- | :--- |
|
|
104
|
+
| `visible` | `boolean` | - | Activa la animación de entrada. |
|
|
105
|
+
| `duracion` | `number \| {enter, exit}` | `300/200` | Tiempo en milisegundos. |
|
|
106
|
+
| `entrada` | `number` | - | Duración específica de entrada. |
|
|
107
|
+
| `salida` | `number` | - | Duración específica de salida. |
|
|
108
|
+
| `direccion`| `'arriba' \| 'abajo' \| 'izquierda' \| 'derecha'` | `'arriba'` | (Solo Slide) Origen del movimiento. |
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
### 🛠️ Grupo 2: Comportamiento y Posicionamiento
|
|
113
|
+
|
|
114
|
+
#### CodeplexDetectorClicFuera
|
|
115
|
+
Componente invisible que detecta cuando el usuario hace clic o toca fuera de su elemento hijo.
|
|
116
|
+
|
|
117
|
+
**Ejemplo de Uso:**
|
|
118
|
+
```tsx
|
|
119
|
+
import { CodeplexDetectorClicFuera } from '@codeplex-sac/utils';
|
|
120
|
+
|
|
121
|
+
export const MenuDesplegable = ({ abierto, alCerrar }) => (
|
|
122
|
+
<CodeplexDetectorClicFuera alClicFuera={alCerrar}>
|
|
123
|
+
<div style={{ display: abierto ? 'block' : 'none' }}>
|
|
124
|
+
Contenido del Menú
|
|
125
|
+
</div>
|
|
126
|
+
</CodeplexDetectorClicFuera>
|
|
127
|
+
);
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
**Propiedades (Props):**
|
|
131
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
132
|
+
| :--- | :--- | :--- | :--- |
|
|
133
|
+
| `alClicFuera` | `Function` | - | Función que se ejecuta al detectar el clic fuera. |
|
|
134
|
+
| `eventoMouse` | `'onClick' \| 'onMouseDown' \| 'onMouseUp' \| false` | `'onClick'` | Evento de ratón a escuchar. |
|
|
135
|
+
| `deshabilitarArbolReact` | `boolean` | `false` | Si es true, ignora si el clic fue dentro del árbol de React. |
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
#### CodeplexVentanaEmergente (Popover)
|
|
140
|
+
Muestra contenido flotante anclado a un elemento. A diferencia del posicionador, este bloquea la interacción con el fondo.
|
|
141
|
+
|
|
142
|
+
**Ejemplo de Uso:**
|
|
143
|
+
```tsx
|
|
144
|
+
import { CodeplexVentanaEmergente, CodeplexBoton } from '@codeplex-sac/ui';
|
|
145
|
+
|
|
146
|
+
export const Ejemplo = () => {
|
|
147
|
+
const [ancla, setAncla] = useState(null);
|
|
148
|
+
return (
|
|
149
|
+
<>
|
|
150
|
+
<CodeplexBoton texto="Abrir Popover" alHacerClick={(e) => setAncla(e.currentTarget)} />
|
|
151
|
+
<CodeplexVentanaEmergente
|
|
152
|
+
abierto={Boolean(ancla)}
|
|
153
|
+
elementoAncla={ancla}
|
|
154
|
+
alCerrar={() => setAncla(null)}
|
|
155
|
+
titulo="Detalles de Usuario"
|
|
156
|
+
mostrarIconoCierre
|
|
157
|
+
>
|
|
158
|
+
Información detallada aquí...
|
|
159
|
+
</CodeplexVentanaEmergente>
|
|
160
|
+
</>
|
|
161
|
+
);
|
|
162
|
+
};
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Propiedades (Props):**
|
|
166
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
167
|
+
| :--- | :--- | :--- | :--- |
|
|
168
|
+
| `abierto` | `boolean` | - | Visibilidad de la ventana. |
|
|
169
|
+
| `elementoAncla`| `HTMLElement` | - | Elemento que sirve de referencia para la posición. |
|
|
170
|
+
| `titulo` | `ReactNode` | - | Cabecera de la ventana. |
|
|
171
|
+
| `mostrarIconoCierre`| `boolean` | `false` | Muestra la 'X' en la esquina superior. |
|
|
172
|
+
| `alCerrar` | `Function` | - | Callback de cierre. |
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
#### CodeplexPosicionador (Popper)
|
|
177
|
+
Coloca contenido flotante relativo a otro elemento sin bloquear el fondo. Ideal para tooltips personalizados o menús contextuales.
|
|
178
|
+
|
|
179
|
+
**Ejemplo de Uso:**
|
|
180
|
+
```tsx
|
|
181
|
+
import { CodeplexPosicionador } from '@codeplex-sac/utils';
|
|
182
|
+
|
|
183
|
+
export const Ejemplo = ({ ancla, abierto }) => (
|
|
184
|
+
<CodeplexPosicionador
|
|
185
|
+
abierto={abierto}
|
|
186
|
+
elementoAncla={ancla}
|
|
187
|
+
colocacion="right-start"
|
|
188
|
+
distancia={10}
|
|
189
|
+
conFondo
|
|
190
|
+
>
|
|
191
|
+
Texto informativo flotante.
|
|
192
|
+
</CodeplexPosicionador>
|
|
193
|
+
);
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**Propiedades (Props):**
|
|
197
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
198
|
+
| :--- | :--- | :--- | :--- |
|
|
199
|
+
| `abierto` | `boolean` | - | Visibilidad. |
|
|
200
|
+
| `elementoAncla`| `HTMLElement` | - | Referencia de posición. |
|
|
201
|
+
| `colocacion` | `string` | `'bottom-start'`| Posición relativa (top, bottom, left, right + start/end). |
|
|
202
|
+
| `conFondo` | `boolean` | `true` | Aplica sombra y fondo blanco (estilo Paper). |
|
|
203
|
+
| `cerrarAlClicFuera` | `boolean` | `false` | Activa detector de clic fuera automáticamente. |
|
|
204
|
+
| `distancia` | `number` | `4` | Separación en píxeles del ancla. |
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
#### CodeplexAreaTextoAjustable
|
|
209
|
+
Área de texto (Textarea) que ajusta su altura automáticamente según el contenido.
|
|
210
|
+
|
|
211
|
+
**Ejemplo de Uso:**
|
|
212
|
+
```tsx
|
|
213
|
+
import { CodeplexAreaTextoAjustable } from '@codeplex-sac/utils';
|
|
214
|
+
|
|
215
|
+
export const Comentario = () => (
|
|
216
|
+
<CodeplexAreaTextoAjustable
|
|
217
|
+
etiqueta="Comentarios"
|
|
218
|
+
marcador="Escriba aquí..."
|
|
219
|
+
filasMinimas={3}
|
|
220
|
+
filasMaximas={10}
|
|
221
|
+
/>
|
|
222
|
+
);
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
**Propiedades (Props):**
|
|
226
|
+
| Propiedad | Tipo | Por Defecto | Descripción |
|
|
227
|
+
| :--- | :--- | :--- | :--- |
|
|
228
|
+
| `variante` | `'contorneado' \| 'relleno' \| 'estandar'` | `'contorneado'` | Estilo visual del campo. |
|
|
229
|
+
| `etiqueta` | `ReactNode` | - | Label superior. |
|
|
230
|
+
| `filasMinimas` | `number` | `3` | Altura inicial. |
|
|
231
|
+
| `filasMaximas` | `number` | - | Altura máxima antes de scroll. |
|
|
232
|
+
| `error` | `boolean` | `false` | Activa estado de error visual. |
|
|
233
|
+
| `mensajeError` | `ReactNode` | - | Texto informativo de error. |
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
## 🎨 Personalización
|
|
238
|
+
|
|
239
|
+
Los componentes de `@codeplex-sac/utils` están diseñados para integrarse fluidamente con el sistema de temas de **Codeplex-SAC**, heredando colores y tipografías globales.
|
|
240
|
+
|
|
241
|
+
## 📄 Licencia
|
|
242
|
+
|
|
243
|
+
Este proyecto es propiedad privada de **Codeplex SAC**. Todos los derechos reservados.
|
package/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export * from './lib/
|
|
1
|
+
export * from './lib/detector-clic-fuera/detector-clic-fuera';
|
|
2
2
|
export * from './lib/modal/modal';
|
|
3
|
-
export * from './lib/
|
|
4
|
-
export * from './lib/
|
|
3
|
+
export * from './lib/ventana-emergente/ventana-emergente';
|
|
4
|
+
export * from './lib/posicionador/posicionador';
|
|
5
5
|
export * from './lib/portal/portal';
|
|
6
|
-
export * from './lib/
|
|
7
|
-
export * from './lib/
|
|
6
|
+
export * from './lib/area-texto-ajustable/area-texto-ajustable';
|
|
7
|
+
export * from './lib/transiciones/transiciones';
|