@nocios/crudify-ui 3.0.20 → 3.0.24

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.mts CHANGED
@@ -1,3 +1,4 @@
1
+ import { CrudifyResponse } from '@nocios/crudify-browser';
1
2
  export * from '@nocios/crudify-browser';
2
3
  export { default as crudify } from '@nocios/crudify-browser';
3
4
  import React, { ReactNode } from 'react';
@@ -378,15 +379,27 @@ type SessionContextType = {
378
379
  expiresIn: number;
379
380
  refreshExpiresIn: number;
380
381
  };
382
+ type NotificationOptions = {
383
+ enabled?: boolean;
384
+ maxNotifications?: number;
385
+ defaultAutoHideDuration?: number;
386
+ position?: {
387
+ vertical: "top" | "bottom";
388
+ horizontal: "left" | "center" | "right";
389
+ };
390
+ };
381
391
  type SessionProviderProps = {
382
392
  children: ReactNode;
383
393
  options?: UseSessionOptions;
384
394
  config?: CrudifyConfig;
395
+ showNotifications?: boolean;
396
+ notificationOptions?: NotificationOptions;
385
397
  };
386
398
  /**
387
399
  * Provider de sesión para envolver la aplicación
388
400
  */
389
- declare function SessionProvider({ children, options, config: propConfig }: SessionProviderProps): react_jsx_runtime.JSX.Element;
401
+ declare function SessionProvider({ children, options, config: propConfig, showNotifications, // ✅ Por defecto DESACTIVADO
402
+ notificationOptions, }: SessionProviderProps): react_jsx_runtime.JSX.Element;
390
403
  /**
391
404
  * Hook para usar el contexto de sesión
392
405
  */
@@ -675,4 +688,100 @@ declare function parseJavaScriptError(error: unknown): ParsedError;
675
688
  */
676
689
  declare function handleCrudifyError(error: unknown): ParsedError[];
677
690
 
678
- export { type ApiError, type BoxScreenType, type CrudifyApiResponse, CrudifyLogin, type CrudifyLoginConfig, type CrudifyLoginProps, type CrudifyLoginTranslations, type CrudifyTransactionResponse, ERROR_CODES, ERROR_SEVERITY_MAP, type ErrorCode, type ErrorSeverity, type ForgotPasswordRequest, type JwtPayload, LoginComponent, type LoginRequest, type LoginResponse, type LoginResult, POLICY_ACTIONS, PREFERRED_POLICY_ORDER, type ParsedError, Policies, type PolicyAction, ProtectedRoute, type ProtectedRouteProps, type ResetPasswordRequest, type SessionConfig, SessionDebugInfo, SessionManager, SessionProvider, type SessionProviderProps, type SessionState, SessionStatus, type StorageType, type TokenData, TokenStorage, type TransactionResponseData, type UseAuthReturn, type UseDataReturn, type UseSessionOptions, type UseUserDataOptions, type UseUserDataReturn, type UserData, type UserLoginData, type UserProfile, UserProfileDisplay, type ValidateCodeRequest, type ValidationError, decodeJwtSafely, getCookie, getCurrentUserEmail, getErrorMessage, handleCrudifyError, isTokenExpired, parseApiError, parseJavaScriptError, parseTransactionError, secureLocalStorage, secureSessionStorage, useAuth, useData, useSession, useSessionContext, useUserData, useUserProfile };
691
+ /**
692
+ * Utilidad robusta para traducir códigos de error con fallbacks inteligentes
693
+ * Busca en múltiples namespaces y devuelve la traducción más específica disponible
694
+ */
695
+ interface ErrorTranslationConfig {
696
+ /** Función de traducción de i18next */
697
+ translateFn: (key: string) => string;
698
+ /** Idioma actual (opcional, para logging) */
699
+ currentLanguage?: string;
700
+ /** Habilitar logs de debug */
701
+ enableDebug?: boolean;
702
+ }
703
+ /**
704
+ * Traduce un código de error usando jerarquía de fallbacks
705
+ */
706
+ declare function translateErrorCode(errorCode: string, config: ErrorTranslationConfig): string;
707
+ /**
708
+ * Traduce múltiples códigos de error
709
+ */
710
+ declare function translateErrorCodes(errorCodes: string[], config: ErrorTranslationConfig): string[];
711
+ /**
712
+ * Traduce un error completo (código + mensaje personalizado)
713
+ */
714
+ declare function translateError(error: {
715
+ code: string;
716
+ message?: string;
717
+ field?: string;
718
+ }, config: ErrorTranslationConfig): string;
719
+ /**
720
+ * Hook para usar en componentes React con i18next
721
+ */
722
+ declare function createErrorTranslator(translateFn: (key: string) => string, options?: {
723
+ currentLanguage?: string;
724
+ enableDebug?: boolean;
725
+ }): {
726
+ translateErrorCode: (code: string) => string;
727
+ translateErrorCodes: (codes: string[]) => string[];
728
+ translateError: (error: {
729
+ code: string;
730
+ message?: string;
731
+ field?: string;
732
+ }) => string;
733
+ translateApiError: (apiResponse: any) => string;
734
+ };
735
+
736
+ type NotificationSeverity = "error" | "info" | "success" | "warning";
737
+ interface Notification {
738
+ id: string;
739
+ message: string;
740
+ severity: NotificationSeverity;
741
+ autoHideDuration?: number;
742
+ persistent?: boolean;
743
+ }
744
+ interface GlobalNotificationContextValue {
745
+ showNotification: (message: string, severity?: NotificationSeverity, options?: {
746
+ autoHideDuration?: number;
747
+ persistent?: boolean;
748
+ }) => string;
749
+ hideNotification: (id: string) => void;
750
+ clearAllNotifications: () => void;
751
+ }
752
+ interface GlobalNotificationProviderProps {
753
+ children: React.ReactNode;
754
+ maxNotifications?: number;
755
+ defaultAutoHideDuration?: number;
756
+ position?: {
757
+ vertical: "top" | "bottom";
758
+ horizontal: "left" | "center" | "right";
759
+ };
760
+ enabled?: boolean;
761
+ }
762
+ declare const GlobalNotificationProvider: React.FC<GlobalNotificationProviderProps>;
763
+ declare const useGlobalNotification: () => GlobalNotificationContextValue;
764
+
765
+ interface CrudifyWithNotificationsOptions {
766
+ showSuccessNotifications?: boolean;
767
+ showErrorNotifications?: boolean;
768
+ customErrorMessages?: Record<string, string>;
769
+ defaultErrorMessage?: string;
770
+ autoHideDuration?: number;
771
+ appStructure?: any[];
772
+ translateFn?: (key: string, options?: any) => string;
773
+ }
774
+ declare const useCrudifyWithNotifications: (options?: CrudifyWithNotificationsOptions) => {
775
+ createItem: (moduleKey: string, data: object, options?: any) => Promise<CrudifyResponse>;
776
+ updateItem: (moduleKey: string, data: object, options?: any) => Promise<CrudifyResponse>;
777
+ deleteItem: (moduleKey: string, id: string, options?: any) => Promise<CrudifyResponse>;
778
+ readItem: (moduleKey: string, filter: object, options?: any) => Promise<CrudifyResponse>;
779
+ readItems: (moduleKey: string, filter: object, options?: any) => Promise<CrudifyResponse>;
780
+ transaction: (data: any, options?: any) => Promise<CrudifyResponse>;
781
+ handleResponse: (response: CrudifyResponse, successMessage?: string) => CrudifyResponse;
782
+ getErrorMessage: (response: CrudifyResponse) => string;
783
+ getErrorSeverity: (response: CrudifyResponse) => NotificationSeverity;
784
+ shouldShowNotification: (response: CrudifyResponse) => boolean;
785
+ };
786
+
787
+ export { type ApiError, type BoxScreenType, type CrudifyApiResponse, CrudifyLogin, type CrudifyLoginConfig, type CrudifyLoginProps, type CrudifyLoginTranslations, type CrudifyTransactionResponse, ERROR_CODES, ERROR_SEVERITY_MAP, type ErrorCode, type ErrorSeverity, type ErrorTranslationConfig, type ForgotPasswordRequest, GlobalNotificationProvider, type GlobalNotificationProviderProps, type JwtPayload, LoginComponent, type LoginRequest, type LoginResponse, type LoginResult, type Notification, type NotificationOptions, type NotificationSeverity, POLICY_ACTIONS, PREFERRED_POLICY_ORDER, type ParsedError, Policies, type PolicyAction, ProtectedRoute, type ProtectedRouteProps, type ResetPasswordRequest, type SessionConfig, SessionDebugInfo, SessionManager, SessionProvider, type SessionProviderProps, type SessionState, SessionStatus, type StorageType, type TokenData, TokenStorage, type TransactionResponseData, type UseAuthReturn, type UseDataReturn, type UseSessionOptions, type UseUserDataOptions, type UseUserDataReturn, type UserData, type UserLoginData, type UserProfile, UserProfileDisplay, type ValidateCodeRequest, type ValidationError, createErrorTranslator, decodeJwtSafely, getCookie, getCurrentUserEmail, getErrorMessage, handleCrudifyError, isTokenExpired, parseApiError, parseJavaScriptError, parseTransactionError, secureLocalStorage, secureSessionStorage, translateError, translateErrorCode, translateErrorCodes, useAuth, useCrudifyWithNotifications, useData, useGlobalNotification, useSession, useSessionContext, useUserData, useUserProfile };
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ import { CrudifyResponse } from '@nocios/crudify-browser';
1
2
  export * from '@nocios/crudify-browser';
2
3
  export { default as crudify } from '@nocios/crudify-browser';
3
4
  import React, { ReactNode } from 'react';
@@ -378,15 +379,27 @@ type SessionContextType = {
378
379
  expiresIn: number;
379
380
  refreshExpiresIn: number;
380
381
  };
382
+ type NotificationOptions = {
383
+ enabled?: boolean;
384
+ maxNotifications?: number;
385
+ defaultAutoHideDuration?: number;
386
+ position?: {
387
+ vertical: "top" | "bottom";
388
+ horizontal: "left" | "center" | "right";
389
+ };
390
+ };
381
391
  type SessionProviderProps = {
382
392
  children: ReactNode;
383
393
  options?: UseSessionOptions;
384
394
  config?: CrudifyConfig;
395
+ showNotifications?: boolean;
396
+ notificationOptions?: NotificationOptions;
385
397
  };
386
398
  /**
387
399
  * Provider de sesión para envolver la aplicación
388
400
  */
389
- declare function SessionProvider({ children, options, config: propConfig }: SessionProviderProps): react_jsx_runtime.JSX.Element;
401
+ declare function SessionProvider({ children, options, config: propConfig, showNotifications, // ✅ Por defecto DESACTIVADO
402
+ notificationOptions, }: SessionProviderProps): react_jsx_runtime.JSX.Element;
390
403
  /**
391
404
  * Hook para usar el contexto de sesión
392
405
  */
@@ -675,4 +688,100 @@ declare function parseJavaScriptError(error: unknown): ParsedError;
675
688
  */
676
689
  declare function handleCrudifyError(error: unknown): ParsedError[];
677
690
 
678
- export { type ApiError, type BoxScreenType, type CrudifyApiResponse, CrudifyLogin, type CrudifyLoginConfig, type CrudifyLoginProps, type CrudifyLoginTranslations, type CrudifyTransactionResponse, ERROR_CODES, ERROR_SEVERITY_MAP, type ErrorCode, type ErrorSeverity, type ForgotPasswordRequest, type JwtPayload, LoginComponent, type LoginRequest, type LoginResponse, type LoginResult, POLICY_ACTIONS, PREFERRED_POLICY_ORDER, type ParsedError, Policies, type PolicyAction, ProtectedRoute, type ProtectedRouteProps, type ResetPasswordRequest, type SessionConfig, SessionDebugInfo, SessionManager, SessionProvider, type SessionProviderProps, type SessionState, SessionStatus, type StorageType, type TokenData, TokenStorage, type TransactionResponseData, type UseAuthReturn, type UseDataReturn, type UseSessionOptions, type UseUserDataOptions, type UseUserDataReturn, type UserData, type UserLoginData, type UserProfile, UserProfileDisplay, type ValidateCodeRequest, type ValidationError, decodeJwtSafely, getCookie, getCurrentUserEmail, getErrorMessage, handleCrudifyError, isTokenExpired, parseApiError, parseJavaScriptError, parseTransactionError, secureLocalStorage, secureSessionStorage, useAuth, useData, useSession, useSessionContext, useUserData, useUserProfile };
691
+ /**
692
+ * Utilidad robusta para traducir códigos de error con fallbacks inteligentes
693
+ * Busca en múltiples namespaces y devuelve la traducción más específica disponible
694
+ */
695
+ interface ErrorTranslationConfig {
696
+ /** Función de traducción de i18next */
697
+ translateFn: (key: string) => string;
698
+ /** Idioma actual (opcional, para logging) */
699
+ currentLanguage?: string;
700
+ /** Habilitar logs de debug */
701
+ enableDebug?: boolean;
702
+ }
703
+ /**
704
+ * Traduce un código de error usando jerarquía de fallbacks
705
+ */
706
+ declare function translateErrorCode(errorCode: string, config: ErrorTranslationConfig): string;
707
+ /**
708
+ * Traduce múltiples códigos de error
709
+ */
710
+ declare function translateErrorCodes(errorCodes: string[], config: ErrorTranslationConfig): string[];
711
+ /**
712
+ * Traduce un error completo (código + mensaje personalizado)
713
+ */
714
+ declare function translateError(error: {
715
+ code: string;
716
+ message?: string;
717
+ field?: string;
718
+ }, config: ErrorTranslationConfig): string;
719
+ /**
720
+ * Hook para usar en componentes React con i18next
721
+ */
722
+ declare function createErrorTranslator(translateFn: (key: string) => string, options?: {
723
+ currentLanguage?: string;
724
+ enableDebug?: boolean;
725
+ }): {
726
+ translateErrorCode: (code: string) => string;
727
+ translateErrorCodes: (codes: string[]) => string[];
728
+ translateError: (error: {
729
+ code: string;
730
+ message?: string;
731
+ field?: string;
732
+ }) => string;
733
+ translateApiError: (apiResponse: any) => string;
734
+ };
735
+
736
+ type NotificationSeverity = "error" | "info" | "success" | "warning";
737
+ interface Notification {
738
+ id: string;
739
+ message: string;
740
+ severity: NotificationSeverity;
741
+ autoHideDuration?: number;
742
+ persistent?: boolean;
743
+ }
744
+ interface GlobalNotificationContextValue {
745
+ showNotification: (message: string, severity?: NotificationSeverity, options?: {
746
+ autoHideDuration?: number;
747
+ persistent?: boolean;
748
+ }) => string;
749
+ hideNotification: (id: string) => void;
750
+ clearAllNotifications: () => void;
751
+ }
752
+ interface GlobalNotificationProviderProps {
753
+ children: React.ReactNode;
754
+ maxNotifications?: number;
755
+ defaultAutoHideDuration?: number;
756
+ position?: {
757
+ vertical: "top" | "bottom";
758
+ horizontal: "left" | "center" | "right";
759
+ };
760
+ enabled?: boolean;
761
+ }
762
+ declare const GlobalNotificationProvider: React.FC<GlobalNotificationProviderProps>;
763
+ declare const useGlobalNotification: () => GlobalNotificationContextValue;
764
+
765
+ interface CrudifyWithNotificationsOptions {
766
+ showSuccessNotifications?: boolean;
767
+ showErrorNotifications?: boolean;
768
+ customErrorMessages?: Record<string, string>;
769
+ defaultErrorMessage?: string;
770
+ autoHideDuration?: number;
771
+ appStructure?: any[];
772
+ translateFn?: (key: string, options?: any) => string;
773
+ }
774
+ declare const useCrudifyWithNotifications: (options?: CrudifyWithNotificationsOptions) => {
775
+ createItem: (moduleKey: string, data: object, options?: any) => Promise<CrudifyResponse>;
776
+ updateItem: (moduleKey: string, data: object, options?: any) => Promise<CrudifyResponse>;
777
+ deleteItem: (moduleKey: string, id: string, options?: any) => Promise<CrudifyResponse>;
778
+ readItem: (moduleKey: string, filter: object, options?: any) => Promise<CrudifyResponse>;
779
+ readItems: (moduleKey: string, filter: object, options?: any) => Promise<CrudifyResponse>;
780
+ transaction: (data: any, options?: any) => Promise<CrudifyResponse>;
781
+ handleResponse: (response: CrudifyResponse, successMessage?: string) => CrudifyResponse;
782
+ getErrorMessage: (response: CrudifyResponse) => string;
783
+ getErrorSeverity: (response: CrudifyResponse) => NotificationSeverity;
784
+ shouldShowNotification: (response: CrudifyResponse) => boolean;
785
+ };
786
+
787
+ export { type ApiError, type BoxScreenType, type CrudifyApiResponse, CrudifyLogin, type CrudifyLoginConfig, type CrudifyLoginProps, type CrudifyLoginTranslations, type CrudifyTransactionResponse, ERROR_CODES, ERROR_SEVERITY_MAP, type ErrorCode, type ErrorSeverity, type ErrorTranslationConfig, type ForgotPasswordRequest, GlobalNotificationProvider, type GlobalNotificationProviderProps, type JwtPayload, LoginComponent, type LoginRequest, type LoginResponse, type LoginResult, type Notification, type NotificationOptions, type NotificationSeverity, POLICY_ACTIONS, PREFERRED_POLICY_ORDER, type ParsedError, Policies, type PolicyAction, ProtectedRoute, type ProtectedRouteProps, type ResetPasswordRequest, type SessionConfig, SessionDebugInfo, SessionManager, SessionProvider, type SessionProviderProps, type SessionState, SessionStatus, type StorageType, type TokenData, TokenStorage, type TransactionResponseData, type UseAuthReturn, type UseDataReturn, type UseSessionOptions, type UseUserDataOptions, type UseUserDataReturn, type UserData, type UserLoginData, type UserProfile, UserProfileDisplay, type ValidateCodeRequest, type ValidationError, createErrorTranslator, decodeJwtSafely, getCookie, getCurrentUserEmail, getErrorMessage, handleCrudifyError, isTokenExpired, parseApiError, parseJavaScriptError, parseTransactionError, secureLocalStorage, secureSessionStorage, translateError, translateErrorCode, translateErrorCodes, useAuth, useCrudifyWithNotifications, useData, useGlobalNotification, useSession, useSessionContext, useUserData, useUserProfile };