@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
  };