@caribeng/ui 22.4.0 → 22.5.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.
Files changed (186) hide show
  1. package/README.md +311 -313
  2. package/fesm2022/caribeng-ui-account-picker.mjs +533 -0
  3. package/fesm2022/caribeng-ui-aging.mjs +488 -0
  4. package/fesm2022/{caribeng-ui-caribe-alert.mjs → caribeng-ui-alert.mjs} +45 -45
  5. package/fesm2022/caribeng-ui-amount.mjs +249 -0
  6. package/fesm2022/caribeng-ui-anchor.mjs +2 -2
  7. package/fesm2022/{caribeng-ui-caribe-animation-lottie.mjs → caribeng-ui-animation-lottie.mjs} +41 -41
  8. package/fesm2022/caribeng-ui-audit-log.mjs +323 -0
  9. package/fesm2022/caribeng-ui-avatar.mjs +2 -2
  10. package/fesm2022/caribeng-ui-breadcrumb.mjs +13 -3
  11. package/fesm2022/{caribeng-ui-caribe-button-group.mjs → caribeng-ui-button-group.mjs} +15 -15
  12. package/fesm2022/caribeng-ui-button.mjs +2 -2
  13. package/fesm2022/{caribeng-ui-caribe-card-content.mjs → caribeng-ui-card-content.mjs} +39 -39
  14. package/fesm2022/{caribeng-ui-caribe-card-move.mjs → caribeng-ui-card-move.mjs} +65 -65
  15. package/fesm2022/{caribeng-ui-caribe-card-primary.mjs → caribeng-ui-card-primary.mjs} +31 -31
  16. package/fesm2022/{caribeng-ui-caribe-card-select.mjs → caribeng-ui-card-select.mjs} +67 -67
  17. package/fesm2022/caribeng-ui-carousel.mjs +2 -2
  18. package/fesm2022/caribeng-ui-cascadeselect.mjs +45 -9
  19. package/fesm2022/caribeng-ui-chat.mjs +2 -2
  20. package/fesm2022/{caribeng-ui-caribe-coachmark.mjs → caribeng-ui-coachmark.mjs} +85 -85
  21. package/fesm2022/caribeng-ui-command-palette.mjs +2 -2
  22. package/fesm2022/caribeng-ui-comments.mjs +864 -0
  23. package/fesm2022/caribeng-ui-datagrid.mjs +1635 -0
  24. package/fesm2022/caribeng-ui-dataview.mjs +2 -2
  25. package/fesm2022/caribeng-ui-datepicker.mjs +2 -2
  26. package/fesm2022/caribeng-ui-document.mjs +495 -0
  27. package/fesm2022/{caribeng-ui-caribe-dots-indicator.mjs → caribeng-ui-dots-indicator.mjs} +41 -41
  28. package/fesm2022/caribeng-ui-dynamic-form.mjs +1581 -0
  29. package/fesm2022/caribeng-ui-editor.mjs +2303 -1311
  30. package/fesm2022/{caribeng-ui-caribe-expansion-panel.mjs → caribeng-ui-expansion-panel.mjs} +39 -39
  31. package/fesm2022/{caribeng-ui-caribe-fab-menu.mjs → caribeng-ui-fab-menu.mjs} +75 -75
  32. package/fesm2022/caribeng-ui-file-card.mjs +2 -2
  33. package/fesm2022/{caribeng-ui-caribe-file-download.mjs → caribeng-ui-file-download.mjs} +63 -63
  34. package/fesm2022/caribeng-ui-financial-report.mjs +380 -0
  35. package/fesm2022/{caribeng-ui-caribe-float-menu.mjs → caribeng-ui-float-menu.mjs} +31 -31
  36. package/fesm2022/caribeng-ui-floatlabel.mjs +2 -2
  37. package/fesm2022/caribeng-ui-flow.mjs +1508 -0
  38. package/fesm2022/{caribeng-ui-caribe-footer.mjs → caribeng-ui-footer.mjs} +19 -19
  39. package/fesm2022/caribeng-ui-gantt.mjs +1094 -0
  40. package/fesm2022/{caribeng-ui-caribe-header.mjs → caribeng-ui-header.mjs} +49 -49
  41. package/fesm2022/{caribeng-ui-caribe-icon-button.mjs → caribeng-ui-icon-button.mjs} +23 -23
  42. package/fesm2022/caribeng-ui-image-cropper.mjs +671 -0
  43. package/fesm2022/caribeng-ui-import-wizard.mjs +746 -0
  44. package/fesm2022/caribeng-ui-infinite-scroll.mjs +226 -0
  45. package/fesm2022/caribeng-ui-input-number.mjs +22 -6
  46. package/fesm2022/{caribeng-ui-caribe-input-search.mjs → caribeng-ui-input-search.mjs} +65 -65
  47. package/fesm2022/{caribeng-ui-caribe-input-token.mjs → caribeng-ui-input-token.mjs} +59 -59
  48. package/fesm2022/caribeng-ui-inputotp.mjs +2 -2
  49. package/fesm2022/caribeng-ui-journal-entry.mjs +340 -0
  50. package/fesm2022/caribeng-ui-kanban.mjs +6 -6
  51. package/fesm2022/caribeng-ui-kpi.mjs +189 -0
  52. package/fesm2022/{caribeng-ui-caribe-link.mjs → caribeng-ui-link.mjs} +37 -37
  53. package/fesm2022/caribeng-ui-masonry.mjs +93 -0
  54. package/fesm2022/caribeng-ui-media-player.mjs +821 -0
  55. package/fesm2022/caribeng-ui-mentions.mjs +2 -2
  56. package/fesm2022/caribeng-ui-notification-center.mjs +636 -0
  57. package/fesm2022/{caribeng-ui-caribe-off-canvas.mjs → caribeng-ui-off-canvas.mjs} +55 -55
  58. package/fesm2022/{caribeng-ui-caribe-onboarding.mjs → caribeng-ui-onboarding.mjs} +105 -105
  59. package/fesm2022/caribeng-ui-orderlist.mjs +2 -2
  60. package/fesm2022/caribeng-ui-pdfviewer.mjs +1755 -25
  61. package/fesm2022/caribeng-ui-period-picker.mjs +637 -0
  62. package/fesm2022/caribeng-ui-phone-input.mjs +2 -2
  63. package/fesm2022/caribeng-ui-picklist.mjs +2 -2
  64. package/fesm2022/caribeng-ui-pivot.mjs +419 -0
  65. package/fesm2022/caribeng-ui-pricing.mjs +2 -2
  66. package/fesm2022/caribeng-ui-rating.mjs +14 -17
  67. package/fesm2022/caribeng-ui-reconciliation.mjs +386 -0
  68. package/fesm2022/caribeng-ui-scheduler.mjs +1027 -0
  69. package/fesm2022/caribeng-ui-select.mjs +2 -2
  70. package/fesm2022/{caribeng-ui-caribe-shortcut.mjs → caribeng-ui-shortcut.mjs} +29 -29
  71. package/fesm2022/caribeng-ui-sidebar.mjs +2 -2
  72. package/fesm2022/caribeng-ui-signature-pad.mjs +654 -0
  73. package/fesm2022/{caribeng-ui-caribe-status.mjs → caribeng-ui-status.mjs} +11 -11
  74. package/fesm2022/{caribeng-ui-caribe-step-indicator.mjs → caribeng-ui-step-indicator.mjs} +53 -53
  75. package/fesm2022/caribeng-ui-stepper.mjs +2 -2
  76. package/fesm2022/caribeng-ui-steps.mjs +2 -2
  77. package/fesm2022/caribeng-ui-table.mjs +323 -15
  78. package/fesm2022/caribeng-ui-tabmenu.mjs +2 -2
  79. package/fesm2022/caribeng-ui-tabs.mjs +2 -2
  80. package/fesm2022/{caribeng-ui-caribe-tag-button.mjs → caribeng-ui-tag-button.mjs} +25 -25
  81. package/fesm2022/caribeng-ui-tag.mjs +2 -2
  82. package/fesm2022/caribeng-ui-tieredmenu.mjs +6 -6
  83. package/fesm2022/{caribeng-ui-caribe-tracker.mjs → caribeng-ui-tracker.mjs} +29 -29
  84. package/fesm2022/{caribeng-ui-caribe-transaction-status.mjs → caribeng-ui-transaction-status.mjs} +11 -11
  85. package/fesm2022/caribeng-ui-treeselect.mjs +44 -9
  86. package/fesm2022/caribeng-ui-treetable.mjs +236 -17
  87. package/fesm2022/{caribeng-ui-caribe-voucher.mjs → caribeng-ui-voucher.mjs} +45 -45
  88. package/fesm2022/caribeng-ui-xlsx.mjs +486 -0
  89. package/fesm2022/caribeng-ui.mjs +1181 -1
  90. package/package.json +217 -177
  91. package/types/caribeng-ui-account-picker.d.ts +142 -0
  92. package/types/caribeng-ui-aging.d.ts +123 -0
  93. package/types/{caribeng-ui-caribe-alert.d.ts → caribeng-ui-alert.d.ts} +2 -2
  94. package/types/caribeng-ui-amount.d.ts +82 -0
  95. package/types/{caribeng-ui-caribe-animation-lottie.d.ts → caribeng-ui-animation-lottie.d.ts} +2 -2
  96. package/types/caribeng-ui-audit-log.d.ts +86 -0
  97. package/types/caribeng-ui-breadcrumb.d.ts +2 -2
  98. package/types/{caribeng-ui-caribe-button-group.d.ts → caribeng-ui-button-group.d.ts} +2 -2
  99. package/types/{caribeng-ui-caribe-card-content.d.ts → caribeng-ui-card-content.d.ts} +2 -2
  100. package/types/{caribeng-ui-caribe-card-move.d.ts → caribeng-ui-card-move.d.ts} +1 -1
  101. package/types/{caribeng-ui-caribe-card-primary.d.ts → caribeng-ui-card-primary.d.ts} +2 -2
  102. package/types/{caribeng-ui-caribe-card-select.d.ts → caribeng-ui-card-select.d.ts} +2 -2
  103. package/types/caribeng-ui-cascadeselect.d.ts +6 -0
  104. package/types/{caribeng-ui-caribe-coachmark.d.ts → caribeng-ui-coachmark.d.ts} +2 -2
  105. package/types/caribeng-ui-comments.d.ts +214 -0
  106. package/types/caribeng-ui-datagrid.d.ts +269 -0
  107. package/types/caribeng-ui-document.d.ts +138 -0
  108. package/types/{caribeng-ui-caribe-dots-indicator.d.ts → caribeng-ui-dots-indicator.d.ts} +2 -2
  109. package/types/caribeng-ui-dynamic-form.d.ts +409 -0
  110. package/types/caribeng-ui-editor.d.ts +110 -12
  111. package/types/{caribeng-ui-caribe-expansion-panel.d.ts → caribeng-ui-expansion-panel.d.ts} +1 -1
  112. package/types/{caribeng-ui-caribe-fab-menu.d.ts → caribeng-ui-fab-menu.d.ts} +2 -2
  113. package/types/{caribeng-ui-caribe-file-download.d.ts → caribeng-ui-file-download.d.ts} +1 -1
  114. package/types/caribeng-ui-financial-report.d.ts +102 -0
  115. package/types/{caribeng-ui-caribe-float-menu.d.ts → caribeng-ui-float-menu.d.ts} +2 -2
  116. package/types/caribeng-ui-flow.d.ts +228 -0
  117. package/types/{caribeng-ui-caribe-footer.d.ts → caribeng-ui-footer.d.ts} +2 -2
  118. package/types/caribeng-ui-gantt.d.ts +244 -0
  119. package/types/{caribeng-ui-caribe-header.d.ts → caribeng-ui-header.d.ts} +2 -2
  120. package/types/{caribeng-ui-caribe-icon-button.d.ts → caribeng-ui-icon-button.d.ts} +2 -2
  121. package/types/{caribeng-ui-caribe-illustration.d.ts → caribeng-ui-illustration.d.ts} +1 -1
  122. package/types/caribeng-ui-image-cropper.d.ts +169 -0
  123. package/types/caribeng-ui-import-wizard.d.ts +149 -0
  124. package/types/caribeng-ui-infinite-scroll.d.ts +75 -0
  125. package/types/caribeng-ui-input-number.d.ts +1 -1
  126. package/types/{caribeng-ui-caribe-input-search.d.ts → caribeng-ui-input-search.d.ts} +2 -2
  127. package/types/{caribeng-ui-caribe-input-token.d.ts → caribeng-ui-input-token.d.ts} +2 -2
  128. package/types/caribeng-ui-journal-entry.d.ts +110 -0
  129. package/types/caribeng-ui-kpi.d.ts +64 -0
  130. package/types/{caribeng-ui-caribe-link.d.ts → caribeng-ui-link.d.ts} +2 -2
  131. package/types/{caribeng-ui-caribe-logo.d.ts → caribeng-ui-logo.d.ts} +1 -1
  132. package/types/caribeng-ui-masonry.d.ts +32 -0
  133. package/types/caribeng-ui-media-player.d.ts +140 -0
  134. package/types/caribeng-ui-notification-center.d.ts +153 -0
  135. package/types/{caribeng-ui-caribe-off-canvas.d.ts → caribeng-ui-off-canvas.d.ts} +2 -2
  136. package/types/{caribeng-ui-caribe-onboarding.d.ts → caribeng-ui-onboarding.d.ts} +2 -2
  137. package/types/caribeng-ui-pdfviewer.d.ts +245 -5
  138. package/types/caribeng-ui-period-picker.d.ts +148 -0
  139. package/types/caribeng-ui-pivot.d.ts +116 -0
  140. package/types/caribeng-ui-reconciliation.d.ts +109 -0
  141. package/types/caribeng-ui-scheduler.d.ts +188 -0
  142. package/types/{caribeng-ui-caribe-shortcut.d.ts → caribeng-ui-shortcut.d.ts} +2 -2
  143. package/types/caribeng-ui-signature-pad.d.ts +151 -0
  144. package/types/{caribeng-ui-caribe-status.d.ts → caribeng-ui-status.d.ts} +2 -2
  145. package/types/{caribeng-ui-caribe-step-indicator.d.ts → caribeng-ui-step-indicator.d.ts} +2 -2
  146. package/types/caribeng-ui-table.d.ts +66 -2
  147. package/types/{caribeng-ui-caribe-tag-button.d.ts → caribeng-ui-tag-button.d.ts} +2 -2
  148. package/types/{caribeng-ui-caribe-tracker.d.ts → caribeng-ui-tracker.d.ts} +2 -2
  149. package/types/{caribeng-ui-caribe-transaction-status.d.ts → caribeng-ui-transaction-status.d.ts} +2 -2
  150. package/types/caribeng-ui-treeselect.d.ts +6 -0
  151. package/types/caribeng-ui-treetable.d.ts +67 -2
  152. package/types/{caribeng-ui-caribe-voucher.d.ts → caribeng-ui-voucher.d.ts} +2 -2
  153. package/types/caribeng-ui-xlsx.d.ts +79 -0
  154. package/types/caribeng-ui.d.ts +711 -2
  155. package/fesm2022/caribeng-ui-caribe-calendar.mjs +0 -92
  156. package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +0 -130
  157. package/fesm2022/caribeng-ui-caribe-data-table.mjs +0 -94
  158. package/fesm2022/caribeng-ui-caribe-file-select.mjs +0 -88
  159. package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +0 -100
  160. package/fesm2022/caribeng-ui-caribe-input-date.mjs +0 -138
  161. package/fesm2022/caribeng-ui-caribe-input-select.mjs +0 -154
  162. package/fesm2022/caribeng-ui-caribe-loader.mjs +0 -48
  163. package/fesm2022/caribeng-ui-caribe-modal.mjs +0 -119
  164. package/fesm2022/caribeng-ui-caribe-pictogram.mjs +0 -52
  165. package/fesm2022/caribeng-ui-caribe-pop-over.mjs +0 -104
  166. package/fesm2022/caribeng-ui-caribe-preloader.mjs +0 -57
  167. package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +0 -84
  168. package/fesm2022/caribeng-ui-caribe-stroke.mjs +0 -69
  169. package/fesm2022/caribeng-ui-caribe-switch.mjs +0 -182
  170. package/types/caribeng-ui-caribe-calendar.d.ts +0 -27
  171. package/types/caribeng-ui-caribe-circle-loading.d.ts +0 -28
  172. package/types/caribeng-ui-caribe-data-table.d.ts +0 -26
  173. package/types/caribeng-ui-caribe-file-select.d.ts +0 -31
  174. package/types/caribeng-ui-caribe-inline-alert.d.ts +0 -28
  175. package/types/caribeng-ui-caribe-input-date.d.ts +0 -40
  176. package/types/caribeng-ui-caribe-input-select.d.ts +0 -47
  177. package/types/caribeng-ui-caribe-loader.d.ts +0 -22
  178. package/types/caribeng-ui-caribe-modal.d.ts +0 -21
  179. package/types/caribeng-ui-caribe-pictogram.d.ts +0 -15
  180. package/types/caribeng-ui-caribe-pop-over.d.ts +0 -17
  181. package/types/caribeng-ui-caribe-preloader.d.ts +0 -24
  182. package/types/caribeng-ui-caribe-progress-bar.d.ts +0 -28
  183. package/types/caribeng-ui-caribe-stroke.d.ts +0 -17
  184. package/types/caribeng-ui-caribe-switch.d.ts +0 -55
  185. /package/fesm2022/{caribeng-ui-caribe-illustration.mjs → caribeng-ui-illustration.mjs} +0 -0
  186. /package/fesm2022/{caribeng-ui-caribe-logo.mjs → caribeng-ui-logo.mjs} +0 -0
@@ -4,6 +4,64 @@ import * as _caribeng_ui from '@caribeng/ui';
4
4
  import { cbFormat } from '@caribeng/ui';
5
5
  import * as pdfjs_dist from 'pdfjs-dist';
6
6
 
7
+ /** Rectángulo en puntos PDF de la página (`[x1, y1, x2, y2]`, con y hacia arriba, sin el giro del visor). */
8
+ type CbPdfRect = readonly [number, number, number, number];
9
+ /** Herramienta de anotación activa. */
10
+ type CbPdfTool = 'none' | 'highlight' | 'note' | 'ink' | 'signature';
11
+ /** Colores de anotación: el claro se usa para resaltar y el oscuro para notas y dibujos. */
12
+ type CbPdfAnnotationColor = 'yellow' | 'green' | 'blue' | 'red';
13
+ declare const CB_PDF_COLORS: Readonly<Record<CbPdfAnnotationColor, {
14
+ light: string;
15
+ dark: string;
16
+ }>>;
17
+ interface CbPdfAnnotationBase {
18
+ readonly id: string;
19
+ /** Página, desde 1. */
20
+ readonly page: number;
21
+ /** Autor (campo `T` del PDF). */
22
+ readonly author?: string;
23
+ /** Fecha de creación (ISO 8601). */
24
+ readonly date?: string;
25
+ }
26
+ /** Texto resaltado, con un comentario opcional (nota emergente en el PDF). */
27
+ interface CbPdfHighlight extends CbPdfAnnotationBase {
28
+ readonly type: 'highlight';
29
+ /** Un rectángulo por línea resaltada. */
30
+ readonly rects: readonly CbPdfRect[];
31
+ readonly color: CbPdfAnnotationColor;
32
+ /** Texto que se resaltó. */
33
+ readonly text: string;
34
+ readonly comment?: string;
35
+ }
36
+ /** Nota de texto visible sobre la página (`FreeText` en el PDF). */
37
+ interface CbPdfNote extends CbPdfAnnotationBase {
38
+ readonly type: 'note';
39
+ readonly rect: CbPdfRect;
40
+ /** Texto; cada salto de línea es una línea en el PDF. */
41
+ readonly text: string;
42
+ readonly color: CbPdfAnnotationColor;
43
+ /** Tamaño de letra en puntos (12 por defecto). */
44
+ readonly fontSize?: number;
45
+ }
46
+ /** Dibujo a mano alzada (`Ink` en el PDF). */
47
+ interface CbPdfInk extends CbPdfAnnotationBase {
48
+ readonly type: 'ink';
49
+ /** Trazos, cada uno como puntos PDF seguidos: `[x1, y1, x2, y2, …]`. */
50
+ readonly paths: readonly (readonly number[])[];
51
+ readonly color: CbPdfAnnotationColor;
52
+ /** Grosor en puntos. */
53
+ readonly thickness: number;
54
+ }
55
+ /** Firma como imagen (`Stamp` en el PDF). */
56
+ interface CbPdfSignature extends CbPdfAnnotationBase {
57
+ readonly type: 'signature';
58
+ readonly rect: CbPdfRect;
59
+ /** Imagen de la firma (data URL PNG, como la da `cb-signature-pad`). */
60
+ readonly image: string;
61
+ }
62
+ /** Anotación del visor. Las coordenadas son puntos PDF: no cambian con el zoom ni con el giro. */
63
+ type CbPdfAnnotation = CbPdfHighlight | CbPdfNote | CbPdfInk | CbPdfSignature;
64
+
7
65
  /** Módulo de pdf.js (`pdfjs-dist`) que usa el visor. */
8
66
  type CbPdfJs = typeof pdfjs_dist;
9
67
  /** Documento abierto por pdf.js. */
@@ -87,13 +145,54 @@ type CbPdfZoom = number | 'page-width' | 'page-fit';
87
145
  /** Giro del documento, en grados. */
88
146
  type CbPdfRotation = 0 | 90 | 180 | 270;
89
147
  type ViewerState = 'idle' | 'loading' | 'password' | 'ready' | 'error';
148
+ type SidebarView = 'thumbnails' | 'outline' | 'annotations';
149
+ /** Una anotación ya colocada en su página dibujada (píxeles CSS). */
150
+ interface Mark {
151
+ readonly a: CbPdfAnnotation;
152
+ readonly box: {
153
+ left: number;
154
+ top: number;
155
+ width: number;
156
+ height: number;
157
+ };
158
+ /** Resaltado: un rectángulo por línea, relativo a `box`. */
159
+ readonly rects?: readonly {
160
+ left: number;
161
+ top: number;
162
+ width: number;
163
+ height: number;
164
+ }[];
165
+ /** Dibujo: trazado SVG relativo a `box`. */
166
+ readonly d?: string;
167
+ readonly strokePx?: number;
168
+ /** Nota: tamaño de letra en píxeles. */
169
+ readonly fontPx?: number;
170
+ readonly light: string;
171
+ readonly dark: string;
172
+ readonly label: string;
173
+ }
174
+ /** Entrada del índice (marcadores) del documento. */
175
+ interface CbPdfOutlineItem {
176
+ readonly title: string;
177
+ /** Destino interno (nombre o destino explícito de pdf.js). */
178
+ readonly dest: string | unknown[] | null;
179
+ /** Enlace externo. */
180
+ readonly url: string | null;
181
+ readonly bold: boolean;
182
+ readonly italic: boolean;
183
+ readonly items: readonly CbPdfOutlineItem[];
184
+ }
185
+ /** Valor de un campo de formulario: texto, casilla marcada u opciones elegidas. */
186
+ type CbPdfFormValue = string | boolean | string[] | null;
90
187
  /**
91
188
  * Visor de PDF sobre [pdf.js](https://mozilla.github.io/pdf.js/) (`pdfjs-dist`,
92
189
  * dependencia opcional que se carga al abrir el primer documento).
93
190
  *
94
191
  * Renderiza las páginas a medida que se ven, con texto seleccionable y
95
192
  * legible por lectores de pantalla, búsqueda (ignora tildes y mayúsculas),
96
- * miniaturas, zoom, giro, descarga, impresión y documentos con contraseña.
193
+ * miniaturas, índice (marcadores), enlaces internos y externos, formularios
194
+ * rellenables (se descargan e imprimen con lo escrito), zoom, giro, descarga,
195
+ * impresión y documentos con contraseña.
97
196
  *
98
197
  * @example
99
198
  * ```html
@@ -126,17 +225,45 @@ declare class CbPdfViewer {
126
225
  readonly showRotate: _angular_core.InputSignalWithTransform<boolean, unknown>;
127
226
  readonly downloadable: _angular_core.InputSignalWithTransform<boolean, unknown>;
128
227
  readonly printable: _angular_core.InputSignalWithTransform<boolean, unknown>;
228
+ /** Pestaña Índice en el panel lateral (si el documento tiene marcadores). */
229
+ readonly showOutline: _angular_core.InputSignalWithTransform<boolean, unknown>;
230
+ /** Campos de formulario rellenables (si no, se pintan como imagen). */
231
+ readonly forms: _angular_core.InputSignalWithTransform<boolean, unknown>;
232
+ /** Enlaces externos del documento: se abren en otra pestaña. `false` los desactiva. */
233
+ readonly externalLinks: _angular_core.InputSignalWithTransform<boolean, unknown>;
234
+ /** Vista del panel lateral. */
235
+ readonly sidebarView: _angular_core.ModelSignal<SidebarView>;
129
236
  /** Nombre accesible del visor (por defecto, "Visor de PDF"). */
130
237
  readonly ariaLabel: _angular_core.InputSignal<string>;
238
+ /** Herramientas para resaltar, poner notas, dibujar y firmar (y la pestaña Anotaciones). */
239
+ readonly annotatable: _angular_core.InputSignalWithTransform<boolean, unknown>;
240
+ /**
241
+ * Anotaciones del usuario, en puntos PDF. Se ven siempre; con `annotatable` se crean, mueven y
242
+ * borran. Al descargar o imprimir se escriben en el PDF como anotaciones estándar.
243
+ */
244
+ readonly annotations: _angular_core.ModelSignal<readonly CbPdfAnnotation[]>;
245
+ /** Herramienta activa (`none`, `highlight`, `note`, `ink`). Escape vuelve a `none`. */
246
+ readonly tool: _angular_core.ModelSignal<CbPdfTool>;
247
+ /** Color de las anotaciones nuevas. */
248
+ readonly annotationColor: _angular_core.ModelSignal<CbPdfAnnotationColor>;
249
+ /** Autor de las anotaciones nuevas (se guarda en el PDF). */
250
+ readonly author: _angular_core.InputSignal<string>;
131
251
  /** Documento abierto. */
132
252
  readonly loaded: _angular_core.OutputEmitterRef<{
133
253
  numPages: number;
134
254
  }>;
135
255
  /** No se pudo abrir el documento. */
136
256
  readonly loadError: _angular_core.OutputEmitterRef<unknown>;
257
+ /** El usuario cambió un campo del formulario (los valores, con `getFormData()`). */
258
+ readonly formChange: _angular_core.OutputEmitterRef<void>;
259
+ /** El usuario creó una anotación. */
260
+ readonly annotationAdd: _angular_core.OutputEmitterRef<CbPdfAnnotation>;
261
+ /** El usuario borró una anotación. */
262
+ readonly annotationRemove: _angular_core.OutputEmitterRef<CbPdfAnnotation>;
137
263
  private readonly engine;
138
264
  private readonly document;
139
265
  private readonly injector;
266
+ private readonly host;
140
267
  private readonly isBrowser;
141
268
  protected readonly uid: string;
142
269
  protected readonly state: _angular_core.WritableSignal<ViewerState>;
@@ -154,11 +281,19 @@ declare class CbPdfViewer {
154
281
  protected readonly matchIndex: _angular_core.WritableSignal<number>;
155
282
  protected readonly searching: _angular_core.WritableSignal<boolean>;
156
283
  protected readonly zoomLevels: number[];
284
+ /** Índice del documento (vacío si no tiene). */
285
+ readonly outline: _angular_core.WritableSignal<readonly CbPdfOutlineItem[]>;
286
+ /** Algún campo del formulario cambió desde que se abrió. */
287
+ readonly formModified: _angular_core.WritableSignal<boolean>;
288
+ private readonly collapsed;
289
+ /** Enlaces del documento (lo que la capa de anotaciones de pdf.js necesita). */
290
+ private readonly linkService;
157
291
  private readonly viewport;
158
292
  private readonly pageEls;
159
293
  private readonly thumbEls;
160
294
  private readonly searchInput;
161
295
  private readonly passwordInput;
296
+ private readonly cardText;
162
297
  /** Factor de zoom efectivo (1 = 100 %). */
163
298
  readonly scale: _angular_core.Signal<number>;
164
299
  /** Tamaño de cada página en píxeles CSS con el zoom y el giro actuales. */
@@ -176,6 +311,34 @@ declare class CbPdfViewer {
176
311
  protected readonly zoomValue: _angular_core.Signal<string>;
177
312
  protected readonly customZoom: _angular_core.Signal<number | null>;
178
313
  protected readonly searchStatus: _angular_core.Signal<string>;
314
+ protected readonly colors: Readonly<Record<CbPdfAnnotationColor, {
315
+ light: string;
316
+ dark: string;
317
+ }>>;
318
+ protected readonly colorNames: CbPdfAnnotationColor[];
319
+ protected readonly selectedId: _angular_core.WritableSignal<string | null>;
320
+ /** Anotación con el editor (texto de la nota o comentario del resaltado) abierto. */
321
+ protected readonly editingId: _angular_core.WritableSignal<string | null>;
322
+ /** Anotación mientras se arrastra o cambia de tamaño (se confirma al soltar). */
323
+ private readonly dragPreview;
324
+ /** Trazo que se está dibujando, en píxeles de la página. */
325
+ protected readonly stroke: _angular_core.WritableSignal<{
326
+ page: number;
327
+ points: number[];
328
+ } | null>;
329
+ protected readonly announcement: _angular_core.WritableSignal<string>;
330
+ private announceFlip;
331
+ protected readonly signing: _angular_core.WritableSignal<boolean>;
332
+ protected readonly signatureValue: _angular_core.WritableSignal<string>;
333
+ private pendingFocus;
334
+ private readonly shownAnnotations;
335
+ /** Anotaciones de cada página, ya colocadas con el zoom y el giro actuales. */
336
+ protected readonly marks: _angular_core.Signal<Mark[][]>;
337
+ protected readonly editingMark: _angular_core.Signal<Mark | null>;
338
+ protected readonly sortedAnnotations: _angular_core.Signal<CbPdfAnnotation[]>;
339
+ protected readonly sidebarTabs: _angular_core.Signal<SidebarView[]>;
340
+ protected readonly activeView: _angular_core.Signal<SidebarView>;
341
+ protected readonly toolHint: _angular_core.Signal<string>;
179
342
  private pdfjs?;
180
343
  private pdf?;
181
344
  private loadingTask?;
@@ -209,11 +372,18 @@ declare class CbPdfViewer {
209
372
  search(query: string): Promise<void>;
210
373
  findNext(): void;
211
374
  findPrevious(): void;
212
- /** Descarga el documento original. */
375
+ /** Lleva a un destino del documento (nombre o destino explícito), con su posición en la página. */
376
+ goToDestination(dest: string | unknown[] | null): Promise<void>;
377
+ /** Valores actuales del formulario, por nombre de campo. */
378
+ getFormData(): Promise<Record<string, CbPdfFormValue>>;
379
+ /** El PDF con lo escrito en el formulario y las anotaciones (o el original si no hay cambios). */
380
+ save(): Promise<Blob | null>;
381
+ /** Descarga el documento (con los datos del formulario y las anotaciones, si los hay). */
213
382
  download(): Promise<void>;
214
383
  /** Imprime el documento (no la página de la aplicación). */
215
384
  print(): Promise<void>;
216
385
  private open;
386
+ private loadOutline;
217
387
  protected submitPassword(event: Event, value: string): void;
218
388
  /** Lee el tamaño real de todas las páginas (pueden ser distintas de la primera). */
219
389
  private measurePages;
@@ -226,6 +396,8 @@ declare class CbPdfViewer {
226
396
  private renderVisible;
227
397
  private renderPage;
228
398
  private unrender;
399
+ /** Enlaces y campos de formulario de la página (capa de anotaciones de pdf.js). */
400
+ private renderAnnotations;
229
401
  private observeThumbs;
230
402
  private renderThumbs;
231
403
  private renderThumb;
@@ -237,10 +409,78 @@ declare class CbPdfViewer {
237
409
  protected onScroll(): void;
238
410
  private mostVisiblePage;
239
411
  private scrollToPage;
412
+ /** Desplaza hasta la altura `top` (puntos PDF, desde abajo) de la página `n`. */
413
+ private scrollToPoint;
240
414
  private readAnchor;
241
415
  private restoreAnchor;
242
416
  private observeResize;
243
417
  private pageEl;
418
+ protected toggleTool(tool: CbPdfTool): void;
419
+ /** Con texto seleccionado lo resalta al momento; si no, activa la herramienta. */
420
+ protected onHighlightTool(): void;
421
+ /** Con el teclado (sin puntero) la nota se pone directamente en la página que se ve. */
422
+ protected onNoteTool(event: MouseEvent): void;
423
+ protected openSignature(): void;
424
+ protected insertSignature(): Promise<void>;
425
+ /** El foco vuelve tras cerrar el diálogo: entonces se lleva a la firma recién puesta. */
426
+ protected onSignatureHide(): void;
427
+ /** Resalta el texto seleccionado en el documento (una anotación por página). */
428
+ protected highlightSelection(): boolean;
429
+ protected onPagesPointerUp(): void;
430
+ protected onMarksPointerDown(event: PointerEvent, page: number): void;
431
+ private finishStroke;
432
+ private addNote;
433
+ /** Añade una anotación, la anuncia y la selecciona. Devuelve su `id`. */
434
+ private addAnnotation;
435
+ /** Borra una anotación y deja el foco en la siguiente de la página (o en el documento). */
436
+ removeAnnotation(annotation: CbPdfAnnotation): void;
437
+ private replaceAnnotation;
438
+ protected select(id: string): void;
439
+ /** Lleva a la anotación (desde la lista del panel) y le da el foco. */
440
+ protected revealAnnotation(annotation: CbPdfAnnotation): void;
441
+ private focusMark;
442
+ protected openEditor(id: string): void;
443
+ protected onCardInput(value: string): void;
444
+ protected onCardKeydown(event: KeyboardEvent): void;
445
+ /** Cierra el editor: una nota vacía se borra y una con texto ajusta su caja a lo escrito. */
446
+ closeEditor(refocus: boolean): void;
447
+ /** La caja de la nota en el PDF es la que ocupa su texto en pantalla. */
448
+ private measureNote;
449
+ protected onMarkPointerDown(event: PointerEvent, annotation: CbPdfAnnotation): void;
450
+ protected onResizePointerDown(event: PointerEvent, annotation: CbPdfAnnotation): void;
451
+ /** Arrastre con vista previa: se confirma al soltar; sin moverse es un clic (`onClick`). */
452
+ private trackPointer;
453
+ protected onMarkKeydown(event: KeyboardEvent, rendered: CbPdfAnnotation): void;
454
+ /** Desplaza `dx`, `dy` píxeles de pantalla (con el giro, en el sentido en que se ven). */
455
+ private translated;
456
+ private announcePosition;
457
+ private announce;
458
+ /** Centro de la parte visible de la página `n`, en píxeles de la página. */
459
+ private visibleSpot;
460
+ private toMark;
461
+ protected labelOf(a: CbPdfAnnotation): string;
462
+ private nounOf;
463
+ protected swatchOf(a: CbPdfAnnotation): string;
464
+ protected colorLabel(color: CbPdfAnnotationColor): string;
465
+ /** Posición del editor: bajo la anotación, sin salirse de la página. */
466
+ protected cardLeft(m: Mark, pageWidth: number): number;
467
+ protected noteHeight(m: Mark): number;
468
+ private newBase;
469
+ private geomOf;
470
+ private viewOf;
471
+ /** Altura (para ordenar de arriba abajo en el panel). */
472
+ private topOf;
473
+ /**
474
+ * Escribe las anotaciones en el `annotationStorage` de pdf.js mientras dura `run` (guardar o
475
+ * tomar la copia para imprimir) y las quita después, sin marcar el formulario como cambiado.
476
+ */
477
+ private withAnnotations;
478
+ protected isCollapsed(path: string): boolean;
479
+ protected toggleOutline(path: string): void;
480
+ protected openOutlineItem(item: CbPdfOutlineItem): void;
481
+ /** Acciones con nombre de los enlaces (NextPage, PrevPage, FirstPage, LastPage). */
482
+ private namedAction;
483
+ protected onFormInput(): void;
244
484
  protected onPageInput(event: Event): void;
245
485
  protected onZoomSelect(value: string): void;
246
486
  protected onThumbKeydown(event: KeyboardEvent, n: number): void;
@@ -250,9 +490,9 @@ declare class CbPdfViewer {
250
490
  private downloadName;
251
491
  private rotatedPoints;
252
492
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbPdfViewer, never>;
253
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPdfViewer, "cb-pdf-viewer", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "password": { "alias": "password"; "required": false; "isSignal": true; }; "withCredentials": { "alias": "withCredentials"; "required": false; "isSignal": true; }; "httpHeaders": { "alias": "httpHeaders"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showThumbnails": { "alias": "showThumbnails"; "required": false; "isSignal": true; }; "showRotate": { "alias": "showRotate"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "printable": { "alias": "printable"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "zoom": "zoomChange"; "rotation": "rotationChange"; "sidebar": "sidebarChange"; "loaded": "loaded"; "loadError": "loadError"; }, never, never, true, never>;
493
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPdfViewer, "cb-pdf-viewer", never, { "src": { "alias": "src"; "required": false; "isSignal": true; }; "fileName": { "alias": "fileName"; "required": false; "isSignal": true; }; "password": { "alias": "password"; "required": false; "isSignal": true; }; "withCredentials": { "alias": "withCredentials"; "required": false; "isSignal": true; }; "httpHeaders": { "alias": "httpHeaders"; "required": false; "isSignal": true; }; "page": { "alias": "page"; "required": false; "isSignal": true; }; "zoom": { "alias": "zoom"; "required": false; "isSignal": true; }; "rotation": { "alias": "rotation"; "required": false; "isSignal": true; }; "sidebar": { "alias": "sidebar"; "required": false; "isSignal": true; }; "showToolbar": { "alias": "showToolbar"; "required": false; "isSignal": true; }; "showSearch": { "alias": "showSearch"; "required": false; "isSignal": true; }; "showThumbnails": { "alias": "showThumbnails"; "required": false; "isSignal": true; }; "showRotate": { "alias": "showRotate"; "required": false; "isSignal": true; }; "downloadable": { "alias": "downloadable"; "required": false; "isSignal": true; }; "printable": { "alias": "printable"; "required": false; "isSignal": true; }; "showOutline": { "alias": "showOutline"; "required": false; "isSignal": true; }; "forms": { "alias": "forms"; "required": false; "isSignal": true; }; "externalLinks": { "alias": "externalLinks"; "required": false; "isSignal": true; }; "sidebarView": { "alias": "sidebarView"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "annotatable": { "alias": "annotatable"; "required": false; "isSignal": true; }; "annotations": { "alias": "annotations"; "required": false; "isSignal": true; }; "tool": { "alias": "tool"; "required": false; "isSignal": true; }; "annotationColor": { "alias": "annotationColor"; "required": false; "isSignal": true; }; "author": { "alias": "author"; "required": false; "isSignal": true; }; }, { "page": "pageChange"; "zoom": "zoomChange"; "rotation": "rotationChange"; "sidebar": "sidebarChange"; "sidebarView": "sidebarViewChange"; "annotations": "annotationsChange"; "tool": "toolChange"; "annotationColor": "annotationColorChange"; "loaded": "loaded"; "loadError": "loadError"; "formChange": "formChange"; "annotationAdd": "annotationAdd"; "annotationRemove": "annotationRemove"; }, never, never, true, never>;
254
494
  }
255
495
 
256
- export { CB_PDF_VIEWER_OPTIONS, CbPdfEngine, CbPdfViewer, provideCbPdfViewer };
257
- export type { CbPdfDocument, CbPdfJs, CbPdfMatch, CbPdfPage, CbPdfRotation, CbPdfSource, CbPdfTextPosition, CbPdfViewerOptions, CbPdfZoom };
496
+ export { CB_PDF_COLORS, CB_PDF_VIEWER_OPTIONS, CbPdfEngine, CbPdfViewer, provideCbPdfViewer };
497
+ export type { CbPdfAnnotation, CbPdfAnnotationColor, CbPdfDocument, CbPdfFormValue, CbPdfHighlight, CbPdfInk, CbPdfJs, CbPdfMatch, CbPdfNote, CbPdfOutlineItem, CbPdfPage, CbPdfRect, CbPdfRotation, CbPdfSignature, CbPdfSource, CbPdfTextPosition, CbPdfTool, CbPdfViewerOptions, CbPdfZoom };
258
498
  //# sourceMappingURL=caribeng-ui-pdfviewer.d.ts.map
@@ -0,0 +1,148 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { CbSize, CbRequiredIndicator } from '@caribeng/ui';
4
+ import { ControlValueAccessor } from '@angular/forms';
5
+ import { ConnectedPosition } from '@angular/cdk/overlay';
6
+
7
+ /** Tipo de periodo contable. */
8
+ type CbPeriodKind = 'month' | 'quarter' | 'year' | 'range';
9
+ /** Periodo contable elegido. */
10
+ interface CbPeriod {
11
+ readonly kind: CbPeriodKind;
12
+ /** Primer día (00:00). */
13
+ readonly from: Date;
14
+ /** Último día (00:00). */
15
+ readonly to: Date;
16
+ /** Clave estable: `2026-10`, `2026-Q3`, `2026` (año fiscal) o `2026-01-01_2026-10-23`. */
17
+ readonly key: string;
18
+ }
19
+ /** Atajos de periodo. */
20
+ type CbPeriodPreset = 'thisMonth' | 'lastMonth' | 'thisQuarter' | 'lastQuarter' | 'yearToDate' | 'thisYear' | 'lastYear';
21
+ /** Mes: `2026-10`. */
22
+ declare function monthPeriod(year: number, month: number): CbPeriod;
23
+ /**
24
+ * Año fiscal que empieza en `startMonth` (0 = enero). Se nombra por el año en
25
+ * que termina (con inicio en julio, el año fiscal 2026 va de jul 2025 a jun 2026).
26
+ */
27
+ declare function fiscalYear(year: number, startMonth?: number): CbPeriod;
28
+ /** Trimestre `q` (1–4) del año fiscal `year`. */
29
+ declare function quarterPeriod(year: number, q: number, startMonth?: number): CbPeriod;
30
+ declare function rangePeriod(from: Date, to: Date): CbPeriod;
31
+ /** Año fiscal al que pertenece una fecha. */
32
+ declare function fiscalYearOf(date: Date, startMonth?: number): number;
33
+ /** Trimestre fiscal (1–4) de una fecha. */
34
+ declare function quarterOf(date: Date, startMonth?: number): number;
35
+ /** Periodo de un atajo respecto a `today`. */
36
+ declare function presetPeriod(preset: CbPeriodPreset, today: Date, startMonth?: number): CbPeriod;
37
+ /** Meses (`AAAA-MM`) que abarca un periodo. */
38
+ declare function monthsOf(period: CbPeriod): string[];
39
+ /** Periodo a partir de su clave (`2026-10`, `2026-Q3`, `2026`, `2026-01-01_2026-03-31`). */
40
+ declare function periodFromKey(key: string, startMonth?: number): CbPeriod | null;
41
+
42
+ type Mode = Exclude<CbPeriodKind, 'range'>;
43
+ interface Cell {
44
+ readonly period: CbPeriod;
45
+ readonly text: string;
46
+ readonly label: string;
47
+ readonly closed: boolean;
48
+ readonly disabled: boolean;
49
+ }
50
+ /**
51
+ * Selector de periodo contable de CaribeNG: mes, trimestre o año (fiscal), con
52
+ * atajos («Mes anterior», «Año a la fecha»…) y periodos cerrados marcados.
53
+ *
54
+ * - `fiscalYearStart` mueve el inicio del año fiscal (trimestres y años incluidos).
55
+ * - `closed` marca meses cerrados con un candado; con `disableClosed` no se eligen
56
+ * (útil al contabilizar), sin él se pueden consultar (útil en informes).
57
+ * - Funciona con Angular Forms o con `[(value)]`; el valor es un `CbPeriod` con
58
+ * `from`, `to`, `kind` y `key`.
59
+ *
60
+ * @example
61
+ * ```html
62
+ * <cb-period-picker label="Periodo" [(value)]="periodo" [closed]="cerrados" />
63
+ * ```
64
+ */
65
+ declare class CbPeriodPicker implements ControlValueAccessor {
66
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
67
+ private readonly injector;
68
+ private readonly uid;
69
+ readonly value: _angular_core.ModelSignal<CbPeriod | null>;
70
+ /** Vista de la cuadrícula: mes, trimestre o año. */
71
+ readonly mode: _angular_core.ModelSignal<Mode>;
72
+ /** Vistas disponibles y su orden. */
73
+ readonly modes: _angular_core.InputSignal<readonly Mode[]>;
74
+ /** Atajos del panel (lista vacía para quitarlos). */
75
+ readonly presets: _angular_core.InputSignal<readonly CbPeriodPreset[]>;
76
+ /** Mes en que empieza el año fiscal (1 = enero). */
77
+ readonly fiscalYearStart: _angular_core.InputSignal<number>;
78
+ /** Meses cerrados (`AAAA-MM`): se marcan con un candado. */
79
+ readonly closed: _angular_core.InputSignal<readonly string[]>;
80
+ /** No deja elegir periodos que incluyan meses cerrados. */
81
+ readonly disableClosed: _angular_core.InputSignalWithTransform<boolean, unknown>;
82
+ /** Primer y último día que se pueden elegir. */
83
+ readonly min: _angular_core.InputSignal<Date | null>;
84
+ readonly max: _angular_core.InputSignal<Date | null>;
85
+ /** «Hoy» para los atajos y el periodo actual (por defecto, la fecha del sistema). */
86
+ readonly today: _angular_core.InputSignal<Date>;
87
+ readonly label: _angular_core.InputSignal<string>;
88
+ readonly hint: _angular_core.InputSignal<string>;
89
+ readonly error: _angular_core.InputSignal<string>;
90
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
91
+ readonly size: _angular_core.InputSignal<CbSize>;
92
+ readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
93
+ readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
94
+ readonly requiredIndicator: _angular_core.InputSignal<CbRequiredIndicator | undefined>;
95
+ readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
96
+ readonly inputId: _angular_core.InputSignal<string>;
97
+ readonly periodChange: _angular_core.OutputEmitterRef<CbPeriod | null>;
98
+ protected readonly fieldState: _caribeng_ui.CbFieldState;
99
+ protected readonly positions: ConnectedPosition[];
100
+ protected readonly open: _angular_core.WritableSignal<boolean>;
101
+ private readonly cvaDisabled;
102
+ protected readonly isDisabled: _angular_core.Signal<boolean>;
103
+ private readonly trigger;
104
+ private readonly startMonth;
105
+ private readonly closedSet;
106
+ /** Año (o primer año de la docena, en la vista de años) que muestra la cuadrícula. */
107
+ protected readonly year: _angular_core.WritableSignal<number>;
108
+ private readonly decadeStart;
109
+ protected readonly cells: _angular_core.Signal<Cell[]>;
110
+ /** Celda con el foco (la elegida, la del periodo actual o la primera). */
111
+ protected readonly focusIndex: _angular_core.WritableSignal<number>;
112
+ protected readonly navTitle: _angular_core.Signal<string>;
113
+ protected readonly describedBy: _angular_core.Signal<string | null>;
114
+ private onChange;
115
+ private onTouched;
116
+ writeValue(value: CbPeriod | null): void;
117
+ registerOnChange(fn: (value: CbPeriod | null) => void): void;
118
+ registerOnTouched(fn: () => void): void;
119
+ setDisabledState(disabled: boolean): void;
120
+ /** Nombre de un periodo: «Octubre de 2026», «T3 2026», «2026», «1 ene – 23 oct 2026». */
121
+ labelOf(period: CbPeriod): string;
122
+ protected modeLabel(mode: Mode): string;
123
+ protected presetLabel(preset: CbPeriodPreset): string;
124
+ protected isClosed(period: CbPeriod): boolean;
125
+ protected isCurrent(period: CbPeriod): boolean;
126
+ protected isPresetActive(preset: CbPeriodPreset): boolean;
127
+ protected presetDisabled(preset: CbPeriodPreset): boolean;
128
+ protected toggle(): void;
129
+ protected onTriggerKeydown(event: KeyboardEvent): void;
130
+ protected onOutsideClick(event: MouseEvent): void;
131
+ protected setMode(mode: Mode): void;
132
+ protected step(delta: number): void;
133
+ protected choose(cell: Cell): void;
134
+ protected choosePreset(preset: CbPeriodPreset): void;
135
+ protected onGridKeydown(event: KeyboardEvent): void;
136
+ private openPanel;
137
+ /** Cierra el panel (y devuelve el foco al botón si se cerró desde dentro). */
138
+ close(refocus: boolean): void;
139
+ private focusCell;
140
+ private setValue;
141
+ private day;
142
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbPeriodPicker, never>;
143
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPeriodPicker, "cb-period-picker", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "mode": { "alias": "mode"; "required": false; "isSignal": true; }; "modes": { "alias": "modes"; "required": false; "isSignal": true; }; "presets": { "alias": "presets"; "required": false; "isSignal": true; }; "fiscalYearStart": { "alias": "fiscalYearStart"; "required": false; "isSignal": true; }; "closed": { "alias": "closed"; "required": false; "isSignal": true; }; "disableClosed": { "alias": "disableClosed"; "required": false; "isSignal": true; }; "min": { "alias": "min"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "today": { "alias": "today"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "requiredIndicator": { "alias": "requiredIndicator"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mode": "modeChange"; "periodChange": "periodChange"; }, never, never, true, never>;
144
+ }
145
+
146
+ export { CbPeriodPicker, fiscalYear, fiscalYearOf, monthPeriod, monthsOf, periodFromKey, presetPeriod, quarterOf, quarterPeriod, rangePeriod };
147
+ export type { CbPeriod, CbPeriodKind, CbPeriodPreset };
148
+ //# sourceMappingURL=caribeng-ui-period-picker.d.ts.map
@@ -0,0 +1,116 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { CbSummary, cbFormat } from '@caribeng/ui';
4
+ import { CbXlsxSheet } from '@caribeng/ui/xlsx';
5
+
6
+ /** Medida de la tabla dinámica: qué campo se agrega y cómo. */
7
+ interface CbPivotValue {
8
+ readonly field: string;
9
+ readonly aggregate?: CbSummary;
10
+ readonly label?: string;
11
+ /** `currency` (por defecto), `number` o `integer`. */
12
+ readonly format?: 'currency' | 'number' | 'integer';
13
+ }
14
+ /** Dimensión disponible para filas o columnas (o medida, si es numérica). */
15
+ interface CbPivotField {
16
+ readonly key: string;
17
+ readonly label: string;
18
+ /** Texto de cada valor (p. ej. nombre de la cuenta a partir del código). */
19
+ readonly format?: (value: unknown) => string;
20
+ }
21
+ /** Nodo de filas: un valor de una dimensión con sus hijos (siguiente dimensión). */
22
+ interface PivotRowNode {
23
+ readonly key: string;
24
+ /** Ruta de valores desde la raíz (`['5135', 'Enel']`). */
25
+ readonly path: readonly string[];
26
+ readonly level: number;
27
+ readonly label: string;
28
+ readonly records: readonly Record<string, unknown>[];
29
+ readonly children: readonly PivotRowNode[];
30
+ }
31
+ /** Valores distintos (combinados) de las dimensiones de columna, ordenados. */
32
+ declare function columnKeys(data: readonly Record<string, unknown>[], fields: readonly string[]): string[];
33
+ /** Árbol de filas agrupando por cada dimensión de `fields`, en orden. */
34
+ declare function rowTree(data: readonly Record<string, unknown>[], fields: readonly string[], labelOf: (field: string, value: string) => string, level?: number, path?: string[]): PivotRowNode[];
35
+ /** Valor agregado de una medida sobre unos registros. */
36
+ declare function aggregate(records: readonly Record<string, unknown>[], value: CbPivotValue): number | null;
37
+
38
+ interface FlatRow {
39
+ readonly node: PivotRowNode;
40
+ readonly hasChildren: boolean;
41
+ }
42
+ /**
43
+ * Tabla dinámica de CaribeNG: cruza los registros por dimensiones de filas y
44
+ * columnas (cuenta, tercero, centro de costo, mes…) y agrega una o varias medidas.
45
+ *
46
+ * - Filas anidadas que se contraen, con subtotales; totales por fila, por columna y general.
47
+ * - Con `configurable`, el usuario elige desde la propia tabla las dimensiones y la medida.
48
+ * - Importes con la moneda de `provideCaribeNG`, exportación a Excel con niveles.
49
+ *
50
+ * @example
51
+ * ```html
52
+ * <cb-pivot [data]="movimientos" [fields]="dimensiones" [(rows)]="filas" [(columns)]="columnas" [values]="[{ field: 'valor' }]" configurable />
53
+ * ```
54
+ */
55
+ declare class CbPivot {
56
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
57
+ protected readonly fmt: typeof cbFormat;
58
+ private readonly config;
59
+ protected readonly uid: string;
60
+ /** Registros a cruzar. */
61
+ readonly data: _angular_core.InputSignal<readonly Record<string, unknown>[]>;
62
+ /** Dimensiones disponibles (clave, etiqueta y formato de sus valores). */
63
+ readonly fields: _angular_core.InputSignal<readonly CbPivotField[]>;
64
+ /** Dimensiones de las filas, de la más general a la más detallada (bidireccional). */
65
+ readonly rows: _angular_core.ModelSignal<readonly string[]>;
66
+ /** Dimensiones de las columnas (bidireccional). */
67
+ readonly columns: _angular_core.ModelSignal<readonly string[]>;
68
+ /** Medidas (campo y agregación); por defecto, suma. */
69
+ readonly values: _angular_core.InputSignal<readonly CbPivotValue[]>;
70
+ /** Selectores de filas, columnas y agregación sobre la tabla. */
71
+ readonly configurable: _angular_core.InputSignalWithTransform<boolean, unknown>;
72
+ /** Las filas con hijos empiezan contraídas. */
73
+ readonly collapsed: _angular_core.InputSignalWithTransform<boolean, unknown>;
74
+ readonly currency: _angular_core.InputSignal<string | undefined>;
75
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
76
+ private readonly collapsedKeys;
77
+ protected readonly aggregateOverride: _angular_core.WritableSignal<CbSummary | null>;
78
+ protected readonly measures: _angular_core.Signal<CbPivotValue[]>;
79
+ protected readonly aggregateValue: _angular_core.Signal<CbSummary>;
80
+ private readonly fieldMap;
81
+ private labelOf;
82
+ protected readonly colKeys: _angular_core.Signal<string[]>;
83
+ protected readonly colKeysWithTotal: _angular_core.Signal<string[]>;
84
+ private readonly tree;
85
+ protected readonly flat: _angular_core.Signal<FlatRow[]>;
86
+ private collapsedSet;
87
+ protected readonly dimensionOptions: _angular_core.Signal<{
88
+ label: string;
89
+ value: string;
90
+ }[]>;
91
+ protected readonly columnOptions: _angular_core.Signal<{
92
+ label: string;
93
+ value: string;
94
+ }[]>;
95
+ protected readonly aggregateOptions: _angular_core.Signal<{
96
+ label: string;
97
+ value: string;
98
+ }[]>;
99
+ protected rowHeader(): string;
100
+ protected colLabel(key: string): string;
101
+ protected measureLabel(m: CbPivotValue): string;
102
+ protected cell(records: readonly Record<string, unknown>[], colKey: string, m: CbPivotValue): number | null;
103
+ protected text(value: number | null, m: CbPivotValue): string;
104
+ protected isCollapsed(key: string): boolean;
105
+ protected toggle(key: string): void;
106
+ protected setRows(keys: readonly string[]): void;
107
+ /** Hoja de Excel con todas las filas (con niveles plegables) y los totales. */
108
+ toExcelSheet(): CbXlsxSheet;
109
+ exportExcel(filename?: string): void;
110
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbPivot, never>;
111
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPivot, "cb-pivot", never, { "data": { "alias": "data"; "required": false; "isSignal": true; }; "fields": { "alias": "fields"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "values": { "alias": "values"; "required": false; "isSignal": true; }; "configurable": { "alias": "configurable"; "required": false; "isSignal": true; }; "collapsed": { "alias": "collapsed"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "rows": "rowsChange"; "columns": "columnsChange"; }, never, never, true, never>;
112
+ }
113
+
114
+ export { CbPivot, aggregate, columnKeys, rowTree };
115
+ export type { CbPivotField, CbPivotValue, PivotRowNode };
116
+ //# sourceMappingURL=caribeng-ui-pivot.d.ts.map