@caribeng/ui 22.2.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.
- package/README.md +311 -231
- package/fesm2022/caribeng-ui-accordion.mjs +2 -2
- package/fesm2022/caribeng-ui-account-picker.mjs +533 -0
- package/fesm2022/caribeng-ui-aging.mjs +488 -0
- package/fesm2022/{caribeng-ui-caribe-alert.mjs → caribeng-ui-alert.mjs} +45 -45
- package/fesm2022/caribeng-ui-amount.mjs +249 -0
- package/fesm2022/caribeng-ui-anchor.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-animation-lottie.mjs → caribeng-ui-animation-lottie.mjs} +41 -41
- package/fesm2022/caribeng-ui-audit-log.mjs +323 -0
- package/fesm2022/caribeng-ui-avatar.mjs +4 -4
- package/fesm2022/caribeng-ui-badge.mjs +8 -2
- package/fesm2022/caribeng-ui-breadcrumb.mjs +26 -9
- package/fesm2022/{caribeng-ui-caribe-button-group.mjs → caribeng-ui-button-group.mjs} +15 -15
- package/fesm2022/caribeng-ui-button.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-card-content.mjs → caribeng-ui-card-content.mjs} +39 -39
- package/fesm2022/{caribeng-ui-caribe-card-move.mjs → caribeng-ui-card-move.mjs} +65 -65
- package/fesm2022/{caribeng-ui-caribe-card-primary.mjs → caribeng-ui-card-primary.mjs} +31 -31
- package/fesm2022/{caribeng-ui-caribe-card-select.mjs → caribeng-ui-card-select.mjs} +67 -67
- package/fesm2022/caribeng-ui-carousel.mjs +2 -2
- package/fesm2022/caribeng-ui-cascadeselect.mjs +45 -9
- package/fesm2022/caribeng-ui-chart.mjs +8 -5
- package/fesm2022/caribeng-ui-chat.mjs +1303 -0
- package/fesm2022/{caribeng-ui-caribe-coachmark.mjs → caribeng-ui-coachmark.mjs} +85 -85
- package/fesm2022/caribeng-ui-code-block.mjs +332 -0
- package/fesm2022/caribeng-ui-colorpicker.mjs +99 -5
- package/fesm2022/caribeng-ui-command-palette.mjs +476 -0
- package/fesm2022/caribeng-ui-comments.mjs +864 -0
- package/fesm2022/caribeng-ui-confirmdialog.mjs +78 -13
- package/fesm2022/caribeng-ui-confirmpopup.mjs +91 -16
- package/fesm2022/caribeng-ui-contextmenu.mjs +8 -4
- package/fesm2022/caribeng-ui-copy-button.mjs +230 -0
- package/fesm2022/caribeng-ui-datagrid.mjs +1635 -0
- package/fesm2022/caribeng-ui-dataview.mjs +6 -3
- package/fesm2022/caribeng-ui-datepicker.mjs +2 -2
- package/fesm2022/caribeng-ui-dock.mjs +52 -12
- package/fesm2022/caribeng-ui-document.mjs +495 -0
- package/fesm2022/{caribeng-ui-caribe-dots-indicator.mjs → caribeng-ui-dots-indicator.mjs} +41 -41
- package/fesm2022/caribeng-ui-drawer.mjs +9 -4
- package/fesm2022/caribeng-ui-dynamic-form.mjs +1581 -0
- package/fesm2022/caribeng-ui-editor.mjs +2324 -1311
- package/fesm2022/{caribeng-ui-caribe-expansion-panel.mjs → caribeng-ui-expansion-panel.mjs} +39 -39
- package/fesm2022/{caribeng-ui-caribe-fab-menu.mjs → caribeng-ui-fab-menu.mjs} +75 -75
- package/fesm2022/caribeng-ui-fieldset.mjs +2 -2
- package/fesm2022/caribeng-ui-file-card.mjs +134 -17
- package/fesm2022/{caribeng-ui-caribe-file-download.mjs → caribeng-ui-file-download.mjs} +63 -63
- package/fesm2022/caribeng-ui-financial-report.mjs +380 -0
- package/fesm2022/{caribeng-ui-caribe-float-menu.mjs → caribeng-ui-float-menu.mjs} +31 -31
- package/fesm2022/caribeng-ui-floatlabel.mjs +2 -2
- package/fesm2022/caribeng-ui-flow.mjs +1508 -0
- package/fesm2022/caribeng-ui-folder-card.mjs +122 -12
- package/fesm2022/{caribeng-ui-caribe-footer.mjs → caribeng-ui-footer.mjs} +19 -19
- package/fesm2022/caribeng-ui-gantt.mjs +1094 -0
- package/fesm2022/{caribeng-ui-caribe-header.mjs → caribeng-ui-header.mjs} +49 -49
- package/fesm2022/{caribeng-ui-caribe-icon-button.mjs → caribeng-ui-icon-button.mjs} +23 -23
- package/fesm2022/caribeng-ui-image-cropper.mjs +671 -0
- package/fesm2022/caribeng-ui-import-wizard.mjs +746 -0
- package/fesm2022/caribeng-ui-infinite-scroll.mjs +226 -0
- package/fesm2022/caribeng-ui-inlinemessage.mjs +2 -2
- package/fesm2022/caribeng-ui-input-number.mjs +22 -6
- package/fesm2022/{caribeng-ui-caribe-input-search.mjs → caribeng-ui-input-search.mjs} +65 -65
- package/fesm2022/{caribeng-ui-caribe-input-token.mjs → caribeng-ui-input-token.mjs} +59 -59
- package/fesm2022/caribeng-ui-inputmask.mjs +8 -2
- package/fesm2022/caribeng-ui-inputotp.mjs +2 -2
- package/fesm2022/caribeng-ui-journal-entry.mjs +340 -0
- package/fesm2022/caribeng-ui-kanban.mjs +4612 -0
- package/fesm2022/caribeng-ui-kbd.mjs +122 -0
- package/fesm2022/caribeng-ui-kpi.mjs +189 -0
- package/fesm2022/{caribeng-ui-caribe-link.mjs → caribeng-ui-link.mjs} +37 -37
- package/fesm2022/caribeng-ui-masonry.mjs +93 -0
- package/fesm2022/caribeng-ui-media-player.mjs +821 -0
- package/fesm2022/caribeng-ui-megamenu.mjs +13 -9
- package/fesm2022/caribeng-ui-mentions.mjs +495 -0
- package/fesm2022/caribeng-ui-menu.mjs +8 -4
- package/fesm2022/caribeng-ui-menubar.mjs +9 -5
- package/fesm2022/caribeng-ui-message.mjs +6 -3
- package/fesm2022/caribeng-ui-notification-center.mjs +636 -0
- package/fesm2022/{caribeng-ui-caribe-off-canvas.mjs → caribeng-ui-off-canvas.mjs} +55 -55
- package/fesm2022/{caribeng-ui-caribe-onboarding.mjs → caribeng-ui-onboarding.mjs} +105 -105
- package/fesm2022/caribeng-ui-orderlist.mjs +2 -2
- package/fesm2022/caribeng-ui-organizationchart.mjs +6 -10
- package/fesm2022/caribeng-ui-panel.mjs +6 -6
- package/fesm2022/caribeng-ui-panelmenu.mjs +9 -6
- package/fesm2022/caribeng-ui-pdfviewer.mjs +1755 -25
- package/fesm2022/caribeng-ui-period-picker.mjs +637 -0
- package/fesm2022/caribeng-ui-phone-input.mjs +688 -0
- package/fesm2022/caribeng-ui-picklist.mjs +2 -2
- package/fesm2022/caribeng-ui-pivot.mjs +419 -0
- package/fesm2022/caribeng-ui-pricing.mjs +263 -69
- package/fesm2022/caribeng-ui-qrcode.mjs +564 -0
- package/fesm2022/caribeng-ui-rating.mjs +14 -17
- package/fesm2022/caribeng-ui-reconciliation.mjs +386 -0
- package/fesm2022/caribeng-ui-ripple.mjs +2 -0
- package/fesm2022/caribeng-ui-scheduler.mjs +1027 -0
- package/fesm2022/caribeng-ui-scrolltop.mjs +3 -1
- package/fesm2022/caribeng-ui-select.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-shortcut.mjs → caribeng-ui-shortcut.mjs} +29 -29
- package/fesm2022/caribeng-ui-sidebar.mjs +573 -0
- package/fesm2022/caribeng-ui-signature-pad.mjs +654 -0
- package/fesm2022/{caribeng-ui-caribe-status.mjs → caribeng-ui-status.mjs} +11 -11
- package/fesm2022/{caribeng-ui-caribe-step-indicator.mjs → caribeng-ui-step-indicator.mjs} +53 -53
- package/fesm2022/caribeng-ui-stepper.mjs +12 -5
- package/fesm2022/caribeng-ui-steps.mjs +2 -2
- package/fesm2022/caribeng-ui-table.mjs +333 -19
- package/fesm2022/caribeng-ui-tabmenu.mjs +10 -6
- package/fesm2022/caribeng-ui-tabs.mjs +2 -2
- package/fesm2022/{caribeng-ui-caribe-tag-button.mjs → caribeng-ui-tag-button.mjs} +25 -25
- package/fesm2022/caribeng-ui-tag.mjs +2 -2
- package/fesm2022/caribeng-ui-tieredmenu.mjs +111 -21
- package/fesm2022/{caribeng-ui-caribe-tracker.mjs → caribeng-ui-tracker.mjs} +29 -29
- package/fesm2022/{caribeng-ui-caribe-transaction-status.mjs → caribeng-ui-transaction-status.mjs} +11 -11
- package/fesm2022/caribeng-ui-treeselect.mjs +44 -9
- package/fesm2022/caribeng-ui-treetable.mjs +236 -17
- package/fesm2022/{caribeng-ui-caribe-voucher.mjs → caribeng-ui-voucher.mjs} +45 -45
- package/fesm2022/caribeng-ui-xlsx.mjs +486 -0
- package/fesm2022/caribeng-ui.mjs +1568 -1
- package/package.json +258 -178
- package/schematics/collection.json +5 -0
- package/schematics/migrate-from-primeng/core-icons.json +1 -0
- package/schematics/migrate-from-primeng/icons.js +269 -0
- package/schematics/migrate-from-primeng/index.js +290 -0
- package/schematics/migrate-from-primeng/mappings/button.js +93 -0
- package/schematics/migrate-from-primeng/mappings/card.js +33 -0
- package/schematics/migrate-from-primeng/mappings/checkbox.js +44 -0
- package/schematics/migrate-from-primeng/mappings/confirm.js +221 -0
- package/schematics/migrate-from-primeng/mappings/datepicker.js +121 -0
- package/schematics/migrate-from-primeng/mappings/dialog.js +84 -0
- package/schematics/migrate-from-primeng/mappings/index.js +88 -0
- package/schematics/migrate-from-primeng/mappings/inputnumber.js +62 -0
- package/schematics/migrate-from-primeng/mappings/inputtext.js +60 -0
- package/schematics/migrate-from-primeng/mappings/menu.js +468 -0
- package/schematics/migrate-from-primeng/mappings/multiselect.js +49 -0
- package/schematics/migrate-from-primeng/mappings/radiobutton.js +22 -0
- package/schematics/migrate-from-primeng/mappings/rules.js +206 -0
- package/schematics/migrate-from-primeng/mappings/select.js +97 -0
- package/schematics/migrate-from-primeng/mappings/service-calls.js +100 -0
- package/schematics/migrate-from-primeng/mappings/table.js +613 -0
- package/schematics/migrate-from-primeng/mappings/tabs.js +225 -0
- package/schematics/migrate-from-primeng/mappings/tag.js +29 -0
- package/schematics/migrate-from-primeng/mappings/textarea.js +44 -0
- package/schematics/migrate-from-primeng/mappings/toast.js +173 -0
- package/schematics/migrate-from-primeng/mappings/toggleswitch.js +37 -0
- package/schematics/migrate-from-primeng/mappings/tooltip.js +44 -0
- package/schematics/migrate-from-primeng/mappings/types.js +10 -0
- package/schematics/migrate-from-primeng/report.js +79 -0
- package/schematics/migrate-from-primeng/schema.js +2 -0
- package/schematics/migrate-from-primeng/schema.json +34 -0
- package/schematics/migrate-from-primeng/template.js +387 -0
- package/schematics/migrate-from-primeng/todo.js +5 -0
- package/schematics/migrate-from-primeng/typescript.js +442 -0
- package/schematics/migrate-from-primeng/workspace.js +117 -0
- package/schematics/ng-add/index.js +16 -1
- package/types/caribeng-ui-account-picker.d.ts +142 -0
- package/types/caribeng-ui-aging.d.ts +123 -0
- package/types/{caribeng-ui-caribe-alert.d.ts → caribeng-ui-alert.d.ts} +2 -2
- package/types/caribeng-ui-amount.d.ts +82 -0
- package/types/{caribeng-ui-caribe-animation-lottie.d.ts → caribeng-ui-animation-lottie.d.ts} +2 -2
- package/types/caribeng-ui-audit-log.d.ts +86 -0
- package/types/caribeng-ui-badge.d.ts +3 -1
- package/types/caribeng-ui-breadcrumb.d.ts +9 -1
- package/types/{caribeng-ui-caribe-button-group.d.ts → caribeng-ui-button-group.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-card-content.d.ts → caribeng-ui-card-content.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-card-move.d.ts → caribeng-ui-card-move.d.ts} +1 -1
- package/types/{caribeng-ui-caribe-card-primary.d.ts → caribeng-ui-card-primary.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-card-select.d.ts → caribeng-ui-card-select.d.ts} +2 -2
- package/types/caribeng-ui-cascadeselect.d.ts +6 -0
- package/types/caribeng-ui-chart.d.ts +3 -1
- package/types/caribeng-ui-chat.d.ts +299 -0
- package/types/{caribeng-ui-caribe-coachmark.d.ts → caribeng-ui-coachmark.d.ts} +2 -2
- package/types/caribeng-ui-code-block.d.ts +65 -0
- package/types/caribeng-ui-colorpicker.d.ts +5 -1
- package/types/caribeng-ui-command-palette.d.ts +133 -0
- package/types/caribeng-ui-comments.d.ts +214 -0
- package/types/caribeng-ui-confirmdialog.d.ts +34 -2
- package/types/caribeng-ui-confirmpopup.d.ts +39 -2
- package/types/caribeng-ui-contextmenu.d.ts +7 -0
- package/types/caribeng-ui-copy-button.d.ts +90 -0
- package/types/caribeng-ui-datagrid.d.ts +269 -0
- package/types/caribeng-ui-dataview.d.ts +2 -0
- package/types/caribeng-ui-dock.d.ts +13 -1
- package/types/caribeng-ui-document.d.ts +138 -0
- package/types/{caribeng-ui-caribe-dots-indicator.d.ts → caribeng-ui-dots-indicator.d.ts} +2 -2
- package/types/caribeng-ui-drawer.d.ts +3 -1
- package/types/caribeng-ui-dynamic-form.d.ts +409 -0
- package/types/caribeng-ui-editor.d.ts +110 -12
- package/types/{caribeng-ui-caribe-expansion-panel.d.ts → caribeng-ui-expansion-panel.d.ts} +1 -1
- package/types/{caribeng-ui-caribe-fab-menu.d.ts → caribeng-ui-fab-menu.d.ts} +2 -2
- package/types/caribeng-ui-file-card.d.ts +27 -2
- package/types/{caribeng-ui-caribe-file-download.d.ts → caribeng-ui-file-download.d.ts} +1 -1
- package/types/caribeng-ui-financial-report.d.ts +102 -0
- package/types/{caribeng-ui-caribe-float-menu.d.ts → caribeng-ui-float-menu.d.ts} +2 -2
- package/types/caribeng-ui-flow.d.ts +228 -0
- package/types/caribeng-ui-folder-card.d.ts +27 -5
- package/types/{caribeng-ui-caribe-footer.d.ts → caribeng-ui-footer.d.ts} +2 -2
- package/types/caribeng-ui-gantt.d.ts +244 -0
- package/types/{caribeng-ui-caribe-header.d.ts → caribeng-ui-header.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-icon-button.d.ts → caribeng-ui-icon-button.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-illustration.d.ts → caribeng-ui-illustration.d.ts} +1 -1
- package/types/caribeng-ui-image-cropper.d.ts +169 -0
- package/types/caribeng-ui-import-wizard.d.ts +149 -0
- package/types/caribeng-ui-infinite-scroll.d.ts +75 -0
- package/types/caribeng-ui-input-number.d.ts +1 -1
- package/types/{caribeng-ui-caribe-input-search.d.ts → caribeng-ui-input-search.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-input-token.d.ts → caribeng-ui-input-token.d.ts} +2 -2
- package/types/caribeng-ui-inputmask.d.ts +3 -1
- package/types/caribeng-ui-journal-entry.d.ts +110 -0
- package/types/caribeng-ui-kanban.d.ts +783 -0
- package/types/caribeng-ui-kbd.d.ts +36 -0
- package/types/caribeng-ui-kpi.d.ts +64 -0
- package/types/{caribeng-ui-caribe-link.d.ts → caribeng-ui-link.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-logo.d.ts → caribeng-ui-logo.d.ts} +1 -1
- package/types/caribeng-ui-masonry.d.ts +32 -0
- package/types/caribeng-ui-media-player.d.ts +140 -0
- package/types/caribeng-ui-megamenu.d.ts +11 -0
- package/types/caribeng-ui-mentions.d.ts +127 -0
- package/types/caribeng-ui-menu.d.ts +7 -0
- package/types/caribeng-ui-menubar.d.ts +7 -0
- package/types/caribeng-ui-message.d.ts +2 -0
- package/types/caribeng-ui-notification-center.d.ts +153 -0
- package/types/{caribeng-ui-caribe-off-canvas.d.ts → caribeng-ui-off-canvas.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-onboarding.d.ts → caribeng-ui-onboarding.d.ts} +2 -2
- package/types/caribeng-ui-panelmenu.d.ts +7 -0
- package/types/caribeng-ui-pdfviewer.d.ts +245 -5
- package/types/caribeng-ui-period-picker.d.ts +148 -0
- package/types/caribeng-ui-phone-input.d.ts +168 -0
- package/types/caribeng-ui-pivot.d.ts +116 -0
- package/types/caribeng-ui-pricing.d.ts +41 -4
- package/types/caribeng-ui-qrcode.d.ts +88 -0
- package/types/caribeng-ui-reconciliation.d.ts +109 -0
- package/types/caribeng-ui-scheduler.d.ts +188 -0
- package/types/{caribeng-ui-caribe-shortcut.d.ts → caribeng-ui-shortcut.d.ts} +2 -2
- package/types/caribeng-ui-sidebar.d.ts +167 -0
- package/types/caribeng-ui-signature-pad.d.ts +151 -0
- package/types/{caribeng-ui-caribe-status.d.ts → caribeng-ui-status.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-step-indicator.d.ts → caribeng-ui-step-indicator.d.ts} +2 -2
- package/types/caribeng-ui-stepper.d.ts +2 -0
- package/types/caribeng-ui-table.d.ts +67 -3
- package/types/caribeng-ui-tabmenu.d.ts +7 -0
- package/types/{caribeng-ui-caribe-tag-button.d.ts → caribeng-ui-tag-button.d.ts} +2 -2
- package/types/caribeng-ui-tieredmenu.d.ts +17 -1
- package/types/{caribeng-ui-caribe-tracker.d.ts → caribeng-ui-tracker.d.ts} +2 -2
- package/types/{caribeng-ui-caribe-transaction-status.d.ts → caribeng-ui-transaction-status.d.ts} +2 -2
- package/types/caribeng-ui-treeselect.d.ts +6 -0
- package/types/caribeng-ui-treetable.d.ts +67 -2
- package/types/{caribeng-ui-caribe-voucher.d.ts → caribeng-ui-voucher.d.ts} +2 -2
- package/types/caribeng-ui-xlsx.d.ts +79 -0
- package/types/caribeng-ui.d.ts +985 -2
- package/fesm2022/caribeng-ui-caribe-calendar.mjs +0 -92
- package/fesm2022/caribeng-ui-caribe-circle-loading.mjs +0 -130
- package/fesm2022/caribeng-ui-caribe-data-table.mjs +0 -94
- package/fesm2022/caribeng-ui-caribe-file-select.mjs +0 -88
- package/fesm2022/caribeng-ui-caribe-inline-alert.mjs +0 -100
- package/fesm2022/caribeng-ui-caribe-input-date.mjs +0 -138
- package/fesm2022/caribeng-ui-caribe-input-select.mjs +0 -154
- package/fesm2022/caribeng-ui-caribe-loader.mjs +0 -48
- package/fesm2022/caribeng-ui-caribe-modal.mjs +0 -119
- package/fesm2022/caribeng-ui-caribe-pictogram.mjs +0 -52
- package/fesm2022/caribeng-ui-caribe-pop-over.mjs +0 -104
- package/fesm2022/caribeng-ui-caribe-preloader.mjs +0 -57
- package/fesm2022/caribeng-ui-caribe-progress-bar.mjs +0 -84
- package/fesm2022/caribeng-ui-caribe-stroke.mjs +0 -69
- package/fesm2022/caribeng-ui-caribe-switch.mjs +0 -182
- package/styles/caribeng.css +0 -380
- package/styles/scss/_mixins.scss +0 -46
- package/styles/scss/_overlay.scss +0 -15
- package/styles/scss/_tokens.scss +0 -267
- package/styles/scss/_utilities.scss +0 -73
- package/styles/scss/_variables.scss +0 -33
- package/styles/scss/index.scss +0 -16
- package/types/caribeng-ui-caribe-calendar.d.ts +0 -27
- package/types/caribeng-ui-caribe-circle-loading.d.ts +0 -28
- package/types/caribeng-ui-caribe-data-table.d.ts +0 -26
- package/types/caribeng-ui-caribe-file-select.d.ts +0 -31
- package/types/caribeng-ui-caribe-inline-alert.d.ts +0 -28
- package/types/caribeng-ui-caribe-input-date.d.ts +0 -40
- package/types/caribeng-ui-caribe-input-select.d.ts +0 -47
- package/types/caribeng-ui-caribe-loader.d.ts +0 -22
- package/types/caribeng-ui-caribe-modal.d.ts +0 -21
- package/types/caribeng-ui-caribe-pictogram.d.ts +0 -15
- package/types/caribeng-ui-caribe-pop-over.d.ts +0 -17
- package/types/caribeng-ui-caribe-preloader.d.ts +0 -24
- package/types/caribeng-ui-caribe-progress-bar.d.ts +0 -28
- package/types/caribeng-ui-caribe-stroke.d.ts +0 -17
- package/types/caribeng-ui-caribe-switch.d.ts +0 -55
- /package/fesm2022/{caribeng-ui-caribe-illustration.mjs → caribeng-ui-illustration.mjs} +0 -0
- /package/fesm2022/{caribeng-ui-caribe-logo.mjs → caribeng-ui-logo.mjs} +0 -0
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
import * as _caribeng_ui_dynamic_form from '@caribeng/ui/dynamic-form';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { cbFormat } from '@caribeng/ui';
|
|
4
|
+
import * as _angular_core from '@angular/core';
|
|
5
|
+
import { TemplateRef } from '@angular/core';
|
|
6
|
+
import { ValidatorFn, FormGroup, AbstractControl, FormControl } from '@angular/forms';
|
|
7
|
+
|
|
8
|
+
/** Tipo de campo (y control de CaribeNG que lo pinta). Un nombre propio usa la plantilla `cbFormField` con ese nombre. */
|
|
9
|
+
type CbFormFieldType = 'text' | 'email' | 'password' | 'tel' | 'url' | 'number' | 'textarea' | 'select' | 'multiselect' | 'radio' | 'checkbox' | 'toggle' | 'date' | 'slider' | 'rating' | 'chips' | 'color' | 'buttons' | 'mask'
|
|
10
|
+
/** Grupo de campos (objeto anidado) o, con `repeatable`, lista de grupos. */
|
|
11
|
+
| 'group'
|
|
12
|
+
/** Elementos de diseño (sin valor). */
|
|
13
|
+
| 'heading' | 'paragraph' | 'divider' | (string & {});
|
|
14
|
+
/** Texto fijo o traducido por idioma (`{ es: 'Nombre', en: 'Name' }`). */
|
|
15
|
+
type CbFormText = string | Readonly<Record<string, string>>;
|
|
16
|
+
/** Dónde va la etiqueta respecto al control. */
|
|
17
|
+
type CbFormLabelPosition = 'top' | 'left' | 'right' | 'floating' | 'hidden';
|
|
18
|
+
/** Tamaño de los controles. */
|
|
19
|
+
type CbFormSize = 'sm' | 'md' | 'lg';
|
|
20
|
+
/**
|
|
21
|
+
* Valor que cambia con el ancho del formulario: `base` (móvil), `sm` (≥ 30rem),
|
|
22
|
+
* `md` (≥ 40rem) y `lg` (≥ 60rem). Cada tamaño hereda el anterior.
|
|
23
|
+
*/
|
|
24
|
+
type CbFormResponsive<T> = T | {
|
|
25
|
+
readonly base?: T;
|
|
26
|
+
readonly sm?: T;
|
|
27
|
+
readonly md?: T;
|
|
28
|
+
readonly lg?: T;
|
|
29
|
+
};
|
|
30
|
+
/** Opción de `select`, `multiselect`, `radio` y `buttons`. */
|
|
31
|
+
interface CbFormOption {
|
|
32
|
+
readonly label: CbFormText;
|
|
33
|
+
readonly value: unknown;
|
|
34
|
+
readonly disabled?: boolean;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Condición sobre el valor de otro campo (JSON puro). Con varias propiedades,
|
|
38
|
+
* se deben cumplir todas. También puede ser una función `(valor del formulario) => boolean`.
|
|
39
|
+
*/
|
|
40
|
+
interface CbFormConditionRule {
|
|
41
|
+
readonly field: string;
|
|
42
|
+
readonly equals?: unknown;
|
|
43
|
+
readonly notEquals?: unknown;
|
|
44
|
+
readonly in?: readonly unknown[];
|
|
45
|
+
/** `true`: tiene valor (no vacío, no `false`); `false`: está vacío. */
|
|
46
|
+
readonly filled?: boolean;
|
|
47
|
+
}
|
|
48
|
+
type CbFormCondition = CbFormConditionRule | readonly CbFormConditionRule[] | ((value: Record<string, unknown>) => boolean);
|
|
49
|
+
/** Regla entre campos: compara el valor con el de otro campo. */
|
|
50
|
+
interface CbFormRule {
|
|
51
|
+
readonly equalsField?: string;
|
|
52
|
+
readonly notEqualsField?: string;
|
|
53
|
+
/** Mayor o igual que otro campo (números o fechas). */
|
|
54
|
+
readonly gteField?: string;
|
|
55
|
+
readonly lteField?: string;
|
|
56
|
+
readonly gtField?: string;
|
|
57
|
+
readonly ltField?: string;
|
|
58
|
+
readonly message?: CbFormText;
|
|
59
|
+
}
|
|
60
|
+
/** Mensajes de error propios, por validador. */
|
|
61
|
+
type CbFormMessages = Partial<Record<'required' | 'min' | 'max' | 'minLength' | 'maxLength' | 'email' | 'pattern' | 'rule' | string, CbFormText>>;
|
|
62
|
+
/** Opciones de la etiqueta (en el formulario, en una sección o en un campo). */
|
|
63
|
+
interface CbFormLabelOptions {
|
|
64
|
+
readonly labelPosition?: CbFormLabelPosition;
|
|
65
|
+
/** Alineación del texto de la etiqueta cuando va a un lado. */
|
|
66
|
+
readonly labelAlign?: 'start' | 'end';
|
|
67
|
+
/** Ancho de la etiqueta cuando va a un lado (`10rem` por defecto). */
|
|
68
|
+
readonly labelWidth?: string;
|
|
69
|
+
}
|
|
70
|
+
/** Campo del formulario (o elemento de diseño: `heading`, `paragraph`, `divider`). */
|
|
71
|
+
interface CbFormField extends CbFormLabelOptions {
|
|
72
|
+
/** Propiedad del valor (obligatoria salvo en los elementos de diseño). */
|
|
73
|
+
readonly key?: string;
|
|
74
|
+
readonly type?: CbFormFieldType;
|
|
75
|
+
readonly label?: CbFormText;
|
|
76
|
+
readonly placeholder?: CbFormText;
|
|
77
|
+
/** Texto de ayuda bajo el campo. */
|
|
78
|
+
readonly hint?: CbFormText;
|
|
79
|
+
/** Contenido de `heading` y `paragraph`. */
|
|
80
|
+
readonly content?: CbFormText;
|
|
81
|
+
/** Valor inicial (en `date`, `Date` o texto `AAAA-MM-DD`; en un grupo repetible, lista de objetos). */
|
|
82
|
+
readonly default?: unknown;
|
|
83
|
+
readonly required?: boolean;
|
|
84
|
+
readonly min?: number;
|
|
85
|
+
readonly max?: number;
|
|
86
|
+
readonly step?: number;
|
|
87
|
+
readonly minLength?: number;
|
|
88
|
+
readonly maxLength?: number;
|
|
89
|
+
/** Expresión regular (texto) que debe cumplir el valor completo. */
|
|
90
|
+
readonly pattern?: string;
|
|
91
|
+
readonly options?: readonly CbFormOption[];
|
|
92
|
+
/** Opciones según el valor de otro campo: `{ field: 'pais', map: { CO: [...], PA: [...] } }`. */
|
|
93
|
+
readonly optionsFrom?: {
|
|
94
|
+
readonly field: string;
|
|
95
|
+
readonly map: Readonly<Record<string, readonly CbFormOption[]>>;
|
|
96
|
+
};
|
|
97
|
+
/** Nombre de un cargador de `loaders` (opciones de una API); se vuelve a llamar al cambiar `dependsOn`. */
|
|
98
|
+
readonly optionsLoader?: string;
|
|
99
|
+
readonly dependsOn?: readonly string[];
|
|
100
|
+
/** Fórmula de un campo calculado: `cantidad * precio`, `round(total * 0.19, 0)`, `sum(lineas.subtotal)`. */
|
|
101
|
+
readonly formula?: string;
|
|
102
|
+
/** Cálculo desde código (en vez de `formula`). */
|
|
103
|
+
readonly compute?: (value: Record<string, unknown>) => unknown;
|
|
104
|
+
/** Máscara de un campo `mask` (`9` dígito, `a` letra, `*` cualquiera): `999-9999`. */
|
|
105
|
+
readonly mask?: string;
|
|
106
|
+
/** Texto o símbolo antes y después del control (`$`, `%`, `kg`). */
|
|
107
|
+
readonly prefix?: CbFormText;
|
|
108
|
+
readonly suffix?: CbFormText;
|
|
109
|
+
/** Icono antes del control. */
|
|
110
|
+
readonly icon?: string;
|
|
111
|
+
/** Filas de un `textarea`. */
|
|
112
|
+
readonly rows?: number;
|
|
113
|
+
/** Columnas que ocupa (número o `full`), también por tamaño de pantalla. */
|
|
114
|
+
readonly colSpan?: CbFormResponsive<number | 'full'>;
|
|
115
|
+
/** Empieza una fila nueva. */
|
|
116
|
+
readonly newRow?: boolean;
|
|
117
|
+
/** Orden dentro de su sección (por defecto, el del esquema). */
|
|
118
|
+
readonly order?: number;
|
|
119
|
+
readonly size?: CbFormSize;
|
|
120
|
+
readonly disabled?: boolean;
|
|
121
|
+
readonly readonly?: boolean;
|
|
122
|
+
/** Solo se muestra (y se valida y se envía) si se cumple. */
|
|
123
|
+
readonly visibleWhen?: CbFormCondition;
|
|
124
|
+
/** Es obligatorio solo si se cumple. */
|
|
125
|
+
readonly requiredWhen?: CbFormCondition;
|
|
126
|
+
/** Se deshabilita si se cumple. */
|
|
127
|
+
readonly disabledWhen?: CbFormCondition;
|
|
128
|
+
/** Reglas entre campos (confirmar contraseña, fecha fin ≥ inicio). */
|
|
129
|
+
readonly rules?: readonly CbFormRule[];
|
|
130
|
+
/** Mensajes de error propios. */
|
|
131
|
+
readonly messages?: CbFormMessages;
|
|
132
|
+
/** Validadores extra (solo desde código). La clave del error elige el mensaje en `messages`. */
|
|
133
|
+
readonly validators?: readonly ValidatorFn[];
|
|
134
|
+
/** `radio`: disposición de las opciones. */
|
|
135
|
+
readonly orientation?: 'vertical' | 'horizontal';
|
|
136
|
+
/** `group`: sus campos. */
|
|
137
|
+
readonly fields?: readonly CbFormField[];
|
|
138
|
+
/** `group`: lista de grupos que se añaden y quitan. */
|
|
139
|
+
readonly repeatable?: boolean;
|
|
140
|
+
readonly minItems?: number;
|
|
141
|
+
readonly maxItems?: number;
|
|
142
|
+
/** Texto del botón de añadir (`Añadir contacto`). */
|
|
143
|
+
readonly addLabel?: CbFormText;
|
|
144
|
+
/** Título de cada elemento; `{n}` es su número (`Contacto {n}`). */
|
|
145
|
+
readonly itemLabel?: CbFormText;
|
|
146
|
+
/** Columnas dentro del grupo. */
|
|
147
|
+
readonly columns?: CbFormResponsive<number>;
|
|
148
|
+
}
|
|
149
|
+
/** Sección: un grupo de campos con título y sus propias columnas y etiquetas. */
|
|
150
|
+
interface CbFormSection extends CbFormLabelOptions {
|
|
151
|
+
readonly title?: CbFormText;
|
|
152
|
+
readonly description?: CbFormText;
|
|
153
|
+
readonly columns?: CbFormResponsive<number>;
|
|
154
|
+
readonly size?: CbFormSize;
|
|
155
|
+
readonly fields: readonly CbFormField[];
|
|
156
|
+
readonly visibleWhen?: CbFormCondition;
|
|
157
|
+
}
|
|
158
|
+
/** Paso de un formulario por pasos. */
|
|
159
|
+
interface CbFormStep {
|
|
160
|
+
readonly title: CbFormText;
|
|
161
|
+
readonly description?: CbFormText;
|
|
162
|
+
readonly fields?: readonly CbFormField[];
|
|
163
|
+
readonly sections?: readonly CbFormSection[];
|
|
164
|
+
}
|
|
165
|
+
/** Disposición de etiqueta y campo (atajo de `labelPosition`). */
|
|
166
|
+
type CbFormLayout = 'vertical' | 'horizontal';
|
|
167
|
+
/** Esquema completo. */
|
|
168
|
+
interface CbFormSchema extends CbFormLabelOptions {
|
|
169
|
+
/** Campos sueltos (o usa `sections`, o `steps`). */
|
|
170
|
+
readonly fields?: readonly CbFormField[];
|
|
171
|
+
readonly sections?: readonly CbFormSection[];
|
|
172
|
+
/** Formulario por pasos (asistente): cada paso valida sus campos antes de seguir. */
|
|
173
|
+
readonly steps?: readonly CbFormStep[];
|
|
174
|
+
/** Columnas de la rejilla (1 por defecto), también por tamaño de pantalla. */
|
|
175
|
+
readonly columns?: CbFormResponsive<number>;
|
|
176
|
+
/** `vertical`: etiqueta encima; `horizontal`: a la izquierda. `labelPosition` lo precisa. */
|
|
177
|
+
readonly layout?: CbFormLayout;
|
|
178
|
+
readonly size?: CbFormSize;
|
|
179
|
+
readonly submitLabel?: CbFormText;
|
|
180
|
+
/** Texto del botón de restablecer; sin él no se muestra. */
|
|
181
|
+
readonly resetLabel?: CbFormText;
|
|
182
|
+
readonly nextLabel?: CbFormText;
|
|
183
|
+
readonly backLabel?: CbFormText;
|
|
184
|
+
}
|
|
185
|
+
/** Campos ordenados por `order` (los que no lo tienen, en su posición). */
|
|
186
|
+
declare function ordered(fields: readonly CbFormField[]): CbFormField[];
|
|
187
|
+
/**
|
|
188
|
+
* Evalúa una fórmula aritmética de forma segura (sin `eval`): números, campos,
|
|
189
|
+
* `+ - * /`, paréntesis y las funciones `round`, `floor`, `ceil`, `abs`, `min`,
|
|
190
|
+
* `max`, `sum` y `count` (estas tres aceptan listas: `sum(lineas.subtotal)`).
|
|
191
|
+
*/
|
|
192
|
+
declare function evaluateFormula(formula: string, scope: Record<string, unknown>): number;
|
|
193
|
+
|
|
194
|
+
/** Contexto de una plantilla propia `<ng-template cbFormField="nombre" let-control let-field="field">`. */
|
|
195
|
+
interface CbFormFieldContext {
|
|
196
|
+
$implicit: FormControl<unknown>;
|
|
197
|
+
field: CbFormField;
|
|
198
|
+
/** Id para el control (la etiqueta apunta a él con `for`). */
|
|
199
|
+
id: string;
|
|
200
|
+
/** Id de la etiqueta, para `aria-labelledby`. */
|
|
201
|
+
labelId: string;
|
|
202
|
+
error: string | null;
|
|
203
|
+
invalid: boolean;
|
|
204
|
+
}
|
|
205
|
+
/** Plantilla de un tipo de campo propio: el campo con `type: 'nombre'` la usa. */
|
|
206
|
+
declare class CbFormFieldTemplate {
|
|
207
|
+
readonly name: _angular_core.InputSignal<string>;
|
|
208
|
+
readonly template: TemplateRef<CbFormFieldContext>;
|
|
209
|
+
static ngTemplateContextGuard(_dir: CbFormFieldTemplate, ctx: unknown): ctx is CbFormFieldContext;
|
|
210
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbFormFieldTemplate, never>;
|
|
211
|
+
static ɵdir: _angular_core.ɵɵDirectiveDeclaration<CbFormFieldTemplate, "ng-template[cbFormField]", never, { "name": { "alias": "cbFormField"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
212
|
+
}
|
|
213
|
+
/** Cargador de opciones (API, catálogo): recibe el valor del formulario. */
|
|
214
|
+
type CbFormOptionsLoader = (ctx: {
|
|
215
|
+
value: Record<string, unknown>;
|
|
216
|
+
field: CbFormField;
|
|
217
|
+
}) => readonly CbFormOption[] | Promise<readonly CbFormOption[]>;
|
|
218
|
+
/** Contexto de la rejilla (raíz, sección, grupo o elemento de una lista). */
|
|
219
|
+
interface GridCtx {
|
|
220
|
+
readonly group: FormGroup;
|
|
221
|
+
readonly path: readonly (string | number)[];
|
|
222
|
+
readonly opts: Required<Pick<CbFormLabelOptions, 'labelPosition' | 'labelAlign' | 'labelWidth'>>;
|
|
223
|
+
readonly cols: {
|
|
224
|
+
base: number;
|
|
225
|
+
sm: number;
|
|
226
|
+
md: number;
|
|
227
|
+
lg: number;
|
|
228
|
+
};
|
|
229
|
+
readonly size: CbFormSize;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Formulario dinámico de CaribeNG: arma el formulario a partir de un esquema JSON.
|
|
233
|
+
*
|
|
234
|
+
* - Campos con tipo (texto, correo, número, lista, opciones, casilla, fecha, máscara…),
|
|
235
|
+
* validación (`required`, `min`, `max`, `minLength`, `maxLength`, `pattern`, reglas
|
|
236
|
+
* entre campos) y mensajes propios, traducibles (`{ es, en }`).
|
|
237
|
+
* - Etiquetas encima, a la izquierda, a la derecha, flotantes u ocultas, por
|
|
238
|
+
* formulario, sección o campo; columnas por tamaño de pantalla, orden, filas,
|
|
239
|
+
* títulos, textos y separadores.
|
|
240
|
+
* - Campos condicionales, opciones que dependen de otro campo o se cargan de una
|
|
241
|
+
* API, campos calculados con fórmulas, grupos repetibles y formulario por pasos.
|
|
242
|
+
* - Tipos propios con plantillas (`<ng-template cbFormField="firma">`).
|
|
243
|
+
*
|
|
244
|
+
* @example
|
|
245
|
+
* ```html
|
|
246
|
+
* <cb-dynamic-form [schema]="esquema" [(value)]="datos" (formSubmit)="guardar($event)" />
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
declare class CbDynamicForm {
|
|
250
|
+
/** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
|
|
251
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
252
|
+
protected readonly fmt: typeof cbFormat;
|
|
253
|
+
protected readonly ordered: typeof ordered;
|
|
254
|
+
private readonly injector;
|
|
255
|
+
private readonly host;
|
|
256
|
+
protected readonly uid: string;
|
|
257
|
+
private readonly templates;
|
|
258
|
+
/** Esquema del formulario (campos, secciones o pasos, columnas, etiquetas…). */
|
|
259
|
+
readonly schema: _angular_core.InputSignal<CbFormSchema>;
|
|
260
|
+
/** Valor del formulario (bidireccional; los campos ocultos no se incluyen). */
|
|
261
|
+
readonly value: _angular_core.ModelSignal<Record<string, unknown>>;
|
|
262
|
+
/** Disposición (atajo de `labelPosition`); si no, la del esquema. */
|
|
263
|
+
readonly layout: _angular_core.InputSignal<CbFormLayout | undefined>;
|
|
264
|
+
/** Posición de las etiquetas; si no, la del esquema (encima por defecto). */
|
|
265
|
+
readonly labelPosition: _angular_core.InputSignal<CbFormLabelPosition | undefined>;
|
|
266
|
+
/** Columnas; si no, las del esquema (1 por defecto). */
|
|
267
|
+
readonly columns: _angular_core.InputSignal<CbFormResponsive<number> | undefined>;
|
|
268
|
+
/** Ancho de la etiqueta a un lado; si no, el del esquema (`10rem`). */
|
|
269
|
+
readonly labelWidth: _angular_core.InputSignal<string | undefined>;
|
|
270
|
+
/** Tamaño de los controles; si no, el del esquema (`md`). */
|
|
271
|
+
readonly size: _angular_core.InputSignal<CbFormSize | undefined>;
|
|
272
|
+
/** Cargadores de opciones por nombre (`optionsLoader` en el esquema). */
|
|
273
|
+
readonly loaders: _angular_core.InputSignal<Readonly<Record<string, CbFormOptionsLoader>>>;
|
|
274
|
+
/** Traduce los textos del esquema que son claves (`'clientes.nombre'` → `'Nombre'`). */
|
|
275
|
+
readonly translate: _angular_core.InputSignal<((text: string) => string) | null>;
|
|
276
|
+
/** Botones de enviar (y restablecer, si el esquema tiene `resetLabel`). */
|
|
277
|
+
readonly actions: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
278
|
+
/** Deshabilita todo el formulario. */
|
|
279
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
280
|
+
/** Muestra el botón de enviar cargando (mientras se guarda). */
|
|
281
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
282
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
283
|
+
/** Se envió el formulario y es válido: el valor (sin los campos ocultos). */
|
|
284
|
+
readonly formSubmit: _angular_core.OutputEmitterRef<Record<string, unknown>>;
|
|
285
|
+
/** Se envió (o se intentó pasar de paso) con errores: cuáles (`key` y mensaje). */
|
|
286
|
+
readonly formInvalid: _angular_core.OutputEmitterRef<{
|
|
287
|
+
key: string;
|
|
288
|
+
message: string;
|
|
289
|
+
}[]>;
|
|
290
|
+
readonly formReset: _angular_core.OutputEmitterRef<void>;
|
|
291
|
+
/** Cambio de paso (índice desde 0). */
|
|
292
|
+
readonly stepChange: _angular_core.OutputEmitterRef<number>;
|
|
293
|
+
protected readonly steps: _angular_core.Signal<readonly _caribeng_ui_dynamic_form.CbFormStep[]>;
|
|
294
|
+
protected readonly step: _angular_core.WritableSignal<number>;
|
|
295
|
+
protected readonly sections: _angular_core.Signal<readonly CbFormSection[]>;
|
|
296
|
+
private readonly fields;
|
|
297
|
+
protected readonly basePosition: _angular_core.Signal<CbFormLabelPosition>;
|
|
298
|
+
protected readonly labelWidthValue: _angular_core.Signal<string>;
|
|
299
|
+
protected readonly actionsLabelPosition: _angular_core.Signal<"top" | "left">;
|
|
300
|
+
private readonly sizeValue;
|
|
301
|
+
private readonly baseCols;
|
|
302
|
+
/** El `FormGroup` que se arma con el esquema. */
|
|
303
|
+
readonly form: _angular_core.WritableSignal<FormGroup<Record<string, AbstractControl<any, any, any>>>>;
|
|
304
|
+
/** Se incrementa con cada evento del formulario para recalcular estado y errores. */
|
|
305
|
+
private readonly tick;
|
|
306
|
+
/** Paso cuyos errores se muestran (tras intentar avanzar o enviar). */
|
|
307
|
+
private readonly attempted;
|
|
308
|
+
private readonly hidden;
|
|
309
|
+
private readonly required;
|
|
310
|
+
private readonly options;
|
|
311
|
+
private readonly depsKeys;
|
|
312
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
313
|
+
private lastEmitted;
|
|
314
|
+
private subscription;
|
|
315
|
+
private syncing;
|
|
316
|
+
private readonly texts;
|
|
317
|
+
/** Errores que se listan arriba tras un envío o un intento de avanzar fallido. */
|
|
318
|
+
protected readonly summary: _angular_core.Signal<{
|
|
319
|
+
id: string;
|
|
320
|
+
label: string;
|
|
321
|
+
message: string;
|
|
322
|
+
}[]>;
|
|
323
|
+
constructor();
|
|
324
|
+
/** Valida y, si todo está bien, emite `formSubmit`; si no, muestra el resumen de errores. */
|
|
325
|
+
submit(): void;
|
|
326
|
+
/** Pasa al paso siguiente si los campos del actual son válidos. */
|
|
327
|
+
next(): void;
|
|
328
|
+
/** Vuelve al paso anterior (sin validar). */
|
|
329
|
+
back(): void;
|
|
330
|
+
/** Vuelve a los valores iniciales del esquema. */
|
|
331
|
+
reset(): void;
|
|
332
|
+
/** Lleva el foco al control de un campo (por su `key` de primer nivel). */
|
|
333
|
+
focusField(key: string): void;
|
|
334
|
+
protected onSubmit(event: Event): void;
|
|
335
|
+
/** Texto del esquema resuelto: por idioma (`{ es, en }`) y con `translate`. */
|
|
336
|
+
tr(text: CbFormText | undefined | null): string;
|
|
337
|
+
protected rootCtx(section: CbFormSection): GridCtx;
|
|
338
|
+
protected childCtx(parent: GridCtx, f: CbFormField, group: FormGroup, index: number | null): GridCtx;
|
|
339
|
+
/** Columnas por tamaño: un número fijo `n` es 1 en móvil y `n` desde 40rem. */
|
|
340
|
+
private colsOf;
|
|
341
|
+
protected gridVars(cols: {
|
|
342
|
+
base: number;
|
|
343
|
+
sm: number;
|
|
344
|
+
md: number;
|
|
345
|
+
lg: number;
|
|
346
|
+
}): string;
|
|
347
|
+
/** Columnas que ocupa un elemento en cada tamaño (`full` o `span n`), y si empieza fila. */
|
|
348
|
+
protected cellVars(f: CbFormField, cols: {
|
|
349
|
+
base: number;
|
|
350
|
+
sm: number;
|
|
351
|
+
md: number;
|
|
352
|
+
lg: number;
|
|
353
|
+
}, wideByDefault: boolean): string;
|
|
354
|
+
protected kindOf(f: CbFormField): 'heading' | 'paragraph' | 'divider' | 'list' | 'group' | 'field';
|
|
355
|
+
protected controlKind(f: CbFormField): string;
|
|
356
|
+
protected customTemplate(f: CbFormField): TemplateRef<CbFormFieldContext> | null;
|
|
357
|
+
protected labelPos(f: CbFormField, ctx: GridCtx): CbFormLabelPosition;
|
|
358
|
+
protected placeholderOf(f: CbFormField, pos: CbFormLabelPosition): string;
|
|
359
|
+
protected sizeOf(f: CbFormField, ctx: GridCtx): CbFormSize;
|
|
360
|
+
protected isReadonly(f: CbFormField): boolean;
|
|
361
|
+
protected filled(ctrl: AbstractControl): boolean;
|
|
362
|
+
protected pathKey(path: readonly (string | number)[], key: string | undefined): string;
|
|
363
|
+
protected idOf(path: readonly (string | number)[], key: string | undefined): string;
|
|
364
|
+
private pathLabel;
|
|
365
|
+
protected isInline(f: CbFormField): boolean;
|
|
366
|
+
protected isLabelable(f: CbFormField): boolean;
|
|
367
|
+
protected ownsMessages(f: CbFormField): boolean;
|
|
368
|
+
protected inputType(f: CbFormField): 'text' | 'email' | 'tel' | 'url';
|
|
369
|
+
protected controlOf(group: FormGroup, f: CbFormField): FormControl<unknown>;
|
|
370
|
+
protected subGroup(group: FormGroup, f: CbFormField): FormGroup;
|
|
371
|
+
protected listItems(group: FormGroup, f: CbFormField): FormGroup[];
|
|
372
|
+
protected itemLabel(f: CbFormField, i: number): string;
|
|
373
|
+
protected isDisabledForm(): boolean;
|
|
374
|
+
protected isVisible(f: CbFormField, path: readonly (string | number)[], index: number): boolean;
|
|
375
|
+
protected sectionVisible(section: CbFormSection): boolean;
|
|
376
|
+
protected isRequired(path: readonly (string | number)[], key: string | undefined): boolean;
|
|
377
|
+
protected optionsOf(path: readonly (string | number)[], f: CbFormField): {
|
|
378
|
+
label: string;
|
|
379
|
+
value: unknown;
|
|
380
|
+
disabled?: boolean;
|
|
381
|
+
}[];
|
|
382
|
+
/** Mensaje de error de un campo, si ya se tocó, se cambió o se intentó enviar. */
|
|
383
|
+
protected errorOf(path: readonly (string | number)[], f: CbFormField, ctrl: AbstractControl): string | null;
|
|
384
|
+
protected addItem(group: FormGroup, f: CbFormField): void;
|
|
385
|
+
protected removeItem(group: FormGroup, f: CbFormField, i: number): void;
|
|
386
|
+
focusById(id: string): void;
|
|
387
|
+
private goTo;
|
|
388
|
+
/** Marca los campos de un paso y dice si son válidos (con `show`, muestra el resumen). */
|
|
389
|
+
private validateStep;
|
|
390
|
+
private build;
|
|
391
|
+
private buildGroup;
|
|
392
|
+
/** Aplica condiciones, cálculos, opciones y validaciones en todo el árbol. */
|
|
393
|
+
private sync;
|
|
394
|
+
private walk;
|
|
395
|
+
private setEnabled;
|
|
396
|
+
/** Opciones de `optionsFrom` / `optionsLoader`: se recalculan al cambiar las dependencias. */
|
|
397
|
+
private syncOptions;
|
|
398
|
+
private rawValue;
|
|
399
|
+
/** Valor sin los campos ocultos (en todos los niveles). */
|
|
400
|
+
private currentValue;
|
|
401
|
+
private emitValue;
|
|
402
|
+
private say;
|
|
403
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbDynamicForm, never>;
|
|
404
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbDynamicForm, "cb-dynamic-form", never, { "schema": { "alias": "schema"; "required": true; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "labelPosition": { "alias": "labelPosition"; "required": false; "isSignal": true; }; "columns": { "alias": "columns"; "required": false; "isSignal": true; }; "labelWidth": { "alias": "labelWidth"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "loaders": { "alias": "loaders"; "required": false; "isSignal": true; }; "translate": { "alias": "translate"; "required": false; "isSignal": true; }; "actions": { "alias": "actions"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "formSubmit": "formSubmit"; "formInvalid": "formInvalid"; "formReset": "formReset"; "stepChange": "stepChange"; }, ["templates"], never, true, never>;
|
|
405
|
+
}
|
|
406
|
+
|
|
407
|
+
export { CbDynamicForm, CbFormFieldTemplate, evaluateFormula };
|
|
408
|
+
export type { CbFormCondition, CbFormConditionRule, CbFormField, CbFormFieldContext, CbFormFieldType, CbFormLabelOptions, CbFormLabelPosition, CbFormLayout, CbFormMessages, CbFormOption, CbFormOptionsLoader, CbFormResponsive, CbFormRule, CbFormSchema, CbFormSection, CbFormSize, CbFormStep, CbFormText };
|
|
409
|
+
//# sourceMappingURL=caribeng-ui-dynamic-form.d.ts.map
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import * as _caribeng_ui from '@caribeng/ui';
|
|
2
|
-
import { CbTranslation } from '@caribeng/ui';
|
|
2
|
+
import { CbTranslation, cbFormat } from '@caribeng/ui';
|
|
3
3
|
import * as _angular_core from '@angular/core';
|
|
4
4
|
import { ControlValueAccessor } from '@angular/forms';
|
|
5
|
+
import { CbCropRect } from '@caribeng/ui/image-cropper';
|
|
5
6
|
|
|
6
7
|
interface CbCharGroup {
|
|
7
8
|
label: (t: CbTranslation) => string;
|
|
@@ -32,14 +33,6 @@ declare function cbSanitizeHtml(html: string | null | undefined, options?: CbSan
|
|
|
32
33
|
/** Texto plano del HTML (para contar caracteres o guardar un resumen). */
|
|
33
34
|
declare function cbHtmlToText(html: string | null | undefined): string;
|
|
34
35
|
|
|
35
|
-
/** Recuadro de recorte en fracciones de la imagen (0–1). */
|
|
36
|
-
interface CbCropRect {
|
|
37
|
-
x: number;
|
|
38
|
-
y: number;
|
|
39
|
-
w: number;
|
|
40
|
-
h: number;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
36
|
/** Una tipografía del selector: nombre visible y pila CSS que se guarda en el HTML (`''` = predeterminada). */
|
|
44
37
|
interface CbEditorFont {
|
|
45
38
|
name: string;
|
|
@@ -59,8 +52,10 @@ declare const CB_EDITOR_FONTS: readonly CbEditorFontGroup[];
|
|
|
59
52
|
/** Hoja de Google Fonts con las tipografías por defecto (regular, negrita y sus cursivas). */
|
|
60
53
|
declare const CB_EDITOR_FONTS_HREF: string;
|
|
61
54
|
|
|
55
|
+
declare function codeLanguageLabel(language: string): string;
|
|
56
|
+
|
|
62
57
|
/** Herramientas de la barra; `'|'` es un separador y `'-'` empieza una fila nueva. */
|
|
63
|
-
type CbEditorTool = 'heading' | 'fontFamily' | 'fontSize' | 'bold' | 'italic' | 'underline' | 'strike' | 'code' | 'subscript' | 'superscript' | 'textColor' | 'highlight' | 'bulletList' | 'orderedList' | 'taskList' | 'indent' | 'outdent' | 'quote' | 'codeBlock' | 'alignment' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'link' | 'image' | 'table' | 'horizontalRule' | 'clear' | 'undo' | 'redo' | 'source' | 'fullscreen' | 'specialChars' | 'findReplace' | '|' | '-';
|
|
58
|
+
type CbEditorTool = 'heading' | 'fontFamily' | 'fontSize' | 'bold' | 'italic' | 'underline' | 'strike' | 'code' | 'subscript' | 'superscript' | 'textColor' | 'highlight' | 'bulletList' | 'orderedList' | 'taskList' | 'indent' | 'outdent' | 'quote' | 'codeBlock' | 'alignment' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'alignJustify' | 'link' | 'image' | 'table' | 'horizontalRule' | 'clear' | 'undo' | 'redo' | 'source' | 'fullscreen' | 'specialChars' | 'findReplace' | 'details' | 'toc' | '|' | '-';
|
|
64
59
|
/**
|
|
65
60
|
* Barra por defecto, en dos filas: arriba el texto (bloque, fuente, tamaño, estilos y color);
|
|
66
61
|
* abajo la estructura (listas, alineación, inserciones, buscar y vistas).
|
|
@@ -68,6 +63,17 @@ type CbEditorTool = 'heading' | 'fontFamily' | 'fontSize' | 'bold' | 'italic' |
|
|
|
68
63
|
declare const CB_EDITOR_DEFAULT_TOOLBAR: readonly CbEditorTool[];
|
|
69
64
|
/** Sube una imagen y devuelve su URL pública (p. ej. a tu servidor o a un bucket). */
|
|
70
65
|
type CbEditorImageUpload = (file: File) => Promise<string>;
|
|
66
|
+
/** Persona (o elemento) que se puede mencionar con `@`. */
|
|
67
|
+
interface CbEditorMention {
|
|
68
|
+
/** Identificador que se guarda en el HTML (`data-mention`). */
|
|
69
|
+
readonly id: string;
|
|
70
|
+
/** Texto que se muestra tras la `@`. */
|
|
71
|
+
readonly label: string;
|
|
72
|
+
/** Texto secundario en la lista (cargo, correo…). */
|
|
73
|
+
readonly description?: string;
|
|
74
|
+
}
|
|
75
|
+
/** Lista fija de menciones o función que las busca (puede ser asíncrona, p. ej. contra tu API). */
|
|
76
|
+
type CbEditorMentionSource = readonly CbEditorMention[] | ((query: string) => readonly CbEditorMention[] | Promise<readonly CbEditorMention[]>);
|
|
71
77
|
/** Motivo por el que no se insertó una imagen. */
|
|
72
78
|
interface CbEditorImageError {
|
|
73
79
|
file: File;
|
|
@@ -171,8 +177,22 @@ declare class CbEditor implements ControlValueAccessor {
|
|
|
171
177
|
readonly autolink: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
172
178
|
/** Corrección tipográfica al escribir: `(c)` → ©, `...` → …, `->` → →, ` -- ` → –, `1/2` → ½. */
|
|
173
179
|
readonly typography: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
180
|
+
/**
|
|
181
|
+
* Menciones con `@`: una lista fija o una función que busca (síncrona o con
|
|
182
|
+
* promesa). Se guardan como `<span data-mention="id">@Nombre</span>`.
|
|
183
|
+
*/
|
|
184
|
+
readonly mentions: _angular_core.InputSignal<CbEditorMentionSource | null>;
|
|
185
|
+
/**
|
|
186
|
+
* Guarda un borrador en este navegador (`localStorage`) mientras se escribe;
|
|
187
|
+
* al volver, ofrece restaurarlo. Usa una clave por documento (p. ej. `'acta-42'`).
|
|
188
|
+
*/
|
|
189
|
+
readonly autosaveKey: _angular_core.InputSignal<string>;
|
|
190
|
+
/** Espera (ms) tras la última tecla antes de guardar el borrador. */
|
|
191
|
+
readonly autosaveDelay: _angular_core.InputSignalWithTransform<number, unknown>;
|
|
174
192
|
/** HTML del contenido (saneado y normalizado; `''` si está vacío). */
|
|
175
193
|
readonly value: _angular_core.ModelSignal<string>;
|
|
194
|
+
/** Se insertó una mención. */
|
|
195
|
+
readonly mentionAdd: _angular_core.OutputEmitterRef<CbEditorMention>;
|
|
176
196
|
/** Una imagen no se pudo insertar (tipo, tamaño o error de subida). */
|
|
177
197
|
readonly imageError: _angular_core.OutputEmitterRef<CbEditorImageError>;
|
|
178
198
|
/** Estado de validación: inputs manuales + estado de Angular Forms. */
|
|
@@ -326,6 +346,42 @@ declare class CbEditor implements ControlValueAccessor {
|
|
|
326
346
|
icon: string;
|
|
327
347
|
label: (t: CbTranslation) => string;
|
|
328
348
|
}[];
|
|
349
|
+
/** Bloque de código donde está el cursor (muestra su barra). */
|
|
350
|
+
protected readonly codeBlock: _angular_core.WritableSignal<HTMLElement | null>;
|
|
351
|
+
private readonly codeTick;
|
|
352
|
+
protected readonly codeLanguage: _angular_core.Signal<string>;
|
|
353
|
+
protected readonly codeLanguages: readonly ["", "typescript", "javascript", "html", "css", "scss", "json", "bash", "python", "sql"];
|
|
354
|
+
protected readonly codeCopied: _angular_core.WritableSignal<boolean>;
|
|
355
|
+
protected readonly languageLabel: typeof codeLanguageLabel;
|
|
356
|
+
protected readonly fmt: typeof cbFormat;
|
|
357
|
+
/** Qué se puede hacer con la celda actual: combinar a la derecha / abajo, separar. */
|
|
358
|
+
protected readonly cellActions: _angular_core.Signal<{
|
|
359
|
+
right: boolean;
|
|
360
|
+
down: boolean;
|
|
361
|
+
split: boolean;
|
|
362
|
+
}>;
|
|
363
|
+
protected readonly imageHasCaption: _angular_core.Signal<boolean>;
|
|
364
|
+
/** Menú de menciones: texto tras la `@`, opción activa y posición. */
|
|
365
|
+
protected readonly mention: _angular_core.WritableSignal<{
|
|
366
|
+
query: string;
|
|
367
|
+
active: number;
|
|
368
|
+
left: number;
|
|
369
|
+
top: number;
|
|
370
|
+
} | null>;
|
|
371
|
+
protected readonly mentionResults: _angular_core.WritableSignal<readonly CbEditorMention[]>;
|
|
372
|
+
private mentionAnchor;
|
|
373
|
+
private mentionToken;
|
|
374
|
+
protected readonly mentionListId: string;
|
|
375
|
+
/** Índice: firma de los títulos con la que se generó (no se reescribe si no cambian). */
|
|
376
|
+
private tocSignature;
|
|
377
|
+
/** Borrador guardado en este navegador que difiere del valor actual. */
|
|
378
|
+
protected readonly draft: _angular_core.WritableSignal<{
|
|
379
|
+
html: string;
|
|
380
|
+
savedAt: number;
|
|
381
|
+
} | null>;
|
|
382
|
+
/** Hora del último borrador guardado (se muestra al pie). */
|
|
383
|
+
protected readonly savedAt: _angular_core.WritableSignal<number | null>;
|
|
384
|
+
private draftTimer;
|
|
329
385
|
/** Último HTML emitido o cargado: evita reescribir el DOM (y mover el cursor) con su propio valor. */
|
|
330
386
|
private lastHtml;
|
|
331
387
|
private onChange;
|
|
@@ -499,6 +555,48 @@ declare class CbEditor implements ControlValueAccessor {
|
|
|
499
555
|
protected startResize(event: PointerEvent): void;
|
|
500
556
|
/** Flechas, Inicio y Fin en las barras de tabla e imagen (patrón *toolbar*). */
|
|
501
557
|
protected onContextKeydown(event: KeyboardEvent): void;
|
|
558
|
+
/** Lenguaje del bloque de código actual; si el lenguaje se conoce, lo colorea. */
|
|
559
|
+
setCodeLanguage(language: string): void;
|
|
560
|
+
protected copyCode(): Promise<void>;
|
|
561
|
+
/** Añade o quita el pie de la imagen seleccionada. */
|
|
562
|
+
toggleCaption(): void;
|
|
563
|
+
/** Enter en un pie de imagen o en el título de un desplegable: sigue en el bloque siguiente. */
|
|
564
|
+
private exitInlineBlock;
|
|
565
|
+
/** Inserta un desplegable (`<details>`) con su título seleccionado para escribirlo. */
|
|
566
|
+
insertDetails(): void;
|
|
567
|
+
/** Inserta el índice del documento: enlaces a los títulos, que se actualizan solos. */
|
|
568
|
+
insertToc(): void;
|
|
569
|
+
/**
|
|
570
|
+
* Inserta un bloque tras el bloque del cursor (o en su lugar, si es un párrafo
|
|
571
|
+
* vacío), con un párrafo detrás para seguir escribiendo. `insertHTML` del
|
|
572
|
+
* navegador parte los párrafos y descoloca estos bloques.
|
|
573
|
+
*/
|
|
574
|
+
private insertBlock;
|
|
575
|
+
/** Mantiene al día los índices: ids en los títulos y enlaces a ellos. */
|
|
576
|
+
private refreshToc;
|
|
577
|
+
/** Tras escribir `@` al inicio de una palabra, abre la lista de menciones. */
|
|
578
|
+
private openMention;
|
|
579
|
+
private updateMention;
|
|
580
|
+
private searchMentions;
|
|
581
|
+
protected closeMention(): void;
|
|
582
|
+
protected mentionOptionId(index: number): string;
|
|
583
|
+
/** Cambia `@texto` por la mención (un bloque no editable) seguida de un espacio. */
|
|
584
|
+
protected applyMention(item: CbEditorMention): void;
|
|
585
|
+
private onMentionKeydown;
|
|
586
|
+
/** Ids de las personas mencionadas en el contenido (sin repetir). */
|
|
587
|
+
getMentions(): string[];
|
|
588
|
+
private draftStorageKey;
|
|
589
|
+
private loadDraft;
|
|
590
|
+
private scheduleDraft;
|
|
591
|
+
private saveDraft;
|
|
592
|
+
/** Recupera el borrador guardado en este navegador. */
|
|
593
|
+
restoreDraft(): void;
|
|
594
|
+
/** Descarta el borrador guardado. */
|
|
595
|
+
discardDraft(): void;
|
|
596
|
+
/** Borra el borrador de este navegador (llámalo tras guardar en tu servidor). */
|
|
597
|
+
clearDraft(): void;
|
|
598
|
+
protected draftDate(at: number): string;
|
|
599
|
+
protected draftTime(at: number): string;
|
|
502
600
|
private toggleSource;
|
|
503
601
|
/** Saneado con las opciones del editor (imágenes y tipografías permitidas). */
|
|
504
602
|
private sanitize;
|
|
@@ -514,9 +612,9 @@ declare class CbEditor implements ControlValueAccessor {
|
|
|
514
612
|
/** Lee el formato de la selección para marcar las herramientas activas. */
|
|
515
613
|
private updateState;
|
|
516
614
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbEditor, never>;
|
|
517
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbEditor, "cb-editor", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "wordCount": { "alias": "wordCount"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "images": { "alias": "images"; "required": false; "isSignal": true; }; "imageUpload": { "alias": "imageUpload"; "required": false; "isSignal": true; }; "maxImageSize": { "alias": "maxImageSize"; "required": false; "isSignal": true; }; "pastePlainText": { "alias": "pastePlainText"; "required": false; "isSignal": true; }; "fonts": { "alias": "fonts"; "required": false; "isSignal": true; }; "fontsHref": { "alias": "fontsHref"; "required": false; "isSignal": true; }; "bubbleMenu": { "alias": "bubbleMenu"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "autolink": { "alias": "autolink"; "required": false; "isSignal": true; }; "typography": { "alias": "typography"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "imageError": "imageError"; }, never, never, true, never>;
|
|
615
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbEditor, "cb-editor", never, { "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "height": { "alias": "height"; "required": false; "isSignal": true; }; "maxHeight": { "alias": "maxHeight"; "required": false; "isSignal": true; }; "wordCount": { "alias": "wordCount"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "readonly": { "alias": "readonly"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "toolbar": { "alias": "toolbar"; "required": false; "isSignal": true; }; "maxLength": { "alias": "maxLength"; "required": false; "isSignal": true; }; "images": { "alias": "images"; "required": false; "isSignal": true; }; "imageUpload": { "alias": "imageUpload"; "required": false; "isSignal": true; }; "maxImageSize": { "alias": "maxImageSize"; "required": false; "isSignal": true; }; "pastePlainText": { "alias": "pastePlainText"; "required": false; "isSignal": true; }; "fonts": { "alias": "fonts"; "required": false; "isSignal": true; }; "fontsHref": { "alias": "fontsHref"; "required": false; "isSignal": true; }; "bubbleMenu": { "alias": "bubbleMenu"; "required": false; "isSignal": true; }; "slashCommands": { "alias": "slashCommands"; "required": false; "isSignal": true; }; "autolink": { "alias": "autolink"; "required": false; "isSignal": true; }; "typography": { "alias": "typography"; "required": false; "isSignal": true; }; "mentions": { "alias": "mentions"; "required": false; "isSignal": true; }; "autosaveKey": { "alias": "autosaveKey"; "required": false; "isSignal": true; }; "autosaveDelay": { "alias": "autosaveDelay"; "required": false; "isSignal": true; }; "value": { "alias": "value"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "mentionAdd": "mentionAdd"; "imageError": "imageError"; }, never, never, true, never>;
|
|
518
616
|
}
|
|
519
617
|
|
|
520
618
|
export { CB_EDITOR_DEFAULT_TOOLBAR, CB_EDITOR_FONTS, CB_EDITOR_FONTS_HREF, CbEditor, cbHtmlToText, cbSanitizeHtml };
|
|
521
|
-
export type { CbEditorFont, CbEditorFontGroup, CbEditorImageError, CbEditorImageUpload, CbEditorTool, CbSanitizeOptions };
|
|
619
|
+
export type { CbEditorFont, CbEditorFontGroup, CbEditorImageError, CbEditorImageUpload, CbEditorMention, CbEditorMentionSource, CbEditorTool, CbSanitizeOptions };
|
|
522
620
|
//# sourceMappingURL=caribeng-ui-editor.d.ts.map
|
|
@@ -6,7 +6,7 @@ interface CbFabMenuItem {
|
|
|
6
6
|
label: string;
|
|
7
7
|
}
|
|
8
8
|
/**
|
|
9
|
-
* Fab-menu
|
|
9
|
+
* Fab-menu: botón de acción flotante que despliega una lista
|
|
10
10
|
* de acciones rápidas.
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
@@ -38,4 +38,4 @@ declare class CbFabMenu {
|
|
|
38
38
|
|
|
39
39
|
export { CbFabMenu };
|
|
40
40
|
export type { CbFabMenuItem };
|
|
41
|
-
//# sourceMappingURL=caribeng-ui-
|
|
41
|
+
//# sourceMappingURL=caribeng-ui-fab-menu.d.ts.map
|