@acvl/frontend-components 0.0.49 → 0.0.51

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.
Files changed (28) hide show
  1. package/dist/cjs/index.js +1 -1
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/types/src/components/v2/inputs/controlled/ControlledAddressAutocomplete/index.d.ts +2 -0
  4. package/dist/cjs/types/src/components/v2/inputs/controlled/ControlledAmountWithCurrency/index.d.ts +2 -0
  5. package/dist/cjs/types/src/components/v2/inputs/controlled/ControlledDate/index.d.ts +12 -0
  6. package/dist/cjs/types/src/components/v2/inputs/controlled/ControlledFileField/index.d.ts +8 -0
  7. package/dist/cjs/types/src/components/v2/inputs/controlled/ControlledSelect/index.d.ts +7 -0
  8. package/dist/cjs/types/src/components/v2/inputs/controlled/index.d.ts +4 -0
  9. package/dist/cjs/types/src/components/v2/inputs/controlled/types.d.ts +31 -0
  10. package/dist/cjs/types/src/components/v2/layout/pages/DetailPage/ActionsMenu.d.ts +17 -0
  11. package/dist/cjs/types/src/components/v2/layout/pages/DetailPage/Field/EditField.d.ts +1 -1
  12. package/dist/cjs/types/src/components/v2/layout/pages/DetailPage/Field/index.d.ts +3 -1
  13. package/dist/cjs/types/src/components/v2/layout/pages/DetailPage/index.d.ts +5 -1
  14. package/dist/esm/index.js +1 -1
  15. package/dist/esm/index.js.map +1 -1
  16. package/dist/esm/types/src/components/v2/inputs/controlled/ControlledAddressAutocomplete/index.d.ts +2 -0
  17. package/dist/esm/types/src/components/v2/inputs/controlled/ControlledAmountWithCurrency/index.d.ts +2 -0
  18. package/dist/esm/types/src/components/v2/inputs/controlled/ControlledDate/index.d.ts +12 -0
  19. package/dist/esm/types/src/components/v2/inputs/controlled/ControlledFileField/index.d.ts +8 -0
  20. package/dist/esm/types/src/components/v2/inputs/controlled/ControlledSelect/index.d.ts +7 -0
  21. package/dist/esm/types/src/components/v2/inputs/controlled/index.d.ts +4 -0
  22. package/dist/esm/types/src/components/v2/inputs/controlled/types.d.ts +31 -0
  23. package/dist/esm/types/src/components/v2/layout/pages/DetailPage/ActionsMenu.d.ts +17 -0
  24. package/dist/esm/types/src/components/v2/layout/pages/DetailPage/Field/EditField.d.ts +1 -1
  25. package/dist/esm/types/src/components/v2/layout/pages/DetailPage/Field/index.d.ts +3 -1
  26. package/dist/esm/types/src/components/v2/layout/pages/DetailPage/index.d.ts +5 -1
  27. package/dist/index.d.ts +70 -8
  28. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
1
  import { type TextFieldProps } from "@mui/material";
2
+ import { type DetailRenderProps } from "../types";
2
3
  /**
3
4
  * Forma JSON que se guarda en el formulario / se envía al backend.
4
5
  * Para direcciones escritas a mano solo viene `formatted_address`.
@@ -42,5 +43,6 @@ interface ControlledAddressAutocompleteProps {
42
43
  declare const ControlledAddressAutocomplete: {
43
44
  ({ name, label, control, fieldProps, extraProps, }: ControlledAddressAutocompleteProps): import("react/jsx-runtime").JSX.Element;
44
45
  displayName: string;
46
+ formatDetail({ fieldData }: DetailRenderProps): string;
45
47
  };
46
48
  export default ControlledAddressAutocomplete;
@@ -1,6 +1,7 @@
1
1
  import { type InputBaseProps } from "@mui/material";
2
2
  import { type NumericFormatProps } from "react-number-format";
3
3
  import { type ComoOpcionesProps } from "@v1";
4
+ import { type DetailRenderProps } from "../types";
4
5
  /** Opción de un desplegable: `{ value, label }`. */
5
6
  interface Opciones {
6
7
  value: string;
@@ -45,5 +46,6 @@ interface ControlledAmountWithCurrencyProps {
45
46
  declare const ControlledAmountWithCurrency: {
46
47
  ({ name, control, fieldProps, extraProps, }: ControlledAmountWithCurrencyProps): import("react/jsx-runtime").JSX.Element;
47
48
  displayName: string;
49
+ formatDetail({ fieldData, extraProps, data, name, }: DetailRenderProps): string;
48
50
  };
49
51
  export default ControlledAmountWithCurrency;
@@ -0,0 +1,12 @@
1
+ import { type ControlledInput } from "../types";
2
+ /**
3
+ * `ControlledDate` de v2. Reutiliza el renderizado de edición de v1 (no se
4
+ * duplica su lógica) y añade el renderizado de detalle mediante `formatDetail`,
5
+ * de modo que la página de detalle no necesita conocer este tipo de campo.
6
+ *
7
+ * Migrar un input a v2 consiste en esto: envolver el componente de v1 y
8
+ * adjuntarle `formatDetail` (y opcionalmente `Detail`). Sirve de plantilla para
9
+ * el resto de inputs.
10
+ */
11
+ declare const ControlledDate: ControlledInput;
12
+ export default ControlledDate;
@@ -0,0 +1,8 @@
1
+ import { type ControlledInput } from "../types";
2
+ /**
3
+ * `ControlledFileField` de v2. Reutiliza el renderizado de edición de v1 y
4
+ * aporta su renderizado de detalle completo mediante `Detail` (badge + popover),
5
+ * además del texto formateado mediante `formatDetail`.
6
+ */
7
+ declare const ControlledFileField: ControlledInput;
8
+ export default ControlledFileField;
@@ -0,0 +1,7 @@
1
+ import { type ControlledInput } from "../types";
2
+ /**
3
+ * `ControlledSelect` de v2. Reutiliza el renderizado de edición de v1 y añade el
4
+ * renderizado de detalle (une las etiquetas de las opciones seleccionadas).
5
+ */
6
+ declare const ControlledSelect: ControlledInput;
7
+ export default ControlledSelect;
@@ -1,3 +1,7 @@
1
1
  export { default as ControlledAddressAutocomplete } from "./ControlledAddressAutocomplete";
2
2
  export type { AddressValue } from "./ControlledAddressAutocomplete";
3
3
  export { default as ControlledAmountWithCurrency } from "./ControlledAmountWithCurrency";
4
+ export { default as ControlledDate_v2 } from "./ControlledDate";
5
+ export { default as ControlledSelect_v2 } from "./ControlledSelect";
6
+ export { default as ControlledFileField_v2 } from "./ControlledFileField";
7
+ export type { ControlledInput, DetailRenderProps } from "./types";
@@ -0,0 +1,31 @@
1
+ import { type FC, type ReactNode } from "react";
2
+ /**
3
+ * Datos que recibe el renderizado de detalle de un input. Es un subconjunto de
4
+ * `FieldProps` (los campos que necesita la vista de solo lectura), más un
5
+ * `content` opcional con el valor ya formateado y envuelto con pre/post por el
6
+ * contenedor `DetailField` (útil para renderizadores completos como archivos).
7
+ */
8
+ export interface DetailRenderProps {
9
+ fieldData?: any;
10
+ /** Registro completo de la página; permite leer valores hermanos. */
11
+ data?: any;
12
+ name?: string;
13
+ detail_name?: string;
14
+ extraProps?: any;
15
+ /** Valor formateado + pre/post, disponible para `Detail`. */
16
+ content?: string;
17
+ }
18
+ /**
19
+ * Contrato de un input controlado de v2. Además de renderizar su modo de
20
+ * edición (el propio componente), puede aportar su propia lógica de detalle:
21
+ *
22
+ * - `formatDetail`: convierte el valor en contenido mostrable (string o nodo).
23
+ * Cubre la mayoría de los casos; el contenedor se encarga de envolverlo con
24
+ * enlaces de navegación y pre/post.
25
+ * - `Detail`: renderizado de detalle completo (badges, popovers…). Poco común;
26
+ * solo para inputs que necesitan controlar toda su UI de solo lectura.
27
+ */
28
+ export interface ControlledInput<P = any> extends FC<P> {
29
+ formatDetail?: (props: DetailRenderProps) => ReactNode;
30
+ Detail?: (props: DetailRenderProps) => ReactNode;
31
+ }
@@ -0,0 +1,17 @@
1
+ import { type ReactNode } from "react";
2
+ export interface ActionsMenuProps {
3
+ delete?: {
4
+ mutation: any;
5
+ disableNavBack?: boolean;
6
+ };
7
+ historial?: {
8
+ endpoint?: string;
9
+ };
10
+ extraButtons?: {
11
+ title: string;
12
+ icon: ReactNode;
13
+ onClick: () => void;
14
+ }[];
15
+ }
16
+ declare const ActionsMenu: (props: ActionsMenuProps) => import("react/jsx-runtime").JSX.Element;
17
+ export default ActionsMenu;
@@ -1,4 +1,4 @@
1
1
  import { type FieldProps } from "./index";
2
2
  type Props = Partial<FieldProps>;
3
- declare const EditField: (props: Props) => any;
3
+ declare const EditField: (props: Props) => string | number | bigint | boolean | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<import("react").ReactNode> | Promise<import("react").ReactNode> | null | undefined;
4
4
  export default EditField;
@@ -1,5 +1,6 @@
1
1
  import { type GridProps } from "@mui/material";
2
2
  import { type PageType } from "@v1";
3
+ import { type ControlledInput } from "@v2/inputs/controlled";
3
4
  export interface FieldProps {
4
5
  pageType?: PageType;
5
6
  fieldData?: any;
@@ -10,7 +11,8 @@ export interface FieldProps {
10
11
  label: string;
11
12
  /** Ubicación de la etiqueta respecto al campo. Por defecto `"top"`. */
12
13
  labelPosition?: "top" | "left";
13
- type: any;
14
+ /** Input controlado a renderizar (edición) y, opcionalmente, su detalle. */
15
+ type: ControlledInput;
14
16
  gridProps?: GridProps;
15
17
  fieldProps?: object;
16
18
  extraProps?: any;
@@ -12,6 +12,7 @@ export interface DetailPageV2Props {
12
12
  mutate: {
13
13
  mutation: any;
14
14
  args?: any;
15
+ disable?: boolean;
15
16
  };
16
17
  delete?: {
17
18
  mutation: any;
@@ -29,7 +30,10 @@ export interface DetailPageV2Props {
29
30
  button?: ReactNode;
30
31
  extraButtons?: {
31
32
  pageType: PageType | "all";
32
- render: (id: number) => ReactNode;
33
+ title: string;
34
+ icon: ReactNode;
35
+ onClick: (data: any) => void;
36
+ display?: (data: any) => boolean;
33
37
  }[];
34
38
  badge?: string;
35
39
  };
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import * as _mui_material from '@mui/material';
2
2
  import { ButtonProps, ButtonGroupProps, IconButtonProps, MenuItemProps, AlertProps, BoxProps, AutocompleteProps, SliderProps, SwitchProps, GridProps, DrawerProps, MenuProps, PaletteColorOptions, TextFieldProps as TextFieldProps$1, InputBaseProps } from '@mui/material';
3
3
  import * as React from 'react';
4
- import React__default, { ReactNode, Dispatch, SetStateAction, JSX, RefObject, JSXElementConstructor, ElementType } from 'react';
4
+ import React__default, { ReactNode, Dispatch, SetStateAction, JSX, RefObject, FC, JSXElementConstructor, ElementType } from 'react';
5
5
  import * as react_jsx_runtime from 'react/jsx-runtime';
6
6
  import { GridRowId, GridRowSelectionModel, GridSortModel, GridFilterModel, GridRowModesModel, GridRenderEditCellParams, GridToolbarProps, DataGridProps as DataGridProps$1 } from '@mui/x-data-grid';
7
7
  import { DataGridProps, GridBaseColDef } from '@mui/x-data-grid/internals';
@@ -405,7 +405,7 @@ interface ControlledDateProps extends BaseControlledFieldProps {
405
405
  disableHT?: boolean;
406
406
  };
407
407
  }
408
- declare const ControlledDate: React__default.FC<ControlledDateProps>;
408
+ declare const ControlledDate$1: React__default.FC<ControlledDateProps>;
409
409
 
410
410
  interface ControlledDropdownProps extends BaseControlledFieldProps {
411
411
  fieldProps?: Partial<AutocompleteProps<any, any, any, any>>;
@@ -449,7 +449,7 @@ interface ControlledSelectProps extends BaseControlledFieldProps {
449
449
  }[];
450
450
  };
451
451
  }
452
- declare const ControlledSelect: React__default.FC<ControlledSelectProps>;
452
+ declare const ControlledSelect$1: React__default.FC<ControlledSelectProps>;
453
453
 
454
454
  interface ControlledSliderProps$1 extends BaseControlledFieldProps {
455
455
  fieldProps?: Partial<SliderProps>;
@@ -506,7 +506,7 @@ interface ControlledFileFieldProps extends BaseControlledFieldProps {
506
506
  };
507
507
  };
508
508
  }
509
- declare const ControlledFileField: React__default.FC<ControlledFileFieldProps>;
509
+ declare const ControlledFileField$1: React__default.FC<ControlledFileFieldProps>;
510
510
 
511
511
  interface ControlledSliderProps extends BaseControlledFieldProps {
512
512
  fieldProps?: Partial<SliderProps>;
@@ -931,6 +931,37 @@ declare module '@mui/material/styles' {
931
931
  }
932
932
  declare const theme: () => _mui_material.Theme;
933
933
 
934
+ /**
935
+ * Datos que recibe el renderizado de detalle de un input. Es un subconjunto de
936
+ * `FieldProps` (los campos que necesita la vista de solo lectura), más un
937
+ * `content` opcional con el valor ya formateado y envuelto con pre/post por el
938
+ * contenedor `DetailField` (útil para renderizadores completos como archivos).
939
+ */
940
+ interface DetailRenderProps {
941
+ fieldData?: any;
942
+ /** Registro completo de la página; permite leer valores hermanos. */
943
+ data?: any;
944
+ name?: string;
945
+ detail_name?: string;
946
+ extraProps?: any;
947
+ /** Valor formateado + pre/post, disponible para `Detail`. */
948
+ content?: string;
949
+ }
950
+ /**
951
+ * Contrato de un input controlado de v2. Además de renderizar su modo de
952
+ * edición (el propio componente), puede aportar su propia lógica de detalle:
953
+ *
954
+ * - `formatDetail`: convierte el valor en contenido mostrable (string o nodo).
955
+ * Cubre la mayoría de los casos; el contenedor se encarga de envolverlo con
956
+ * enlaces de navegación y pre/post.
957
+ * - `Detail`: renderizado de detalle completo (badges, popovers…). Poco común;
958
+ * solo para inputs que necesitan controlar toda su UI de solo lectura.
959
+ */
960
+ interface ControlledInput<P = any> extends FC<P> {
961
+ formatDetail?: (props: DetailRenderProps) => ReactNode;
962
+ Detail?: (props: DetailRenderProps) => ReactNode;
963
+ }
964
+
934
965
  /**
935
966
  * Forma JSON que se guarda en el formulario / se envía al backend.
936
967
  * Para direcciones escritas a mano solo viene `formatted_address`.
@@ -974,6 +1005,7 @@ interface ControlledAddressAutocompleteProps {
974
1005
  declare const ControlledAddressAutocomplete: {
975
1006
  ({ name, label, control, fieldProps, extraProps, }: ControlledAddressAutocompleteProps): react_jsx_runtime.JSX.Element;
976
1007
  displayName: string;
1008
+ formatDetail({ fieldData }: DetailRenderProps): string;
977
1009
  };
978
1010
 
979
1011
  /** Opción de un desplegable: `{ value, label }`. */
@@ -1020,8 +1052,33 @@ interface ControlledAmountWithCurrencyProps {
1020
1052
  declare const ControlledAmountWithCurrency: {
1021
1053
  ({ name, control, fieldProps, extraProps, }: ControlledAmountWithCurrencyProps): react_jsx_runtime.JSX.Element;
1022
1054
  displayName: string;
1055
+ formatDetail({ fieldData, extraProps, data, name, }: DetailRenderProps): string;
1023
1056
  };
1024
1057
 
1058
+ /**
1059
+ * `ControlledDate` de v2. Reutiliza el renderizado de edición de v1 (no se
1060
+ * duplica su lógica) y añade el renderizado de detalle mediante `formatDetail`,
1061
+ * de modo que la página de detalle no necesita conocer este tipo de campo.
1062
+ *
1063
+ * Migrar un input a v2 consiste en esto: envolver el componente de v1 y
1064
+ * adjuntarle `formatDetail` (y opcionalmente `Detail`). Sirve de plantilla para
1065
+ * el resto de inputs.
1066
+ */
1067
+ declare const ControlledDate: ControlledInput;
1068
+
1069
+ /**
1070
+ * `ControlledSelect` de v2. Reutiliza el renderizado de edición de v1 y añade el
1071
+ * renderizado de detalle (une las etiquetas de las opciones seleccionadas).
1072
+ */
1073
+ declare const ControlledSelect: ControlledInput;
1074
+
1075
+ /**
1076
+ * `ControlledFileField` de v2. Reutiliza el renderizado de edición de v1 y
1077
+ * aporta su renderizado de detalle completo mediante `Detail` (badge + popover),
1078
+ * además del texto formateado mediante `formatDetail`.
1079
+ */
1080
+ declare const ControlledFileField: ControlledInput;
1081
+
1025
1082
  interface FieldProps {
1026
1083
  pageType?: PageType;
1027
1084
  fieldData?: any;
@@ -1032,7 +1089,8 @@ interface FieldProps {
1032
1089
  label: string;
1033
1090
  /** Ubicación de la etiqueta respecto al campo. Por defecto `"top"`. */
1034
1091
  labelPosition?: "top" | "left";
1035
- type: any;
1092
+ /** Input controlado a renderizar (edición) y, opcionalmente, su detalle. */
1093
+ type: ControlledInput;
1036
1094
  gridProps?: GridProps;
1037
1095
  fieldProps?: object;
1038
1096
  extraProps?: any;
@@ -1084,6 +1142,7 @@ interface DetailPageV2Props {
1084
1142
  mutate: {
1085
1143
  mutation: any;
1086
1144
  args?: any;
1145
+ disable?: boolean;
1087
1146
  };
1088
1147
  delete?: {
1089
1148
  mutation: any;
@@ -1101,7 +1160,10 @@ interface DetailPageV2Props {
1101
1160
  button?: ReactNode;
1102
1161
  extraButtons?: {
1103
1162
  pageType: PageType | "all";
1104
- render: (id: number) => ReactNode;
1163
+ title: string;
1164
+ icon: ReactNode;
1165
+ onClick: (data: any) => void;
1166
+ display?: (data: any) => boolean;
1105
1167
  }[];
1106
1168
  badge?: string;
1107
1169
  };
@@ -1243,5 +1305,5 @@ declare const useMutationHandler: ({ mutationFn, form, onSuccess, onValidationEr
1243
1305
  }) => void;
1244
1306
  };
1245
1307
 
1246
- export { APIContext, APIProvider, ActiveCell, ActiveIcon, Base, ButtonWithDrawer, CSVUpload, ContentLayout, ControlledAddressAutocomplete, ControlledAmountWithCurrency, ControlledDate, ControlledDropdown, ControlledFileField, FileUploadBox as ControlledFileUploadBox, ControlledNumber, ControlledPhoneNumber, ControlledSelect, ControlledSlider as ControlledSimpleSlider, ControlledSlider$1 as ControlledSlider, ControlledSwitch, ControlledText, ControlledTimePicker, ControlledToggleButtons, CoverPage, CreateButtonBase, CreateButtonWithMenuOptions, CrudDropdown, CustomNoRows, DeleteButton, DeleteConfirmationDialog, DetailPage$1 as DetailPage, DetailPage as DetailPage_v2, EditButton, ExportCSV, ExtraButtons, HistorialDrawer, ListPage, Loadable, LoadingComponent, Logo, MainDrawer, MainLayout, MenuItemWithLoading, ModuleCard, MoreOptions, MyGridEditSingleSelect, NavigationContext, NavigationProvider, NormalOrIcon, NotAllowed, NotFound, ObjectProgressStack, SaveCancelButton, StatusBadge, StyledMenu, Tabs, Transitions, UncontrolledText, changeTitle, closeProgressSnack, deleteColumn, editColumn, filterQuery, formParser, _default as headerReducer, manualCacheRefresh, mergeSettings, openProgressSnack, query, renderEditCellWithErrorTooltip, setErrors, _default$1 as snackProgressReducer, tags, theme, updateProgressSnackData, useAPI, useHasPermission, useMutationHandler, useNavigation, valueLabel };
1247
- export type { APIcontextProps, AddressValue, ComoOpcionesProps, CustomToolbarProps, DeleteGridColumnsProps, DetachedPage, EditGridColumnsProps, EditReadOnlyFields, FieldFilter, FieldProps$1 as FieldProps, FieldValidationProps, GridArgs, GridColDefPropsOverrides, JSONFormProps, JSONParserProps, MainLayoutPageHeaderProps, MainLayoutProps, MainLayoutSidebarFooterProps, MyDataGridProps, MyGridFilterModel, MyTab, MyTabProps, PageType, ProgressStatusProps };
1308
+ export { APIContext, APIProvider, ActiveCell, ActiveIcon, Base, ButtonWithDrawer, CSVUpload, ContentLayout, ControlledAddressAutocomplete, ControlledAmountWithCurrency, ControlledDate$1 as ControlledDate, ControlledDate as ControlledDate_v2, ControlledDropdown, ControlledFileField$1 as ControlledFileField, ControlledFileField as ControlledFileField_v2, FileUploadBox as ControlledFileUploadBox, ControlledNumber, ControlledPhoneNumber, ControlledSelect$1 as ControlledSelect, ControlledSelect as ControlledSelect_v2, ControlledSlider as ControlledSimpleSlider, ControlledSlider$1 as ControlledSlider, ControlledSwitch, ControlledText, ControlledTimePicker, ControlledToggleButtons, CoverPage, CreateButtonBase, CreateButtonWithMenuOptions, CrudDropdown, CustomNoRows, DeleteButton, DeleteConfirmationDialog, DetailPage$1 as DetailPage, DetailPage as DetailPage_v2, EditButton, ExportCSV, ExtraButtons, HistorialDrawer, ListPage, Loadable, LoadingComponent, Logo, MainDrawer, MainLayout, MenuItemWithLoading, ModuleCard, MoreOptions, MyGridEditSingleSelect, NavigationContext, NavigationProvider, NormalOrIcon, NotAllowed, NotFound, ObjectProgressStack, SaveCancelButton, StatusBadge, StyledMenu, Tabs, Transitions, UncontrolledText, changeTitle, closeProgressSnack, deleteColumn, editColumn, filterQuery, formParser, _default as headerReducer, manualCacheRefresh, mergeSettings, openProgressSnack, query, renderEditCellWithErrorTooltip, setErrors, _default$1 as snackProgressReducer, tags, theme, updateProgressSnackData, useAPI, useHasPermission, useMutationHandler, useNavigation, valueLabel };
1309
+ export type { APIcontextProps, AddressValue, ComoOpcionesProps, ControlledInput, CustomToolbarProps, DeleteGridColumnsProps, DetachedPage, DetailRenderProps, EditGridColumnsProps, EditReadOnlyFields, FieldFilter, FieldProps$1 as FieldProps, FieldValidationProps, GridArgs, GridColDefPropsOverrides, JSONFormProps, JSONParserProps, MainLayoutPageHeaderProps, MainLayoutProps, MainLayoutSidebarFooterProps, MyDataGridProps, MyGridFilterModel, MyTab, MyTabProps, PageType, ProgressStatusProps };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@acvl/frontend-components",
3
- "version": "0.0.49",
3
+ "version": "0.0.51",
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",