valtech-components 4.0.107 → 4.0.108
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/esm2022/lib/components/molecules/section-header/section-header.component.mjs +39 -23
- package/esm2022/lib/components/molecules/section-header/types.mjs +1 -1
- package/esm2022/lib/version.mjs +2 -2
- package/fesm2022/valtech-components.mjs +38 -23
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/molecules/section-header/section-header.component.d.ts +21 -10
- package/lib/components/molecules/section-header/types.d.ts +21 -14
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,64 +1,80 @@
|
|
|
1
1
|
import { Component, EventEmitter, Output, computed, input } from '@angular/core';
|
|
2
|
+
import { ButtonComponent } from '../../atoms/button/button.component';
|
|
2
3
|
import * as i0 from "@angular/core";
|
|
3
4
|
/**
|
|
4
5
|
* val-section-header
|
|
5
6
|
*
|
|
6
7
|
* Standard molecule for section titles across all factory apps. Renders a
|
|
7
|
-
* title + optional right-aligned
|
|
8
|
-
* subtitle below.
|
|
9
|
-
* divs that accumulate per-page padding inconsistencies.
|
|
8
|
+
* bold title + optional right-aligned action button(s) on one row, with an
|
|
9
|
+
* optional muted subtitle below.
|
|
10
10
|
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
11
|
+
* Replaces ad-hoc eyebrow spans, custom `.section-header` divs, and
|
|
12
|
+
* paired val-title + val-button combinations that accumulate per-page
|
|
13
|
+
* padding inconsistencies.
|
|
14
|
+
*
|
|
15
|
+
* **Actions:** pass `actions: ButtonMetadata[]` for right-side buttons.
|
|
16
|
+
* Use `fill: 'clear'` + `size: 'small'` for a text-link style CTA, or
|
|
17
|
+
* `fill: 'outline'` + `size: 'small'` for a contained button (e.g. "New").
|
|
18
|
+
*
|
|
19
|
+
* **Theming:** set `--val-section-header-cta-color` on the host or parent
|
|
20
|
+
* to tint plain-text CTAs without affecting full buttons.
|
|
13
21
|
*
|
|
14
22
|
* @example
|
|
15
23
|
* ```html
|
|
16
24
|
* <val-section-header
|
|
17
|
-
* [props]="{
|
|
18
|
-
*
|
|
25
|
+
* [props]="{
|
|
26
|
+
* title: 'Premios',
|
|
27
|
+
* subtitle: 'Regalos sorteados por ronda.',
|
|
28
|
+
* actions: [{ text: '¿Qué son?', fill: 'clear', size: 'small', color: 'primary', type: 'button', state: 'ENABLED', token: 'info' }]
|
|
29
|
+
* }"
|
|
30
|
+
* (actionClick)="openInfoModal()" />
|
|
19
31
|
* ```
|
|
20
32
|
*/
|
|
21
33
|
export class SectionHeaderComponent {
|
|
22
34
|
constructor() {
|
|
23
35
|
this.props = input({});
|
|
24
|
-
/** Emits the
|
|
25
|
-
this.
|
|
36
|
+
/** Emits the clicked button's `token` (from `actions`). */
|
|
37
|
+
this.actionClick = new EventEmitter();
|
|
26
38
|
this.config = computed(() => ({
|
|
27
39
|
title: '',
|
|
28
40
|
...this.props(),
|
|
29
41
|
}));
|
|
30
42
|
}
|
|
31
43
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
32
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SectionHeaderComponent, isStandalone: true, selector: "val-section-header", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: {
|
|
44
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SectionHeaderComponent, isStandalone: true, selector: "val-section-header", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: `
|
|
33
45
|
<div class="sh-row">
|
|
34
46
|
<span class="sh-title">{{ config().title }}</span>
|
|
35
|
-
@if (config().
|
|
36
|
-
<
|
|
37
|
-
|
|
38
|
-
|
|
47
|
+
@if (config().actions?.length) {
|
|
48
|
+
<div class="sh-actions">
|
|
49
|
+
@for (action of config().actions; track action.token || $index) {
|
|
50
|
+
<val-button [props]="action" (onClick)="actionClick.emit($event)" />
|
|
51
|
+
}
|
|
52
|
+
</div>
|
|
39
53
|
}
|
|
40
54
|
</div>
|
|
41
55
|
@if (config().subtitle) {
|
|
42
56
|
<p class="sh-subtitle">{{ config().subtitle }}</p>
|
|
43
57
|
}
|
|
44
|
-
`, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-
|
|
58
|
+
`, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
|
|
45
59
|
}
|
|
46
60
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SectionHeaderComponent, decorators: [{
|
|
47
61
|
type: Component,
|
|
48
|
-
args: [{ selector: 'val-section-header', standalone: true, imports: [], template: `
|
|
62
|
+
args: [{ selector: 'val-section-header', standalone: true, imports: [ButtonComponent], template: `
|
|
49
63
|
<div class="sh-row">
|
|
50
64
|
<span class="sh-title">{{ config().title }}</span>
|
|
51
|
-
@if (config().
|
|
52
|
-
<
|
|
53
|
-
|
|
54
|
-
|
|
65
|
+
@if (config().actions?.length) {
|
|
66
|
+
<div class="sh-actions">
|
|
67
|
+
@for (action of config().actions; track action.token || $index) {
|
|
68
|
+
<val-button [props]="action" (onClick)="actionClick.emit($event)" />
|
|
69
|
+
}
|
|
70
|
+
</div>
|
|
55
71
|
}
|
|
56
72
|
</div>
|
|
57
73
|
@if (config().subtitle) {
|
|
58
74
|
<p class="sh-subtitle">{{ config().subtitle }}</p>
|
|
59
75
|
}
|
|
60
|
-
`, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-
|
|
61
|
-
}], propDecorators: {
|
|
76
|
+
`, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"] }]
|
|
77
|
+
}], propDecorators: { actionClick: [{
|
|
62
78
|
type: Output
|
|
63
79
|
}] } });
|
|
64
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdGlvbi1oZWFkZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9zZWN0aW9uLWhlYWRlci9zZWN0aW9uLWhlYWRlci5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDakYsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOztBQUd0RTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTRCRztBQXNCSCxNQUFNLE9BQU8sc0JBQXNCO0lBckJuQztRQXNCVyxVQUFLLEdBQUcsS0FBSyxDQUFpQyxFQUFFLENBQUMsQ0FBQztRQUUzRCwyREFBMkQ7UUFDakQsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBRTFDLFdBQU0sR0FBRyxRQUFRLENBQXdCLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFDdkQsS0FBSyxFQUFFLEVBQUU7WUFDVCxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7U0FDaEIsQ0FBQyxDQUFDLENBQUM7S0FDTDsrR0FWWSxzQkFBc0I7bUdBQXRCLHNCQUFzQiwyUEFqQnZCOzs7Ozs7Ozs7Ozs7OztHQWNULDZmQWZTLGVBQWU7OzRGQWtCZCxzQkFBc0I7a0JBckJsQyxTQUFTOytCQUNFLG9CQUFvQixjQUNsQixJQUFJLFdBQ1AsQ0FBQyxlQUFlLENBQUMsWUFDaEI7Ozs7Ozs7Ozs7Ozs7O0dBY1Q7OEJBT1MsV0FBVztzQkFBcEIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBPdXRwdXQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQnV0dG9uQ29tcG9uZW50IH0gZnJvbSAnLi4vLi4vYXRvbXMvYnV0dG9uL2J1dHRvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VjdGlvbkhlYWRlck1ldGFkYXRhIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogdmFsLXNlY3Rpb24taGVhZGVyXG4gKlxuICogU3RhbmRhcmQgbW9sZWN1bGUgZm9yIHNlY3Rpb24gdGl0bGVzIGFjcm9zcyBhbGwgZmFjdG9yeSBhcHBzLiBSZW5kZXJzIGFcbiAqIGJvbGQgdGl0bGUgKyBvcHRpb25hbCByaWdodC1hbGlnbmVkIGFjdGlvbiBidXR0b24ocykgb24gb25lIHJvdywgd2l0aCBhblxuICogb3B0aW9uYWwgbXV0ZWQgc3VidGl0bGUgYmVsb3cuXG4gKlxuICogUmVwbGFjZXMgYWQtaG9jIGV5ZWJyb3cgc3BhbnMsIGN1c3RvbSBgLnNlY3Rpb24taGVhZGVyYCBkaXZzLCBhbmRcbiAqIHBhaXJlZCB2YWwtdGl0bGUgKyB2YWwtYnV0dG9uIGNvbWJpbmF0aW9ucyB0aGF0IGFjY3VtdWxhdGUgcGVyLXBhZ2VcbiAqIHBhZGRpbmcgaW5jb25zaXN0ZW5jaWVzLlxuICpcbiAqICoqQWN0aW9uczoqKiBwYXNzIGBhY3Rpb25zOiBCdXR0b25NZXRhZGF0YVtdYCBmb3IgcmlnaHQtc2lkZSBidXR0b25zLlxuICogVXNlIGBmaWxsOiAnY2xlYXInYCArIGBzaXplOiAnc21hbGwnYCBmb3IgYSB0ZXh0LWxpbmsgc3R5bGUgQ1RBLCBvclxuICogYGZpbGw6ICdvdXRsaW5lJ2AgKyBgc2l6ZTogJ3NtYWxsJ2AgZm9yIGEgY29udGFpbmVkIGJ1dHRvbiAoZS5nLiBcIk5ld1wiKS5cbiAqXG4gKiAqKlRoZW1pbmc6Kiogc2V0IGAtLXZhbC1zZWN0aW9uLWhlYWRlci1jdGEtY29sb3JgIG9uIHRoZSBob3N0IG9yIHBhcmVudFxuICogdG8gdGludCBwbGFpbi10ZXh0IENUQXMgd2l0aG91dCBhZmZlY3RpbmcgZnVsbCBidXR0b25zLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdQcmVtaW9zJyxcbiAqICAgICBzdWJ0aXRsZTogJ1JlZ2Fsb3Mgc29ydGVhZG9zIHBvciByb25kYS4nLFxuICogICAgIGFjdGlvbnM6IFt7IHRleHQ6ICfCv1F1w6kgc29uPycsIGZpbGw6ICdjbGVhcicsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAncHJpbWFyeScsIHR5cGU6ICdidXR0b24nLCBzdGF0ZTogJ0VOQUJMRUQnLCB0b2tlbjogJ2luZm8nIH1dXG4gKiAgIH1cIlxuICogICAoYWN0aW9uQ2xpY2spPVwib3BlbkluZm9Nb2RhbCgpXCIgLz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtc2VjdGlvbi1oZWFkZXInLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQnV0dG9uQ29tcG9uZW50XSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwic2gtcm93XCI+XG4gICAgICA8c3BhbiBjbGFzcz1cInNoLXRpdGxlXCI+e3sgY29uZmlnKCkudGl0bGUgfX08L3NwYW4+XG4gICAgICBAaWYgKGNvbmZpZygpLmFjdGlvbnM/Lmxlbmd0aCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwic2gtYWN0aW9uc1wiPlxuICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBjb25maWcoKS5hY3Rpb25zOyB0cmFjayBhY3Rpb24udG9rZW4gfHwgJGluZGV4KSB7XG4gICAgICAgICAgICA8dmFsLWJ1dHRvbiBbcHJvcHNdPVwiYWN0aW9uXCIgKG9uQ2xpY2spPVwiYWN0aW9uQ2xpY2suZW1pdCgkZXZlbnQpXCIgLz5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICAgIEBpZiAoY29uZmlnKCkuc3VidGl0bGUpIHtcbiAgICAgIDxwIGNsYXNzPVwic2gtc3VidGl0bGVcIj57eyBjb25maWcoKS5zdWJ0aXRsZSB9fTwvcD5cbiAgICB9XG4gIGAsXG4gIHN0eWxlVXJsOiAnLi9zZWN0aW9uLWhlYWRlci5jb21wb25lbnQuc2NzcycsXG59KVxuZXhwb3J0IGNsYXNzIFNlY3Rpb25IZWFkZXJDb21wb25lbnQge1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFBhcnRpYWw8U2VjdGlvbkhlYWRlck1ldGFkYXRhPj4oe30pO1xuXG4gIC8qKiBFbWl0cyB0aGUgY2xpY2tlZCBidXR0b24ncyBgdG9rZW5gIChmcm9tIGBhY3Rpb25zYCkuICovXG4gIEBPdXRwdXQoKSBhY3Rpb25DbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gIHJlYWRvbmx5IGNvbmZpZyA9IGNvbXB1dGVkPFNlY3Rpb25IZWFkZXJNZXRhZGF0YT4oKCkgPT4gKHtcbiAgICB0aXRsZTogJycsXG4gICAgLi4udGhpcy5wcm9wcygpLFxuICB9KSk7XG59XG4iXX0=
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export {};
|
|
2
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL3NlY3Rpb24taGVhZGVyL3R5cGVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCdXR0b25NZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBgdmFsLXNlY3Rpb24taGVhZGVyYC5cbiAqXG4gKiBQcmVzZW50YXRpb25hbCBtb2xlY3VsZSDigJQgYWxsIHN0cmluZ3MgYXJlIGFscmVhZHktcmVzb2x2ZWQgKGNvbnN1bWVyXG4gKiB0cmFuc2xhdGVzIHZpYSBJMThuU2VydmljZSkuIE5vIGkxOG4gb2YgaXRzIG93bi5cbiAqXG4gKiBAZXhhbXBsZSBUaXRsZS1vbmx5XG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyIFtwcm9wc109XCJ7IHRpdGxlOiAnVGFsb25hcmlvcycgfVwiIC8+XG4gKiBgYGBcbiAqXG4gKiBAZXhhbXBsZSBUaXRsZSArIHRleHQgQ1RBICsgc3VidGl0bGVcbiAqIGBgYGh0bWxcbiAqIDx2YWwtc2VjdGlvbi1oZWFkZXJcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICB0aXRsZTogJ1ByZW1pb3MnLFxuICogICAgIHN1YnRpdGxlOiAnTG9zIHJlZ2Fsb3Mgc29ydGVhZG9zIGR1cmFudGUgZWwgZXZlbnRvLicsXG4gKiAgICAgYWN0aW9uczogW3sgdGV4dDogJ8K/UXXDqSBzb24/JywgZmlsbDogJ2NsZWFyJywgc2l6ZTogJ3NtYWxsJywgY29sb3I6ICdwcmltYXJ5JywgdHlwZTogJ2J1dHRvbicsIHN0YXRlOiAnRU5BQkxFRCcsIHRva2VuOiAnaW5mbycgfV1cbiAqICAgfVwiXG4gKiAgIChhY3Rpb25DbGljayk9XCJvcGVuSW5mb01vZGFsKClcIiAvPlxuICogYGBgXG4gKlxuICogQGV4YW1wbGUgVGl0bGUgKyBjcmVhdGUgYnV0dG9uXG4gKiBgYGBodG1sXG4gKiA8dmFsLXNlY3Rpb24taGVhZGVyXG4gKiAgIFtwcm9wc109XCJ7XG4gKiAgICAgdGl0bGU6ICdUYWxvbmFyaW9zJyxcbiAqICAgICBhY3Rpb25zOiBbeyB0ZXh0OiAnTnVldmEgdGFuZGEnLCBmaWxsOiAnb3V0bGluZScsIHNpemU6ICdzbWFsbCcsIGNvbG9yOiAncHJpbWFyeScsIHR5cGU6ICdidXR0b24nLCBzdGF0ZTogJ0VOQUJMRUQnLCB0b2tlbjogJ2NyZWF0ZScgfV1cbiAqICAgfVwiXG4gKiAgIChhY3Rpb25DbGljayk9XCJvbkFjdGlvbigkZXZlbnQpXCIgLz5cbiAqIGBgYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3Rpb25IZWFkZXJNZXRhZGF0YSB7XG4gIC8qKiBNYWluIHNlY3Rpb24gdGl0bGUuIEJvbGQsIH4xOHB4LiAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogTXV0ZWQgaGVscGVyIGxpbmUgYmVsb3cgdGhlIHRpdGxlIHJvdy4gKi9cbiAgc3VidGl0bGU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBSaWdodC1hbGlnbmVkIGFjdGlvbiBidXR0b25zLiBSZW5kZXJlZCBhcyBgdmFsLWJ1dHRvbmAgY29tcG9uZW50cy5cbiAgICogRWFjaCBlbWl0cyBgKGFjdGlvbkNsaWNrKWAgd2l0aCBpdHMgb3duIGB0b2tlbmAuXG4gICAqIFVzZSBgZmlsbDogJ2NsZWFyJ2AgKyBgc2l6ZTogJ3NtYWxsJ2AgZm9yIGEgdGV4dC1saW5rIHN0eWxlIENUQS5cbiAgICovXG4gIGFjdGlvbnM/OiBCdXR0b25NZXRhZGF0YVtdO1xufVxuIl19
|
package/esm2022/lib/version.mjs
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Current version of valtech-components.
|
|
3
3
|
* This is automatically updated during the publish process.
|
|
4
4
|
*/
|
|
5
|
-
export const VERSION = '4.0.
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
export const VERSION = '4.0.108';
|
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvdmVyc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBDdXJyZW50IHZlcnNpb24gb2YgdmFsdGVjaC1jb21wb25lbnRzLlxuICogVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHVwZGF0ZWQgZHVyaW5nIHRoZSBwdWJsaXNoIHByb2Nlc3MuXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuMC4xMDgnO1xuIl19
|
|
@@ -56,7 +56,7 @@ import { BrowserMultiFormatReader } from '@zxing/browser';
|
|
|
56
56
|
* Current version of valtech-components.
|
|
57
57
|
* This is automatically updated during the publish process.
|
|
58
58
|
*/
|
|
59
|
-
const VERSION = '4.0.
|
|
59
|
+
const VERSION = '4.0.108';
|
|
60
60
|
|
|
61
61
|
// Control de estado de refresco (singleton a nivel de módulo)
|
|
62
62
|
let isRefreshing = false;
|
|
@@ -28956,61 +28956,76 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
28956
28956
|
* val-section-header
|
|
28957
28957
|
*
|
|
28958
28958
|
* Standard molecule for section titles across all factory apps. Renders a
|
|
28959
|
-
* title + optional right-aligned
|
|
28960
|
-
* subtitle below.
|
|
28961
|
-
* divs that accumulate per-page padding inconsistencies.
|
|
28959
|
+
* bold title + optional right-aligned action button(s) on one row, with an
|
|
28960
|
+
* optional muted subtitle below.
|
|
28962
28961
|
*
|
|
28963
|
-
*
|
|
28964
|
-
*
|
|
28962
|
+
* Replaces ad-hoc eyebrow spans, custom `.section-header` divs, and
|
|
28963
|
+
* paired val-title + val-button combinations that accumulate per-page
|
|
28964
|
+
* padding inconsistencies.
|
|
28965
|
+
*
|
|
28966
|
+
* **Actions:** pass `actions: ButtonMetadata[]` for right-side buttons.
|
|
28967
|
+
* Use `fill: 'clear'` + `size: 'small'` for a text-link style CTA, or
|
|
28968
|
+
* `fill: 'outline'` + `size: 'small'` for a contained button (e.g. "New").
|
|
28969
|
+
*
|
|
28970
|
+
* **Theming:** set `--val-section-header-cta-color` on the host or parent
|
|
28971
|
+
* to tint plain-text CTAs without affecting full buttons.
|
|
28965
28972
|
*
|
|
28966
28973
|
* @example
|
|
28967
28974
|
* ```html
|
|
28968
28975
|
* <val-section-header
|
|
28969
|
-
* [props]="{
|
|
28970
|
-
*
|
|
28976
|
+
* [props]="{
|
|
28977
|
+
* title: 'Premios',
|
|
28978
|
+
* subtitle: 'Regalos sorteados por ronda.',
|
|
28979
|
+
* actions: [{ text: '¿Qué son?', fill: 'clear', size: 'small', color: 'primary', type: 'button', state: 'ENABLED', token: 'info' }]
|
|
28980
|
+
* }"
|
|
28981
|
+
* (actionClick)="openInfoModal()" />
|
|
28971
28982
|
* ```
|
|
28972
28983
|
*/
|
|
28973
28984
|
class SectionHeaderComponent {
|
|
28974
28985
|
constructor() {
|
|
28975
28986
|
this.props = input({});
|
|
28976
|
-
/** Emits the
|
|
28977
|
-
this.
|
|
28987
|
+
/** Emits the clicked button's `token` (from `actions`). */
|
|
28988
|
+
this.actionClick = new EventEmitter();
|
|
28978
28989
|
this.config = computed(() => ({
|
|
28979
28990
|
title: '',
|
|
28980
28991
|
...this.props(),
|
|
28981
28992
|
}));
|
|
28982
28993
|
}
|
|
28983
28994
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SectionHeaderComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
28984
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SectionHeaderComponent, isStandalone: true, selector: "val-section-header", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: {
|
|
28995
|
+
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SectionHeaderComponent, isStandalone: true, selector: "val-section-header", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { actionClick: "actionClick" }, ngImport: i0, template: `
|
|
28985
28996
|
<div class="sh-row">
|
|
28986
28997
|
<span class="sh-title">{{ config().title }}</span>
|
|
28987
|
-
@if (config().
|
|
28988
|
-
<
|
|
28989
|
-
|
|
28990
|
-
|
|
28998
|
+
@if (config().actions?.length) {
|
|
28999
|
+
<div class="sh-actions">
|
|
29000
|
+
@for (action of config().actions; track action.token || $index) {
|
|
29001
|
+
<val-button [props]="action" (onClick)="actionClick.emit($event)" />
|
|
29002
|
+
}
|
|
29003
|
+
</div>
|
|
28991
29004
|
}
|
|
28992
29005
|
</div>
|
|
28993
29006
|
@if (config().subtitle) {
|
|
28994
29007
|
<p class="sh-subtitle">{{ config().subtitle }}</p>
|
|
28995
29008
|
}
|
|
28996
|
-
`, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-
|
|
29009
|
+
`, isInline: true, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"], dependencies: [{ kind: "component", type: ButtonComponent, selector: "val-button", inputs: ["preset", "props"], outputs: ["onClick"] }] }); }
|
|
28997
29010
|
}
|
|
28998
29011
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SectionHeaderComponent, decorators: [{
|
|
28999
29012
|
type: Component,
|
|
29000
|
-
args: [{ selector: 'val-section-header', standalone: true, imports: [], template: `
|
|
29013
|
+
args: [{ selector: 'val-section-header', standalone: true, imports: [ButtonComponent], template: `
|
|
29001
29014
|
<div class="sh-row">
|
|
29002
29015
|
<span class="sh-title">{{ config().title }}</span>
|
|
29003
|
-
@if (config().
|
|
29004
|
-
<
|
|
29005
|
-
|
|
29006
|
-
|
|
29016
|
+
@if (config().actions?.length) {
|
|
29017
|
+
<div class="sh-actions">
|
|
29018
|
+
@for (action of config().actions; track action.token || $index) {
|
|
29019
|
+
<val-button [props]="action" (onClick)="actionClick.emit($event)" />
|
|
29020
|
+
}
|
|
29021
|
+
</div>
|
|
29007
29022
|
}
|
|
29008
29023
|
</div>
|
|
29009
29024
|
@if (config().subtitle) {
|
|
29010
29025
|
<p class="sh-subtitle">{{ config().subtitle }}</p>
|
|
29011
29026
|
}
|
|
29012
|
-
`, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-
|
|
29013
|
-
}], propDecorators: {
|
|
29027
|
+
`, styles: [":host{display:block}.sh-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.sh-title{font-size:1.125rem;font-weight:800;color:var(--val-ink, var(--ion-color-dark, #2f2a36));letter-spacing:-.01em;line-height:1.25;margin:0}.sh-actions{display:flex;align-items:center;gap:4px;flex-shrink:0}.sh-subtitle{margin:4px 0 0;font-size:.8125rem;color:var(--val-ink-soft, var(--ion-color-medium, #92949c));line-height:1.4}\n"] }]
|
|
29028
|
+
}], propDecorators: { actionClick: [{
|
|
29014
29029
|
type: Output
|
|
29015
29030
|
}] } });
|
|
29016
29031
|
|