@acvl/frontend-components 0.0.94 → 0.0.96
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 +123 -6
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2937,6 +2937,32 @@ interface SubsectionProps {
|
|
|
2937
2937
|
bgColor?: string;
|
|
2938
2938
|
title?: string;
|
|
2939
2939
|
description?: string;
|
|
2940
|
+
/**
|
|
2941
|
+
* Deja plegar la subsección desde su título: la flecha aparece a su izquierda y el renglón
|
|
2942
|
+
* entero se vuelve el interruptor.
|
|
2943
|
+
*
|
|
2944
|
+
* Apagado por defecto. Plegar es una decisión de la ficha —un bloque largo, o uno que casi
|
|
2945
|
+
* nunca se mira—, no una consecuencia de ponerle título: antes bastaba con titularla para
|
|
2946
|
+
* que apareciera la flecha, así que un clic distraído en el encabezado escondía campos que
|
|
2947
|
+
* nadie pidió esconder.
|
|
2948
|
+
*
|
|
2949
|
+
* Plegada mide sólo su encabezado, así que deja de estirarse a lo alto del renglón que
|
|
2950
|
+
* comparte con sus hermanas: el hueco que ocupaba se lo queda lo que siga.
|
|
2951
|
+
*
|
|
2952
|
+
* Sin `title` no hay de dónde plegar —la flecha vive en su renglón—, así que se ignora.
|
|
2953
|
+
* @default false
|
|
2954
|
+
*/
|
|
2955
|
+
collapsible?: boolean;
|
|
2956
|
+
/**
|
|
2957
|
+
* Arranca plegada. Sólo aplica con `collapsible` —si no, no habría flecha con que abrirla—.
|
|
2958
|
+
*
|
|
2959
|
+
* Es el arranque, no una orden: en cuanto el usuario la pliega o la despliega manda su
|
|
2960
|
+
* elección, que se recuerda mientras dure la sesión y para todas las fichas del mismo tipo
|
|
2961
|
+
* (ver `DetailFormProps.storageScope`). Así que esto es para lo que casi nunca se mira
|
|
2962
|
+
* —auditoría, totales de detalle— y no para esconder algo que el usuario va a necesitar.
|
|
2963
|
+
* @default false
|
|
2964
|
+
*/
|
|
2965
|
+
defaultCollapsed?: boolean;
|
|
2940
2966
|
first?: boolean;
|
|
2941
2967
|
slotProps?: {
|
|
2942
2968
|
/**
|
|
@@ -2945,8 +2971,9 @@ interface SubsectionProps {
|
|
|
2945
2971
|
* que un `{ xs: 12, md: 6 }` parte el formulario en dos columnas cuando *el formulario*
|
|
2946
2972
|
* es ancho, no cuando lo es la pantalla.
|
|
2947
2973
|
*
|
|
2948
|
-
* La subsección se estira a lo alto del renglón que comparte con sus hermanas
|
|
2949
|
-
* `alignSelf: "flex-start"` aquí la devuelve a
|
|
2974
|
+
* La subsección se estira a lo alto del renglón que comparte con sus hermanas —salvo
|
|
2975
|
+
* plegada, que mide su encabezado—; un `alignSelf: "flex-start"` aquí la devuelve a
|
|
2976
|
+
* medir solo lo que su contenido.
|
|
2950
2977
|
*/
|
|
2951
2978
|
parentGrid?: Partial<GridProps>;
|
|
2952
2979
|
};
|
|
@@ -2966,7 +2993,16 @@ interface SubsectionProps {
|
|
|
2966
2993
|
actions?: ReactNode | ((data: any) => ReactNode);
|
|
2967
2994
|
}
|
|
2968
2995
|
|
|
2969
|
-
|
|
2996
|
+
/**
|
|
2997
|
+
* Una sección de la ficha. Cuando hay más de una visible se vuelven pestañas, y el número de
|
|
2998
|
+
* cada una lo pone `DetailForm` por su orden entre las visibles —"1", "2", "3"—.
|
|
2999
|
+
*
|
|
3000
|
+
* De ahí que no lleve `value`: la posición en la lista ya es su identidad, y escribirlo a mano
|
|
3001
|
+
* era repetirla con otra letra. Repetida se desincroniza —una sección escondida dejaba huecos
|
|
3002
|
+
* ("1" y "3") y la ficha abría en una pestaña que no estaba; una sección nueva al principio
|
|
3003
|
+
* obligaba a renumerar a las de abajo—.
|
|
3004
|
+
*/
|
|
3005
|
+
interface SectionProps extends Partial<Omit<MyTab, "children" | "value">> {
|
|
2970
3006
|
pageType?: PageType;
|
|
2971
3007
|
display?: boolean;
|
|
2972
3008
|
subsections: SubsectionProps[];
|
|
@@ -2988,6 +3024,20 @@ interface DetailFormApi {
|
|
|
2988
3024
|
args?: any;
|
|
2989
3025
|
disable?: boolean;
|
|
2990
3026
|
successMessage?: string | ((response: any) => string);
|
|
3027
|
+
/**
|
|
3028
|
+
* Intercepts a 400 before the engine turns it into field errors and the generic
|
|
3029
|
+
* "validation error" notification. Return `true` when the form has handled it.
|
|
3030
|
+
*
|
|
3031
|
+
* For the rejections that are **a question, not a failure** — the server refusing an
|
|
3032
|
+
* action and telling the user how to insist. The case that asked for it: committing a
|
|
3033
|
+
* trip segment over a colleague's soft hold answers 400 naming who holds it, and the
|
|
3034
|
+
* screen has to offer "take it from them"; swallowed into the generic notification, that
|
|
3035
|
+
* second step disappears and with it the whole point of the soft hold.
|
|
3036
|
+
*
|
|
3037
|
+
* `useMutationHandler` already had the hook — this only passes it through, which is what
|
|
3038
|
+
* kept a form that needs it from using this engine at all.
|
|
3039
|
+
*/
|
|
3040
|
+
onInvalidParams?: (error: any) => boolean;
|
|
2991
3041
|
postAction?: {
|
|
2992
3042
|
after: "create" | "edit" | "both";
|
|
2993
3043
|
type: string;
|
|
@@ -3124,6 +3174,20 @@ interface DetailFormProps {
|
|
|
3124
3174
|
formId?: string;
|
|
3125
3175
|
/** Persist-tab key for multi-section forms. Defaults to `formId`. */
|
|
3126
3176
|
storageKey?: string;
|
|
3177
|
+
/**
|
|
3178
|
+
* Bajo qué nombre recuerda el formulario lo que el usuario acomoda en él: hoy, cuáles
|
|
3179
|
+
* subsecciones dejó plegadas (ver `SubsectionProps.collapsible`).
|
|
3180
|
+
*
|
|
3181
|
+
* Es a propósito más grueso que `storageKey`: este no lleva el registro, así que plegar una
|
|
3182
|
+
* subsección en un embarque la deja plegada en todos. `DetailPage_v2` lo arma solo, con su
|
|
3183
|
+
* ruta sin los parámetros.
|
|
3184
|
+
*
|
|
3185
|
+
* Sin esto no se recuerda nada —las subsecciones abren como diga `defaultCollapsed` y ya—.
|
|
3186
|
+
* Ese es el default en un cajón o un diálogo, donde el `formId` es generado (`useId`) y la
|
|
3187
|
+
* ruta es la del listado de atrás: ninguno de los dos nombra la ficha. Dales uno estable
|
|
3188
|
+
* aquí —`"/embarques/bultos"`— y sus subsecciones empiezan a recordar.
|
|
3189
|
+
*/
|
|
3190
|
+
storageScope?: string;
|
|
3127
3191
|
/** Height factor passed to the loading spinner. Defaults to `0.7`. */
|
|
3128
3192
|
loadingHeight?: number;
|
|
3129
3193
|
/**
|
|
@@ -3154,7 +3218,7 @@ interface DetailFormProps {
|
|
|
3154
3218
|
* element and the section/tab render tree — no page layout, no header buttons. Compose it
|
|
3155
3219
|
* inside a page, dialog or drawer shell that supplies the surrounding chrome.
|
|
3156
3220
|
*/
|
|
3157
|
-
declare function DetailForm({ controller, formId, storageKey, loadingHeight, responsiveTo, containerBreakpoints, slotProps, }: DetailFormProps): react_jsx_runtime.JSX.Element;
|
|
3221
|
+
declare function DetailForm({ controller, formId, storageKey, storageScope, loadingHeight, responsiveTo, containerBreakpoints, slotProps, }: DetailFormProps): react_jsx_runtime.JSX.Element;
|
|
3158
3222
|
|
|
3159
3223
|
/**
|
|
3160
3224
|
* An action the consumer hangs off a record's chrome — cerrar, revertir, descargar el PDF —
|
|
@@ -3779,6 +3843,20 @@ interface DetailFormDrawerProps {
|
|
|
3779
3843
|
* página. `display` y `onClick` reciben el registro cargado.
|
|
3780
3844
|
*/
|
|
3781
3845
|
extraButtons?: DetailExtraButton[];
|
|
3846
|
+
/**
|
|
3847
|
+
* El historial del registro, igual que en su página completa: se ofrece sólo cuando el
|
|
3848
|
+
* registro dice traerlo (`has_history`), abre el mismo panel y atiende el mismo
|
|
3849
|
+
* Ctrl+Shift+H.
|
|
3850
|
+
*
|
|
3851
|
+
* `endpoint` es obligatorio en la práctica aunque el tipo lo deje pasar: el panel lo
|
|
3852
|
+
* adivina de la ruta, y la ruta de un cajón es la del listado de atrás —`/embarques`, no
|
|
3853
|
+
* `/embarques/123`—, así que sin él pediría el historial del listado. Sin `endpoint` no
|
|
3854
|
+
* hay nada que ofrecer. `DrawerGrid_v2` lo arma solo con la ruta del registro.
|
|
3855
|
+
*
|
|
3856
|
+
* El panel hereda la colocación del cajón: acoplado si el cajón lo está, flotando si no
|
|
3857
|
+
* —ver `variant`—.
|
|
3858
|
+
*/
|
|
3859
|
+
historial?: DetailActionsProps["historial"];
|
|
3782
3860
|
/**
|
|
3783
3861
|
* Footer record navigator: prev/next arrows (Alt+↑ / Alt+↓) that step through a list of
|
|
3784
3862
|
* sibling records — e.g. the rows of the grid the drawer was opened from — without
|
|
@@ -3824,6 +3902,13 @@ interface DetailFormDrawerProps {
|
|
|
3824
3902
|
responsiveTo?: DetailFormProps["responsiveTo"];
|
|
3825
3903
|
/** @see DetailFormProps.containerBreakpoints */
|
|
3826
3904
|
containerBreakpoints?: DetailFormProps["containerBreakpoints"];
|
|
3905
|
+
/**
|
|
3906
|
+
* Enciende la memoria de las subsecciones plegadas, bajo este nombre. Aquí no hay default
|
|
3907
|
+
* que valga: el `formId` es generado y la ruta es la del listado de atrás, así que la
|
|
3908
|
+
* ficha tiene que nombrarse a mano —`"/embarques/bultos"`—.
|
|
3909
|
+
* @see DetailFormProps.storageScope
|
|
3910
|
+
*/
|
|
3911
|
+
storageScope?: DetailFormProps["storageScope"];
|
|
3827
3912
|
labels?: {
|
|
3828
3913
|
save?: string;
|
|
3829
3914
|
cancel?: string;
|
|
@@ -3875,7 +3960,7 @@ interface DetailFormDrawerProps {
|
|
|
3875
3960
|
* deja el registro en pantalla y editando — para formularios que se capturan de a poco o que
|
|
3876
3961
|
* llevan una grilla adentro.
|
|
3877
3962
|
*/
|
|
3878
|
-
declare function DetailFormDrawer({ open, onClose, title, api, form, sections, pageType, startInEdit, recordKey, permissionsPath, onSuccess, keepOpenOnSave, extraButtons, navigation, width, anchor, variant, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, responsiveTo, containerBreakpoints, labels, slots, slotProps, }: DetailFormDrawerProps): react_jsx_runtime.JSX.Element;
|
|
3963
|
+
declare function DetailFormDrawer({ open, onClose, title, api, form, sections, pageType, startInEdit, recordKey, permissionsPath, onSuccess, keepOpenOnSave, extraButtons, historial, navigation, width, anchor, variant, resizable, minWidth, maxWidth, widthStorageKey, onWidthChange, responsiveTo, containerBreakpoints, storageScope, labels, slots, slotProps, }: DetailFormDrawerProps): react_jsx_runtime.JSX.Element;
|
|
3879
3964
|
|
|
3880
3965
|
interface DrawerGridDrawerConfig {
|
|
3881
3966
|
/** Shared field layout, used by every mode. Same shape as `DetailPage_v2`'s `form`/`sections`. */
|
|
@@ -3957,6 +4042,19 @@ interface DrawerGridDrawerConfig {
|
|
|
3957
4042
|
* de abrirlo en su página.
|
|
3958
4043
|
*/
|
|
3959
4044
|
extraButtons?: DetailExtraButton[];
|
|
4045
|
+
/**
|
|
4046
|
+
* Afina el historial del registro en la cabecera del cajón — el ancho del panel, o la ruta
|
|
4047
|
+
* cuando no es la del registro. No hace falta declararlo para tenerlo: se ofrece solo en
|
|
4048
|
+
* cuanto el registro dice traerlo (`has_history`).
|
|
4049
|
+
*
|
|
4050
|
+
* La ruta sale sola de la del registro, la misma que abre "ver en página completa" — que es
|
|
4051
|
+
* de donde la saca también la página, del `pathname`. En una grilla con
|
|
4052
|
+
* `showOpenFullPage: false` no hay ruta de la que sacarla, así que ahí hay que darla a mano
|
|
4053
|
+
* o el historial no se ofrece.
|
|
4054
|
+
*
|
|
4055
|
+
* @see DetailFormDrawerProps.historial
|
|
4056
|
+
*/
|
|
4057
|
+
historial?: DetailFormDrawerProps["historial"];
|
|
3960
4058
|
/**
|
|
3961
4059
|
* El estado del registro, junto al título de la cabecera del cajón —igual que en su página
|
|
3962
4060
|
* completa—. `path` es la ruta al campo dentro del dato, que el backend manda como
|
|
@@ -4163,6 +4261,25 @@ interface DetailFormDialogProps {
|
|
|
4163
4261
|
responsiveTo?: DetailFormProps["responsiveTo"];
|
|
4164
4262
|
/** @see DetailFormProps.containerBreakpoints */
|
|
4165
4263
|
containerBreakpoints?: DetailFormProps["containerBreakpoints"];
|
|
4264
|
+
/**
|
|
4265
|
+
* Enciende la memoria de las subsecciones plegadas, bajo este nombre. Aquí no hay default
|
|
4266
|
+
* que valga: el `formId` es generado y la ruta es la del listado de atrás, así que la
|
|
4267
|
+
* ficha tiene que nombrarse a mano —`"/embarques/bultos"`—.
|
|
4268
|
+
* @see DetailFormProps.storageScope
|
|
4269
|
+
*/
|
|
4270
|
+
storageScope?: DetailFormProps["storageScope"];
|
|
4271
|
+
/**
|
|
4272
|
+
* El historial del registro, igual que en su página completa: un botón en el renglón del
|
|
4273
|
+
* título, con su Ctrl+Shift+H, que abre el mismo panel. Se ofrece sólo cuando el registro
|
|
4274
|
+
* dice traerlo (`has_history`).
|
|
4275
|
+
*
|
|
4276
|
+
* `endpoint` es obligatorio en la práctica aunque el tipo lo deje pasar: el panel lo adivina
|
|
4277
|
+
* de la ruta, y la ruta de un diálogo es la de la pantalla de atrás, no la del registro.
|
|
4278
|
+
*
|
|
4279
|
+
* El panel va flotando por fuerza: un diálogo es modal, y uno acoplado se pintaría en el
|
|
4280
|
+
* hueco del layout, o sea por debajo de su backdrop.
|
|
4281
|
+
*/
|
|
4282
|
+
historial?: DetailActionsProps["historial"];
|
|
4166
4283
|
labels?: {
|
|
4167
4284
|
save?: string;
|
|
4168
4285
|
cancel?: string;
|
|
@@ -4196,7 +4313,7 @@ interface DetailFormDialogProps {
|
|
|
4196
4313
|
* becomes a `DialogTitle` and the buttons move into `DialogActions`. The save button lives
|
|
4197
4314
|
* outside the `<form>` tree, so it submits via the native `form={formId}` attribute.
|
|
4198
4315
|
*/
|
|
4199
|
-
declare function DetailFormDialog({ open, onClose, title, api, form, sections, pageType, permissionsPath, onSuccess, responsiveTo, containerBreakpoints, labels, slots, slotProps, }: DetailFormDialogProps): react_jsx_runtime.JSX.Element;
|
|
4316
|
+
declare function DetailFormDialog({ open, onClose, title, api, form, sections, pageType, permissionsPath, onSuccess, responsiveTo, containerBreakpoints, storageScope, historial, labels, slots, slotProps, }: DetailFormDialogProps): react_jsx_runtime.JSX.Element;
|
|
4200
4317
|
|
|
4201
4318
|
/**
|
|
4202
4319
|
* Encabezado por defecto del `PageContainer`: resuelve título y breadcrumbs a
|
package/package.json
CHANGED