@caribeng/ui 22.4.0 → 22.6.0
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/README.md +313 -313
- package/fesm2022/caribeng-ui-account-picker.mjs +533 -0
- package/fesm2022/caribeng-ui-aging.mjs +488 -0
- package/fesm2022/{caribeng-ui-caribe-alert.mjs → caribeng-ui-alert.mjs} +45 -45
- package/fesm2022/caribeng-ui-amount.mjs +249 -0
- package/fesm2022/caribeng-ui-anchor.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-animation-lottie.mjs → caribeng-ui-animation-lottie.mjs} +41 -41
- package/fesm2022/caribeng-ui-audit-log.mjs +323 -0
- package/fesm2022/caribeng-ui-avatar.mjs +2 -2
- package/fesm2022/caribeng-ui-breadcrumb.mjs +13 -3
- package/fesm2022/{caribeng-ui-caribe-button-group.mjs → caribeng-ui-button-group.mjs} +15 -15
- package/fesm2022/caribeng-ui-button.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-card-content.mjs → caribeng-ui-card-content.mjs} +39 -39
- package/fesm2022/{caribeng-ui-caribe-card-move.mjs → caribeng-ui-card-move.mjs} +65 -65
- package/fesm2022/{caribeng-ui-caribe-card-primary.mjs → caribeng-ui-card-primary.mjs} +31 -31
- package/fesm2022/{caribeng-ui-caribe-card-select.mjs → caribeng-ui-card-select.mjs} +67 -67
- package/fesm2022/caribeng-ui-carousel.mjs +2 -2
- package/fesm2022/caribeng-ui-cascadeselect.mjs +45 -9
- package/fesm2022/caribeng-ui-chat.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-coachmark.mjs → caribeng-ui-coachmark.mjs} +85 -85
- package/fesm2022/caribeng-ui-command-palette.mjs +2 -2
- package/fesm2022/caribeng-ui-comments.mjs +864 -0
- package/fesm2022/caribeng-ui-datagrid.mjs +1635 -0
- package/fesm2022/caribeng-ui-dataview.mjs +2 -2
- package/fesm2022/caribeng-ui-datepicker.mjs +2 -2
- package/fesm2022/caribeng-ui-document.mjs +495 -0
- package/fesm2022/{caribeng-ui-caribe-dots-indicator.mjs → caribeng-ui-dots-indicator.mjs} +41 -41
- package/fesm2022/caribeng-ui-dynamic-form.mjs +1581 -0
- package/fesm2022/caribeng-ui-editor.mjs +2303 -1311
- package/fesm2022/{caribeng-ui-caribe-expansion-panel.mjs → caribeng-ui-expansion-panel.mjs} +39 -39
- package/fesm2022/{caribeng-ui-caribe-fab-menu.mjs → caribeng-ui-fab-menu.mjs} +75 -75
- package/fesm2022/caribeng-ui-file-card.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-file-download.mjs → caribeng-ui-file-download.mjs} +63 -63
- package/fesm2022/caribeng-ui-financial-report.mjs +380 -0
- package/fesm2022/{caribeng-ui-caribe-float-menu.mjs → caribeng-ui-float-menu.mjs} +31 -31
- package/fesm2022/caribeng-ui-floatlabel.mjs +2 -2
- package/fesm2022/caribeng-ui-flow.mjs +1508 -0
- package/fesm2022/{caribeng-ui-caribe-footer.mjs → caribeng-ui-footer.mjs} +19 -19
- package/fesm2022/caribeng-ui-gantt.mjs +1094 -0
- package/fesm2022/{caribeng-ui-caribe-header.mjs → caribeng-ui-header.mjs} +49 -49
- package/fesm2022/{caribeng-ui-caribe-icon-button.mjs → caribeng-ui-icon-button.mjs} +23 -23
- package/fesm2022/caribeng-ui-image-cropper.mjs +671 -0
- package/fesm2022/caribeng-ui-import-wizard.mjs +746 -0
- package/fesm2022/caribeng-ui-infinite-scroll.mjs +226 -0
- package/fesm2022/caribeng-ui-input-number.mjs +22 -6
- package/fesm2022/{caribeng-ui-caribe-input-search.mjs → caribeng-ui-input-search.mjs} +65 -65
- package/fesm2022/{caribeng-ui-caribe-input-token.mjs → caribeng-ui-input-token.mjs} +59 -59
- package/fesm2022/caribeng-ui-inputotp.mjs +2 -2
- package/fesm2022/caribeng-ui-journal-entry.mjs +340 -0
- package/fesm2022/caribeng-ui-kanban.mjs +6 -6
- package/fesm2022/caribeng-ui-kpi.mjs +189 -0
- package/fesm2022/{caribeng-ui-caribe-link.mjs → caribeng-ui-link.mjs} +37 -37
- package/fesm2022/caribeng-ui-masonry.mjs +93 -0
- package/fesm2022/caribeng-ui-media-player.mjs +821 -0
- package/fesm2022/caribeng-ui-mentions.mjs +2 -2
- package/fesm2022/caribeng-ui-notification-center.mjs +636 -0
- package/fesm2022/{caribeng-ui-caribe-off-canvas.mjs → caribeng-ui-off-canvas.mjs} +55 -55
- package/fesm2022/{caribeng-ui-caribe-onboarding.mjs → caribeng-ui-onboarding.mjs} +105 -105
- package/fesm2022/caribeng-ui-orderlist.mjs +2 -2
- package/fesm2022/caribeng-ui-pdfviewer.mjs +1755 -25
- package/fesm2022/caribeng-ui-period-picker.mjs +637 -0
- package/fesm2022/caribeng-ui-phone-input.mjs +2 -2
- package/fesm2022/caribeng-ui-picklist.mjs +2 -2
- package/fesm2022/caribeng-ui-pivot.mjs +419 -0
- package/fesm2022/caribeng-ui-pricing.mjs +2 -2
- package/fesm2022/caribeng-ui-rating.mjs +14 -17
- package/fesm2022/caribeng-ui-reconciliation.mjs +386 -0
- package/fesm2022/caribeng-ui-scheduler.mjs +1027 -0
- package/fesm2022/caribeng-ui-select.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-shortcut.mjs → caribeng-ui-shortcut.mjs} +29 -29
- package/fesm2022/caribeng-ui-sidebar.mjs +2 -2
- package/fesm2022/caribeng-ui-signature-pad.mjs +654 -0
- package/fesm2022/{caribeng-ui-caribe-status.mjs → caribeng-ui-status.mjs} +11 -11
- package/fesm2022/{caribeng-ui-caribe-step-indicator.mjs → caribeng-ui-step-indicator.mjs} +53 -53
- package/fesm2022/caribeng-ui-stepper.mjs +2 -2
- package/fesm2022/caribeng-ui-steps.mjs +2 -2
- package/fesm2022/caribeng-ui-table.mjs +323 -15
- package/fesm2022/caribeng-ui-tabmenu.mjs +2 -2
- package/fesm2022/caribeng-ui-tabs.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-tag-button.mjs → caribeng-ui-tag-button.mjs} +25 -25
- package/fesm2022/caribeng-ui-tag.mjs +2 -2
- package/fesm2022/caribeng-ui-tieredmenu.mjs +6 -6
- package/fesm2022/{caribeng-ui-caribe-tracker.mjs → caribeng-ui-tracker.mjs} +29 -29
- package/fesm2022/{caribeng-ui-caribe-transaction-status.mjs → caribeng-ui-transaction-status.mjs} +11 -11
- package/fesm2022/caribeng-ui-treeselect.mjs +44 -9
- package/fesm2022/caribeng-ui-treetable.mjs +236 -17
- package/fesm2022/{caribeng-ui-caribe-voucher.mjs → caribeng-ui-voucher.mjs} +45 -45
- package/fesm2022/caribeng-ui-xlsx.mjs +486 -0
- package/fesm2022/caribeng-ui.mjs +1185 -5
- package/package.json +217 -177
- package/types/caribeng-ui-account-picker.d.ts +142 -0
- package/types/caribeng-ui-aging.d.ts +123 -0
- package/types/{caribeng-ui-caribe-alert.d.ts → caribeng-ui-alert.d.ts} +2 -2
- package/types/caribeng-ui-amount.d.ts +82 -0
- package/types/{caribeng-ui-caribe-animation-lottie.d.ts → caribeng-ui-animation-lottie.d.ts} +2 -2
- package/types/caribeng-ui-audit-log.d.ts +86 -0
- package/types/caribeng-ui-breadcrumb.d.ts +2 -2
- package/types/{caribeng-ui-caribe-button-group.d.ts → caribeng-ui-button-group.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-card-content.d.ts → caribeng-ui-card-content.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-card-move.d.ts → caribeng-ui-card-move.d.ts} +1 -1
- package/types/{caribeng-ui-caribe-card-primary.d.ts → caribeng-ui-card-primary.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-card-select.d.ts → caribeng-ui-card-select.d.ts} +2 -2
- package/types/caribeng-ui-cascadeselect.d.ts +6 -0
- package/types/{caribeng-ui-caribe-coachmark.d.ts → caribeng-ui-coachmark.d.ts} +2 -2
- package/types/caribeng-ui-comments.d.ts +214 -0
- package/types/caribeng-ui-datagrid.d.ts +269 -0
- package/types/caribeng-ui-document.d.ts +138 -0
- package/types/{caribeng-ui-caribe-dots-indicator.d.ts → caribeng-ui-dots-indicator.d.ts} +2 -2
- package/types/caribeng-ui-dynamic-form.d.ts +409 -0
- package/types/caribeng-ui-editor.d.ts +110 -12
- package/types/{caribeng-ui-caribe-expansion-panel.d.ts → caribeng-ui-expansion-panel.d.ts} +1 -1
- package/types/{caribeng-ui-caribe-fab-menu.d.ts → caribeng-ui-fab-menu.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-file-download.d.ts → caribeng-ui-file-download.d.ts} +1 -1
- package/types/caribeng-ui-financial-report.d.ts +102 -0
- package/types/{caribeng-ui-caribe-float-menu.d.ts → caribeng-ui-float-menu.d.ts} +2 -2
- package/types/caribeng-ui-flow.d.ts +228 -0
- package/types/{caribeng-ui-caribe-footer.d.ts → caribeng-ui-footer.d.ts} +2 -2
- package/types/caribeng-ui-gantt.d.ts +244 -0
- package/types/{caribeng-ui-caribe-header.d.ts → caribeng-ui-header.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-icon-button.d.ts → caribeng-ui-icon-button.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-illustration.d.ts → caribeng-ui-illustration.d.ts} +1 -1
- package/types/caribeng-ui-image-cropper.d.ts +169 -0
- package/types/caribeng-ui-import-wizard.d.ts +149 -0
- package/types/caribeng-ui-infinite-scroll.d.ts +75 -0
- package/types/caribeng-ui-input-number.d.ts +1 -1
- package/types/{caribeng-ui-caribe-input-search.d.ts → caribeng-ui-input-search.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-input-token.d.ts → caribeng-ui-input-token.d.ts} +2 -2
- package/types/caribeng-ui-journal-entry.d.ts +110 -0
- package/types/caribeng-ui-kpi.d.ts +64 -0
- package/types/{caribeng-ui-caribe-link.d.ts → caribeng-ui-link.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-logo.d.ts → caribeng-ui-logo.d.ts} +1 -1
- package/types/caribeng-ui-masonry.d.ts +32 -0
- package/types/caribeng-ui-media-player.d.ts +140 -0
- package/types/caribeng-ui-notification-center.d.ts +153 -0
- package/types/{caribeng-ui-caribe-off-canvas.d.ts → caribeng-ui-off-canvas.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-onboarding.d.ts → caribeng-ui-onboarding.d.ts} +2 -2
- package/types/caribeng-ui-pdfviewer.d.ts +245 -5
- package/types/caribeng-ui-period-picker.d.ts +148 -0
- package/types/caribeng-ui-pivot.d.ts +116 -0
- package/types/caribeng-ui-reconciliation.d.ts +109 -0
- package/types/caribeng-ui-scheduler.d.ts +188 -0
- package/types/{caribeng-ui-caribe-shortcut.d.ts → caribeng-ui-shortcut.d.ts} +2 -2
- package/types/caribeng-ui-signature-pad.d.ts +151 -0
- package/types/{caribeng-ui-caribe-status.d.ts → caribeng-ui-status.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-step-indicator.d.ts → caribeng-ui-step-indicator.d.ts} +2 -2
- package/types/caribeng-ui-table.d.ts +66 -2
- package/types/{caribeng-ui-caribe-tag-button.d.ts → caribeng-ui-tag-button.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-tracker.d.ts → caribeng-ui-tracker.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-transaction-status.d.ts → caribeng-ui-transaction-status.d.ts} +2 -2
- package/types/caribeng-ui-treeselect.d.ts +6 -0
- package/types/caribeng-ui-treetable.d.ts +67 -2
- package/types/{caribeng-ui-caribe-voucher.d.ts → caribeng-ui-voucher.d.ts} +2 -2
- package/types/caribeng-ui-xlsx.d.ts +79 -0
- package/types/caribeng-ui.d.ts +713 -4
- package/fesm2022/caribeng-ui-caribe-calendar.mjs +0 -92
- package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +0 -130
- package/fesm2022/caribeng-ui-caribe-data-table.mjs +0 -94
- package/fesm2022/caribeng-ui-caribe-file-select.mjs +0 -88
- package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +0 -100
- package/fesm2022/caribeng-ui-caribe-input-date.mjs +0 -138
- package/fesm2022/caribeng-ui-caribe-input-select.mjs +0 -154
- package/fesm2022/caribeng-ui-caribe-loader.mjs +0 -48
- package/fesm2022/caribeng-ui-caribe-modal.mjs +0 -119
- package/fesm2022/caribeng-ui-caribe-pictogram.mjs +0 -52
- package/fesm2022/caribeng-ui-caribe-pop-over.mjs +0 -104
- package/fesm2022/caribeng-ui-caribe-preloader.mjs +0 -57
- package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +0 -84
- package/fesm2022/caribeng-ui-caribe-stroke.mjs +0 -69
- package/fesm2022/caribeng-ui-caribe-switch.mjs +0 -182
- package/types/caribeng-ui-caribe-calendar.d.ts +0 -27
- package/types/caribeng-ui-caribe-circle-loading.d.ts +0 -28
- package/types/caribeng-ui-caribe-data-table.d.ts +0 -26
- package/types/caribeng-ui-caribe-file-select.d.ts +0 -31
- package/types/caribeng-ui-caribe-inline-alert.d.ts +0 -28
- package/types/caribeng-ui-caribe-input-date.d.ts +0 -40
- package/types/caribeng-ui-caribe-input-select.d.ts +0 -47
- package/types/caribeng-ui-caribe-loader.d.ts +0 -22
- package/types/caribeng-ui-caribe-modal.d.ts +0 -21
- package/types/caribeng-ui-caribe-pictogram.d.ts +0 -15
- package/types/caribeng-ui-caribe-pop-over.d.ts +0 -17
- package/types/caribeng-ui-caribe-preloader.d.ts +0 -24
- package/types/caribeng-ui-caribe-progress-bar.d.ts +0 -28
- package/types/caribeng-ui-caribe-stroke.d.ts +0 -17
- package/types/caribeng-ui-caribe-switch.d.ts +0 -55
- /package/fesm2022/{caribeng-ui-caribe-illustration.mjs → caribeng-ui-illustration.mjs} +0 -0
- /package/fesm2022/{caribeng-ui-caribe-logo.mjs → caribeng-ui-logo.mjs} +0 -0
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
|
|
4
|
+
/** Recuadro de recorte en fracciones de la imagen (0–1). */
|
|
5
|
+
interface CbCropRect {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
w: number;
|
|
9
|
+
h: number;
|
|
10
|
+
}
|
|
11
|
+
/** Opciones de la imagen recortada. */
|
|
12
|
+
interface CbCropOutput {
|
|
13
|
+
/** `image/png` (por defecto, o el tipo de la original si es JPEG), `image/jpeg` o `image/webp`. */
|
|
14
|
+
readonly type?: 'image/png' | 'image/jpeg' | 'image/webp';
|
|
15
|
+
/** Calidad de JPEG y WebP (0–1). */
|
|
16
|
+
readonly quality?: number;
|
|
17
|
+
/** Tamaño máximo en píxeles: el recorte se reduce (nunca se amplía) para no pasar de él. */
|
|
18
|
+
readonly maxWidth?: number;
|
|
19
|
+
readonly maxHeight?: number;
|
|
20
|
+
/** Recorte circular (PNG con fondo transparente), p. ej. para fotos de perfil. */
|
|
21
|
+
readonly circle?: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** Mantiene el recuadro dentro de la imagen y con un tamaño mínimo. */
|
|
24
|
+
declare function clampRect(rect: CbCropRect): CbCropRect;
|
|
25
|
+
/**
|
|
26
|
+
* Ajusta el recuadro a una proporción (ancho / alto en píxeles), lo más grande
|
|
27
|
+
* posible dentro del actual y centrado en él. `ratio` null = libre.
|
|
28
|
+
*/
|
|
29
|
+
declare function fitRatio(rect: CbCropRect, ratio: number | null, imageWidth: number, imageHeight: number): CbCropRect;
|
|
30
|
+
/** Recuadro inicial: el mayor posible con la proporción, centrado. */
|
|
31
|
+
declare function initialRect(ratio: number | null, imageWidth: number, imageHeight: number): CbCropRect;
|
|
32
|
+
/**
|
|
33
|
+
* Redimensiona arrastrando una esquina (`nw`, `ne`, `sw`, `se`) un desplazamiento
|
|
34
|
+
* (dx, dy) en fracciones; con proporción, el alto sigue al ancho.
|
|
35
|
+
*/
|
|
36
|
+
declare function resizeRect(rect: CbCropRect, corner: 'nw' | 'ne' | 'sw' | 'se', dx: number, dy: number, ratio: number | null, imageWidth: number, imageHeight: number): CbCropRect;
|
|
37
|
+
/** Tamaño en píxeles del recorte, reducido para no pasar de `maxWidth` × `maxHeight`. */
|
|
38
|
+
declare function outputSize(rect: CbCropRect, imageWidth: number, imageHeight: number, output?: CbCropOutput): {
|
|
39
|
+
w: number;
|
|
40
|
+
h: number;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Estilo de una vista previa del recorte hecha con CSS (sin canvas): la imagen como fondo,
|
|
44
|
+
* ampliada y desplazada para que solo se vea el recuadro.
|
|
45
|
+
*/
|
|
46
|
+
declare function previewStyle(src: string, rect: CbCropRect): Record<string, string>;
|
|
47
|
+
/**
|
|
48
|
+
* Recorta los píxeles de la imagen. Las imágenes de otro dominio necesitan que
|
|
49
|
+
* su servidor permita CORS; si no, el navegador bloquea la lectura y se rechaza.
|
|
50
|
+
*/
|
|
51
|
+
declare function cropImage(src: string, rect: CbCropRect, doc: Document, output?: CbCropOutput): Promise<Blob>;
|
|
52
|
+
/** Gira la imagen un cuarto de vuelta (`1` a la derecha, `-1` a la izquierda) y la devuelve como data URL PNG. */
|
|
53
|
+
declare function rotateImage(src: string, turns: 1 | -1, doc: Document): Promise<string>;
|
|
54
|
+
/** Lee un archivo como data URL. */
|
|
55
|
+
declare function readFileAsDataUrl(file: Blob): Promise<string>;
|
|
56
|
+
|
|
57
|
+
/** Proporción que se ofrece en la barra (`value` null = libre). */
|
|
58
|
+
interface CbCropRatio {
|
|
59
|
+
readonly label: string;
|
|
60
|
+
readonly value: number | null;
|
|
61
|
+
}
|
|
62
|
+
/** Resultado del recorte. */
|
|
63
|
+
interface CbCropResult {
|
|
64
|
+
readonly blob: Blob;
|
|
65
|
+
readonly dataUrl: string;
|
|
66
|
+
readonly rect: CbCropRect;
|
|
67
|
+
readonly width: number;
|
|
68
|
+
readonly height: number;
|
|
69
|
+
}
|
|
70
|
+
type Corner = 'nw' | 'ne' | 'sw' | 'se';
|
|
71
|
+
/**
|
|
72
|
+
* Recortador de imagen de CaribeNG: recuadro que se mueve y redimensiona con ratón, dedo o
|
|
73
|
+
* teclado, proporciones fijas o libre, forma circular para fotos de perfil, giro, vista previa
|
|
74
|
+
* y selección de archivo (botón o arrastrar). Devuelve el recorte como `Blob` y data URL.
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```html
|
|
78
|
+
* <cb-image-cropper [src]="foto" shape="circle" preview (cropped)="guardar($event.blob)" />
|
|
79
|
+
* ```
|
|
80
|
+
*/
|
|
81
|
+
declare class CbImageCropper {
|
|
82
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
83
|
+
private readonly document;
|
|
84
|
+
private readonly injector;
|
|
85
|
+
private readonly destroyRef;
|
|
86
|
+
protected readonly helpId: string;
|
|
87
|
+
/** Imagen a recortar (URL o data URL). Las de otro dominio necesitan CORS para poder recortarse. */
|
|
88
|
+
readonly src: _angular_core.InputSignal<string>;
|
|
89
|
+
/** Recuadro en fracciones de la imagen (0–1). Se inicia al cargar la imagen si no se indica. */
|
|
90
|
+
readonly rect: _angular_core.ModelSignal<CbCropRect | null>;
|
|
91
|
+
/** Proporción ancho / alto (`null` = libre). Con `shape="circle"` siempre es 1. */
|
|
92
|
+
readonly ratio: _angular_core.ModelSignal<number | null>;
|
|
93
|
+
/** Proporciones de la barra (vacío para ocultarla). */
|
|
94
|
+
readonly ratios: _angular_core.InputSignal<readonly CbCropRatio[]>;
|
|
95
|
+
/** Recorte rectangular o circular (PNG con fondo transparente, para fotos de perfil). */
|
|
96
|
+
readonly shape: _angular_core.InputSignal<"rect" | "circle">;
|
|
97
|
+
/** Formato, calidad y tamaño máximo del recorte. */
|
|
98
|
+
readonly output: _angular_core.InputSignal<CbCropOutput>;
|
|
99
|
+
/** Botones de girar 90°. */
|
|
100
|
+
readonly rotatable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
101
|
+
/** Vista previa del recorte. */
|
|
102
|
+
readonly preview: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
103
|
+
/** Botón para elegir otra imagen (y arrastrar archivos al área vacía). */
|
|
104
|
+
readonly chooser: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
105
|
+
/** Botón Recortar (sin él, recorta llamando a `crop()`). */
|
|
106
|
+
readonly showApply: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
107
|
+
readonly accept: _angular_core.InputSignal<string>;
|
|
108
|
+
/** Alto máximo de la imagen en pantalla. */
|
|
109
|
+
readonly maxHeight: _angular_core.InputSignal<string>;
|
|
110
|
+
readonly emptyMessage: _angular_core.InputSignal<string | undefined>;
|
|
111
|
+
/** Recorte hecho con el botón Recortar o Enter. */
|
|
112
|
+
readonly cropped: _angular_core.OutputEmitterRef<CbCropResult>;
|
|
113
|
+
/** Imagen elegida por el usuario (archivo). */
|
|
114
|
+
readonly fileSelect: _angular_core.OutputEmitterRef<File>;
|
|
115
|
+
/** No se pudo cargar o recortar la imagen. */
|
|
116
|
+
readonly cropError: _angular_core.OutputEmitterRef<unknown>;
|
|
117
|
+
protected readonly corners: readonly Corner[];
|
|
118
|
+
/** Imagen en pantalla: `src`, el archivo elegido o la imagen girada. */
|
|
119
|
+
protected readonly displaySrc: _angular_core.WritableSignal<string>;
|
|
120
|
+
protected readonly natural: _angular_core.WritableSignal<{
|
|
121
|
+
w: number;
|
|
122
|
+
h: number;
|
|
123
|
+
} | null>;
|
|
124
|
+
protected readonly busy: _angular_core.WritableSignal<boolean>;
|
|
125
|
+
protected readonly error: _angular_core.WritableSignal<string>;
|
|
126
|
+
protected readonly dragOver: _angular_core.WritableSignal<boolean>;
|
|
127
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
128
|
+
private readonly effRatio;
|
|
129
|
+
/** El recuadro vigente (`rect` es null hasta que carga la imagen). */
|
|
130
|
+
protected readonly current: _angular_core.Signal<CbCropRect>;
|
|
131
|
+
protected readonly valueText: _angular_core.Signal<string>;
|
|
132
|
+
protected readonly previewCss: _angular_core.Signal<{
|
|
133
|
+
'aspect-ratio': string;
|
|
134
|
+
}>;
|
|
135
|
+
private readonly stage;
|
|
136
|
+
private readonly box;
|
|
137
|
+
private readonly fileInput;
|
|
138
|
+
constructor();
|
|
139
|
+
/** Recorta y devuelve el resultado (sin emitir `cropped`). */
|
|
140
|
+
crop(): Promise<CbCropResult>;
|
|
141
|
+
/** Abre el selector de archivos. */
|
|
142
|
+
choose(): void;
|
|
143
|
+
/** Proporción fija (ancho / alto) o libre (`null`). */
|
|
144
|
+
setRatio(ratio: number | null): void;
|
|
145
|
+
protected onLoad(event: Event): void;
|
|
146
|
+
protected onImageError(): void;
|
|
147
|
+
protected apply(): Promise<void>;
|
|
148
|
+
protected rotate(turns: 1 | -1): Promise<void>;
|
|
149
|
+
protected onFile(event: Event): Promise<void>;
|
|
150
|
+
protected onDragOver(event: DragEvent): void;
|
|
151
|
+
protected onDrop(event: DragEvent): Promise<void>;
|
|
152
|
+
/** Mueve (`corner` null) o redimensiona el recuadro arrastrando. */
|
|
153
|
+
protected startDrag(event: PointerEvent, corner: Corner | null): void;
|
|
154
|
+
/** Flechas: mover (2 %, 10 % con Ctrl); Mayús + flechas: tamaño desde la esquina inferior derecha; Enter: recortar. */
|
|
155
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
156
|
+
private load;
|
|
157
|
+
private useFile;
|
|
158
|
+
/** El recuadro aparece cuando carga la imagen: entonces recibe el foco. */
|
|
159
|
+
private focusWhenReady;
|
|
160
|
+
/** Un espacio duro alterno hace que el mismo texto cuente como cambio y se vuelva a anunciar. */
|
|
161
|
+
private announce;
|
|
162
|
+
private announceFlip;
|
|
163
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbImageCropper, never>;
|
|
164
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbImageCropper, "cb-image-cropper", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "rect": { "alias": "rect"; "required": false; "isSignal": true; }; "ratio": { "alias": "ratio"; "required": false; "isSignal": true; }; "ratios": { "alias": "ratios"; "required": false; "isSignal": true; }; "shape": { "alias": "shape"; "required": false; "isSignal": true; }; "output": { "alias": "output"; "required": false; "isSignal": true; }; "rotatable": { "alias": "rotatable"; "required": false; "isSignal": true; }; "preview": { "alias": "preview"; "required": false; "isSignal": true; }; "chooser": { "alias": "chooser"; "required": false; "isSignal": true; }; "showApply": { "alias": "showApply"; "required": false; "isSignal": true; }; "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; }, { "rect": "rectChange"; "ratio": "ratioChange"; "cropped": "cropped"; "fileSelect": "fileSelect"; "cropError": "cropError"; }, never, never, true, never>;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export { CbImageCropper, clampRect, cropImage, fitRatio, initialRect, outputSize, previewStyle, readFileAsDataUrl, resizeRect, rotateImage };
|
|
168
|
+
export type { CbCropOutput, CbCropRatio, CbCropRect, CbCropResult };
|
|
169
|
+
//# sourceMappingURL=caribeng-ui-image-cropper.d.ts.map
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { cbFormat } from '@caribeng/ui';
|
|
4
|
+
import { CbDataGridColumn } from '@caribeng/ui/datagrid';
|
|
5
|
+
import { CbXlsxReadSheet } from '@caribeng/ui/xlsx';
|
|
6
|
+
|
|
7
|
+
/** Tipo de un campo a importar (cómo se interpreta el texto). */
|
|
8
|
+
type CbImportFieldType = 'text' | 'number' | 'date' | 'boolean';
|
|
9
|
+
/** Campo de destino de la importación. */
|
|
10
|
+
interface CbImportField {
|
|
11
|
+
readonly key: string;
|
|
12
|
+
readonly label: string;
|
|
13
|
+
readonly type?: CbImportFieldType;
|
|
14
|
+
readonly required?: boolean;
|
|
15
|
+
/** Otros nombres de columna con los que se asigna solo (p. ej. `['nit', 'documento']`). */
|
|
16
|
+
readonly aliases?: readonly string[];
|
|
17
|
+
/** Validación propia: mensaje de error o `null`. */
|
|
18
|
+
readonly validate?: (value: unknown, row: Record<string, unknown>) => string | null;
|
|
19
|
+
}
|
|
20
|
+
/** Error de una celda importada. */
|
|
21
|
+
interface CbImportError {
|
|
22
|
+
/** Fila de datos (1 = la primera después del encabezado). */
|
|
23
|
+
readonly row: number;
|
|
24
|
+
readonly field: string;
|
|
25
|
+
readonly message: string;
|
|
26
|
+
}
|
|
27
|
+
/** Resultado de la importación. */
|
|
28
|
+
interface CbImportResult<T = Record<string, unknown>> {
|
|
29
|
+
readonly rows: T[];
|
|
30
|
+
readonly errors: CbImportError[];
|
|
31
|
+
/** Filas descartadas por tener errores. */
|
|
32
|
+
readonly skipped: number;
|
|
33
|
+
}
|
|
34
|
+
type CbImportCell = string | number | boolean | null;
|
|
35
|
+
interface ImportTexts {
|
|
36
|
+
readonly required: string;
|
|
37
|
+
readonly number: string;
|
|
38
|
+
readonly date: string;
|
|
39
|
+
readonly boolean: string;
|
|
40
|
+
}
|
|
41
|
+
/** Separador más probable de un texto delimitado (tabulador, punto y coma o coma). */
|
|
42
|
+
declare function detectDelimiter(text: string): string;
|
|
43
|
+
/** CSV / TSV a filas (comillas dobles, saltos de línea dentro de comillas, BOM). */
|
|
44
|
+
declare function parseDelimited(text: string, delimiter?: string): string[][];
|
|
45
|
+
/**
|
|
46
|
+
* Importe a partir de texto: `$ 1.234,56`, `1,234.56`, `(1.234)` (negativo),
|
|
47
|
+
* `-1234`, `1.234.567`. Con un solo separador repetido, o seguido de 3 cifras,
|
|
48
|
+
* se toma como de miles.
|
|
49
|
+
*/
|
|
50
|
+
declare function parseAmount(value: CbImportCell): number | null | undefined;
|
|
51
|
+
/** Fecha a partir de texto (`AAAA-MM-DD`, `DD/MM/AAAA`, `DD-MM-AAAA`) o de un número de serie de Excel. */
|
|
52
|
+
declare function parseDate(value: CbImportCell): Date | null | undefined;
|
|
53
|
+
declare function parseBoolean(value: CbImportCell): boolean | null | undefined;
|
|
54
|
+
/** Asigna cada campo a la columna cuyo encabezado coincide con su clave, etiqueta o alias. */
|
|
55
|
+
declare function autoMap(headers: readonly string[], fields: readonly CbImportField[]): Record<string, number | null>;
|
|
56
|
+
/** Convierte las filas con la asignación de columnas: valores con tipo y errores por celda. */
|
|
57
|
+
declare function convertRows(rows: readonly (readonly CbImportCell[])[], mapping: Readonly<Record<string, number | null>>, fields: readonly CbImportField[], texts: ImportTexts): {
|
|
58
|
+
rows: Record<string, unknown>[];
|
|
59
|
+
errors: CbImportError[];
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
type Step = 'file' | 'map' | 'review';
|
|
63
|
+
/**
|
|
64
|
+
* Asistente de importación de CaribeNG: archivo (CSV, TSV, Excel o datos pegados),
|
|
65
|
+
* asignación de columnas y revisión con validación fila a fila antes de importar.
|
|
66
|
+
*
|
|
67
|
+
* - Lee .xlsx en el navegador (varias hojas), CSV con `,` o `;` y lo copiado de una hoja de cálculo.
|
|
68
|
+
* - Asigna sola cada columna cuyo encabezado coincide con el campo (o sus `aliases`).
|
|
69
|
+
* - Interpreta importes (`$ 1.234,56`, `(1.234)`), fechas (`DD/MM/AAAA`, serie de Excel)
|
|
70
|
+
* y casillas (Sí / No); marca cada celda con error y deja importar solo las filas válidas.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```html
|
|
74
|
+
* <cb-import-wizard [fields]="campos" (import)="guardar($event.rows)" />
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
declare class CbImportWizard {
|
|
78
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
79
|
+
protected readonly fmt: typeof cbFormat;
|
|
80
|
+
protected readonly uid: string;
|
|
81
|
+
protected readonly steps: Step[];
|
|
82
|
+
protected readonly accept = ".csv,.tsv,.txt,.xlsx,text/csv,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
|
|
83
|
+
/** Campos de destino (clave, etiqueta, tipo, obligatorio, alias y validación). */
|
|
84
|
+
readonly fields: _angular_core.InputSignal<readonly CbImportField[]>;
|
|
85
|
+
/** Importa también las filas con errores (marcadas en `errors`). */
|
|
86
|
+
readonly allowInvalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
87
|
+
/** Filas importadas (con tipo) y errores encontrados. */
|
|
88
|
+
readonly import: _angular_core.OutputEmitterRef<CbImportResult<Record<string, unknown>>>;
|
|
89
|
+
protected readonly step: _angular_core.WritableSignal<Step>;
|
|
90
|
+
protected readonly stepIndex: _angular_core.Signal<number>;
|
|
91
|
+
protected readonly dragging: _angular_core.WritableSignal<boolean>;
|
|
92
|
+
protected readonly pasteOpen: _angular_core.WritableSignal<boolean>;
|
|
93
|
+
protected readonly fileName: _angular_core.WritableSignal<string>;
|
|
94
|
+
protected readonly error: _angular_core.WritableSignal<string>;
|
|
95
|
+
protected readonly sheets: _angular_core.WritableSignal<CbXlsxReadSheet[]>;
|
|
96
|
+
protected readonly sheetIndex: _angular_core.WritableSignal<number>;
|
|
97
|
+
private readonly text;
|
|
98
|
+
protected readonly hasHeader: _angular_core.WritableSignal<boolean>;
|
|
99
|
+
protected readonly mapping: _angular_core.WritableSignal<Record<string, number | null>>;
|
|
100
|
+
protected readonly onlyValid: _angular_core.WritableSignal<boolean>;
|
|
101
|
+
/** Filas leídas (de la hoja elegida o del texto). */
|
|
102
|
+
protected readonly raw: _angular_core.Signal<CbImportCell[][]>;
|
|
103
|
+
protected readonly headers: _angular_core.Signal<string[]>;
|
|
104
|
+
protected readonly dataRows: _angular_core.Signal<CbImportCell[][]>;
|
|
105
|
+
protected readonly sheetOptions: _angular_core.Signal<{
|
|
106
|
+
label: string;
|
|
107
|
+
value: number;
|
|
108
|
+
}[]>;
|
|
109
|
+
protected readonly columnOptions: _angular_core.Signal<{
|
|
110
|
+
label: string;
|
|
111
|
+
value: number;
|
|
112
|
+
}[]>;
|
|
113
|
+
protected readonly missing: _angular_core.Signal<string[]>;
|
|
114
|
+
private readonly texts;
|
|
115
|
+
private readonly converted;
|
|
116
|
+
protected readonly invalidRows: _angular_core.Signal<Set<number>>;
|
|
117
|
+
protected readonly validCount: _angular_core.Signal<number>;
|
|
118
|
+
private readonly errorIndex;
|
|
119
|
+
protected readonly previewRows: _angular_core.Signal<Record<string, unknown>[]>;
|
|
120
|
+
protected readonly previewColumns: _angular_core.Signal<CbDataGridColumn<Record<string, unknown>>[]>;
|
|
121
|
+
protected readonly importable: _angular_core.Signal<number>;
|
|
122
|
+
protected stepLabel(step: Step): string;
|
|
123
|
+
protected columnName(i: number): string;
|
|
124
|
+
protected example(key: string): string;
|
|
125
|
+
private plain;
|
|
126
|
+
protected onDrop(event: DragEvent): void;
|
|
127
|
+
protected onFile(event: Event): void;
|
|
128
|
+
protected onPaste(event: Event): void;
|
|
129
|
+
/** Carga un archivo (.xlsx, .csv, .tsv, .txt). */
|
|
130
|
+
load(file: File): Promise<void>;
|
|
131
|
+
/** Carga texto delimitado (CSV, TSV o lo pegado de una hoja de cálculo). */
|
|
132
|
+
loadText(text: string): void;
|
|
133
|
+
protected setHeader(value: boolean): void;
|
|
134
|
+
protected setMapping(key: string, column: number): void;
|
|
135
|
+
private remap;
|
|
136
|
+
protected canNext(): boolean;
|
|
137
|
+
protected next(): void;
|
|
138
|
+
protected back(): void;
|
|
139
|
+
protected finish(): void;
|
|
140
|
+
/** Vuelve al primer paso sin datos. */
|
|
141
|
+
reset(): void;
|
|
142
|
+
private focusHeading;
|
|
143
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbImportWizard, never>;
|
|
144
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbImportWizard, "cb-import-wizard", never, { "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "allowInvalid": { "alias": "allowInvalid"; "required": false; "isSignal": true; }; }, { "import": "import"; }, never, never, true, never>;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
export { CbImportWizard, autoMap, convertRows, detectDelimiter, parseAmount, parseBoolean, parseDate, parseDelimited };
|
|
148
|
+
export type { CbImportError, CbImportField, CbImportFieldType, CbImportResult };
|
|
149
|
+
//# sourceMappingURL=caribeng-ui-import-wizard.d.ts.map
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
|
|
4
|
+
/** `auto`: carga al llegar al final; `button`: solo con el botón "Cargar más". */
|
|
5
|
+
type CbInfiniteScrollMode = 'auto' | 'button';
|
|
6
|
+
/** Quién pidió la carga. */
|
|
7
|
+
type CbLoadMoreSource = 'scroll' | 'button' | 'retry';
|
|
8
|
+
/**
|
|
9
|
+
* Scroll infinito de CaribeNG: envuelve una lista y pide más elementos (`loadMore`) al acercarse
|
|
10
|
+
* al final, con un botón "Cargar más" como alternativa. Tras `autoLimit` cargas automáticas pasa
|
|
11
|
+
* al botón, para que el pie de página siga siendo alcanzable; anuncia las cargas y, al cargar con
|
|
12
|
+
* el botón, lleva el foco al primer elemento nuevo.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```html
|
|
16
|
+
* <cb-infinite-scroll [loading]="cargando()" [hasMore]="hayMas()" [count]="items().length" (loadMore)="cargar()">
|
|
17
|
+
* <ul>@for (i of items(); track i.id) { <li>{{ i.nombre }}</li> }</ul>
|
|
18
|
+
* </cb-infinite-scroll>
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare class CbInfiniteScroll {
|
|
22
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
23
|
+
private readonly host;
|
|
24
|
+
private readonly injector;
|
|
25
|
+
/** Hay una carga en curso (muestra el indicador y evita pedir otra). */
|
|
26
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
27
|
+
/** Quedan elementos por cargar. */
|
|
28
|
+
readonly hasMore: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
29
|
+
/** La última carga falló: muestra el aviso y "Reintentar". */
|
|
30
|
+
readonly error: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
31
|
+
/** Número de elementos ya cargados: para anunciar cuántos llegaron y enfocar el primero nuevo. */
|
|
32
|
+
readonly count: _angular_core.InputSignal<number | undefined>;
|
|
33
|
+
/** Carga automática al llegar al final o solo con el botón. */
|
|
34
|
+
readonly mode: _angular_core.InputSignal<CbInfiniteScrollMode>;
|
|
35
|
+
/** Cargas automáticas seguidas antes de pasar al botón (0 = sin límite). */
|
|
36
|
+
readonly autoLimit: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
37
|
+
/** Distancia al final a la que se empieza a cargar (margen del IntersectionObserver). */
|
|
38
|
+
readonly threshold: _angular_core.InputSignal<string>;
|
|
39
|
+
/** El propio componente hace scroll, con este alto máximo (si no, se usa la página). */
|
|
40
|
+
readonly scrollable: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
41
|
+
readonly height: _angular_core.InputSignal<string>;
|
|
42
|
+
/** Elementos de la lista, para llevar el foco al primero nuevo tras "Cargar más". */
|
|
43
|
+
readonly itemSelector: _angular_core.InputSignal<string>;
|
|
44
|
+
/** Mensaje al llegar al final (con `showEnd`). */
|
|
45
|
+
readonly showEnd: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
46
|
+
readonly endMessage: _angular_core.InputSignal<string | undefined>;
|
|
47
|
+
readonly errorMessage: _angular_core.InputSignal<string | undefined>;
|
|
48
|
+
readonly loadMoreLabel: _angular_core.InputSignal<string | undefined>;
|
|
49
|
+
/** Pide la siguiente página. */
|
|
50
|
+
readonly loadMore: _angular_core.OutputEmitterRef<CbLoadMoreSource>;
|
|
51
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
52
|
+
/** Cargas automáticas desde la última con el botón. */
|
|
53
|
+
private readonly autoCount;
|
|
54
|
+
protected readonly showButton: _angular_core.Signal<boolean>;
|
|
55
|
+
private readonly sentinel;
|
|
56
|
+
private readonly observerSupported;
|
|
57
|
+
/** Cuántos había al pedir la carga y si la pidió el botón (para el anuncio y el foco). */
|
|
58
|
+
private pending;
|
|
59
|
+
private visible;
|
|
60
|
+
constructor();
|
|
61
|
+
/** Vuelve a permitir cargas automáticas (p. ej. al cambiar un filtro y reiniciar la lista). */
|
|
62
|
+
reset(): void;
|
|
63
|
+
protected request(source: CbLoadMoreSource): void;
|
|
64
|
+
private tryAuto;
|
|
65
|
+
private focusItem;
|
|
66
|
+
/** Un espacio duro alterno hace que el mismo texto cuente como cambio y se vuelva a anunciar. */
|
|
67
|
+
private announce;
|
|
68
|
+
private announceFlip;
|
|
69
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbInfiniteScroll, never>;
|
|
70
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbInfiniteScroll, "cb-infinite-scroll", never, { "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "hasMore": { "alias": "hasMore"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "count": { "alias": "count"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "autoLimit": { "alias": "autoLimit"; "required": false; "isSignal": true; }; "threshold": { "alias": "threshold"; "required": false; "isSignal": true; }; "scrollable": { "alias": "scrollable"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "itemSelector": { "alias": "itemSelector"; "required": false; "isSignal": true; }; "showEnd": { "alias": "showEnd"; "required": false; "isSignal": true; }; "endMessage": { "alias": "endMessage"; "required": false; "isSignal": true; }; "errorMessage": { "alias": "errorMessage"; "required": false; "isSignal": true; }; "loadMoreLabel": { "alias": "loadMoreLabel"; "required": false; "isSignal": true; }; }, { "loadMore": "loadMore"; }, never, ["*"], true, never>;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
export { CbInfiniteScroll };
|
|
74
|
+
export type { CbInfiniteScrollMode, CbLoadMoreSource };
|
|
75
|
+
//# sourceMappingURL=caribeng-ui-infinite-scroll.d.ts.map
|
|
@@ -77,7 +77,7 @@ declare class CbInputNumber implements ControlValueAccessor {
|
|
|
77
77
|
registerOnChange(fn: (value: number | null) => void): void;
|
|
78
78
|
registerOnTouched(fn: () => void): void;
|
|
79
79
|
setDisabledState(isDisabled: boolean): void;
|
|
80
|
-
protected onFocus(): void;
|
|
80
|
+
protected onFocus(event: FocusEvent): void;
|
|
81
81
|
protected onInput(event: Event): void;
|
|
82
82
|
protected onBlur(): void;
|
|
83
83
|
protected onKeydown(event: KeyboardEvent): void;
|
|
@@ -3,7 +3,7 @@ import * as _caribeng_ui from '@caribeng/ui';
|
|
|
3
3
|
import { ControlValueAccessor } from '@angular/forms';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Input-search
|
|
6
|
+
* Input-search: campo de búsqueda con icono, botón de limpiar
|
|
7
7
|
* e integración con Angular Forms (CVA).
|
|
8
8
|
*
|
|
9
9
|
* @example
|
|
@@ -37,4 +37,4 @@ declare class CbInputSearch implements ControlValueAccessor {
|
|
|
37
37
|
}
|
|
38
38
|
|
|
39
39
|
export { CbInputSearch };
|
|
40
|
-
//# sourceMappingURL=caribeng-ui-
|
|
40
|
+
//# sourceMappingURL=caribeng-ui-input-search.d.ts.map
|
|
@@ -4,7 +4,7 @@ import { cbFormat } from '@caribeng/ui';
|
|
|
4
4
|
import { ControlValueAccessor } from '@angular/forms';
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
|
-
* Input-token
|
|
7
|
+
* Input-token: entrada de código OTP con casillas por dígito,
|
|
8
8
|
* enmascarado opcional y CVA.
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
@@ -51,4 +51,4 @@ declare class CbInputToken implements ControlValueAccessor {
|
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
export { CbInputToken };
|
|
54
|
-
//# sourceMappingURL=caribeng-ui-
|
|
54
|
+
//# sourceMappingURL=caribeng-ui-input-token.d.ts.map
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { cbFormat } from '@caribeng/ui';
|
|
4
|
+
import { CbAccount } from '@caribeng/ui/account-picker';
|
|
5
|
+
import { CbDataGridColumn } from '@caribeng/ui/datagrid';
|
|
6
|
+
|
|
7
|
+
/** Línea (movimiento) de un comprobante. */
|
|
8
|
+
interface CbJournalLine {
|
|
9
|
+
readonly id: string | number;
|
|
10
|
+
/** Código de la cuenta. */
|
|
11
|
+
readonly account: string | null;
|
|
12
|
+
readonly thirdParty?: unknown;
|
|
13
|
+
readonly costCenter?: unknown;
|
|
14
|
+
/** Detalle de la línea (si queda vacío, al guardar toma la descripción del comprobante). */
|
|
15
|
+
readonly description?: string | null;
|
|
16
|
+
readonly debit: number | null;
|
|
17
|
+
readonly credit: number | null;
|
|
18
|
+
}
|
|
19
|
+
/** Comprobante contable (asiento). */
|
|
20
|
+
interface CbJournalEntryData {
|
|
21
|
+
readonly date: Date | null;
|
|
22
|
+
/** Tipo de comprobante (`CE` egreso, `RC` recibo de caja…). */
|
|
23
|
+
readonly type?: unknown;
|
|
24
|
+
readonly number?: string | null;
|
|
25
|
+
readonly description?: string | null;
|
|
26
|
+
readonly lines: readonly CbJournalLine[];
|
|
27
|
+
}
|
|
28
|
+
/** Opción de tercero, centro de costo o tipo de comprobante. */
|
|
29
|
+
interface CbJournalOption {
|
|
30
|
+
readonly label: string;
|
|
31
|
+
readonly value: unknown;
|
|
32
|
+
readonly description?: string;
|
|
33
|
+
}
|
|
34
|
+
/** Comprobante vacío con dos líneas. */
|
|
35
|
+
declare function cbEmptyJournalEntry(date?: Date | null): CbJournalEntryData;
|
|
36
|
+
/**
|
|
37
|
+
* Editor de comprobante contable de CaribeNG: cabecera (fecha, tipo, número y
|
|
38
|
+
* descripción) y líneas con cuenta, tercero, centro de costo, detalle, débito y
|
|
39
|
+
* crédito, editables como una hoja de cálculo.
|
|
40
|
+
*
|
|
41
|
+
* - La cuenta se busca por código o nombre en el plan de cuentas y solo admite
|
|
42
|
+
* cuentas de movimiento; escribir el débito borra el crédito de la línea y al revés.
|
|
43
|
+
* - Totales de débitos y créditos con la diferencia en vivo; «Cuadrar» pone la
|
|
44
|
+
* diferencia en la última línea vacía (o en una nueva).
|
|
45
|
+
* - Guardar (o Ctrl + Enter) valida fecha, líneas, cuentas y que cuadre, y emite `save`.
|
|
46
|
+
*
|
|
47
|
+
* @example
|
|
48
|
+
* ```html
|
|
49
|
+
* <cb-journal-entry [(entry)]="comprobante" [accounts]="puc" [thirdParties]="terceros" (save)="guardar($event)" />
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
declare class CbJournalEntry {
|
|
53
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
54
|
+
protected readonly fmt: typeof cbFormat;
|
|
55
|
+
private readonly amount;
|
|
56
|
+
protected readonly uid: string;
|
|
57
|
+
private readonly grid;
|
|
58
|
+
/** Comprobante (bidireccional). */
|
|
59
|
+
readonly entry: _angular_core.ModelSignal<CbJournalEntryData>;
|
|
60
|
+
/** Plan de cuentas: solo se eligen cuentas de movimiento. */
|
|
61
|
+
readonly accounts: _angular_core.InputSignal<readonly CbAccount[]>;
|
|
62
|
+
/** Terceros (sin ellos no se muestra la columna). */
|
|
63
|
+
readonly thirdParties: _angular_core.InputSignal<readonly CbJournalOption[]>;
|
|
64
|
+
/** Centros de costo (sin ellos no se muestra la columna). */
|
|
65
|
+
readonly costCenters: _angular_core.InputSignal<readonly CbJournalOption[]>;
|
|
66
|
+
/** Tipos de comprobante (sin ellos no se muestra el campo). */
|
|
67
|
+
readonly types: _angular_core.InputSignal<readonly CbJournalOption[]>;
|
|
68
|
+
/** Cuentas que exigen tercero (por prefijo de código, p. ej. `['13', '22']`). */
|
|
69
|
+
readonly thirdPartyRequired: _angular_core.InputSignal<readonly string[]>;
|
|
70
|
+
/** Moneda de los importes (si no, la de `provideCaribeNG({ currency })`). */
|
|
71
|
+
readonly currency: _angular_core.InputSignal<string | undefined>;
|
|
72
|
+
readonly readonly: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
73
|
+
/** Muestra el botón de guardar cargando. */
|
|
74
|
+
readonly saving: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
75
|
+
readonly saveLabel: _angular_core.InputSignal<string | undefined>;
|
|
76
|
+
readonly scrollHeight: _angular_core.InputSignal<string | null>;
|
|
77
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
78
|
+
/** Comprobante válido y cuadrado al guardar (líneas sin importe quitadas, detalles heredados). */
|
|
79
|
+
readonly save: _angular_core.OutputEmitterRef<CbJournalEntryData>;
|
|
80
|
+
/** Se intentó guardar con problemas: cuáles. */
|
|
81
|
+
readonly invalid: _angular_core.OutputEmitterRef<string[]>;
|
|
82
|
+
/** Se intentó guardar (desde entonces se muestran los problemas). */
|
|
83
|
+
protected readonly tried: _angular_core.WritableSignal<boolean>;
|
|
84
|
+
private readonly accountOptions;
|
|
85
|
+
protected readonly columns: _angular_core.Signal<CbDataGridColumn<CbJournalLine>[]>;
|
|
86
|
+
/** Totales de débitos y créditos y su diferencia. */
|
|
87
|
+
readonly totals: _angular_core.Signal<{
|
|
88
|
+
debit: number;
|
|
89
|
+
credit: number;
|
|
90
|
+
difference: number;
|
|
91
|
+
}>;
|
|
92
|
+
/** Débitos y créditos iguales y mayores que cero. */
|
|
93
|
+
readonly balanced: _angular_core.Signal<boolean>;
|
|
94
|
+
/** Problemas que impiden guardar. */
|
|
95
|
+
readonly problems: _angular_core.Signal<string[]>;
|
|
96
|
+
protected readonly newLine: () => CbJournalLine;
|
|
97
|
+
protected money(value: number): string;
|
|
98
|
+
protected patch(change: Partial<CbJournalEntryData>): void;
|
|
99
|
+
/** Pone la diferencia en la última línea sin importe (o en una nueva) para que cuadre. */
|
|
100
|
+
balance(): void;
|
|
101
|
+
/** Valida y, si está todo bien, emite `save`. */
|
|
102
|
+
submit(): void;
|
|
103
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
104
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbJournalEntry, never>;
|
|
105
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbJournalEntry, "cb-journal-entry", never, { "entry": { "alias": "entry"; "required": false; "isSignal": true; }; "accounts": { "alias": "accounts"; "required": false; "isSignal": true; }; "thirdParties": { "alias": "thirdParties"; "required": false; "isSignal": true; }; "costCenters": { "alias": "costCenters"; "required": false; "isSignal": true; }; "types": { "alias": "types"; "required": false; "isSignal": true; }; "thirdPartyRequired": { "alias": "thirdPartyRequired"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "saving": { "alias": "saving"; "required": false; "isSignal": true; }; "saveLabel": { "alias": "saveLabel"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "entry": "entryChange"; "save": "save"; "invalid": "invalid"; }, never, never, true, never>;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export { CbJournalEntry, cbEmptyJournalEntry };
|
|
109
|
+
export type { CbJournalEntryData, CbJournalLine, CbJournalOption };
|
|
110
|
+
//# sourceMappingURL=caribeng-ui-journal-entry.d.ts.map
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { cbFormat } from '@caribeng/ui';
|
|
4
|
+
|
|
5
|
+
/** Formato del valor del indicador. */
|
|
6
|
+
type CbKpiFormat = 'currency' | 'number' | 'integer' | 'percent';
|
|
7
|
+
/**
|
|
8
|
+
* Indicador (KPI) de CaribeNG: valor, variación frente al periodo anterior,
|
|
9
|
+
* minigráfica de tendencia y avance hacia una meta.
|
|
10
|
+
*
|
|
11
|
+
* - `better` dice si subir es bueno (`up`, ingresos) o malo (`down`, gastos): el
|
|
12
|
+
* color de la variación lo sigue.
|
|
13
|
+
* - La variación se calcula sola a partir de `previous` y se dice con texto
|
|
14
|
+
* («sube 12,3 %»), no solo con el color o la flecha.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```html
|
|
18
|
+
* <cb-kpi label="Ingresos del mes" [value]="208330000" [previous]="167440000" [series]="ventas" compareLabel="vs. octubre 2025" />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare class CbKpi {
|
|
22
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
23
|
+
protected readonly fmt: typeof cbFormat;
|
|
24
|
+
protected readonly Math: Math;
|
|
25
|
+
private readonly config;
|
|
26
|
+
protected readonly uid: string;
|
|
27
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
28
|
+
readonly value: _angular_core.InputSignal<number | null>;
|
|
29
|
+
/** Valor del periodo con el que se compara. */
|
|
30
|
+
readonly previous: _angular_core.InputSignal<number | null>;
|
|
31
|
+
/** Texto de la comparación («vs. mes anterior»). */
|
|
32
|
+
readonly compareLabel: _angular_core.InputSignal<string>;
|
|
33
|
+
/** `up`: subir es bueno (ingresos); `down`: subir es malo (gastos); `none`: sin color. */
|
|
34
|
+
readonly better: _angular_core.InputSignal<"up" | "down" | "none">;
|
|
35
|
+
readonly format_: _angular_core.InputSignal<CbKpiFormat>;
|
|
36
|
+
readonly currency: _angular_core.InputSignal<string | undefined>;
|
|
37
|
+
readonly decimals: _angular_core.InputSignal<number | undefined>;
|
|
38
|
+
/** Serie para la minigráfica (del más antiguo al más reciente). */
|
|
39
|
+
readonly series: _angular_core.InputSignal<readonly number[]>;
|
|
40
|
+
/** Meta: muestra el avance del valor hacia ella. */
|
|
41
|
+
readonly target: _angular_core.InputSignal<number | null>;
|
|
42
|
+
private readonly locale;
|
|
43
|
+
protected format(v: number | null): string;
|
|
44
|
+
protected readonly delta: _angular_core.Signal<{
|
|
45
|
+
change: number;
|
|
46
|
+
good: boolean | null;
|
|
47
|
+
text: string;
|
|
48
|
+
spoken: string;
|
|
49
|
+
} | null>;
|
|
50
|
+
protected readonly points: _angular_core.Signal<{
|
|
51
|
+
line: string;
|
|
52
|
+
area: string;
|
|
53
|
+
} | null>;
|
|
54
|
+
protected readonly sparkLabel: _angular_core.Signal<string>;
|
|
55
|
+
protected readonly progress: _angular_core.Signal<{
|
|
56
|
+
pct: number;
|
|
57
|
+
} | null>;
|
|
58
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbKpi, never>;
|
|
59
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbKpi, "cb-kpi", never, { "label": { "alias": "label"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "previous": { "alias": "previous"; "required": false; "isSignal": true; }; "compareLabel": { "alias": "compareLabel"; "required": false; "isSignal": true; }; "better": { "alias": "better"; "required": false; "isSignal": true; }; "format_": { "alias": "format"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "decimals": { "alias": "decimals"; "required": false; "isSignal": true; }; "series": { "alias": "series"; "required": false; "isSignal": true; }; "target": { "alias": "target"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export { CbKpi };
|
|
63
|
+
export type { CbKpiFormat };
|
|
64
|
+
//# sourceMappingURL=caribeng-ui-kpi.d.ts.map
|
|
@@ -2,7 +2,7 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
|
-
* Enlace
|
|
5
|
+
* Enlace. Renderiza un ancla accesible con estilos de marca,
|
|
6
6
|
* soporte de enlaces externos y estado deshabilitado.
|
|
7
7
|
*
|
|
8
8
|
* @example
|
|
@@ -27,4 +27,4 @@ declare class CbLink {
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
export { CbLink };
|
|
30
|
-
//# sourceMappingURL=caribeng-ui-
|
|
30
|
+
//# sourceMappingURL=caribeng-ui-link.d.ts.map
|