@acvl/frontend-components 0.0.90 → 0.0.92
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 +37 -6
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -217,6 +217,7 @@ interface GridArgs {
|
|
|
217
217
|
ignoreSort?: boolean;
|
|
218
218
|
}
|
|
219
219
|
interface GridColDefPropsOverrides extends GridBaseColDef {
|
|
220
|
+
/** Lo que el panel de filtros necesita de la columna. La edición en línea no lo lee. */
|
|
220
221
|
extra?: {
|
|
221
222
|
queryArgs?: ComoOpcionesProps;
|
|
222
223
|
options?: {
|
|
@@ -224,6 +225,19 @@ interface GridColDefPropsOverrides extends GridBaseColDef {
|
|
|
224
225
|
label: string;
|
|
225
226
|
}[];
|
|
226
227
|
max?: number;
|
|
228
|
+
/**
|
|
229
|
+
* La llave de query que escribe el filtro, en lugar de la que deriva el panel
|
|
230
|
+
* (`<campo>__in`, o `id__in` para `nombre`). La usa, por ejemplo, una columna que filtra
|
|
231
|
+
* eligiendo registros sin llamarse `nombre`: el número económico de un tracto.
|
|
232
|
+
*/
|
|
233
|
+
filterField?: string;
|
|
234
|
+
/**
|
|
235
|
+
* El filtro con el que busca el selector del panel al teclear. Es el `searchField` de
|
|
236
|
+
* `ControlledAutocomplete` y, como ahí, por defecto es `nombre__icontains`. Un modelo sin
|
|
237
|
+
* `nombre`, o cuyo filterset no lo declara, tiene que dar el suyo (por ejemplo `search`):
|
|
238
|
+
* django-filter ignora en silencio el parámetro que no conoce, y el tecleo no filtraría.
|
|
239
|
+
*/
|
|
240
|
+
searchField?: string;
|
|
227
241
|
};
|
|
228
242
|
input?: any;
|
|
229
243
|
filterName?: string;
|
|
@@ -2246,6 +2260,11 @@ interface FieldProps {
|
|
|
2246
2260
|
* (`renderEditCellWithErrorTooltip` con `mutationErrors`); la ficha, sobre el campo. La columna
|
|
2247
2261
|
* `codigo` del listado no es filtrable, así que el backend no tiene que atender `codigo__in`.
|
|
2248
2262
|
*
|
|
2263
|
+
* **Los filtros del recurso aceptan `id__in`.** El listado filtra la columna `nombre` eligiendo
|
|
2264
|
+
* registros, y el panel de filtros manda los ids elegidos como `id__in` —en django-filter,
|
|
2265
|
+
* `"id": ["exact", "in"]`—. Donde no lo atiende, django-filter ignora el parámetro en silencio:
|
|
2266
|
+
* el filtro se ofrece y no hace nada.
|
|
2267
|
+
*
|
|
2249
2268
|
* Y lo que ya pide cualquier pantalla de la librería:
|
|
2250
2269
|
*
|
|
2251
2270
|
* - El listado, paginado con `results` y `count`.
|
|
@@ -2257,13 +2276,19 @@ interface FieldProps {
|
|
|
2257
2276
|
* - Guardar (POST o PATCH) contesta `{ detail, list }`: `manualCacheRefresh` copia `detail` en la
|
|
2258
2277
|
* caché del detalle y `list` en el renglón del listado, sin volver a pedirlos.
|
|
2259
2278
|
*
|
|
2260
|
-
* Y
|
|
2279
|
+
* Y `como_opciones`, con `{ value, label }` y el id como `value`. De ahí saca sus opciones
|
|
2280
|
+
* cualquier selector que liste el catálogo (`ControlledAutocomplete` con
|
|
2281
|
+
* `queryArgs: { endpoint }`), y ya no sólo los de otros modelos:
|
|
2261
2282
|
*
|
|
2262
|
-
* -
|
|
2263
|
-
*
|
|
2264
|
-
*
|
|
2265
|
-
*
|
|
2266
|
-
*
|
|
2283
|
+
* - **el propio listado**, para su filtro por nombre: la columna `nombre` lleva `queryArgs` con
|
|
2284
|
+
* este `endpoint`, y lo que el usuario elige ahí se manda como `id__in` —por eso el `value`
|
|
2285
|
+
* tiene que ser el id—;
|
|
2286
|
+
* - el campo con el que el formulario de otro modelo lo elige, o la columna que apunta a él en el
|
|
2287
|
+
* panel de filtros de otra grilla.
|
|
2288
|
+
*
|
|
2289
|
+
* Al teclear, el selector busca con `nombre__icontains` (su `searchField` por omisión), así que
|
|
2290
|
+
* los filtros del recurso lo aceptan también. Sin `como_opciones` el filtro por nombre del
|
|
2291
|
+
* listado sale vacío y el catálogo no se puede elegir desde ningún otro lado.
|
|
2267
2292
|
*/
|
|
2268
2293
|
interface DefinicionDeCatalogo {
|
|
2269
2294
|
/**
|
|
@@ -2368,6 +2393,12 @@ declare const crearFabricaDeCatalogos: <BaseQuery extends BaseQueryFn<string | F
|
|
|
2368
2393
|
* Un catálogo puede omitir alguna de las de la base con `ocultarColumnas` — quitar, nunca cambiar
|
|
2369
2394
|
* lo que hacen; ver `DefinicionDeCatalogo`.
|
|
2370
2395
|
*
|
|
2396
|
+
* `nombre` **se filtra eligiendo registros**. El panel de filtros convierte la columna `nombre`
|
|
2397
|
+
* en `id__in` (`filterFieldFor`): la lista que se manda son ids, no nombres. Por eso lleva
|
|
2398
|
+
* `extra.queryArgs` con el endpoint del catálogo: el selector saca sus opciones del
|
|
2399
|
+
* `como_opciones` de ese mismo recurso, cuyo `value` es el id. Sin `queryArgs` el selector
|
|
2400
|
+
* aparecía vacío. `extra` sólo lo lee el panel de filtros; la edición en línea no lo toca.
|
|
2401
|
+
*
|
|
2371
2402
|
* `codigo` **no es filtrable**. En el panel de filtros una columna de texto es un selector
|
|
2372
2403
|
* múltiple que filtra por `<campo>__in`, y el contrato no le pide al backend `codigo__in`: donde
|
|
2373
2404
|
* no lo atiende —django-filter ignora en silencio el parámetro que no conoce— el filtro se
|
package/package.json
CHANGED