@acvl/frontend-components 0.0.51 → 0.0.53

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.
@@ -1,3 +1,4 @@
1
1
  export { useHasPermission } from './users';
2
2
  export { useAPI } from './api';
3
3
  export { useNavigation } from './navigation';
4
+ export { useKeyboardShortcut, type KeyboardShortcut } from './useKeyboardShortcut';
@@ -0,0 +1,42 @@
1
+ export interface KeyboardShortcut {
2
+ /** Tecla objetivo. Se compara con `event.key` sin distinguir mayúsculas (p. ej. "f", "e", "Escape"). */
3
+ key: string;
4
+ /** Requiere Ctrl. Si se omite, la tecla Ctrl debe estar ausente. */
5
+ ctrl?: boolean;
6
+ /** Requiere Shift. Si se omite, la tecla Shift debe estar ausente. */
7
+ shift?: boolean;
8
+ /** Requiere Alt. Si se omite, la tecla Alt debe estar ausente. */
9
+ alt?: boolean;
10
+ /** Requiere Meta/Cmd. Si se omite, la tecla Meta debe estar ausente. */
11
+ meta?: boolean;
12
+ /**
13
+ * No dispara el atajo mientras el foco está en un campo editable
14
+ * (`input`, `textarea`, `select` o `contentEditable`). Evita que atajos de
15
+ * una sola letra (p. ej. `Shift+F`) se traguen la tecla al escribir.
16
+ * Por defecto `true`.
17
+ */
18
+ ignoreWhenTyping?: boolean;
19
+ /** Llama a `event.preventDefault()` al coincidir. Por defecto `true`. */
20
+ preventDefault?: boolean;
21
+ /** Permite desactivar el atajo sin desmontar el componente. Por defecto `true`. */
22
+ enabled?: boolean;
23
+ }
24
+ /**
25
+ * Registra un atajo de teclado global (listener en `document`) y ejecuta
26
+ * `handler` cuando la combinación coincide.
27
+ *
28
+ * - Compara la tecla sin distinguir mayúsculas y exige el estado exacto de los
29
+ * modificadores, de modo que `Ctrl+E` y `Ctrl+Shift+E` no colisionan entre sí.
30
+ * - Por defecto ignora el atajo mientras se escribe en un campo editable.
31
+ * - `handler` se lee siempre en su versión más reciente, así que no hace falta
32
+ * memoizarlo con `useCallback` en el componente que lo usa.
33
+ *
34
+ * Llama al hook varias veces para registrar varios atajos en un mismo componente.
35
+ *
36
+ * @example
37
+ * useKeyboardShortcut({ key: "f", shift: true }, () => setFullScreen((p) => !p));
38
+ * useKeyboardShortcut({ key: "e", ctrl: true }, () => navigate("editar"));
39
+ * useKeyboardShortcut({ key: "Escape", shift: true, enabled: edit }, cancelEdit);
40
+ */
41
+ export declare function useKeyboardShortcut(shortcut: KeyboardShortcut, handler: (event: KeyboardEvent) => void): void;
42
+ export default useKeyboardShortcut;
@@ -13,6 +13,11 @@ export interface DetailPageV2Props {
13
13
  mutation: any;
14
14
  args?: any;
15
15
  disable?: boolean;
16
+ postAction?: {
17
+ after: "create" | "edit" | "both";
18
+ type: string;
19
+ node: ReactNode;
20
+ };
16
21
  };
17
22
  delete?: {
18
23
  mutation: any;
package/dist/index.d.ts CHANGED
@@ -813,6 +813,48 @@ declare const useNavigation: () => {
813
813
  back: any;
814
814
  };
815
815
 
816
+ interface KeyboardShortcut {
817
+ /** Tecla objetivo. Se compara con `event.key` sin distinguir mayúsculas (p. ej. "f", "e", "Escape"). */
818
+ key: string;
819
+ /** Requiere Ctrl. Si se omite, la tecla Ctrl debe estar ausente. */
820
+ ctrl?: boolean;
821
+ /** Requiere Shift. Si se omite, la tecla Shift debe estar ausente. */
822
+ shift?: boolean;
823
+ /** Requiere Alt. Si se omite, la tecla Alt debe estar ausente. */
824
+ alt?: boolean;
825
+ /** Requiere Meta/Cmd. Si se omite, la tecla Meta debe estar ausente. */
826
+ meta?: boolean;
827
+ /**
828
+ * No dispara el atajo mientras el foco está en un campo editable
829
+ * (`input`, `textarea`, `select` o `contentEditable`). Evita que atajos de
830
+ * una sola letra (p. ej. `Shift+F`) se traguen la tecla al escribir.
831
+ * Por defecto `true`.
832
+ */
833
+ ignoreWhenTyping?: boolean;
834
+ /** Llama a `event.preventDefault()` al coincidir. Por defecto `true`. */
835
+ preventDefault?: boolean;
836
+ /** Permite desactivar el atajo sin desmontar el componente. Por defecto `true`. */
837
+ enabled?: boolean;
838
+ }
839
+ /**
840
+ * Registra un atajo de teclado global (listener en `document`) y ejecuta
841
+ * `handler` cuando la combinación coincide.
842
+ *
843
+ * - Compara la tecla sin distinguir mayúsculas y exige el estado exacto de los
844
+ * modificadores, de modo que `Ctrl+E` y `Ctrl+Shift+E` no colisionan entre sí.
845
+ * - Por defecto ignora el atajo mientras se escribe en un campo editable.
846
+ * - `handler` se lee siempre en su versión más reciente, así que no hace falta
847
+ * memoizarlo con `useCallback` en el componente que lo usa.
848
+ *
849
+ * Llama al hook varias veces para registrar varios atajos en un mismo componente.
850
+ *
851
+ * @example
852
+ * useKeyboardShortcut({ key: "f", shift: true }, () => setFullScreen((p) => !p));
853
+ * useKeyboardShortcut({ key: "e", ctrl: true }, () => navigate("editar"));
854
+ * useKeyboardShortcut({ key: "Escape", shift: true, enabled: edit }, cancelEdit);
855
+ */
856
+ declare function useKeyboardShortcut(shortcut: KeyboardShortcut, handler: (event: KeyboardEvent) => void): void;
857
+
816
858
  interface NavigationContextProps {
817
859
  children: ReactNode;
818
860
  hook: any;
@@ -1143,6 +1185,11 @@ interface DetailPageV2Props {
1143
1185
  mutation: any;
1144
1186
  args?: any;
1145
1187
  disable?: boolean;
1188
+ postAction?: {
1189
+ after: "create" | "edit" | "both";
1190
+ type: string;
1191
+ node: ReactNode;
1192
+ };
1146
1193
  };
1147
1194
  delete?: {
1148
1195
  mutation: any;
@@ -1305,5 +1352,5 @@ declare const useMutationHandler: ({ mutationFn, form, onSuccess, onValidationEr
1305
1352
  }) => void;
1306
1353
  };
1307
1354
 
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 };
1355
+ 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, useKeyboardShortcut, useMutationHandler, useNavigation, valueLabel };
1356
+ export type { APIcontextProps, AddressValue, ComoOpcionesProps, ControlledInput, CustomToolbarProps, DeleteGridColumnsProps, DetachedPage, DetailRenderProps, EditGridColumnsProps, EditReadOnlyFields, FieldFilter, FieldProps$1 as FieldProps, FieldValidationProps, GridArgs, GridColDefPropsOverrides, JSONFormProps, JSONParserProps, KeyboardShortcut, 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.51",
3
+ "version": "0.0.53",
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",