@acvl/frontend-components 0.0.89 → 0.0.91
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/cjs/index.js +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/index.d.ts +43 -9
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2243,11 +2243,13 @@ interface FieldProps {
|
|
|
2243
2243
|
*
|
|
2244
2244
|
* **La unicidad de `codigo` la garantiza el backend, no la grilla.** Un choque vuelve como un
|
|
2245
2245
|
* 400 con el error en `codigo`, y la edición en línea lo pinta sobre la celda
|
|
2246
|
-
* (`renderEditCellWithErrorTooltip` con `mutationErrors`); la ficha, sobre el campo.
|
|
2247
|
-
* `
|
|
2248
|
-
*
|
|
2249
|
-
*
|
|
2250
|
-
*
|
|
2246
|
+
* (`renderEditCellWithErrorTooltip` con `mutationErrors`); la ficha, sobre el campo. La columna
|
|
2247
|
+
* `codigo` del listado no es filtrable, así que el backend no tiene que atender `codigo__in`.
|
|
2248
|
+
*
|
|
2249
|
+
* **Los filtros del recurso aceptan `id__in`.** El listado filtra la columna `nombre` eligiendo
|
|
2250
|
+
* registros, y el panel de filtros manda los ids elegidos como `id__in` —en django-filter,
|
|
2251
|
+
* `"id": ["exact", "in"]`—. Donde no lo atiende, django-filter ignora el parámetro en silencio:
|
|
2252
|
+
* el filtro se ofrece y no hace nada.
|
|
2251
2253
|
*
|
|
2252
2254
|
* Y lo que ya pide cualquier pantalla de la librería:
|
|
2253
2255
|
*
|
|
@@ -2259,6 +2261,20 @@ interface FieldProps {
|
|
|
2259
2261
|
* borrado que el servidor va a rechazar.
|
|
2260
2262
|
* - Guardar (POST o PATCH) contesta `{ detail, list }`: `manualCacheRefresh` copia `detail` en la
|
|
2261
2263
|
* caché del detalle y `list` en el renglón del listado, sin volver a pedirlos.
|
|
2264
|
+
*
|
|
2265
|
+
* Y `como_opciones`, con `{ value, label }` y el id como `value`. De ahí saca sus opciones
|
|
2266
|
+
* cualquier selector que liste el catálogo (`ControlledAutocomplete` con
|
|
2267
|
+
* `queryArgs: { endpoint }`), y ya no sólo los de otros modelos:
|
|
2268
|
+
*
|
|
2269
|
+
* - **el propio listado**, para su filtro por nombre: la columna `nombre` lleva `queryArgs` con
|
|
2270
|
+
* este `endpoint`, y lo que el usuario elige ahí se manda como `id__in` —por eso el `value`
|
|
2271
|
+
* tiene que ser el id—;
|
|
2272
|
+
* - el campo con el que el formulario de otro modelo lo elige, o la columna que apunta a él en el
|
|
2273
|
+
* panel de filtros de otra grilla.
|
|
2274
|
+
*
|
|
2275
|
+
* Al teclear, el selector busca con `nombre__icontains` (su `searchField` por omisión), así que
|
|
2276
|
+
* los filtros del recurso lo aceptan también. Sin `como_opciones` el filtro por nombre del
|
|
2277
|
+
* listado sale vacío y el catálogo no se puede elegir desde ningún otro lado.
|
|
2262
2278
|
*/
|
|
2263
2279
|
interface DefinicionDeCatalogo {
|
|
2264
2280
|
/**
|
|
@@ -2363,10 +2379,17 @@ declare const crearFabricaDeCatalogos: <BaseQuery extends BaseQueryFn<string | F
|
|
|
2363
2379
|
* Un catálogo puede omitir alguna de las de la base con `ocultarColumnas` — quitar, nunca cambiar
|
|
2364
2380
|
* lo que hacen; ver `DefinicionDeCatalogo`.
|
|
2365
2381
|
*
|
|
2366
|
-
* `
|
|
2367
|
-
*
|
|
2368
|
-
*
|
|
2369
|
-
* `
|
|
2382
|
+
* `nombre` **se filtra eligiendo registros**. El panel de filtros convierte la columna `nombre`
|
|
2383
|
+
* en `id__in` (`filterFieldFor`): la lista que se manda son ids, no nombres. Por eso lleva
|
|
2384
|
+
* `extra.queryArgs` con el endpoint del catálogo: el selector saca sus opciones del
|
|
2385
|
+
* `como_opciones` de ese mismo recurso, cuyo `value` es el id. Sin `queryArgs` el selector
|
|
2386
|
+
* aparecía vacío. `extra` sólo lo lee el panel de filtros; la edición en línea no lo toca.
|
|
2387
|
+
*
|
|
2388
|
+
* `codigo` **no es filtrable**. En el panel de filtros una columna de texto es un selector
|
|
2389
|
+
* múltiple que filtra por `<campo>__in`, y el contrato no le pide al backend `codigo__in`: donde
|
|
2390
|
+
* no lo atiende —django-filter ignora en silencio el parámetro que no conoce— el filtro se
|
|
2391
|
+
* ofrecía y no hacía nada. Tampoco valida la unicidad: eso lo hace el backend al guardar, y el
|
|
2392
|
+
* choque vuelve como el error que `renderEditCellWithErrorTooltip` pinta sobre la celda.
|
|
2370
2393
|
*/
|
|
2371
2394
|
declare const columnasDeCatalogo: (definicion: DefinicionDeCatalogo) => (props?: EditGridColumnsProps) => GridColDefPropsOverrides[];
|
|
2372
2395
|
|
|
@@ -2672,6 +2695,9 @@ interface CatalogoListProps {
|
|
|
2672
2695
|
* una pestaña hay que pasarla explícitamente: ahí `useLocation()` devuelve la ruta de la
|
|
2673
2696
|
* página contenedora, así que sin esto los renglones navegarían al detalle de la página que
|
|
2674
2697
|
* contiene las pestañas y todas ellas compartirían una sola llave de persistencia.
|
|
2698
|
+
*
|
|
2699
|
+
* No decide contra qué recurso se exporta: eso es siempre `definicion.endpoint` (ver
|
|
2700
|
+
* `CatalogoList`).
|
|
2675
2701
|
*/
|
|
2676
2702
|
pathname?: string;
|
|
2677
2703
|
/**
|
|
@@ -2700,6 +2726,14 @@ interface CatalogoListProps {
|
|
|
2700
2726
|
*
|
|
2701
2727
|
* El alta siempre está —sujeta al permiso de agregar—; la importación CSV sólo si se pasa
|
|
2702
2728
|
* `csvUpload`.
|
|
2729
|
+
*
|
|
2730
|
+
* **La exportación CSV va siempre contra `definicion.endpoint`.** `ExportCSV` exporta contra el
|
|
2731
|
+
* `csvProps.endpoint` que reciba y, sin él, contra la ruta de la página (`useLocation()`) —a
|
|
2732
|
+
* propósito no contra el `pathname` de la grilla, que también es llave de persistencia y no tiene
|
|
2733
|
+
* por qué ser una URL—. Pero la ruta es de la página, no del recurso: dentro de una pestaña es la
|
|
2734
|
+
* de la página que contiene las pestañas, y la descarga pedía algo que no es el catálogo. El
|
|
2735
|
+
* endpoint es el recurso esté donde esté montado el listado, así que se pasa siempre, igual como
|
|
2736
|
+
* página propia que como pestaña. Lo arma `dataGridPropsDeCatalogo`.
|
|
2703
2737
|
*/
|
|
2704
2738
|
declare const CatalogoList: ({ definicion, api, pathname, csvUpload }: CatalogoListProps) => react_jsx_runtime.JSX.Element;
|
|
2705
2739
|
|
package/package.json
CHANGED