frontend-plus-react 0.6.0 → 0.7.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/CLAUDE.md +6 -0
- package/dist/index.cjs +392 -314
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +386 -308
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -100,11 +100,17 @@ Son las de `dmencu` (que aplican a todo proyecto compartido de esta carpeta), es
|
|
|
100
100
|
- `wScreens.table` de `my-menu.js` abre una tabla con lo que declara el ítem de menú y, **encima**, lo de la dirección. Acá lo hace `utils/parametrosDeTabla.ts` (`parametrosDeTabla(item, direccion)`) y lo usan `MenuTablePage` (`/menu/:nombre`) y `GenericDataGridPage` (`/table/:nombre`): `ff` (fixedFields, arreglo `[{fieldName, value, ...}]` u objeto `{campo: valor}`), `fc` (filtros iniciales), `td` (cambios a la definición de la tabla, mezclados en profundidad con `fusionar`, como `changing` de `best-globals`), `pf` y `pick` (viajan en `table_data` como `paramfun` y `pick`, solo si vienen) y `label` (nombre de la pestaña).
|
|
101
101
|
- Los parámetros `ff`, `fc`, `td` y `pf` van codificados con `json4all` (`JSON4all.toUrl` / `parse`, que acepta también JSON común). La dirección se lee como `UriSearchToObject` (partir por `&` y por el primer `=`, `decodeURIComponent`), **no** con `URLSearchParams`: ahí un `+` sería un espacio.
|
|
102
102
|
- **`fc` / `filterColumns`** (el de la definición del servidor también): `[{column, operator, value}]` es una fila de filtros; con varias filas (arreglo de arreglos, alternativas) **solo se aplica la primera** y se avisa por consola: la grilla tiene una sola fila de filtros. El `.d.ts` de `MenuInfoTable` dice `fieldName` en vez de `column`; el cliente de BP usa `column` y se aceptan las dos. Antes `menuInicial.ts` ponía `td` y `fc` en la dirección y nadie los leía.
|
|
103
|
+
- **La ruta de un ítem de menú lleva sus grupos: `/menu/<grupo>/.../<nombre>`** (`rutaDeTablaDeMenu`, `gruposDeItem`, `itemDeRuta` en `utils/menuInicial.ts`; la ruta es `/menu/*`). Los `name` se repiten entre grupos: en dmencu «encuestador», «recuperador», «ingresador» y «supervisor» están en asignación (`t_encu_areas`...) y en recepción (`encuestadores_asignados`...), con tablas distintas. Con `/menu/:nombre` se buscaba el primer ítem con ese nombre: recepción abría la tabla de asignación (sin sus detalles ni la columna de acciones, `clientSide` de `tareas_tem_recepcion`) y el menú marcaba los dos ítems. Los segmentos van con `encodeURIComponent`. Una dirección vieja `/menu/<nombre>` cae en la primera tabla con ese nombre. Quien arma la ruta de un ítem tiene que pasarle sus grupos (`SideMenu` los lleva por `MenuListItem`; la pantalla de inicio los calcula con `gruposDeItem`).
|
|
103
104
|
- **fixedFields** (`utils/fixedFields.ts`, igual que `TableConnector`): uno que fija el valor oculta su columna (salvo `show`), no se edita y no se filtra; uno con `range` o `until` es un rango: la columna se ve, se edita y se filtra.
|
|
104
105
|
|
|
105
106
|
### Anchos de columna
|
|
106
107
|
- Como `backend-plus` (`fieldDef.width` en `my-tables.js`, «Width in pixels for the grid» en el `.d.ts`), el `width` que declara el backend para un campo manda sobre el que se calcula con el título y los datos (`calcularAnchosDeColumnas`). Sin `width` se calcula. Las columnas se pueden arrastrar desde el borde del encabezado (`resizable`, con `columnWidths` en el estado de la grilla); en `backend-plus` el `width` también es el mínimo, acá el usuario puede achicarla.
|
|
107
108
|
|
|
109
|
+
### Columnas ocultas (`hiddenColumns`, como `backend-plus`)
|
|
110
|
+
- Una grilla abre con ocultas las `hiddenColumns` de la definición (el servidor suma ahí los campos `isName: 'known'`, `table-def-adapt.js`; `utils/columnasOcultas.ts`, `columnasOcultasIniciales`). **Un campo con `visible: false` es otra cosa: viaja en la definición pero no se dibuja nunca** (`campoDibujable`): no es una columna oculta que el usuario pueda mostrar, así que no está en el diálogo ni se exporta (`backend-plus` lo trata como oculta; acá se decidió que nunca se vea). Si el menú o la dirección pasan `td` con `hiddenColumns`, se aplica porque la definición ya viene mezclada. Antes `useGridColumns` ignoraba `hiddenColumns`.
|
|
111
|
+
- El estado es `columnasOcultas` de `GenericDataGrid` (se guarda en el cache de los detalles). Cambiarlo sí rearma las columnas, pero solo lo cambia el usuario: **Alt+clic en el encabezado** oculta (`defaultColumnHeaderCellRenderer`, en la captura para que react-data-grid no ordene) y **«ocultar o mostrar columnas»** del menú abre `DialogoDeColumnas` (a la izquierda las que se ven, a la derecha las ocultas; un clic cambia de lado). No lista las que oculta un fixedField, que no se pueden mostrar.
|
|
112
|
+
- La exportación no incluye las ocultas salvo la opción `hiddens` (`ExportDialog`). El editor vertical (`VerticalEditorPage`, recibe `columnasOcultas`) tampoco muestra ni los `visible: false` ni las ocultas, como el modo vertical de `backend-plus`. Los detalles desplegados son otra `GenericDataGrid`: cada uno lleva sus propias columnas ocultas.
|
|
113
|
+
|
|
108
114
|
### Sesión y arranque
|
|
109
115
|
- Con el estado todavía sin cargar (`idle`), `PrivateRoute` manda a `/login` guardando la ruta pedida; `InitialRedirectHandler` (montado fuera de las rutas privadas) vuelve a esa ruta cuando la sesión resulta válida. Tiene una guarda para no caer en la pantalla de inicio mientras la ruta guardada se limpia.
|
|
110
116
|
- **No hay `HomePage` ni ruta `/home`: la pantalla de inicio la define el backend, como en `backend-plus`.** `/` (`PantallaInicial`) redirige al ítem de menú con `selectedByDefault` (y, si es un grupo, al que lo declare adentro; `itemInicial`, `rutaDeItemDeMenu` en `utils/menuInicial.ts`, que también arma las rutas del menú lateral). Si el backend no declara ninguno, `/` queda vacía, igual que en `backend-plus`. El login y `InitialRedirectHandler` mandan a `/`. Una aplicación que quiera otra pantalla de inicio la declara en su menú.
|