@caribeng/ui 22.1.1 → 22.2.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 (253) hide show
  1. package/README.md +48 -8
  2. package/fesm2022/caribeng-ui-accordion.mjs +2 -2
  3. package/fesm2022/caribeng-ui-anchor.mjs +169 -0
  4. package/fesm2022/caribeng-ui-autocomplete.mjs +10 -8
  5. package/fesm2022/caribeng-ui-avatargroup.mjs +9 -3
  6. package/fesm2022/caribeng-ui-blockui.mjs +12 -4
  7. package/fesm2022/caribeng-ui-breadcrumb.mjs +5 -2
  8. package/fesm2022/caribeng-ui-button.mjs +22 -2
  9. package/fesm2022/caribeng-ui-caribe-alert.mjs +5 -2
  10. package/fesm2022/caribeng-ui-caribe-animation-lottie.mjs +6 -3
  11. package/fesm2022/caribeng-ui-caribe-button-group.mjs +6 -3
  12. package/fesm2022/caribeng-ui-caribe-calendar.mjs +11 -6
  13. package/fesm2022/caribeng-ui-caribe-card-content.mjs +6 -3
  14. package/fesm2022/caribeng-ui-caribe-card-move.mjs +29 -7
  15. package/fesm2022/caribeng-ui-caribe-card-select.mjs +56 -14
  16. package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +10 -7
  17. package/fesm2022/caribeng-ui-caribe-coachmark.mjs +42 -19
  18. package/fesm2022/caribeng-ui-caribe-data-table.mjs +15 -9
  19. package/fesm2022/caribeng-ui-caribe-dots-indicator.mjs +38 -5
  20. package/fesm2022/caribeng-ui-caribe-expansion-panel.mjs +16 -5
  21. package/fesm2022/caribeng-ui-caribe-fab-menu.mjs +56 -7
  22. package/fesm2022/caribeng-ui-caribe-file-download.mjs +68 -27
  23. package/fesm2022/caribeng-ui-caribe-file-select.mjs +22 -17
  24. package/fesm2022/caribeng-ui-caribe-float-menu.mjs +6 -3
  25. package/fesm2022/caribeng-ui-caribe-footer.mjs +8 -4
  26. package/fesm2022/caribeng-ui-caribe-header.mjs +6 -3
  27. package/fesm2022/caribeng-ui-caribe-icon-button.mjs +6 -3
  28. package/fesm2022/caribeng-ui-caribe-illustration.mjs +6 -3
  29. package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +5 -2
  30. package/fesm2022/caribeng-ui-caribe-input-search.mjs +14 -10
  31. package/fesm2022/caribeng-ui-caribe-input-select.mjs +12 -10
  32. package/fesm2022/caribeng-ui-caribe-input-token.mjs +61 -11
  33. package/fesm2022/caribeng-ui-caribe-link.mjs +7 -2
  34. package/fesm2022/caribeng-ui-caribe-loader.mjs +8 -5
  35. package/fesm2022/caribeng-ui-caribe-modal.mjs +32 -16
  36. package/fesm2022/caribeng-ui-caribe-off-canvas.mjs +26 -12
  37. package/fesm2022/caribeng-ui-caribe-onboarding.mjs +44 -19
  38. package/fesm2022/caribeng-ui-caribe-pictogram.mjs +6 -3
  39. package/fesm2022/caribeng-ui-caribe-pop-over.mjs +34 -10
  40. package/fesm2022/caribeng-ui-caribe-preloader.mjs +9 -6
  41. package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +5 -2
  42. package/fesm2022/caribeng-ui-caribe-shortcut.mjs +8 -3
  43. package/fesm2022/caribeng-ui-caribe-step-indicator.mjs +12 -5
  44. package/fesm2022/caribeng-ui-caribe-stroke.mjs +6 -3
  45. package/fesm2022/caribeng-ui-caribe-switch.mjs +5 -3
  46. package/fesm2022/caribeng-ui-caribe-tag-button.mjs +1 -1
  47. package/fesm2022/caribeng-ui-caribe-tracker.mjs +5 -2
  48. package/fesm2022/caribeng-ui-caribe-transaction-status.mjs +1 -1
  49. package/fesm2022/caribeng-ui-caribe-voucher.mjs +11 -8
  50. package/fesm2022/caribeng-ui-carousel.mjs +49 -14
  51. package/fesm2022/caribeng-ui-cascadeselect.mjs +22 -8
  52. package/fesm2022/caribeng-ui-chart.mjs +2598 -303
  53. package/fesm2022/caribeng-ui-chip.mjs +9 -4
  54. package/fesm2022/caribeng-ui-chips.mjs +9 -5
  55. package/fesm2022/caribeng-ui-colorpicker.mjs +9 -7
  56. package/fesm2022/caribeng-ui-confirmdialog.mjs +74 -9
  57. package/fesm2022/caribeng-ui-confirmpopup.mjs +134 -9
  58. package/fesm2022/caribeng-ui-contextmenu.mjs +6 -3
  59. package/fesm2022/caribeng-ui-dataview.mjs +211 -6
  60. package/fesm2022/caribeng-ui-datepicker.mjs +1630 -393
  61. package/fesm2022/caribeng-ui-descriptions.mjs +124 -0
  62. package/fesm2022/caribeng-ui-dialog.mjs +10 -7
  63. package/fesm2022/caribeng-ui-dock.mjs +6 -3
  64. package/fesm2022/caribeng-ui-drawer.mjs +10 -7
  65. package/fesm2022/caribeng-ui-dynamicdialog.mjs +210 -6
  66. package/fesm2022/caribeng-ui-editor.mjs +4392 -243
  67. package/fesm2022/caribeng-ui-empty.mjs +80 -0
  68. package/fesm2022/caribeng-ui-file-card.mjs +2 -2
  69. package/fesm2022/caribeng-ui-fileupload.mjs +96 -19
  70. package/fesm2022/caribeng-ui-floatlabel.mjs +4 -2
  71. package/fesm2022/caribeng-ui-folder-card.mjs +10 -3
  72. package/fesm2022/caribeng-ui-galleria.mjs +76 -45
  73. package/fesm2022/caribeng-ui-image.mjs +52 -29
  74. package/fesm2022/caribeng-ui-inplace.mjs +22 -6
  75. package/fesm2022/caribeng-ui-input-number.mjs +9 -7
  76. package/fesm2022/caribeng-ui-inputgroup.mjs +2 -2
  77. package/fesm2022/caribeng-ui-inputmask.mjs +14 -11
  78. package/fesm2022/caribeng-ui-inputotp.mjs +12 -6
  79. package/fesm2022/caribeng-ui-keyfilter.mjs +72 -0
  80. package/fesm2022/caribeng-ui-listbox.mjs +13 -11
  81. package/fesm2022/caribeng-ui-megamenu.mjs +222 -30
  82. package/fesm2022/caribeng-ui-menu.mjs +11 -5
  83. package/fesm2022/caribeng-ui-menubar.mjs +10 -5
  84. package/fesm2022/caribeng-ui-message.mjs +7 -4
  85. package/fesm2022/caribeng-ui-metergroup.mjs +29 -11
  86. package/fesm2022/caribeng-ui-multiselect.mjs +399 -97
  87. package/fesm2022/caribeng-ui-orderlist.mjs +230 -11
  88. package/fesm2022/caribeng-ui-organizationchart.mjs +12 -7
  89. package/fesm2022/caribeng-ui-paginator.mjs +18 -15
  90. package/fesm2022/caribeng-ui-panel.mjs +5 -2
  91. package/fesm2022/caribeng-ui-panelmenu.mjs +6 -3
  92. package/fesm2022/caribeng-ui-password.mjs +8 -6
  93. package/fesm2022/caribeng-ui-pdfviewer.mjs +1553 -0
  94. package/fesm2022/caribeng-ui-picklist.mjs +251 -14
  95. package/fesm2022/caribeng-ui-pricing.mjs +17 -14
  96. package/fesm2022/caribeng-ui-rating.mjs +7 -3
  97. package/fesm2022/caribeng-ui-repeater.mjs +223 -0
  98. package/fesm2022/caribeng-ui-result.mjs +91 -0
  99. package/fesm2022/caribeng-ui-scrollpanel.mjs +6 -3
  100. package/fesm2022/caribeng-ui-scrolltop.mjs +6 -3
  101. package/fesm2022/caribeng-ui-select.mjs +379 -87
  102. package/fesm2022/caribeng-ui-selectbutton.mjs +2 -2
  103. package/fesm2022/caribeng-ui-slider.mjs +171 -75
  104. package/fesm2022/caribeng-ui-speeddial.mjs +7 -4
  105. package/fesm2022/caribeng-ui-spinner.mjs +5 -2
  106. package/fesm2022/caribeng-ui-splitbutton.mjs +163 -0
  107. package/fesm2022/caribeng-ui-splitter.mjs +5 -2
  108. package/fesm2022/caribeng-ui-statistic.mjs +183 -0
  109. package/fesm2022/caribeng-ui-stepper.mjs +8 -5
  110. package/fesm2022/caribeng-ui-steps.mjs +6 -3
  111. package/fesm2022/caribeng-ui-table.mjs +708 -82
  112. package/fesm2022/caribeng-ui-tabmenu.mjs +6 -3
  113. package/fesm2022/caribeng-ui-tag.mjs +2 -2
  114. package/fesm2022/caribeng-ui-terminal.mjs +45 -9
  115. package/fesm2022/caribeng-ui-themetoggle.mjs +82 -0
  116. package/fesm2022/caribeng-ui-tieredmenu.mjs +9 -6
  117. package/fesm2022/caribeng-ui-timeline.mjs +175 -6
  118. package/fesm2022/caribeng-ui-toast.mjs +7 -4
  119. package/fesm2022/caribeng-ui-togglebutton.mjs +8 -6
  120. package/fesm2022/caribeng-ui-toolbar.mjs +6 -3
  121. package/fesm2022/caribeng-ui-tree.mjs +302 -6
  122. package/fesm2022/caribeng-ui-treeselect.mjs +26 -10
  123. package/fesm2022/caribeng-ui-treetable.mjs +269 -6
  124. package/fesm2022/caribeng-ui-virtualscroller.mjs +123 -10
  125. package/fesm2022/caribeng-ui.mjs +829 -6
  126. package/package.json +53 -3
  127. package/schematics/collection.json +10 -0
  128. package/schematics/ng-add/index.js +125 -0
  129. package/schematics/ng-add/schema.js +2 -0
  130. package/schematics/ng-add/schema.json +66 -0
  131. package/styles/caribeng.css +380 -0
  132. package/styles/scss/_mixins.scss +46 -0
  133. package/styles/scss/_overlay.scss +15 -0
  134. package/styles/scss/_tokens.scss +267 -0
  135. package/styles/scss/_utilities.scss +73 -0
  136. package/styles/scss/_variables.scss +33 -0
  137. package/styles/scss/index.scss +16 -0
  138. package/types/caribeng-ui-anchor.d.ts +50 -0
  139. package/types/caribeng-ui-autocomplete.d.ts +4 -2
  140. package/types/caribeng-ui-avatargroup.d.ts +3 -1
  141. package/types/caribeng-ui-blockui.d.ts +9 -4
  142. package/types/caribeng-ui-breadcrumb.d.ts +3 -0
  143. package/types/caribeng-ui-button.d.ts +9 -1
  144. package/types/caribeng-ui-caribe-alert.d.ts +3 -0
  145. package/types/caribeng-ui-caribe-animation-lottie.d.ts +4 -1
  146. package/types/caribeng-ui-caribe-button-group.d.ts +4 -1
  147. package/types/caribeng-ui-caribe-calendar.d.ts +5 -1
  148. package/types/caribeng-ui-caribe-card-content.d.ts +4 -1
  149. package/types/caribeng-ui-caribe-card-move.d.ts +13 -13
  150. package/types/caribeng-ui-caribe-card-select.d.ts +10 -1
  151. package/types/caribeng-ui-caribe-circle-loading.d.ts +4 -1
  152. package/types/caribeng-ui-caribe-coachmark.d.ts +6 -0
  153. package/types/caribeng-ui-caribe-data-table.d.ts +7 -2
  154. package/types/caribeng-ui-caribe-dots-indicator.d.ts +9 -0
  155. package/types/caribeng-ui-caribe-expansion-panel.d.ts +7 -10
  156. package/types/caribeng-ui-caribe-fab-menu.d.ts +10 -1
  157. package/types/caribeng-ui-caribe-file-download.d.ts +8 -10
  158. package/types/caribeng-ui-caribe-file-select.d.ts +7 -1
  159. package/types/caribeng-ui-caribe-float-menu.d.ts +4 -1
  160. package/types/caribeng-ui-caribe-header.d.ts +3 -0
  161. package/types/caribeng-ui-caribe-icon-button.d.ts +4 -1
  162. package/types/caribeng-ui-caribe-illustration.d.ts +4 -1
  163. package/types/caribeng-ui-caribe-inline-alert.d.ts +3 -0
  164. package/types/caribeng-ui-caribe-input-search.d.ts +4 -2
  165. package/types/caribeng-ui-caribe-input-select.d.ts +4 -2
  166. package/types/caribeng-ui-caribe-input-token.d.ts +16 -1
  167. package/types/caribeng-ui-caribe-link.d.ts +3 -0
  168. package/types/caribeng-ui-caribe-loader.d.ts +4 -1
  169. package/types/caribeng-ui-caribe-modal.d.ts +7 -10
  170. package/types/caribeng-ui-caribe-off-canvas.d.ts +6 -1
  171. package/types/caribeng-ui-caribe-onboarding.d.ts +6 -0
  172. package/types/caribeng-ui-caribe-pictogram.d.ts +4 -1
  173. package/types/caribeng-ui-caribe-pop-over.d.ts +7 -10
  174. package/types/caribeng-ui-caribe-preloader.d.ts +4 -1
  175. package/types/caribeng-ui-caribe-progress-bar.d.ts +3 -0
  176. package/types/caribeng-ui-caribe-shortcut.d.ts +3 -1
  177. package/types/caribeng-ui-caribe-step-indicator.d.ts +6 -0
  178. package/types/caribeng-ui-caribe-stroke.d.ts +4 -1
  179. package/types/caribeng-ui-caribe-switch.d.ts +3 -1
  180. package/types/caribeng-ui-caribe-tracker.d.ts +3 -0
  181. package/types/caribeng-ui-caribe-voucher.d.ts +5 -2
  182. package/types/caribeng-ui-carousel.d.ts +10 -1
  183. package/types/caribeng-ui-cascadeselect.d.ts +7 -2
  184. package/types/caribeng-ui-chart.d.ts +469 -44
  185. package/types/caribeng-ui-chip.d.ts +6 -0
  186. package/types/caribeng-ui-chips.d.ts +6 -2
  187. package/types/caribeng-ui-colorpicker.d.ts +3 -1
  188. package/types/caribeng-ui-confirmdialog.d.ts +25 -6
  189. package/types/caribeng-ui-confirmpopup.d.ts +37 -5
  190. package/types/caribeng-ui-contextmenu.d.ts +4 -1
  191. package/types/caribeng-ui-dataview.d.ts +63 -5
  192. package/types/caribeng-ui-datepicker.d.ts +186 -21
  193. package/types/caribeng-ui-descriptions.d.ts +63 -0
  194. package/types/caribeng-ui-dialog.d.ts +4 -1
  195. package/types/caribeng-ui-dock.d.ts +4 -1
  196. package/types/caribeng-ui-drawer.d.ts +4 -1
  197. package/types/caribeng-ui-dynamicdialog.d.ts +93 -3
  198. package/types/caribeng-ui-editor.d.ts +486 -13
  199. package/types/caribeng-ui-empty.d.ts +34 -0
  200. package/types/caribeng-ui-file-card.d.ts +1 -1
  201. package/types/caribeng-ui-fileupload.d.ts +27 -4
  202. package/types/caribeng-ui-folder-card.d.ts +4 -1
  203. package/types/caribeng-ui-galleria.d.ts +9 -0
  204. package/types/caribeng-ui-image.d.ts +10 -0
  205. package/types/caribeng-ui-inplace.d.ts +8 -0
  206. package/types/caribeng-ui-input-number.d.ts +3 -1
  207. package/types/caribeng-ui-inputmask.d.ts +5 -0
  208. package/types/caribeng-ui-inputotp.d.ts +7 -2
  209. package/types/caribeng-ui-keyfilter.d.ts +30 -0
  210. package/types/caribeng-ui-listbox.d.ts +5 -3
  211. package/types/caribeng-ui-megamenu.d.ts +26 -2
  212. package/types/caribeng-ui-menu.d.ts +7 -2
  213. package/types/caribeng-ui-menubar.d.ts +5 -1
  214. package/types/caribeng-ui-message.d.ts +3 -0
  215. package/types/caribeng-ui-metergroup.d.ts +9 -1
  216. package/types/caribeng-ui-multiselect.d.ts +71 -10
  217. package/types/caribeng-ui-orderlist.d.ts +58 -6
  218. package/types/caribeng-ui-organizationchart.d.ts +7 -1
  219. package/types/caribeng-ui-paginator.d.ts +3 -0
  220. package/types/caribeng-ui-panel.d.ts +3 -0
  221. package/types/caribeng-ui-panelmenu.d.ts +4 -1
  222. package/types/caribeng-ui-password.d.ts +4 -2
  223. package/types/caribeng-ui-pdfviewer.d.ts +258 -0
  224. package/types/caribeng-ui-picklist.d.ts +67 -7
  225. package/types/caribeng-ui-pricing.d.ts +8 -5
  226. package/types/caribeng-ui-rating.d.ts +6 -2
  227. package/types/caribeng-ui-repeater.d.ts +79 -0
  228. package/types/caribeng-ui-result.d.ts +35 -0
  229. package/types/caribeng-ui-scrollpanel.d.ts +4 -1
  230. package/types/caribeng-ui-scrolltop.d.ts +4 -1
  231. package/types/caribeng-ui-select.d.ts +73 -9
  232. package/types/caribeng-ui-slider.d.ts +63 -10
  233. package/types/caribeng-ui-speeddial.d.ts +5 -2
  234. package/types/caribeng-ui-spinner.d.ts +3 -0
  235. package/types/caribeng-ui-splitbutton.d.ts +49 -0
  236. package/types/caribeng-ui-splitter.d.ts +3 -0
  237. package/types/caribeng-ui-statistic.d.ts +65 -0
  238. package/types/caribeng-ui-stepper.d.ts +3 -0
  239. package/types/caribeng-ui-steps.d.ts +4 -1
  240. package/types/caribeng-ui-table.d.ts +184 -16
  241. package/types/caribeng-ui-tabmenu.d.ts +4 -1
  242. package/types/caribeng-ui-terminal.d.ts +10 -0
  243. package/types/caribeng-ui-themetoggle.d.ts +32 -0
  244. package/types/caribeng-ui-tieredmenu.d.ts +5 -2
  245. package/types/caribeng-ui-timeline.d.ts +63 -4
  246. package/types/caribeng-ui-toast.d.ts +3 -0
  247. package/types/caribeng-ui-togglebutton.d.ts +5 -3
  248. package/types/caribeng-ui-toolbar.d.ts +7 -4
  249. package/types/caribeng-ui-tree.d.ts +76 -4
  250. package/types/caribeng-ui-treeselect.d.ts +10 -2
  251. package/types/caribeng-ui-treetable.d.ts +68 -4
  252. package/types/caribeng-ui-virtualscroller.d.ts +45 -5
  253. package/types/caribeng-ui.d.ts +501 -12
@@ -0,0 +1,34 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+
4
+ /**
5
+ * Empty de CaribeNG: estado vacío con icono o imagen, mensaje y acciones
6
+ * opcionales (proyectadas). Úsalo cuando una lista, búsqueda o tabla no tiene
7
+ * datos.
8
+ *
9
+ * @example
10
+ * ```html
11
+ * <cb-empty title="Aún no tienes movimientos" description="Cuando hagas tu primera compra aparecerá aquí.">
12
+ * <cb-button size="sm">Hacer una transferencia</cb-button>
13
+ * </cb-empty>
14
+ * ```
15
+ */
16
+ declare class CbEmpty {
17
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
18
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
19
+ /** Mensaje principal. Por defecto, "Sin datos" del idioma activo. */
20
+ readonly title: _angular_core.InputSignal<string | undefined>;
21
+ /** Texto de apoyo opcional. */
22
+ readonly description: _angular_core.InputSignal<string>;
23
+ /** Icono (se ignora si hay `image`). */
24
+ readonly icon: _angular_core.InputSignal<string>;
25
+ /** Ilustración opcional (decorativa). */
26
+ readonly image: _angular_core.InputSignal<string>;
27
+ /** `sm` para tablas, listas y paneles pequeños. */
28
+ readonly size: _angular_core.InputSignal<"sm" | "md">;
29
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbEmpty, never>;
30
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbEmpty, "cb-empty", never, { "title": { "alias": "title"; "required": false; "isSignal": true; }; "description": { "alias": "description"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
31
+ }
32
+
33
+ export { CbEmpty };
34
+ //# sourceMappingURL=caribeng-ui-empty.d.ts.map
@@ -24,7 +24,7 @@ declare class CbFileCard {
24
24
  readonly value: _angular_core.InputSignal<string>;
25
25
  /** Valor secundario a la derecha (p. ej. "26.4 GB"). */
26
26
  readonly valueSub: _angular_core.InputSignal<string>;
27
- /** Fondo tintado derivado del color (con alpha). */
27
+ /** Fondo tintado derivado del color (cualquier color CSS: hex, rgb(), var(--…)). */
28
28
  protected tintBg(): string | null;
29
29
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbFileCard, never>;
30
30
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbFileCard, "cb-file-card", never, { "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "valueSub": { "alias": "valueSub"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
@@ -1,22 +1,42 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { cbFormat } from '@caribeng/ui';
2
4
 
3
5
  interface CbFileUploadEvent {
4
6
  files: File[];
5
7
  }
8
+ /** Archivos descartados al elegirlos o soltarlos, con el motivo. */
9
+ interface CbFileRejectEvent {
10
+ files: {
11
+ file: File;
12
+ reason: 'size' | 'type';
13
+ }[];
14
+ }
6
15
  /**
7
16
  * FileUpload de CaribeNG: selector de archivos con arrastrar y soltar,
8
17
  * validación de tamaño máximo y lista de archivos seleccionados.
9
18
  */
10
19
  declare class CbFileUpload {
20
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
21
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
22
+ /** Rellena `{0}`, `{1}`… de un texto traducido. */
23
+ protected readonly fmt: typeof cbFormat;
11
24
  readonly accept: _angular_core.InputSignal<string>;
12
25
  readonly multiple: _angular_core.InputSignal<boolean>;
13
26
  readonly maxFileSize: _angular_core.InputSignal<number | null>;
14
27
  readonly disabled: _angular_core.InputSignal<boolean>;
15
- readonly chooseLabel: _angular_core.InputSignal<string>;
16
- readonly uploadLabel: _angular_core.InputSignal<string>;
28
+ readonly chooseLabel: _angular_core.InputSignal<string | undefined>;
29
+ readonly uploadLabel: _angular_core.InputSignal<string | undefined>;
17
30
  readonly selectFiles: _angular_core.OutputEmitterRef<CbFileUploadEvent>;
18
31
  readonly uploadHandler: _angular_core.OutputEmitterRef<CbFileUploadEvent>;
32
+ /** Se emite con los archivos descartados por tamaño (`maxFileSize`) o tipo (`accept`). */
33
+ readonly rejectFiles: _angular_core.OutputEmitterRef<CbFileRejectEvent>;
19
34
  readonly files: _angular_core.WritableSignal<File[]>;
35
+ /** Archivos descartados en la última selección (se muestran como aviso). */
36
+ protected readonly rejected: _angular_core.WritableSignal<{
37
+ file: File;
38
+ reason: "size" | "type";
39
+ }[]>;
20
40
  readonly dragging: _angular_core.WritableSignal<boolean>;
21
41
  private readonly fileInputRef;
22
42
  openPicker(): void;
@@ -24,15 +44,18 @@ declare class CbFileUpload {
24
44
  protected onDragOver(event: DragEvent): void;
25
45
  protected onDragLeave(event: DragEvent): void;
26
46
  protected onDrop(event: DragEvent): void;
47
+ /** Añade archivos validando `accept` y `maxFileSize`; ignora los repetidos. */
27
48
  addFiles(incoming: File[]): void;
28
49
  removeAt(index: number): void;
29
50
  clear(): void;
30
51
  triggerUpload(): void;
31
52
  protected formatSize(bytes: number): string;
53
+ /** Comprueba `accept` (extensiones `.pdf`, tipos `image/png` o comodines `image/*`). */
54
+ private isAccepted;
32
55
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbFileUpload, never>;
33
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbFileUpload, "cb-file-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "chooseLabel": { "alias": "chooseLabel"; "required": false; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": false; "isSignal": true; }; }, { "selectFiles": "selectFiles"; "uploadHandler": "uploadHandler"; }, never, never, true, never>;
56
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbFileUpload, "cb-file-upload", never, { "accept": { "alias": "accept"; "required": false; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; "maxFileSize": { "alias": "maxFileSize"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "chooseLabel": { "alias": "chooseLabel"; "required": false; "isSignal": true; }; "uploadLabel": { "alias": "uploadLabel"; "required": false; "isSignal": true; }; }, { "selectFiles": "selectFiles"; "uploadHandler": "uploadHandler"; "rejectFiles": "rejectFiles"; }, never, never, true, never>;
34
57
  }
35
58
 
36
59
  export { CbFileUpload };
37
- export type { CbFileUploadEvent };
60
+ export type { CbFileRejectEvent, CbFileUploadEvent };
38
61
  //# sourceMappingURL=caribeng-ui-fileupload.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  /**
4
5
  * Tarjeta de carpeta de CaribeNG: icono de carpeta, nombre y una fila con
@@ -12,12 +13,14 @@ import * as _angular_core from '@angular/core';
12
13
  * ```
13
14
  */
14
15
  declare class CbFolderCard {
16
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
17
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
15
18
  /** Nombre de la carpeta. */
16
19
  readonly name: _angular_core.InputSignal<string>;
17
20
  /** Número de archivos (texto o número). */
18
21
  readonly files: _angular_core.InputSignal<string | number>;
19
22
  /** Etiqueta tras el número de archivos. */
20
- readonly filesLabel: _angular_core.InputSignal<string>;
23
+ readonly filesLabel: _angular_core.InputSignal<string | undefined>;
21
24
  /** Tamaño mostrado a la derecha. */
22
25
  readonly size: _angular_core.InputSignal<string>;
23
26
  /** Color del icono de carpeta. */
@@ -1,4 +1,6 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { cbFormat } from '@caribeng/ui';
2
4
 
3
5
  interface CbGalleriaItem {
4
6
  itemImageSrc: string;
@@ -11,13 +13,20 @@ interface CbGalleriaItem {
11
13
  * barra de miniaturas seleccionables.
12
14
  */
13
15
  declare class CbGalleria {
16
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
17
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
18
+ /** Rellena `{0}`, `{1}`… de un texto traducido. */
19
+ protected readonly fmt: typeof cbFormat;
14
20
  readonly value: _angular_core.InputSignal<CbGalleriaItem[]>;
15
21
  readonly showThumbnails: _angular_core.InputSignal<boolean>;
16
22
  readonly circular: _angular_core.InputSignal<boolean>;
17
23
  readonly activeIndex: _angular_core.ModelSignal<number>;
24
+ private readonly host;
18
25
  protected readonly activeItem: _angular_core.Signal<CbGalleriaItem | null>;
19
26
  prev(): void;
20
27
  next(): void;
28
+ /** Miniaturas (patrón *tabs*): flechas, Inicio y Fin cambian de imagen y mueven el foco. */
29
+ protected onThumbKeydown(event: KeyboardEvent): void;
21
30
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbGalleria, never>;
22
31
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbGalleria, "cb-galleria", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "showThumbnails": { "alias": "showThumbnails"; "required": false; "isSignal": true; }; "circular": { "alias": "circular"; "required": false; "isSignal": true; }; "activeIndex": { "alias": "activeIndex"; "required": false; "isSignal": true; }; }, { "activeIndex": "activeIndexChange"; }, never, never, true, never>;
23
32
  }
@@ -1,16 +1,25 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { cbFormat } from '@caribeng/ui';
2
4
 
3
5
  /**
4
6
  * Image de CaribeNG: imagen con previsualización lightbox accesible y controles
5
7
  * de zoom/rotación.
6
8
  */
7
9
  declare class CbImage {
10
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
11
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
12
+ /** Rellena `{0}`, `{1}`… de un texto traducido. */
13
+ protected readonly fmt: typeof cbFormat;
8
14
  readonly src: _angular_core.InputSignal<string>;
9
15
  readonly alt: _angular_core.InputSignal<string>;
10
16
  readonly width: _angular_core.InputSignal<string>;
11
17
  readonly height: _angular_core.InputSignal<string>;
12
18
  readonly preview: _angular_core.InputSignal<boolean>;
13
19
  private readonly lightboxEl;
20
+ private readonly overlayBtn;
21
+ private readonly closeBtn;
22
+ private readonly injector;
14
23
  readonly lightboxOpen: _angular_core.WritableSignal<boolean>;
15
24
  readonly scale: _angular_core.WritableSignal<number>;
16
25
  readonly rotation: _angular_core.WritableSignal<number>;
@@ -19,6 +28,7 @@ declare class CbImage {
19
28
  /** Transform combinado (rotación + escala + volteo) de la imagen. */
20
29
  readonly transform: _angular_core.Signal<string>;
21
30
  openPreview(): void;
31
+ /** Cierra la previsualización y devuelve el foco al botón que la abrió. */
22
32
  closePreview(): void;
23
33
  zoomIn(): void;
24
34
  zoomOut(): void;
@@ -1,15 +1,23 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  /**
4
5
  * Inplace de CaribeNG: alterna entre una vista previa (`[cb-inplace-display]`)
5
6
  * y el contenido editable o completo (`[cb-inplace-content]`) al hacer clic.
6
7
  */
7
8
  declare class CbInplace {
9
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
10
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
8
11
  readonly closable: _angular_core.InputSignal<boolean>;
9
12
  readonly disabled: _angular_core.InputSignal<boolean>;
10
13
  readonly active: _angular_core.ModelSignal<boolean>;
14
+ private readonly host;
15
+ private readonly injector;
16
+ /** Muestra el contenido y mueve el foco a su primer elemento enfocable. */
11
17
  open(): void;
18
+ /** Vuelve a la vista previa y devuelve el foco a ella. */
12
19
  close(): void;
20
+ private focusAfterRender;
13
21
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbInplace, never>;
14
22
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbInplace, "cb-inplace", never, { "closable": { "alias": "closable"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "active": { "alias": "active"; "required": false; "isSignal": true; }; }, { "active": "activeChange"; }, never, ["[cb-inplace-display]", "[cb-inplace-content]"], true, never>;
15
23
  }
@@ -1,6 +1,6 @@
1
+ import * as _angular_core from '@angular/core';
1
2
  import * as _caribeng_ui from '@caribeng/ui';
2
3
  import { CbSize, CbRequiredIndicator } from '@caribeng/ui';
3
- import * as _angular_core from '@angular/core';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
 
6
6
  /**
@@ -15,6 +15,8 @@ import { ControlValueAccessor } from '@angular/forms';
15
15
  * ```
16
16
  */
17
17
  declare class CbInputNumber implements ControlValueAccessor {
18
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
19
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
18
20
  /** Valor numérico (two-way opcional fuera de Angular Forms). */
19
21
  readonly value: _angular_core.ModelSignal<number | null>;
20
22
  readonly label: _angular_core.InputSignal<string>;
@@ -30,6 +30,11 @@ declare class CbInputMask implements ControlValueAccessor {
30
30
  setDisabledState(isDisabled: boolean): void;
31
31
  protected onInput(event: Event): void;
32
32
  protected onBlur(): void;
33
+ /**
34
+ * Aplica la máscara. Los literales (`-`, `(`, espacios…) se escriben solo
35
+ * cuando llega el carácter siguiente: así un literal inicial aparece y
36
+ * Backspace puede borrar el último literal sin que vuelva a añadirse.
37
+ */
33
38
  private applyMask;
34
39
  private matchesToken;
35
40
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbInputMask, never>;
@@ -1,5 +1,6 @@
1
- import * as _caribeng_ui from '@caribeng/ui';
2
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { cbFormat } from '@caribeng/ui';
3
4
  import { ControlValueAccessor } from '@angular/forms';
4
5
 
5
6
  /**
@@ -7,6 +8,10 @@ import { ControlValueAccessor } from '@angular/forms';
7
8
  * con avance automático de foco, pegado desde portapapeles e integración CVA.
8
9
  */
9
10
  declare class CbInputOtp implements ControlValueAccessor {
11
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
12
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
13
+ /** Rellena `{0}`, `{1}`… de un texto traducido. */
14
+ protected readonly fmt: typeof cbFormat;
10
15
  private readonly hostRef;
11
16
  readonly length: _angular_core.InputSignal<number>;
12
17
  readonly integerOnly: _angular_core.InputSignal<boolean>;
@@ -16,7 +21,7 @@ declare class CbInputOtp implements ControlValueAccessor {
16
21
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
17
22
  /** Estado de validación: inputs manuales + estado de Angular Forms. */
18
23
  protected readonly fieldState: _caribeng_ui.CbFieldState;
19
- readonly ariaLabel: _angular_core.InputSignal<string>;
24
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
20
25
  readonly value: _angular_core.ModelSignal<string>;
21
26
  private readonly cvaDisabled;
22
27
  protected readonly isDisabled: _angular_core.Signal<boolean>;
@@ -0,0 +1,30 @@
1
+ import * as i0 from '@angular/core';
2
+
3
+ /** Filtros predefinidos (como el KeyFilter de PrimeNG). */
4
+ type CbKeyFilterPreset = 'int' | 'pint' | 'num' | 'pnum' | 'money' | 'alpha' | 'alphanum' | 'hex' | 'email';
5
+ /**
6
+ * KeyFilter de CaribeNG: limita los caracteres que se pueden escribir en un
7
+ * `input` o `textarea`. Usa el evento `beforeinput`, así filtra lo tecleado,
8
+ * lo pegado y lo autocompletado (no solo las teclas).
9
+ *
10
+ * Solo restringe la entrada: valida el formato final con Validators en el formulario.
11
+ *
12
+ * @example
13
+ * ```html
14
+ * <input cbKeyFilter="pint" inputmode="numeric" aria-label="Número de cédula" />
15
+ * <input [cbKeyFilter]="/[A-Z0-9]/" aria-label="Placa" />
16
+ * ```
17
+ */
18
+ declare class CbKeyFilter {
19
+ /** Filtro predefinido o expresión que debe cumplir cada carácter. */
20
+ readonly cbKeyFilter: i0.InputSignal<RegExp | CbKeyFilterPreset>;
21
+ /** ¿Se acepta este texto? (cada carácter debe cumplir el filtro). */
22
+ allows(text: string): boolean;
23
+ protected onBeforeInput(e: Event): void;
24
+ static ɵfac: i0.ɵɵFactoryDeclaration<CbKeyFilter, never>;
25
+ static ɵdir: i0.ɵɵDirectiveDeclaration<CbKeyFilter, "input[cbKeyFilter], textarea[cbKeyFilter]", never, { "cbKeyFilter": { "alias": "cbKeyFilter"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
26
+ }
27
+
28
+ export { CbKeyFilter };
29
+ export type { CbKeyFilterPreset };
30
+ //# sourceMappingURL=caribeng-ui-keyfilter.d.ts.map
@@ -1,5 +1,5 @@
1
- import * as _caribeng_ui from '@caribeng/ui';
2
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
3
  import { ControlValueAccessor } from '@angular/forms';
4
4
 
5
5
  /**
@@ -14,14 +14,16 @@ import { ControlValueAccessor } from '@angular/forms';
14
14
  * ```
15
15
  */
16
16
  declare class CbListBox implements ControlValueAccessor {
17
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
18
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
17
19
  readonly options: _angular_core.InputSignal<readonly unknown[]>;
18
20
  readonly optionLabel: _angular_core.InputSignal<string>;
19
21
  readonly optionValue: _angular_core.InputSignal<string | null>;
20
22
  readonly optionDisabled: _angular_core.InputSignal<string>;
21
23
  readonly multiple: _angular_core.InputSignalWithTransform<boolean, unknown>;
22
24
  readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
23
- readonly filterPlaceholder: _angular_core.InputSignal<string>;
24
- readonly emptyMessage: _angular_core.InputSignal<string>;
25
+ readonly filterPlaceholder: _angular_core.InputSignal<string | undefined>;
26
+ readonly emptyMessage: _angular_core.InputSignal<string | undefined>;
25
27
  readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
26
28
  /** Marca visual y ARIA de estado inválido (también se activa con Angular Forms). */
27
29
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  interface CbMegaMenuLink {
4
5
  label: string;
@@ -15,17 +16,40 @@ interface CbMegaMenuItem {
15
16
  icon?: string;
16
17
  groups: readonly CbMegaMenuGroup[];
17
18
  }
18
- /** Horizontal category menu with multi-column panels. */
19
+ /**
20
+ * Menú de categorías con paneles de varias columnas (patrón *disclosure
21
+ * navigation* de WAI-ARIA). Teclado: ←/→ entre categorías, ↓ abre el panel y
22
+ * entra al primer enlace, ↑/↓ recorre los enlaces y Escape cierra devolviendo
23
+ * el foco a la categoría.
24
+ *
25
+ * @example
26
+ * ```html
27
+ * <cb-megamenu [items]="categorias" (itemSelect)="navegar($event)" />
28
+ * ```
29
+ */
19
30
  declare class CbMegaMenu {
31
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
20
32
  private readonly host;
33
+ private readonly injector;
34
+ protected readonly panelId: string;
35
+ /** Categorías con sus grupos de enlaces. */
21
36
  readonly items: _angular_core.InputSignal<readonly CbMegaMenuItem[]>;
22
- readonly ariaLabel: _angular_core.InputSignal<string>;
37
+ /** Nombre accesible de la navegación. Por defecto, "Categorías" del idioma activo. */
38
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
39
+ /** Se emite al elegir un enlace. */
23
40
  readonly itemSelect: _angular_core.OutputEmitterRef<CbMegaMenuLink>;
24
41
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
25
42
  toggle(index: number): void;
26
43
  select(link: CbMegaMenuLink): void;
27
44
  close(): void;
28
45
  onDocumentClick(event: MouseEvent): void;
46
+ /** Al salir el foco del componente (p. ej. con Tab), se cierra el panel. */
47
+ onFocusOut(event: FocusEvent): void;
48
+ protected onTriggerKeydown(event: KeyboardEvent, index: number): void;
49
+ protected onPanelKeydown(event: KeyboardEvent): void;
50
+ /** Enlaces navegables del panel abierto, en orden de lectura. */
51
+ private links;
52
+ private focusTrigger;
29
53
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbMegaMenu, never>;
30
54
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMegaMenu, "cb-megamenu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
31
55
  }
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  interface CbMenuItem {
4
5
  label: string;
@@ -10,12 +11,16 @@ interface CbMenuItem {
10
11
  }
11
12
  /** Popup menu anchored to any trigger element. */
12
13
  declare class CbMenu {
14
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
15
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
13
16
  private readonly overlay;
14
17
  private readonly vcr;
15
18
  private readonly destroyRef;
16
19
  readonly items: _angular_core.InputSignal<readonly CbMenuItem[]>;
17
- readonly ariaLabel: _angular_core.InputSignal<string>;
20
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
18
21
  readonly itemSelect: _angular_core.OutputEmitterRef<CbMenuItem>;
22
+ /** Se emite al cerrarse el menú (clic fuera, Escape o al elegir una opción). */
23
+ readonly hidden: _angular_core.OutputEmitterRef<void>;
19
24
  private readonly content;
20
25
  private overlayRef;
21
26
  private trigger;
@@ -29,7 +34,7 @@ declare class CbMenu {
29
34
  onPanelClick(event: MouseEvent): void;
30
35
  private onKeydown;
31
36
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbMenu, never>;
32
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMenu, "cb-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; }, never, never, true, never>;
37
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMenu, "cb-menu", never, { "items": { "alias": "items"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "itemSelect": "itemSelect"; "hidden": "hidden"; }, never, never, true, never>;
33
38
  }
34
39
 
35
40
  export { CbMenu };
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
 
3
4
  interface CbMenubarItem {
4
5
  label: string;
@@ -10,9 +11,12 @@ interface CbMenubarItem {
10
11
  }
11
12
  /** Horizontal navigation bar with optional one-level dropdown menus. */
12
13
  declare class CbMenubar {
14
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
15
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
13
16
  private readonly host;
17
+ private readonly injector;
14
18
  readonly items: _angular_core.InputSignal<readonly CbMenubarItem[]>;
15
- readonly ariaLabel: _angular_core.InputSignal<string>;
19
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
16
20
  readonly itemSelect: _angular_core.OutputEmitterRef<CbMenubarItem>;
17
21
  protected readonly openIndex: _angular_core.WritableSignal<number | null>;
18
22
  toggle(index: number): void;
@@ -1,4 +1,5 @@
1
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
2
3
  import { CbSeverity } from '@caribeng/ui';
3
4
 
4
5
  /**
@@ -11,6 +12,8 @@ import { CbSeverity } from '@caribeng/ui';
11
12
  * ```
12
13
  */
13
14
  declare class CbMessage {
15
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
16
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
14
17
  readonly severity: _angular_core.InputSignal<CbSeverity>;
15
18
  /** Muestra el botón de cerrar. */
16
19
  readonly closable: _angular_core.InputSignalWithTransform<boolean, unknown>;
@@ -12,11 +12,19 @@ interface CbMeterItem {
12
12
  declare class CbMeterGroup {
13
13
  readonly values: _angular_core.InputSignal<CbMeterItem[]>;
14
14
  readonly max: _angular_core.InputSignal<number>;
15
+ /** Nombre accesible del medidor (p. ej. "Almacenamiento"). */
16
+ readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
17
+ /** Suma de los valores (valor actual del `role="meter"`). */
18
+ protected readonly total: _angular_core.Signal<number>;
19
+ /** Desglose legible para el lector de pantalla ("Apps 16 %, Fotos 8 %"). */
20
+ protected readonly valueText: _angular_core.Signal<string>;
15
21
  private readonly palette;
16
22
  protected percent(val: number): number;
23
+ /** Porcentaje respecto a `max`, redondeado a un decimal. */
24
+ protected format(val: number): number;
17
25
  protected defaultColor(idx: number): string;
18
26
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbMeterGroup, never>;
19
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMeterGroup, "cb-meter-group", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
27
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMeterGroup, "cb-meter-group", never, { "values": { "alias": "values"; "required": false; "isSignal": true; }; "max": { "alias": "max"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
20
28
  }
21
29
 
22
30
  export { CbMeterGroup };
@@ -1,33 +1,72 @@
1
- import * as _caribeng_ui from '@caribeng/ui';
2
- import { CbSize } from '@caribeng/ui';
3
1
  import * as _angular_core from '@angular/core';
2
+ import * as _caribeng_ui from '@caribeng/ui';
3
+ import { cbFormat, CbSize } from '@caribeng/ui';
4
4
  import { ControlValueAccessor } from '@angular/forms';
5
5
  import { ConnectedPosition } from '@angular/cdk/overlay';
6
6
 
7
+ /** Opción con su posición en la lista filtrada (la que usan teclado y `aria-activedescendant`). */
8
+ interface IndexedOption {
9
+ opt: unknown;
10
+ index: number;
11
+ }
12
+ /** Grupo de opciones ya filtrado; `label` es `null` cuando no se agrupa. */
13
+ interface OptionGroup {
14
+ label: string | null;
15
+ options: IndexedOption[];
16
+ }
17
+ /** Fila del modo virtual: cabecera de grupo u opción, todas de la misma altura. */
18
+ type VirtualRow = {
19
+ kind: 'group';
20
+ label: string;
21
+ key: string;
22
+ } | ({
23
+ kind: 'option';
24
+ } & IndexedOption);
7
25
  /**
8
26
  * Selección múltiple (multiselect) de CaribeNG. Listbox accesible sobre CDK
9
- * Overlay con casillas, filtro y seleccionar-todo. Integrado con Angular Forms
10
- * vía `ControlValueAccessor`; el modelo es un array de valores.
27
+ * Overlay con casillas, filtro, seleccionar-todo, grupos, búsqueda al teclear
28
+ * y scroll virtual. Integrado con Angular Forms vía `ControlValueAccessor`;
29
+ * el modelo es un array de valores.
11
30
  *
12
31
  * @example
13
32
  * ```html
14
33
  * <cb-multiselect [options]="ciudades" optionLabel="nombre" optionValue="id"
15
34
  * formControlName="ciudades" placeholder="Elige ciudades" />
35
+ *
36
+ * <!-- Agrupado: [{ label: 'Colombia', items: [...] }, …] -->
37
+ * <cb-multiselect [options]="paises" group filter />
16
38
  * ```
17
39
  */
18
40
  declare class CbMultiSelect implements ControlValueAccessor {
41
+ /** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
42
+ protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
43
+ /** Rellena `{0}`, `{1}`… de un texto traducido. */
44
+ protected readonly fmt: typeof cbFormat;
45
+ private readonly injector;
19
46
  readonly options: _angular_core.InputSignal<readonly unknown[]>;
20
47
  readonly optionLabel: _angular_core.InputSignal<string>;
21
48
  readonly optionValue: _angular_core.InputSignal<string | null>;
22
49
  readonly optionDisabled: _angular_core.InputSignal<string>;
23
- readonly placeholder: _angular_core.InputSignal<string>;
50
+ /** Las opciones son grupos (`{ label, items }`): se muestran con su título. */
51
+ readonly group: _angular_core.InputSignalWithTransform<boolean, unknown>;
52
+ /** Propiedad con el título de cada grupo. */
53
+ readonly optionGroupLabel: _angular_core.InputSignal<string>;
54
+ /** Propiedad con las opciones de cada grupo. */
55
+ readonly optionGroupChildren: _angular_core.InputSignal<string>;
56
+ readonly placeholder: _angular_core.InputSignal<string | undefined>;
24
57
  readonly size: _angular_core.InputSignal<CbSize>;
25
58
  readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
26
- readonly filterPlaceholder: _angular_core.InputSignal<string>;
27
- readonly emptyMessage: _angular_core.InputSignal<string>;
59
+ readonly filterPlaceholder: _angular_core.InputSignal<string | undefined>;
60
+ readonly emptyMessage: _angular_core.InputSignal<string | undefined>;
28
61
  readonly showToggleAll: _angular_core.InputSignalWithTransform<boolean, unknown>;
29
62
  /** Nº máx. de etiquetas antes de mostrar "N seleccionados". */
30
63
  readonly maxSelectedLabels: _angular_core.InputSignal<number>;
64
+ /** Alto máximo de la lista (CSS). En modo virtual es su alto fijo. */
65
+ readonly scrollHeight: _angular_core.InputSignal<string>;
66
+ /** Pinta solo las opciones visibles: para listas de miles de elementos. */
67
+ readonly virtualScroll: _angular_core.InputSignalWithTransform<boolean, unknown>;
68
+ /** Alto fijo de cada fila en modo virtual (px). */
69
+ readonly virtualScrollItemSize: _angular_core.InputSignal<number>;
31
70
  readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
32
71
  /** Estado de validación: inputs manuales + estado de Angular Forms. */
33
72
  protected readonly fieldState: _caribeng_ui.CbFieldState;
@@ -42,16 +81,30 @@ declare class CbMultiSelect implements ControlValueAccessor {
42
81
  protected readonly activeIndex: _angular_core.WritableSignal<number>;
43
82
  protected readonly filterText: _angular_core.WritableSignal<string>;
44
83
  protected readonly triggerWidth: _angular_core.WritableSignal<number>;
84
+ protected readonly scrollTop: _angular_core.WritableSignal<number>;
45
85
  private readonly cvaDisabled;
46
86
  protected readonly isDisabled: _angular_core.Signal<boolean>;
47
87
  protected readonly listboxId: string;
48
88
  private readonly triggerRef;
49
89
  private readonly filterInputRef;
90
+ private readonly viewportRef;
50
91
  protected readonly positions: ConnectedPosition[];
51
- protected readonly filteredOptions: _angular_core.Signal<readonly unknown[]>;
92
+ private typeahead;
93
+ private typeaheadTimer;
94
+ /** Todas las opciones (aplanando los grupos). */
95
+ protected readonly flatOptions: _angular_core.Signal<readonly unknown[]>;
96
+ protected readonly filteredGroups: _angular_core.Signal<OptionGroup[]>;
97
+ protected readonly filteredOptions: _angular_core.Signal<unknown[]>;
98
+ /** Filas del modo virtual (cabeceras de grupo + opciones). */
99
+ protected readonly virtualRows: _angular_core.Signal<VirtualRow[]>;
100
+ protected readonly viewportHeight: _angular_core.Signal<number>;
101
+ private readonly windowStart;
102
+ protected readonly windowOffset: _angular_core.Signal<number>;
103
+ protected readonly visibleRows: _angular_core.Signal<VirtualRow[]>;
52
104
  protected readonly selected: _angular_core.Signal<unknown[]>;
53
105
  protected readonly displayLabel: _angular_core.Signal<string>;
54
106
  protected readonly allSelected: _angular_core.Signal<boolean>;
107
+ protected readonly activeDescendant: _angular_core.Signal<string | null>;
55
108
  constructor();
56
109
  private onChange;
57
110
  private onTouched;
@@ -73,12 +126,20 @@ declare class CbMultiSelect implements ControlValueAccessor {
73
126
  protected isOptionDisabled(opt: unknown): boolean;
74
127
  protected isSelected(opt: unknown): boolean;
75
128
  protected optionId(index: number): string;
76
- protected trackOption(opt: unknown): unknown;
129
+ protected groupId(index: number): string;
130
+ private groupLabelOf;
131
+ private childrenOf;
132
+ private toggleActive;
133
+ /** Cambia la opción activa y la desplaza a la vista. */
134
+ private setActive;
77
135
  private firstEnabledIndex;
136
+ private lastEnabledIndex;
78
137
  private move;
138
+ /** Teclear salta a la siguiente opción que empieza por lo escrito (se reinicia tras 500 ms). */
139
+ private searchByTyping;
79
140
  private commit;
80
141
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbMultiSelect, never>;
81
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMultiSelect, "cb-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "showToggleAll": { "alias": "showToggleAll"; "required": false; "isSignal": true; }; "maxSelectedLabels": { "alias": "maxSelectedLabels"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
142
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMultiSelect, "cb-multiselect", never, { "options": { "alias": "options"; "required": false; "isSignal": true; }; "optionLabel": { "alias": "optionLabel"; "required": false; "isSignal": true; }; "optionValue": { "alias": "optionValue"; "required": false; "isSignal": true; }; "optionDisabled": { "alias": "optionDisabled"; "required": false; "isSignal": true; }; "group": { "alias": "group"; "required": false; "isSignal": true; }; "optionGroupLabel": { "alias": "optionGroupLabel"; "required": false; "isSignal": true; }; "optionGroupChildren": { "alias": "optionGroupChildren"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "filterPlaceholder": { "alias": "filterPlaceholder"; "required": false; "isSignal": true; }; "emptyMessage": { "alias": "emptyMessage"; "required": false; "isSignal": true; }; "showToggleAll": { "alias": "showToggleAll"; "required": false; "isSignal": true; }; "maxSelectedLabels": { "alias": "maxSelectedLabels"; "required": false; "isSignal": true; }; "scrollHeight": { "alias": "scrollHeight"; "required": false; "isSignal": true; }; "virtualScroll": { "alias": "virtualScroll"; "required": false; "isSignal": true; }; "virtualScrollItemSize": { "alias": "virtualScrollItemSize"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "inputId": { "alias": "inputId"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; }, never, never, true, never>;
82
143
  }
83
144
 
84
145
  export { CbMultiSelect };