@acvl/frontend-components 0.0.88 → 0.0.90

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/index.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import * as _mui_material from '@mui/material';
2
- import { ButtonProps, ButtonGroupProps, IconButtonProps, MenuItemProps, BoxProps, AutocompleteProps, SliderProps, SwitchProps, GridProps, DrawerProps, SxProps, Theme, StackProps, TypographyProps, MenuProps, PaletteColorOptions, TextFieldProps as TextFieldProps$1, InputBaseProps, DialogProps, DialogContentProps } from '@mui/material';
2
+ import { ButtonProps, ButtonGroupProps, IconButtonProps, MenuItemProps, BoxProps, AutocompleteProps, SliderProps, SwitchProps, ToggleButtonGroupProps, GridProps, DrawerProps, SxProps, Theme, StackProps, TypographyProps, MenuProps, PaletteColorOptions, TextFieldProps as TextFieldProps$1, InputBaseProps, DialogProps, DialogContentProps } from '@mui/material';
3
3
  import * as React$1 from 'react';
4
4
  import React__default, { ReactNode, Dispatch, SetStateAction, JSX, RefObject, FC, ReactElement, ComponentType, BaseSyntheticEvent, JSXElementConstructor, ElementType } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
@@ -582,7 +582,14 @@ interface ControlledSliderProps$1 extends BaseControlledFieldProps {
582
582
  declare const ControlledSlider$1: React__default.FC<ControlledSliderProps$1>;
583
583
 
584
584
  interface ControlledSwitchProps extends BaseControlledFieldProps {
585
- fieldProps?: SwitchProps;
585
+ /**
586
+ * Props del `Switch` de MUI, más `helperText`: el texto de ayuda que se pinta
587
+ * debajo, como en `ControlledText`. No es prop del `Switch`, así que se aparta
588
+ * antes del spread para que no le llegue a MUI.
589
+ */
590
+ fieldProps?: SwitchProps & {
591
+ helperText?: React__default.ReactNode;
592
+ };
586
593
  }
587
594
  declare const ControlledSwitch: React__default.FC<ControlledSwitchProps>;
588
595
 
@@ -595,7 +602,18 @@ interface ControlledTextProps extends BaseControlledFieldProps {
595
602
  declare const ControlledText: React__default.FC<ControlledTextProps>;
596
603
 
597
604
  interface ControlledToggleButtonsProps extends BaseControlledFieldProps {
598
- fieldProps?: SwitchProps;
605
+ /**
606
+ * Props del `ToggleButtonGroup` de MUI, más `helperText`: el texto de ayuda que se pinta
607
+ * debajo, como en `ControlledSwitch`. No es prop del grupo, así que se aparta antes del
608
+ * spread para que no le llegue a MUI.
609
+ *
610
+ * Quedan fuera las que controla el componente: `value` y `onChange` son del formulario,
611
+ * `exclusive` lo exige `handleChange` (asume un solo valor) y `children` sale de
612
+ * `extraProps.options`.
613
+ */
614
+ fieldProps?: Omit<ToggleButtonGroupProps, "value" | "onChange" | "exclusive" | "children"> & {
615
+ helperText?: ReactNode;
616
+ };
599
617
  extraProps: {
600
618
  options: {
601
619
  value: string;
@@ -2225,11 +2243,8 @@ interface FieldProps {
2225
2243
  *
2226
2244
  * **La unicidad de `codigo` la garantiza el backend, no la grilla.** Un choque vuelve como un
2227
2245
  * 400 con el error en `codigo`, y la edición en línea lo pinta sobre la celda
2228
- * (`renderEditCellWithErrorTooltip` con `mutationErrors`); la ficha, sobre el campo. El
2229
- * `extra.queryArgs.endpoint` que lleva la columna `codigo` no valida nada: es lo que hace que el
2230
- * panel de filtros la ofrezca como selector múltiple, con las opciones que sirve el
2231
- * `como_opciones` de ese mismo endpoint, y filtre por `codigo__in`. Por eso el recurso también
2232
- * tiene que servir `como_opciones`.
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`.
2233
2248
  *
2234
2249
  * Y lo que ya pide cualquier pantalla de la librería:
2235
2250
  *
@@ -2241,6 +2256,14 @@ interface FieldProps {
2241
2256
  * borrado que el servidor va a rechazar.
2242
2257
  * - Guardar (POST o PATCH) contesta `{ detail, list }`: `manualCacheRefresh` copia `detail` en la
2243
2258
  * caché del detalle y `list` en el renglón del listado, sin volver a pedirlos.
2259
+ *
2260
+ * Y lo que necesita quien lo referencie, aunque ni el listado ni la ficha lo consultan:
2261
+ *
2262
+ * - `como_opciones`, con `{ value, label }`. De ahí saca sus opciones cualquier selector que
2263
+ * liste el catálogo (`ControlledAutocomplete` con `queryArgs: { endpoint }`): el campo con el
2264
+ * que el formulario de otro modelo lo elige, o la columna que apunta a él en el panel de
2265
+ * filtros de otra grilla. Sin esto el catálogo se administra, pero no se puede elegir desde
2266
+ * ningún lado.
2244
2267
  */
2245
2268
  interface DefinicionDeCatalogo {
2246
2269
  /**
@@ -2345,10 +2368,11 @@ declare const crearFabricaDeCatalogos: <BaseQuery extends BaseQueryFn<string | F
2345
2368
  * Un catálogo puede omitir alguna de las de la base con `ocultarColumnas` — quitar, nunca cambiar
2346
2369
  * lo que hacen; ver `DefinicionDeCatalogo`.
2347
2370
  *
2348
- * `codigo` lleva `extra.queryArgs.endpoint`, que es lo que hace que el panel de filtros la
2349
- * ofrezca como selector múltiple con las opciones del propio recurso (`como_opciones`). **No
2350
- * valida la unicidad**: eso lo hace el backend al guardar, y el choque vuelve como el error que
2351
- * `renderEditCellWithErrorTooltip` pinta sobre la celda.
2371
+ * `codigo` **no es filtrable**. En el panel de filtros una columna de texto es un selector
2372
+ * múltiple que filtra por `<campo>__in`, y el contrato no le pide al backend `codigo__in`: donde
2373
+ * no lo atiende —django-filter ignora en silencio el parámetro que no conoce— el filtro se
2374
+ * ofrecía y no hacía nada. Tampoco valida la unicidad: eso lo hace el backend al guardar, y el
2375
+ * choque vuelve como el error que `renderEditCellWithErrorTooltip` pinta sobre la celda.
2352
2376
  */
2353
2377
  declare const columnasDeCatalogo: (definicion: DefinicionDeCatalogo) => (props?: EditGridColumnsProps) => GridColDefPropsOverrides[];
2354
2378
 
@@ -2654,6 +2678,9 @@ interface CatalogoListProps {
2654
2678
  * una pestaña hay que pasarla explícitamente: ahí `useLocation()` devuelve la ruta de la
2655
2679
  * página contenedora, así que sin esto los renglones navegarían al detalle de la página que
2656
2680
  * contiene las pestañas y todas ellas compartirían una sola llave de persistencia.
2681
+ *
2682
+ * No decide contra qué recurso se exporta: eso es siempre `definicion.endpoint` (ver
2683
+ * `CatalogoList`).
2657
2684
  */
2658
2685
  pathname?: string;
2659
2686
  /**
@@ -2682,6 +2709,14 @@ interface CatalogoListProps {
2682
2709
  *
2683
2710
  * El alta siempre está —sujeta al permiso de agregar—; la importación CSV sólo si se pasa
2684
2711
  * `csvUpload`.
2712
+ *
2713
+ * **La exportación CSV va siempre contra `definicion.endpoint`.** `ExportCSV` exporta contra el
2714
+ * `csvProps.endpoint` que reciba y, sin él, contra la ruta de la página (`useLocation()`) —a
2715
+ * propósito no contra el `pathname` de la grilla, que también es llave de persistencia y no tiene
2716
+ * por qué ser una URL—. Pero la ruta es de la página, no del recurso: dentro de una pestaña es la
2717
+ * de la página que contiene las pestañas, y la descarga pedía algo que no es el catálogo. El
2718
+ * endpoint es el recurso esté donde esté montado el listado, así que se pasa siempre, igual como
2719
+ * página propia que como pestaña. Lo arma `dataGridPropsDeCatalogo`.
2685
2720
  */
2686
2721
  declare const CatalogoList: ({ definicion, api, pathname, csvUpload }: CatalogoListProps) => react_jsx_runtime.JSX.Element;
2687
2722
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acvl/frontend-components",
3
- "version": "0.0.88",
3
+ "version": "0.0.90",
4
4
  "description": "Component library for ACV frontend projects.",
5
5
  "homepage": "https://github.com/ACV-Logistics/acv-frontend-components#readme",
6
6
  "access": "public",