ucol-ui 0.1.42 → 0.1.44

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/ucol-ui.d.ts CHANGED
@@ -20,6 +20,7 @@ export declare interface ActionConfig<T extends Record<string, unknown> = Record
20
20
  showView?: boolean | ((record: T) => boolean);
21
21
  customIcons?: ActionIcons;
22
22
  refreshButtonText?: string;
23
+ useDefaultDeleteConfirm?: boolean;
23
24
  customActionsColor?: {
24
25
  edit?: string;
25
26
  delete?: string;
@@ -180,6 +181,38 @@ export declare interface ColumnsProps<T = Record<string, unknown>> {
180
181
  sorter?: boolean | ((a: T, b: T) => number);
181
182
  }
182
183
 
184
+ /**
185
+ * Combina múltiples condiciones con operador AND
186
+ * @param conditions - Array de funciones de condición
187
+ * @returns Función que retorna true solo si todas las condiciones son verdaderas
188
+ *
189
+ * @example
190
+ * // Mostrar acciones solo si es draft Y pertenece al usuario actual
191
+ * actionConfig: {
192
+ * showEdit: combineConditions([
193
+ * showActionWhen('status', 'draft'),
194
+ * hideActionWhen('user.uuid', currentUserUuid)
195
+ * ])
196
+ * }
197
+ */
198
+ export declare const combineConditions: <T extends Record<string, unknown>>(conditions: Array<(record: T) => boolean>) => (record: T) => boolean;
199
+
200
+ /**
201
+ * Combina múltiples condiciones con operador OR
202
+ * @param conditions - Array de funciones de condición
203
+ * @returns Función que retorna true si al menos una condición es verdadera
204
+ *
205
+ * @example
206
+ * // Mostrar acciones si es draft O es del usuario actual
207
+ * actionConfig: {
208
+ * showEdit: combineConditionsOr([
209
+ * showActionWhen('status', 'draft'),
210
+ * showActionWhen('user.uuid', currentUserUuid)
211
+ * ])
212
+ * }
213
+ */
214
+ export declare const combineConditionsOr: <T extends Record<string, unknown>>(conditions: Array<(record: T) => boolean>) => (record: T) => boolean;
215
+
183
216
  /**
184
217
  * Crea un generador de acciones tipado para un tipo específico
185
218
  * @returns Una función createMoreAction tipada con T
@@ -267,7 +300,7 @@ declare interface DirectPermissions {
267
300
  v?: boolean;
268
301
  }
269
302
 
270
- export declare const DynamicCrud: <T extends Record<string, unknown>>({ columns, data, title, formTitle, formTitles, description, formDescription, fields, showCreateButton, createButtonText, createButtonIcon, icon, layout, actionConfig, searchConfig, headerDirection, showRefreshButton, onRefresh, loading, onCreate, createRedirect, onEdit, onDelete, onView, submitButtonText, apiConfig, initialData, themeConfig, moreActions, formCols, formCustomCols, exportToExcel, backButton, showSearchBar, customFilters, disableWrapper, hiddenActions, widthActionsCol, crudName, permissions, bulkUpload }: DynamicCrudProps<T>) => ReactNode;
303
+ export declare const DynamicCrud: <T extends Record<string, unknown>>({ columns, data, title, formTitle, formTitles, description, formDescription, fields, showCreateButton, createButtonText, createButtonIcon, icon, layout, actionConfig, searchConfig, headerDirection, showRefreshButton, onRefresh, loading, onCreate, createRedirect, onEdit, onDelete, onView, submitButtonText, apiConfig, initialData, themeConfig, moreActions, formCols, formCustomCols, exportToExcel, backButton, showSearchBar, customFilters, disableWrapper, hiddenActions, widthActionsCol, crudName, permissions, bulkUpload, responsiveMode, colsInResponsiveMode, }: DynamicCrudProps<T>) => ReactNode;
271
304
 
272
305
  export declare interface DynamicCrudProps<T extends Record<string, unknown>> {
273
306
  title?: string | ReactElement;
@@ -320,6 +353,8 @@ export declare interface DynamicCrudProps<T extends Record<string, unknown>> {
320
353
  view?: boolean;
321
354
  refresh?: boolean;
322
355
  };
356
+ responsiveMode?: boolean;
357
+ colsInResponsiveMode?: ColumnsProps<T>[];
323
358
  }
324
359
 
325
360
  export declare const DynamicForm: ({ mode, title, description, icon, layout, cols, fields, submitButtonText, submitEditText, onSubmit, initialData, customCols, }: DynamicFormProps) => default_2.ReactNode;
@@ -340,7 +375,7 @@ declare interface DynamicFormProps {
340
375
  customCols?: boolean;
341
376
  }
342
377
 
343
- export declare const DynamicTable: <T extends Record<string, unknown>>({ title, icon: Icon, description, showSearchBar, showCreateButton, onCreate, onEdit, onDelete, onView, onRefresh, exportToExcel, createButtonText, createButtonIcon, columns, data, loading, moreActions, customFilters, disableWrapper, actionConfig, showRefreshButton, hiddenActions, searchConfig, backButton, widthActionsCol, bulkUpload, onBulkUpload }: DynamicTableProps<T>) => default_2.ReactNode;
378
+ export declare const DynamicTable: <T extends Record<string, unknown>>({ title, icon: Icon, description, showSearchBar, showCreateButton, onCreate, onEdit, onDelete, onView, onRefresh, exportToExcel, createButtonText, createButtonIcon, columns, data, loading, moreActions, customFilters, disableWrapper, actionConfig, showRefreshButton, hiddenActions, searchConfig, backButton, widthActionsCol, bulkUpload, onBulkUpload, responsiveMode, colsInResponsiveMode, }: DynamicTableProps<T>) => default_2.ReactNode;
344
379
 
345
380
  export declare interface DynamicTableProps<T = Record<string, unknown>> {
346
381
  title?: string | ReactElement;
@@ -374,6 +409,8 @@ export declare interface DynamicTableProps<T = Record<string, unknown>> {
374
409
  widthActionsCol?: string | number;
375
410
  bulkUpload?: BulkUploadProps;
376
411
  onBulkUpload?: () => void;
412
+ responsiveMode?: boolean;
413
+ colsInResponsiveMode?: ColumnsProps<T>[];
377
414
  }
378
415
 
379
416
  export declare interface ExcelConfigProps<T = Record<string, unknown>> {
@@ -396,6 +433,14 @@ export declare interface FilterItem {
396
433
  children?: FilterItem[];
397
434
  }
398
435
 
436
+ /**
437
+ * Convierte un objeto anidado en un objeto plano con notación de punto.
438
+ * @param obj Objeto con estructura anidada (ej: {user: {first_name: "John"}})
439
+ * @param parentKey Prefijo para las keys (usado internamente en la recursión)
440
+ * @returns Objeto plano con keys en notación de punto (ej: {"user.first_name": "John"})
441
+ */
442
+ export declare const flattenObject: (obj: Record<string, unknown>, parentKey?: string) => Record<string, unknown>;
443
+
399
444
  export declare interface FormField {
400
445
  type: FieldType;
401
446
  name: string;
@@ -433,6 +478,52 @@ export declare const generateColumns: <T extends object>(fields: Record<string,
433
478
  */
434
479
  export declare const generateFields: (fields: Record<string, SharedFieldConfig>) => FormField[];
435
480
 
481
+ /**
482
+ * Función auxiliar para acceder a propiedades anidadas usando notación de punto.
483
+ * @param obj Objeto del cual extraer el valor.
484
+ * @param path Ruta de la propiedad (ej: "user.first_name").
485
+ * @returns Valor de la propiedad anidada o undefined si no existe.
486
+ */
487
+ export declare const getNestedValue: <T extends object>(obj: T, path: string) => unknown;
488
+
489
+ /**
490
+ * Crea una función que oculta acciones cuando un campo del registro coincide con un valor específico
491
+ * @param fieldPath - Ruta del campo a comparar (soporta notación de punto para campos anidados)
492
+ * @param value - Valor con el que comparar
493
+ * @returns Función que retorna false si el valor coincide, true en caso contrario
494
+ *
495
+ * @example
496
+ * // Ocultar acciones si el estado es 'archived'
497
+ * actionConfig: {
498
+ * showEdit: hideActionWhen('status', 'archived'),
499
+ * showDelete: hideActionWhen('status', 'archived')
500
+ * }
501
+ *
502
+ * @example
503
+ * // Ocultar acciones si el user.uuid coincide con el uuid del usuario actual
504
+ * const currentUserUuid = '123-456';
505
+ * actionConfig: {
506
+ * showEdit: hideActionWhen('user.uuid', currentUserUuid),
507
+ * showDelete: hideActionWhen('user.uuid', currentUserUuid)
508
+ * }
509
+ */
510
+ export declare const hideActionWhen: <T extends Record<string, unknown>>(fieldPath: string, value: unknown) => (record: T) => boolean;
511
+
512
+ /**
513
+ * Crea una función que oculta acciones cuando un campo del registro está incluido en una lista de valores
514
+ * @param fieldPath - Ruta del campo a comparar
515
+ * @param values - Array de valores a comparar
516
+ * @returns Función que retorna false si el valor está en la lista, true en caso contrario
517
+ *
518
+ * @example
519
+ * // Ocultar acciones si el estado es 'archived' o 'deleted'
520
+ * actionConfig: {
521
+ * showEdit: hideActionWhenIn('status', ['archived', 'deleted']),
522
+ * showDelete: hideActionWhenIn('status', ['archived', 'deleted'])
523
+ * }
524
+ */
525
+ export declare const hideActionWhenIn: <T extends Record<string, unknown>>(fieldPath: string, values: unknown[]) => (record: T) => boolean;
526
+
436
527
  export declare interface MoreActions<T = Record<string, unknown>> {
437
528
  key: string;
438
529
  label?: string;
@@ -451,6 +542,19 @@ declare type MutationConfig<TData, TError, TVariables> = {
451
542
  onSettled?: (data: TData | undefined, error: TError | null) => void;
452
543
  };
453
544
 
545
+ /**
546
+ * Niega una condición
547
+ * @param condition - Función de condición a negar
548
+ * @returns Función que retorna el opuesto de la condición
549
+ *
550
+ * @example
551
+ * // Ocultar acciones si NO es draft
552
+ * actionConfig: {
553
+ * showEdit: not(showActionWhen('status', 'draft'))
554
+ * }
555
+ */
556
+ export declare const not: <T extends Record<string, unknown>>(condition: (record: T) => boolean) => (record: T) => boolean;
557
+
454
558
  /**
455
559
  * Componente de Notificación
456
560
  * @description Muestra una notificación con un mensaje
@@ -560,6 +664,14 @@ export declare interface SelectDependencyConfig {
560
664
  transformRequest?: (value: string | number) => Record<string, string>;
561
665
  }
562
666
 
667
+ /**
668
+ * Función auxiliar para establecer propiedades anidadas usando notación de punto.
669
+ * @param obj Objeto en el cual establecer el valor.
670
+ * @param path Ruta de la propiedad (ej: "user.first_name").
671
+ * @param value Valor a establecer.
672
+ */
673
+ export declare const setNestedValue: (obj: Record<string, unknown>, path: string, value: unknown) => void;
674
+
563
675
  export declare interface SharedFieldConfig<T = Record<string, unknown>> {
564
676
  key: string;
565
677
  title: string;
@@ -597,6 +709,21 @@ export declare interface SharedFieldConfig<T = Record<string, unknown>> {
597
709
  radioConfig?: RadioConfig;
598
710
  }
599
711
 
712
+ /**
713
+ * Crea una función que muestra acciones solo cuando un campo del registro coincide con un valor específico
714
+ * @param fieldPath - Ruta del campo a comparar (soporta notación de punto para campos anidados)
715
+ * @param value - Valor con el que comparar
716
+ * @returns Función que retorna true si el valor coincide, false en caso contrario
717
+ *
718
+ * @example
719
+ * // Mostrar acciones solo si el estado es 'draft'
720
+ * actionConfig: {
721
+ * showEdit: showActionWhen('status', 'draft'),
722
+ * showDelete: showActionWhen('status', 'draft')
723
+ * }
724
+ */
725
+ export declare const showActionWhen: <T extends Record<string, unknown>>(fieldPath: string, value: unknown) => (record: T) => boolean;
726
+
600
727
  declare type SortFunction<T> = (a: T, b: T) => number;
601
728
 
602
729
  /**
@@ -639,6 +766,13 @@ export declare interface ThemeConfig {
639
766
 
640
767
  export declare const Title: ({ level, children, className, style }: CustomTitleProps) => JSX.Element;
641
768
 
769
+ /**
770
+ * Convierte un objeto plano con notación de punto en un objeto anidado.
771
+ * @param flatObj Objeto plano con keys en notación de punto (ej: {"user.first_name": "John"})
772
+ * @returns Objeto con estructura anidada (ej: {user: {first_name: "John"}})
773
+ */
774
+ export declare const unflattenObject: (flatObj: Record<string, unknown>) => Record<string, unknown>;
775
+
642
776
  declare interface UploadConfig {
643
777
  textButton?: string;
644
778
  iconButton?: string;