@caribeng/ui 22.2.0 → 22.4.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 +93 -11
- package/fesm2022/caribeng-ui-accordion.mjs +2 -2
- package/fesm2022/caribeng-ui-avatar.mjs +2 -2
- package/fesm2022/caribeng-ui-badge.mjs +8 -2
- package/fesm2022/caribeng-ui-breadcrumb.mjs +13 -6
- package/fesm2022/caribeng-ui-chart.mjs +8 -5
- package/fesm2022/caribeng-ui-chat.mjs +1303 -0
- 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-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-dataview.mjs +4 -1
- package/fesm2022/caribeng-ui-dock.mjs +52 -12
- package/fesm2022/caribeng-ui-drawer.mjs +9 -4
- package/fesm2022/caribeng-ui-editor.mjs +21 -0
- package/fesm2022/caribeng-ui-fieldset.mjs +2 -2
- package/fesm2022/caribeng-ui-file-card.mjs +134 -17
- package/fesm2022/caribeng-ui-folder-card.mjs +122 -12
- package/fesm2022/caribeng-ui-inlinemessage.mjs +2 -2
- package/fesm2022/caribeng-ui-inputmask.mjs +8 -2
- package/fesm2022/caribeng-ui-kanban.mjs +4612 -0
- package/fesm2022/caribeng-ui-kbd.mjs +122 -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-organizationchart.mjs +6 -10
- package/fesm2022/caribeng-ui-panel.mjs +6 -6
- package/fesm2022/caribeng-ui-panelmenu.mjs +9 -6
- package/fesm2022/caribeng-ui-phone-input.mjs +688 -0
- package/fesm2022/caribeng-ui-pricing.mjs +263 -69
- package/fesm2022/caribeng-ui-qrcode.mjs +564 -0
- package/fesm2022/caribeng-ui-ripple.mjs +2 -0
- package/fesm2022/caribeng-ui-scrolltop.mjs +3 -1
- package/fesm2022/caribeng-ui-sidebar.mjs +573 -0
- package/fesm2022/caribeng-ui-stepper.mjs +10 -3
- package/fesm2022/caribeng-ui-table.mjs +10 -4
- package/fesm2022/caribeng-ui-tabmenu.mjs +8 -4
- package/fesm2022/caribeng-ui-tieredmenu.mjs +109 -19
- package/fesm2022/caribeng-ui.mjs +388 -1
- package/package.json +42 -2
- 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-badge.d.ts +3 -1
- package/types/caribeng-ui-breadcrumb.d.ts +8 -0
- package/types/caribeng-ui-chart.d.ts +3 -1
- package/types/caribeng-ui-chat.d.ts +299 -0
- 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-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-dataview.d.ts +2 -0
- package/types/caribeng-ui-dock.d.ts +13 -1
- package/types/caribeng-ui-drawer.d.ts +3 -1
- package/types/caribeng-ui-file-card.d.ts +27 -2
- package/types/caribeng-ui-folder-card.d.ts +27 -5
- package/types/caribeng-ui-inputmask.d.ts +3 -1
- package/types/caribeng-ui-kanban.d.ts +783 -0
- package/types/caribeng-ui-kbd.d.ts +36 -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-panelmenu.d.ts +7 -0
- package/types/caribeng-ui-phone-input.d.ts +168 -0
- package/types/caribeng-ui-pricing.d.ts +41 -4
- package/types/caribeng-ui-qrcode.d.ts +88 -0
- package/types/caribeng-ui-sidebar.d.ts +167 -0
- package/types/caribeng-ui-stepper.d.ts +2 -0
- package/types/caribeng-ui-table.d.ts +1 -1
- package/types/caribeng-ui-tabmenu.d.ts +7 -0
- package/types/caribeng-ui-tieredmenu.d.ts +17 -1
- package/types/caribeng-ui.d.ts +276 -2
- 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
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
|
|
3
|
+
/** Plataforma para la que se muestran las teclas. `auto` la detecta en el navegador. */
|
|
4
|
+
type CbKbdPlatform = 'auto' | 'mac' | 'other';
|
|
5
|
+
interface KeyLabel {
|
|
6
|
+
/** Texto visible. */
|
|
7
|
+
text: string;
|
|
8
|
+
/** Nombre leído por el lector de pantalla cuando el visible es un símbolo. */
|
|
9
|
+
spoken?: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Tecla o atajo de teclado de CaribeNG. Con contenido muestra una tecla; con
|
|
13
|
+
* `keys` muestra la combinación (⌘ K en Mac, Ctrl + K en el resto).
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```html
|
|
17
|
+
* <cb-kbd>Esc</cb-kbd>
|
|
18
|
+
* <cb-kbd [keys]="['mod', 'K']" />
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
declare class CbKbd {
|
|
22
|
+
private readonly doc;
|
|
23
|
+
/** Teclas de la combinación: nombres (`mod`, `shift`, `alt`, `enter`, `up`…) o texto libre (`K`, `F2`). */
|
|
24
|
+
readonly keys: _angular_core.InputSignal<readonly string[]>;
|
|
25
|
+
/** Plataforma a mostrar. `auto` la detecta (⌘ en Mac). */
|
|
26
|
+
readonly platform: _angular_core.InputSignal<CbKbdPlatform>;
|
|
27
|
+
readonly size: _angular_core.InputSignal<"sm" | "md">;
|
|
28
|
+
protected readonly isMac: _angular_core.Signal<boolean>;
|
|
29
|
+
protected readonly labels: _angular_core.Signal<KeyLabel[]>;
|
|
30
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbKbd, never>;
|
|
31
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbKbd, "cb-kbd", never, { "keys": { "alias": "keys"; "required": false; "isSignal": true; }; "platform": { "alias": "platform"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
export { CbKbd };
|
|
35
|
+
export type { CbKbdPlatform };
|
|
36
|
+
//# sourceMappingURL=caribeng-ui-kbd.d.ts.map
|
|
@@ -1,20 +1,29 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { CbMenuCommandEvent } from '@caribeng/ui';
|
|
3
4
|
|
|
4
5
|
interface CbMegaMenuLink {
|
|
5
6
|
label: string;
|
|
6
7
|
url?: string;
|
|
7
8
|
icon?: string;
|
|
8
9
|
disabled?: boolean;
|
|
10
|
+
/** Acción al elegir el item (además del evento de selección), como `command` en PrimeNG. */
|
|
11
|
+
command?: (event: CbMenuCommandEvent<CbMegaMenuLink>) => void;
|
|
12
|
+
/** `false` oculta el item. */
|
|
13
|
+
visible?: boolean;
|
|
9
14
|
}
|
|
10
15
|
interface CbMegaMenuGroup {
|
|
11
16
|
label: string;
|
|
12
17
|
items: readonly CbMegaMenuLink[];
|
|
18
|
+
/** `false` oculta el elemento. */
|
|
19
|
+
visible?: boolean;
|
|
13
20
|
}
|
|
14
21
|
interface CbMegaMenuItem {
|
|
15
22
|
label: string;
|
|
16
23
|
icon?: string;
|
|
17
24
|
groups: readonly CbMegaMenuGroup[];
|
|
25
|
+
/** `false` oculta el elemento. */
|
|
26
|
+
visible?: boolean;
|
|
18
27
|
}
|
|
19
28
|
/**
|
|
20
29
|
* Menú de categorías con paneles de varias columnas (patrón *disclosure
|
|
@@ -34,6 +43,8 @@ declare class CbMegaMenu {
|
|
|
34
43
|
protected readonly panelId: string;
|
|
35
44
|
/** Categorías con sus grupos de enlaces. */
|
|
36
45
|
readonly items: _angular_core.InputSignal<readonly CbMegaMenuItem[]>;
|
|
46
|
+
/** Items sin los de `visible: false`. */
|
|
47
|
+
protected readonly visibleItems: _angular_core.Signal<CbMegaMenuItem[]>;
|
|
37
48
|
/** Nombre accesible de la navegación. Por defecto, "Categorías" del idioma activo. */
|
|
38
49
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
39
50
|
/** Se emite al elegir un enlace. */
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { CbRequiredIndicator } from '@caribeng/ui';
|
|
4
|
+
import { ControlValueAccessor } from '@angular/forms';
|
|
5
|
+
|
|
6
|
+
/** Persona, etiqueta o elemento que se puede mencionar. */
|
|
7
|
+
interface CbMentionItem {
|
|
8
|
+
readonly id: string;
|
|
9
|
+
/** Texto que se inserta tras el disparador (`@Laura Gómez`). */
|
|
10
|
+
readonly label: string;
|
|
11
|
+
/** Texto secundario en la lista (cargo, correo…). */
|
|
12
|
+
readonly description?: string;
|
|
13
|
+
/** Imagen del avatar en la lista. */
|
|
14
|
+
readonly avatar?: string;
|
|
15
|
+
/** Disparador al que pertenece (`@` por defecto, `#` para etiquetas…). */
|
|
16
|
+
readonly trigger?: string;
|
|
17
|
+
}
|
|
18
|
+
/** Mención presente en el texto. */
|
|
19
|
+
interface CbMention {
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly label: string;
|
|
22
|
+
readonly trigger: string;
|
|
23
|
+
}
|
|
24
|
+
/** Búsqueda en curso (para pedir sugerencias al servidor). */
|
|
25
|
+
interface CbMentionSearch {
|
|
26
|
+
readonly trigger: string;
|
|
27
|
+
readonly query: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Campo de texto con menciones de CaribeNG: al escribir `@` (u otro
|
|
31
|
+
* disparador como `#`) muestra sugerencias junto al cursor, que se filtran
|
|
32
|
+
* sin tildes y se eligen con el teclado o el ratón. Funciona con Angular Forms
|
|
33
|
+
* (el valor es el texto) y emite las menciones presentes con su `id`.
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* ```html
|
|
37
|
+
* <cb-mentions label="Comentario" [suggestions]="equipo" formControlName="comentario" (mentionsChange)="menciones = $event" />
|
|
38
|
+
* ```
|
|
39
|
+
*/
|
|
40
|
+
declare class CbMentions implements ControlValueAccessor {
|
|
41
|
+
/** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
|
|
42
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
43
|
+
private readonly overlay;
|
|
44
|
+
private readonly vcr;
|
|
45
|
+
private readonly injector;
|
|
46
|
+
private readonly fieldEl;
|
|
47
|
+
private readonly panelTpl;
|
|
48
|
+
private overlayRef;
|
|
49
|
+
protected readonly inputId: string;
|
|
50
|
+
protected readonly listId: string;
|
|
51
|
+
/** Texto (bidireccional y con Angular Forms). */
|
|
52
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
53
|
+
/** Elementos mencionables. Cada uno puede indicar su `trigger`. */
|
|
54
|
+
readonly suggestions: _angular_core.InputSignal<readonly CbMentionItem[]>;
|
|
55
|
+
/** Caracteres que abren las sugerencias. */
|
|
56
|
+
readonly triggers: _angular_core.InputSignal<readonly string[]>;
|
|
57
|
+
/** Filtra `suggestions` con lo escrito. Desactívalo si llegan ya filtradas del servidor. */
|
|
58
|
+
readonly filter: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
59
|
+
/** Máximo de sugerencias visibles. */
|
|
60
|
+
readonly maxResults: _angular_core.InputSignal<number>;
|
|
61
|
+
/** Muestra "Cargando" mientras no hay sugerencias. */
|
|
62
|
+
readonly loading: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
63
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
64
|
+
readonly hint: _angular_core.InputSignal<string>;
|
|
65
|
+
readonly placeholder: _angular_core.InputSignal<string>;
|
|
66
|
+
/** Nombre accesible sin `label` visible. */
|
|
67
|
+
readonly ariaLabel: _angular_core.InputSignal<string>;
|
|
68
|
+
readonly rows: _angular_core.InputSignal<number>;
|
|
69
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
70
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
71
|
+
readonly requiredIndicator: _angular_core.InputSignal<CbRequiredIndicator | undefined>;
|
|
72
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
73
|
+
/** Lo escrito tras el disparador (para pedir sugerencias). */
|
|
74
|
+
readonly search: _angular_core.OutputEmitterRef<CbMentionSearch>;
|
|
75
|
+
/** Menciones presentes en el texto, cada vez que cambian. */
|
|
76
|
+
readonly mentionsChange: _angular_core.OutputEmitterRef<CbMention[]>;
|
|
77
|
+
protected readonly fieldState: _caribeng_ui.CbFieldState;
|
|
78
|
+
private readonly cvaDisabled;
|
|
79
|
+
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
80
|
+
private readonly query;
|
|
81
|
+
protected readonly open: _angular_core.WritableSignal<boolean>;
|
|
82
|
+
protected readonly active: _angular_core.WritableSignal<number>;
|
|
83
|
+
protected readonly announcement: _angular_core.WritableSignal<string>;
|
|
84
|
+
/** Menciones elegidas (se conservan mientras su texto siga en el campo). */
|
|
85
|
+
private chosen;
|
|
86
|
+
private lastMentions;
|
|
87
|
+
protected readonly results: _angular_core.Signal<CbMentionItem[]>;
|
|
88
|
+
protected readonly activeId: _angular_core.Signal<string | null>;
|
|
89
|
+
private onChange;
|
|
90
|
+
private onTouched;
|
|
91
|
+
protected initials(item: CbMentionItem): string;
|
|
92
|
+
writeValue(value: string | null): void;
|
|
93
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
94
|
+
registerOnTouched(fn: () => void): void;
|
|
95
|
+
setDisabledState(isDisabled: boolean): void;
|
|
96
|
+
protected onInput(event: Event): void;
|
|
97
|
+
protected onBlur(): void;
|
|
98
|
+
/** Busca un disparador justo antes del cursor y abre (o cierra) las sugerencias. */
|
|
99
|
+
detect(): void;
|
|
100
|
+
protected onKeydown(event: KeyboardEvent): void;
|
|
101
|
+
/** Inserta la mención elegida en lugar de lo escrito tras el disparador. */
|
|
102
|
+
protected choose(item: CbMentionItem): void;
|
|
103
|
+
/** Quita las menciones cuyo texto ya no está y avisa si cambió la lista. */
|
|
104
|
+
private syncMentions;
|
|
105
|
+
private openPanel;
|
|
106
|
+
private position;
|
|
107
|
+
/** Cierra las sugerencias. */
|
|
108
|
+
close(): void;
|
|
109
|
+
private scrollActiveIntoView;
|
|
110
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbMentions, never>;
|
|
111
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbMentions, "cb-mentions", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "suggestions": { "alias": "suggestions"; "required": false; "isSignal": true; }; "triggers": { "alias": "triggers"; "required": false; "isSignal": true; }; "filter": { "alias": "filter"; "required": false; "isSignal": true; }; "maxResults": { "alias": "maxResults"; "required": false; "isSignal": true; }; "loading": { "alias": "loading"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; "rows": { "alias": "rows"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "requiredIndicator": { "alias": "requiredIndicator"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "search": "search"; "mentionsChange": "mentionsChange"; }, never, never, true, never>;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Posición (px, relativa al campo) del carácter `index` de un textarea o
|
|
116
|
+
* input, con un div espejo invisible que copia su tipografía y su ancho.
|
|
117
|
+
* Sirve para abrir el panel de sugerencias justo bajo lo que se escribe.
|
|
118
|
+
*/
|
|
119
|
+
declare function cbCaretCoordinates(field: HTMLTextAreaElement | HTMLInputElement, index: number): {
|
|
120
|
+
top: number;
|
|
121
|
+
left: number;
|
|
122
|
+
height: number;
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
export { CbMentions, cbCaretCoordinates };
|
|
126
|
+
export type { CbMention, CbMentionItem, CbMentionSearch };
|
|
127
|
+
//# sourceMappingURL=caribeng-ui-mentions.d.ts.map
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { CbMenuCommandEvent } from '@caribeng/ui';
|
|
3
4
|
|
|
4
5
|
interface CbMenuItem {
|
|
5
6
|
label: string;
|
|
@@ -8,6 +9,10 @@ interface CbMenuItem {
|
|
|
8
9
|
target?: string;
|
|
9
10
|
disabled?: boolean;
|
|
10
11
|
separator?: boolean;
|
|
12
|
+
/** Acción al elegir el item (además del evento de selección), como `command` en PrimeNG. */
|
|
13
|
+
command?: (event: CbMenuCommandEvent<CbMenuItem>) => void;
|
|
14
|
+
/** `false` oculta el item. */
|
|
15
|
+
visible?: boolean;
|
|
11
16
|
}
|
|
12
17
|
/** Popup menu anchored to any trigger element. */
|
|
13
18
|
declare class CbMenu {
|
|
@@ -17,6 +22,8 @@ declare class CbMenu {
|
|
|
17
22
|
private readonly vcr;
|
|
18
23
|
private readonly destroyRef;
|
|
19
24
|
readonly items: _angular_core.InputSignal<readonly CbMenuItem[]>;
|
|
25
|
+
/** Items sin los de `visible: false`. */
|
|
26
|
+
protected readonly visibleItems: _angular_core.Signal<CbMenuItem[]>;
|
|
20
27
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
21
28
|
readonly itemSelect: _angular_core.OutputEmitterRef<CbMenuItem>;
|
|
22
29
|
/** Se emite al cerrarse el menú (clic fuera, Escape o al elegir una opción). */
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { CbMenuCommandEvent } from '@caribeng/ui';
|
|
3
4
|
|
|
4
5
|
interface CbMenubarItem {
|
|
5
6
|
label: string;
|
|
@@ -8,6 +9,10 @@ interface CbMenubarItem {
|
|
|
8
9
|
target?: string;
|
|
9
10
|
disabled?: boolean;
|
|
10
11
|
items?: readonly CbMenubarItem[];
|
|
12
|
+
/** Acción al elegir el item (además del evento de selección), como `command` en PrimeNG. */
|
|
13
|
+
command?: (event: CbMenuCommandEvent<CbMenubarItem>) => void;
|
|
14
|
+
/** `false` oculta el item. */
|
|
15
|
+
visible?: boolean;
|
|
11
16
|
}
|
|
12
17
|
/** Horizontal navigation bar with optional one-level dropdown menus. */
|
|
13
18
|
declare class CbMenubar {
|
|
@@ -16,6 +21,8 @@ declare class CbMenubar {
|
|
|
16
21
|
private readonly host;
|
|
17
22
|
private readonly injector;
|
|
18
23
|
readonly items: _angular_core.InputSignal<readonly CbMenubarItem[]>;
|
|
24
|
+
/** Items sin los de `visible: false`. */
|
|
25
|
+
protected readonly visibleItems: _angular_core.Signal<CbMenubarItem[]>;
|
|
19
26
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
20
27
|
readonly itemSelect: _angular_core.OutputEmitterRef<CbMenubarItem>;
|
|
21
28
|
protected readonly openIndex: _angular_core.WritableSignal<number | null>;
|
|
@@ -21,6 +21,8 @@ declare class CbMessage {
|
|
|
21
21
|
readonly icon: _angular_core.InputSignal<string | null>;
|
|
22
22
|
/** Visibilidad (two-way). */
|
|
23
23
|
readonly visible: _angular_core.ModelSignal<boolean>;
|
|
24
|
+
/** danger y warning se anuncian al momento (`alert`); el resto, sin interrumpir (`status`). */
|
|
25
|
+
protected readonly urgent: _angular_core.Signal<boolean>;
|
|
24
26
|
/** Se emite al cerrar. */
|
|
25
27
|
readonly closed: _angular_core.OutputEmitterRef<void>;
|
|
26
28
|
protected readonly iconName: _angular_core.Signal<string>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as _angular_core from '@angular/core';
|
|
2
2
|
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { CbMenuCommandEvent } from '@caribeng/ui';
|
|
3
4
|
|
|
4
5
|
interface CbPanelMenuItem {
|
|
5
6
|
label: string;
|
|
@@ -7,6 +8,10 @@ interface CbPanelMenuItem {
|
|
|
7
8
|
url?: string;
|
|
8
9
|
disabled?: boolean;
|
|
9
10
|
items?: readonly CbPanelMenuItem[];
|
|
11
|
+
/** Acción al elegir el item (además del evento de selección), como `command` en PrimeNG. */
|
|
12
|
+
command?: (event: CbMenuCommandEvent<CbPanelMenuItem>) => void;
|
|
13
|
+
/** `false` oculta el item. */
|
|
14
|
+
visible?: boolean;
|
|
10
15
|
}
|
|
11
16
|
/** Vertical menu with collapsible sections. */
|
|
12
17
|
declare class CbPanelMenu {
|
|
@@ -14,6 +19,8 @@ declare class CbPanelMenu {
|
|
|
14
19
|
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
15
20
|
private readonly uid;
|
|
16
21
|
readonly items: _angular_core.InputSignal<readonly CbPanelMenuItem[]>;
|
|
22
|
+
/** Items sin los de `visible: false`. */
|
|
23
|
+
protected readonly visibleItems: _angular_core.Signal<CbPanelMenuItem[]>;
|
|
17
24
|
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
18
25
|
readonly multiple: _angular_core.InputSignal<boolean>;
|
|
19
26
|
readonly itemSelect: _angular_core.OutputEmitterRef<CbPanelMenuItem>;
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
import { CbRequiredIndicator, CbSize } from '@caribeng/ui';
|
|
4
|
+
import { ControlValueAccessor, Validator, AbstractControl, ValidationErrors } from '@angular/forms';
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Datos de numeración telefónica de un país (plan nacional, ITU-T E.164).
|
|
8
|
+
* El "número nacional" es el que va después del prefijo internacional, sin el
|
|
9
|
+
* 0 (o el dígito) que se marca dentro del país.
|
|
10
|
+
*/
|
|
11
|
+
interface CbPhoneCountry {
|
|
12
|
+
/** Código ISO 3166-1 alfa-2 (`CO`). */
|
|
13
|
+
readonly iso: string;
|
|
14
|
+
/** Prefijo internacional sin `+` (`57`). */
|
|
15
|
+
readonly dial: string;
|
|
16
|
+
/** Longitudes válidas del número nacional. */
|
|
17
|
+
readonly lengths: readonly number[];
|
|
18
|
+
/** Formato por longitud con `#` por dígito (`{ 10: '### ### ####' }`). Sin él, grupos de 3. */
|
|
19
|
+
readonly formats?: Readonly<Record<number, string>>;
|
|
20
|
+
/** Dígito que se marca delante dentro del país y se quita al guardar (`0`). */
|
|
21
|
+
readonly trunk?: string;
|
|
22
|
+
/** Comienzos del número nacional para distinguir países que comparten prefijo (+1). */
|
|
23
|
+
readonly leading?: readonly string[];
|
|
24
|
+
/** Ejemplo de número nacional (se usa como placeholder). */
|
|
25
|
+
readonly example?: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Países incluidos: América Latina y el Caribe, Norteamérica, la Europa más
|
|
29
|
+
* habitual y los mayores de Asia y Oceanía. Amplíalos con `[countries]`.
|
|
30
|
+
*/
|
|
31
|
+
declare const CB_PHONE_COUNTRIES: readonly CbPhoneCountry[];
|
|
32
|
+
/** Emoji de bandera a partir del código ISO (indicadores regionales). */
|
|
33
|
+
declare function cbFlagEmoji(iso: string): string;
|
|
34
|
+
/** Aplica el formato del país al número nacional (solo dígitos), también a medio escribir. */
|
|
35
|
+
declare function cbFormatNational(country: CbPhoneCountry, digits: string): string;
|
|
36
|
+
interface CbParsedPhone {
|
|
37
|
+
readonly country: CbPhoneCountry | null;
|
|
38
|
+
/** Número nacional (solo dígitos, sin prefijo ni 0 nacional). */
|
|
39
|
+
readonly national: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Interpreta lo escrito o pegado. Con `+` o `00` detecta el país por el prefijo
|
|
43
|
+
* (el más largo que coincide; entre los que comparten prefijo, por el comienzo
|
|
44
|
+
* del número o, si no, el país actual). Sin prefijo, usa `current` y quita su 0 nacional.
|
|
45
|
+
*/
|
|
46
|
+
declare function cbParsePhone(text: string, current: CbPhoneCountry | null, countries: readonly CbPhoneCountry[]): CbParsedPhone;
|
|
47
|
+
/** Número completo en formato E.164 (`+573001234567`), o `''` sin dígitos. */
|
|
48
|
+
declare function cbToE164(country: CbPhoneCountry | null, national: string): string;
|
|
49
|
+
/** Si la longitud del número nacional es válida para el país. */
|
|
50
|
+
declare function cbIsValidPhone(country: CbPhoneCountry | null, national: string): boolean;
|
|
51
|
+
|
|
52
|
+
/** Cambio del teléfono con todos sus datos. */
|
|
53
|
+
interface CbPhoneChange {
|
|
54
|
+
/** Formato internacional E.164 (`+573001234567`), o `''`. */
|
|
55
|
+
readonly e164: string;
|
|
56
|
+
/** Número nacional (solo dígitos). */
|
|
57
|
+
readonly national: string;
|
|
58
|
+
/** Código ISO del país (`CO`). */
|
|
59
|
+
readonly country: string;
|
|
60
|
+
/** La longitud es válida para el país. */
|
|
61
|
+
readonly valid: boolean;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Teléfono internacional de CaribeNG: selector de país (bandera, nombre y
|
|
65
|
+
* prefijo, con buscador) y número que se formatea mientras se escribe. El
|
|
66
|
+
* valor es E.164 (`+573001234567`), listo para guardar o enviar. Al pegar un
|
|
67
|
+
* número con `+` o `00` detecta el país.
|
|
68
|
+
*
|
|
69
|
+
* Funciona con Angular Forms (`formControlName`, `ngModel`) y añade el error
|
|
70
|
+
* `{ phone: true }` si el número está incompleto o no es válido para el país.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```html
|
|
74
|
+
* <cb-phone-input label="Celular" formControlName="celular" country="CO" [preferredCountries]="['CO', 'MX', 'US']" />
|
|
75
|
+
* ```
|
|
76
|
+
*/
|
|
77
|
+
declare class CbPhoneInput implements ControlValueAccessor, Validator {
|
|
78
|
+
/** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
|
|
79
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
80
|
+
private readonly overlay;
|
|
81
|
+
private readonly vcr;
|
|
82
|
+
private readonly injector;
|
|
83
|
+
private readonly triggerEl;
|
|
84
|
+
private readonly fieldEl;
|
|
85
|
+
private readonly searchEl;
|
|
86
|
+
private readonly panelTpl;
|
|
87
|
+
private overlayRef;
|
|
88
|
+
protected readonly inputId: string;
|
|
89
|
+
protected readonly listId: string;
|
|
90
|
+
/** Número en formato E.164 (`+573001234567`); `''` si está vacío. */
|
|
91
|
+
readonly value: _angular_core.ModelSignal<string>;
|
|
92
|
+
/** País seleccionado (código ISO). */
|
|
93
|
+
readonly country: _angular_core.ModelSignal<string>;
|
|
94
|
+
/** Países disponibles. Por defecto, `CB_PHONE_COUNTRIES`; puedes pasar otros o filtrar por código ISO. */
|
|
95
|
+
readonly countries: _angular_core.InputSignal<readonly (string | CbPhoneCountry)[]>;
|
|
96
|
+
/** Países que aparecen primero en la lista (código ISO). */
|
|
97
|
+
readonly preferredCountries: _angular_core.InputSignal<readonly string[]>;
|
|
98
|
+
/** Bloquea el país (solo se escribe el número). */
|
|
99
|
+
readonly countryLocked: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
100
|
+
/** Muestra la bandera (emoji). En Windows algunos navegadores la muestran como letras. */
|
|
101
|
+
readonly showFlag: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
102
|
+
readonly label: _angular_core.InputSignal<string>;
|
|
103
|
+
readonly hint: _angular_core.InputSignal<string>;
|
|
104
|
+
/** Error a mostrar. Por defecto, "Número de teléfono incompleto o no válido" cuando lo es. */
|
|
105
|
+
readonly error: _angular_core.InputSignal<string | undefined>;
|
|
106
|
+
readonly invalid: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
107
|
+
readonly required: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
108
|
+
readonly requiredIndicator: _angular_core.InputSignal<CbRequiredIndicator | undefined>;
|
|
109
|
+
/** Placeholder. Por defecto, un número de ejemplo del país. */
|
|
110
|
+
readonly placeholder: _angular_core.InputSignal<string | undefined>;
|
|
111
|
+
readonly size: _angular_core.InputSignal<CbSize>;
|
|
112
|
+
readonly disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
|
|
113
|
+
/** Cada cambio con el número E.164, el nacional, el país y si es válido. */
|
|
114
|
+
readonly phoneChange: _angular_core.OutputEmitterRef<CbPhoneChange>;
|
|
115
|
+
protected readonly fieldState: _caribeng_ui.CbFieldState;
|
|
116
|
+
/** Número nacional (solo dígitos). */
|
|
117
|
+
private readonly national;
|
|
118
|
+
private readonly touched;
|
|
119
|
+
private readonly cvaDisabled;
|
|
120
|
+
protected readonly isDisabled: _angular_core.Signal<boolean>;
|
|
121
|
+
protected readonly open: _angular_core.WritableSignal<boolean>;
|
|
122
|
+
protected readonly query: _angular_core.WritableSignal<string>;
|
|
123
|
+
protected readonly active: _angular_core.WritableSignal<number>;
|
|
124
|
+
private readonly displayNames;
|
|
125
|
+
protected readonly list: _angular_core.Signal<CbPhoneCountry[]>;
|
|
126
|
+
protected readonly selected: _angular_core.Signal<CbPhoneCountry | null>;
|
|
127
|
+
protected readonly filtered: _angular_core.Signal<CbPhoneCountry[]>;
|
|
128
|
+
protected readonly activeId: _angular_core.Signal<string | null>;
|
|
129
|
+
protected readonly display: _angular_core.Signal<string>;
|
|
130
|
+
protected readonly examplePlaceholder: _angular_core.Signal<string>;
|
|
131
|
+
protected readonly isValid: _angular_core.Signal<boolean>;
|
|
132
|
+
protected readonly showInvalid: _angular_core.Signal<boolean>;
|
|
133
|
+
protected readonly errorText: _angular_core.Signal<string>;
|
|
134
|
+
protected readonly countryLabel: _angular_core.Signal<string>;
|
|
135
|
+
protected readonly describedBy: _angular_core.Signal<string | null>;
|
|
136
|
+
private onChange;
|
|
137
|
+
private onTouched;
|
|
138
|
+
private onValidatorChange;
|
|
139
|
+
constructor();
|
|
140
|
+
protected flag(c: CbPhoneCountry): string;
|
|
141
|
+
protected name(c: CbPhoneCountry): string;
|
|
142
|
+
private normalize;
|
|
143
|
+
writeValue(value: string | null): void;
|
|
144
|
+
registerOnChange(fn: (value: string) => void): void;
|
|
145
|
+
registerOnTouched(fn: () => void): void;
|
|
146
|
+
setDisabledState(isDisabled: boolean): void;
|
|
147
|
+
validate(_control: AbstractControl): ValidationErrors | null;
|
|
148
|
+
registerOnValidatorChange(fn: () => void): void;
|
|
149
|
+
protected onInput(event: Event): void;
|
|
150
|
+
protected onBlur(): void;
|
|
151
|
+
/** Interpreta texto escrito, pegado o recibido (E.164 o nacional). */
|
|
152
|
+
private applyText;
|
|
153
|
+
private publish;
|
|
154
|
+
toggle(): void;
|
|
155
|
+
protected openFromKeyboard(event: Event): void;
|
|
156
|
+
private openPanel;
|
|
157
|
+
/** Cierra la lista de países. */
|
|
158
|
+
close(focusTrigger?: boolean): void;
|
|
159
|
+
protected choose(c: CbPhoneCountry): void;
|
|
160
|
+
protected onSearchKeydown(event: KeyboardEvent): void;
|
|
161
|
+
private scrollActiveIntoView;
|
|
162
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbPhoneInput, never>;
|
|
163
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPhoneInput, "cb-phone-input", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "country": { "alias": "country"; "required": false; "isSignal": true; }; "countries": { "alias": "countries"; "required": false; "isSignal": true; }; "preferredCountries": { "alias": "preferredCountries"; "required": false; "isSignal": true; }; "countryLocked": { "alias": "countryLocked"; "required": false; "isSignal": true; }; "showFlag": { "alias": "showFlag"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "hint": { "alias": "hint"; "required": false; "isSignal": true; }; "error": { "alias": "error"; "required": false; "isSignal": true; }; "invalid": { "alias": "invalid"; "required": false; "isSignal": true; }; "required": { "alias": "required"; "required": false; "isSignal": true; }; "requiredIndicator": { "alias": "requiredIndicator"; "required": false; "isSignal": true; }; "placeholder": { "alias": "placeholder"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; }, { "value": "valueChange"; "country": "countryChange"; "phoneChange": "phoneChange"; }, never, never, true, never>;
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
export { CB_PHONE_COUNTRIES, CbPhoneInput, cbFlagEmoji, cbFormatNational, cbIsValidPhone, cbParsePhone, cbToE164 };
|
|
167
|
+
export type { CbParsedPhone, CbPhoneChange, CbPhoneCountry };
|
|
168
|
+
//# sourceMappingURL=caribeng-ui-phone-input.d.ts.map
|
|
@@ -3,10 +3,19 @@ import * as _caribeng_ui from '@caribeng/ui';
|
|
|
3
3
|
|
|
4
4
|
/** Ciclo de facturación del selector de precios. */
|
|
5
5
|
type CbPricingBilling = 'monthly' | 'annual';
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Disposición de los planes:
|
|
8
|
+
* - `grid`: tarjetas que se reparten en varias filas según el ancho.
|
|
9
|
+
* - `horizontal`: todas las tarjetas en una sola fila (con scroll si no caben),
|
|
10
|
+
* selector de facturación a la derecha del título y precio anual expresado por mes.
|
|
11
|
+
* - `list`: cada plan es una fila (cabecera, características y CTA).
|
|
12
|
+
*/
|
|
13
|
+
type CbPricingLayout = 'grid' | 'horizontal' | 'list';
|
|
14
|
+
/** Una característica de un plan. Puede ser texto o un objeto con estado e icono. */
|
|
7
15
|
type CbPricingFeature = string | {
|
|
8
16
|
label: string;
|
|
9
17
|
included?: boolean;
|
|
18
|
+
icon?: string;
|
|
10
19
|
};
|
|
11
20
|
/** Definición de un plan de precios. */
|
|
12
21
|
interface CbPricingPlan {
|
|
@@ -26,6 +35,8 @@ interface CbPricingPlan {
|
|
|
26
35
|
features?: CbPricingFeature[];
|
|
27
36
|
/** Resalta el plan (destacado). */
|
|
28
37
|
featured?: boolean;
|
|
38
|
+
/** Etiqueta junto al nombre. En el plan destacado vale "Recomendado" si se omite; `''` la oculta. */
|
|
39
|
+
badge?: string;
|
|
29
40
|
/** Texto del botón (por defecto "Elegir {name}"). */
|
|
30
41
|
ctaLabel?: string;
|
|
31
42
|
}
|
|
@@ -42,16 +53,27 @@ interface CbPricingPlan {
|
|
|
42
53
|
declare class CbPricing {
|
|
43
54
|
/** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
|
|
44
55
|
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
56
|
+
private readonly host;
|
|
45
57
|
/** Planes a mostrar. */
|
|
46
58
|
readonly plans: _angular_core.InputSignal<readonly CbPricingPlan[]>;
|
|
47
59
|
/** Ciclo activo (two-way). */
|
|
48
60
|
readonly billing: _angular_core.ModelSignal<CbPricingBilling>;
|
|
49
61
|
/** Muestra el selector Mensual/Anual. */
|
|
50
62
|
readonly showToggle: _angular_core.InputSignal<boolean>;
|
|
51
|
-
/** Disposición de los planes
|
|
52
|
-
readonly layout: _angular_core.InputSignal<
|
|
63
|
+
/** Disposición de los planes (ver {@link CbPricingLayout}). */
|
|
64
|
+
readonly layout: _angular_core.InputSignal<CbPricingLayout>;
|
|
53
65
|
/** Título opcional sobre la tabla. */
|
|
54
66
|
readonly title: _angular_core.InputSignal<string>;
|
|
67
|
+
/** Texto de ayuda bajo el título (solo en `horizontal`). */
|
|
68
|
+
readonly subtitle: _angular_core.InputSignal<string>;
|
|
69
|
+
/** Etiqueta junto a la opción anual (p. ej. "25% OFF"; solo en `horizontal`). */
|
|
70
|
+
readonly annualBadge: _angular_core.InputSignal<string>;
|
|
71
|
+
/**
|
|
72
|
+
* Cómo se muestra el precio anual: `total` (importe del año, "/año") o `monthly`
|
|
73
|
+
* (equivalente mensual, "/mes", con el total facturado y el ahorro debajo).
|
|
74
|
+
* Por defecto `monthly` en `horizontal` y `total` en el resto.
|
|
75
|
+
*/
|
|
76
|
+
readonly annualDisplay: _angular_core.InputSignal<"monthly" | "total" | undefined>;
|
|
55
77
|
/** Símbolo de moneda. */
|
|
56
78
|
readonly currency: _angular_core.InputSignal<string>;
|
|
57
79
|
/** Etiquetas configurables. */
|
|
@@ -63,13 +85,28 @@ declare class CbPricing {
|
|
|
63
85
|
readonly ctaLabel: _angular_core.InputSignal<string | undefined>;
|
|
64
86
|
/** Emite el plan elegido. */
|
|
65
87
|
readonly planSelect: _angular_core.OutputEmitterRef<CbPricingPlan>;
|
|
88
|
+
protected readonly choices: readonly CbPricingBilling[];
|
|
89
|
+
protected readonly horizontal: _angular_core.Signal<boolean>;
|
|
66
90
|
protected readonly annual: _angular_core.Signal<boolean>;
|
|
91
|
+
private readonly annualMonthly;
|
|
92
|
+
/** El precio visible es mensual (ciclo mensual, o anual expresado por mes). */
|
|
93
|
+
protected readonly perMonthShown: _angular_core.Signal<boolean>;
|
|
94
|
+
private readonly numberFormat;
|
|
95
|
+
protected num(n: number): string;
|
|
96
|
+
private annualOf;
|
|
67
97
|
protected priceOf(p: CbPricingPlan): number;
|
|
68
98
|
protected oldPriceOf(p: CbPricingPlan): number | undefined;
|
|
99
|
+
protected billedOf(p: CbPricingPlan): string;
|
|
100
|
+
protected savingOf(p: CbPricingPlan): number;
|
|
101
|
+
protected savingLabel(p: CbPricingPlan): string;
|
|
102
|
+
protected badgeOf(p: CbPricingPlan): string;
|
|
69
103
|
protected labelOf(f: CbPricingFeature): string;
|
|
70
104
|
protected includedOf(f: CbPricingFeature): boolean;
|
|
105
|
+
protected iconOf(f: CbPricingFeature): string;
|
|
106
|
+
/** Flechas dentro del grupo de opciones de facturación (patrón radiogroup). */
|
|
107
|
+
protected onChoiceKey(event: KeyboardEvent): void;
|
|
71
108
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbPricing, never>;
|
|
72
|
-
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPricing, "cb-pricing", never, { "plans": { "alias": "plans"; "required": false; "isSignal": true; }; "billing": { "alias": "billing"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "monthlyLabel": { "alias": "monthlyLabel"; "required": false; "isSignal": true; }; "annualLabel": { "alias": "annualLabel"; "required": false; "isSignal": true; }; "perMonthLabel": { "alias": "perMonthLabel"; "required": false; "isSignal": true; }; "perYearLabel": { "alias": "perYearLabel"; "required": false; "isSignal": true; }; "ctaLabel": { "alias": "ctaLabel"; "required": false; "isSignal": true; }; }, { "billing": "billingChange"; "planSelect": "planSelect"; }, never, never, true, never>;
|
|
109
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbPricing, "cb-pricing", never, { "plans": { "alias": "plans"; "required": false; "isSignal": true; }; "billing": { "alias": "billing"; "required": false; "isSignal": true; }; "showToggle": { "alias": "showToggle"; "required": false; "isSignal": true; }; "layout": { "alias": "layout"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "subtitle": { "alias": "subtitle"; "required": false; "isSignal": true; }; "annualBadge": { "alias": "annualBadge"; "required": false; "isSignal": true; }; "annualDisplay": { "alias": "annualDisplay"; "required": false; "isSignal": true; }; "currency": { "alias": "currency"; "required": false; "isSignal": true; }; "monthlyLabel": { "alias": "monthlyLabel"; "required": false; "isSignal": true; }; "annualLabel": { "alias": "annualLabel"; "required": false; "isSignal": true; }; "perMonthLabel": { "alias": "perMonthLabel"; "required": false; "isSignal": true; }; "perYearLabel": { "alias": "perYearLabel"; "required": false; "isSignal": true; }; "ctaLabel": { "alias": "ctaLabel"; "required": false; "isSignal": true; }; }, { "billing": "billingChange"; "planSelect": "planSelect"; }, never, never, true, never>;
|
|
73
110
|
}
|
|
74
111
|
|
|
75
112
|
export { CbPricing };
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import * as _angular_core from '@angular/core';
|
|
2
|
+
import * as _caribeng_ui from '@caribeng/ui';
|
|
3
|
+
|
|
4
|
+
/** Nivel de corrección de errores: recupera ~7 % (L), 15 % (M), 25 % (Q) o 30 % (H) del código. */
|
|
5
|
+
type CbQrErrorCorrection = 'L' | 'M' | 'Q' | 'H';
|
|
6
|
+
/** Matriz QR: `modules[y][x]` es `true` en los módulos oscuros. */
|
|
7
|
+
interface CbQrMatrix {
|
|
8
|
+
/** Versión elegida (1–40). */
|
|
9
|
+
readonly version: number;
|
|
10
|
+
/** Módulos por lado (17 + 4 × versión). */
|
|
11
|
+
readonly size: number;
|
|
12
|
+
readonly errorCorrection: CbQrErrorCorrection;
|
|
13
|
+
/** Máscara aplicada (0–7). */
|
|
14
|
+
readonly mask: number;
|
|
15
|
+
readonly modules: readonly (readonly boolean[])[];
|
|
16
|
+
}
|
|
17
|
+
interface CbQrEncodeOptions {
|
|
18
|
+
/** Por defecto `M`. */
|
|
19
|
+
errorCorrection?: CbQrErrorCorrection;
|
|
20
|
+
/** Versión mínima (1–40). Por defecto 1. */
|
|
21
|
+
minVersion?: number;
|
|
22
|
+
}
|
|
23
|
+
/** Codewords de corrección de `data` (resto de la división por el generador). */
|
|
24
|
+
declare function cbQrReedSolomon(data: readonly number[], degree: number): number[];
|
|
25
|
+
/** 15 bits de formato (nivel + máscara), ya con la máscara XOR del estándar. */
|
|
26
|
+
declare function cbQrFormatBits(ec: CbQrErrorCorrection, mask: number): number;
|
|
27
|
+
/**
|
|
28
|
+
* Codifica `text` como matriz QR. Elige el modo más compacto, la versión más
|
|
29
|
+
* pequeña que lo contiene y la máscara con menor penalización.
|
|
30
|
+
*
|
|
31
|
+
* @throws RangeError si el texto no cabe en la versión 40 con ese nivel.
|
|
32
|
+
*/
|
|
33
|
+
declare function cbQrEncode(text: string, options?: CbQrEncodeOptions): CbQrMatrix;
|
|
34
|
+
/** Niveles ordenados de menor a mayor corrección. */
|
|
35
|
+
declare const CB_QR_ERROR_CORRECTION_LEVELS: readonly CbQrErrorCorrection[];
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Código QR de CaribeNG, generado en SVG con un codificador propio (sin
|
|
39
|
+
* dependencias). Elige solo la versión y la máscara; admite color, fondo,
|
|
40
|
+
* margen y un logo centrado.
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* ```html
|
|
44
|
+
* <cb-qrcode value="https://caribeng.dev" [size]="180" />
|
|
45
|
+
* <cb-qrcode [value]="pago" errorCorrection="H" image="assets/logo.svg" />
|
|
46
|
+
* ```
|
|
47
|
+
*/
|
|
48
|
+
declare class CbQrcode {
|
|
49
|
+
/** Textos de interfaz en el idioma activo (`provideCaribeNG({ locale })`). */
|
|
50
|
+
protected readonly t: _angular_core.Signal<_caribeng_ui.CbTranslation>;
|
|
51
|
+
/** Texto o URL a codificar. */
|
|
52
|
+
readonly value: _angular_core.InputSignal<string>;
|
|
53
|
+
/** Lado en píxeles. */
|
|
54
|
+
readonly size: _angular_core.InputSignal<number>;
|
|
55
|
+
/** Corrección de errores. Usa `H` si pones un logo encima. */
|
|
56
|
+
readonly errorCorrection: _angular_core.InputSignal<CbQrErrorCorrection>;
|
|
57
|
+
/** Color de los módulos (cualquier color CSS). */
|
|
58
|
+
readonly color: _angular_core.InputSignal<string>;
|
|
59
|
+
/** Color de fondo. Mantén buen contraste con `color` para que se pueda leer. */
|
|
60
|
+
readonly background: _angular_core.InputSignal<string>;
|
|
61
|
+
/** Margen claro alrededor, en módulos (el estándar pide 4). */
|
|
62
|
+
readonly margin: _angular_core.InputSignal<number>;
|
|
63
|
+
/** Logo centrado (URL). Ocupa ~20 % del lado; combínalo con `errorCorrection="H"`. */
|
|
64
|
+
readonly image: _angular_core.InputSignal<string>;
|
|
65
|
+
/** Nombre accesible. Por defecto, "Código QR" del idioma activo. */
|
|
66
|
+
readonly ariaLabel: _angular_core.InputSignal<string | undefined>;
|
|
67
|
+
/** Matriz codificada, o `null` si el valor está vacío o no cabe en un QR. */
|
|
68
|
+
readonly matrix: _angular_core.Signal<CbQrMatrix | null>;
|
|
69
|
+
protected readonly extent: _angular_core.Signal<number>;
|
|
70
|
+
protected readonly viewBox: _angular_core.Signal<string>;
|
|
71
|
+
protected readonly label: _angular_core.Signal<string>;
|
|
72
|
+
/** Módulos oscuros como un único path; une los consecutivos de cada fila. */
|
|
73
|
+
protected readonly path: _angular_core.Signal<string>;
|
|
74
|
+
/** Caja del logo (en módulos), centrada y alineada a la rejilla. */
|
|
75
|
+
protected readonly logo: _angular_core.Signal<{
|
|
76
|
+
box: number;
|
|
77
|
+
pad: number;
|
|
78
|
+
inset: number;
|
|
79
|
+
} | null>;
|
|
80
|
+
/** Marcado SVG del QR, p. ej. para descargarlo (`new Blob([qr.toSvg()], { type: 'image/svg+xml' })`). */
|
|
81
|
+
toSvg(): string;
|
|
82
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<CbQrcode, never>;
|
|
83
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<CbQrcode, "cb-qrcode", never, { "value": { "alias": "value"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "errorCorrection": { "alias": "errorCorrection"; "required": false; "isSignal": true; }; "color": { "alias": "color"; "required": false; "isSignal": true; }; "background": { "alias": "background"; "required": false; "isSignal": true; }; "margin": { "alias": "margin"; "required": false; "isSignal": true; }; "image": { "alias": "image"; "required": false; "isSignal": true; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export { CB_QR_ERROR_CORRECTION_LEVELS, CbQrcode, cbQrEncode, cbQrFormatBits, cbQrReedSolomon };
|
|
87
|
+
export type { CbQrEncodeOptions, CbQrErrorCorrection, CbQrMatrix };
|
|
88
|
+
//# sourceMappingURL=caribeng-ui-qrcode.d.ts.map
|