valtech-components 2.0.1035 → 4.0.1
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/atoms/box/box.component.mjs +6 -8
- package/esm2022/lib/components/atoms/button/factory.mjs +24 -217
- package/esm2022/lib/components/atoms/divider/divider.component.mjs +2 -4
- package/esm2022/lib/components/atoms/href/href.component.mjs +1 -2
- package/esm2022/lib/components/atoms/image/image.component.mjs +36 -3
- package/esm2022/lib/components/molecules/action-card/action-card.component.mjs +4 -9
- package/esm2022/lib/components/molecules/breadcrumb/breadcrumb.component.mjs +4 -4
- package/esm2022/lib/components/molecules/card/card.component.mjs +53 -10
- package/esm2022/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.mjs +27 -36
- package/esm2022/lib/components/molecules/chip-group/chip-group.component.mjs +44 -6
- package/esm2022/lib/components/molecules/command-display/command-display.component.mjs +32 -7
- package/esm2022/lib/components/molecules/comment/comment.component.mjs +28 -12
- package/esm2022/lib/components/molecules/cta-card/cta-card.component.mjs +4 -9
- package/esm2022/lib/components/molecules/date-picker/date-picker.component.mjs +3 -3
- package/esm2022/lib/components/molecules/expandable-text/expandable-text.component.mjs +7 -7
- package/esm2022/lib/components/molecules/features-list/features-list.component.mjs +159 -71
- package/esm2022/lib/components/molecules/file-input/file-input.component.mjs +7 -3
- package/esm2022/lib/components/molecules/hint/hint.component.mjs +30 -5
- package/esm2022/lib/components/molecules/pagination/pagination.component.mjs +75 -19
- package/esm2022/lib/components/molecules/password-input/password-input.component.mjs +42 -9
- package/esm2022/lib/components/molecules/permission-selector/types.mjs +1 -1
- package/esm2022/lib/components/molecules/rating/rating.component.mjs +88 -12
- package/esm2022/lib/components/molecules/stepper/stepper.component.mjs +15 -7
- package/esm2022/lib/components/molecules/text-input/text-input.component.mjs +93 -7
- package/esm2022/lib/components/organisms/change-email-modal/change-email-modal.component.mjs +5 -5
- package/esm2022/lib/components/organisms/change-password-modal/change-password-modal.component.mjs +4 -4
- package/esm2022/lib/components/organisms/form/form.component.mjs +62 -20
- package/esm2022/lib/components/organisms/login/login.component.mjs +8 -8
- package/esm2022/lib/components/organisms/mfa-modal/mfa-modal.component.mjs +3 -3
- package/esm2022/lib/components/types.mjs +1 -1
- package/esm2022/lib/services/presets/default-presets.mjs +45 -0
- package/esm2022/lib/services/presets/index.mjs +3 -1
- package/esm2022/lib/services/presets/preset.service.mjs +17 -4
- package/esm2022/lib/services/requests/request-form-builder.service.mjs +8 -3
- package/esm2022/lib/shared/utils/ionic-color.mjs +36 -0
- package/esm2022/lib/version.mjs +2 -2
- package/esm2022/public-api.mjs +2 -8
- package/fesm2022/valtech-components.mjs +1140 -1024
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/atoms/box/box.component.d.ts +2 -5
- package/lib/components/atoms/button/factory.d.ts +15 -69
- package/lib/components/atoms/divider/divider.component.d.ts +1 -4
- package/lib/components/atoms/href/href.component.d.ts +2 -3
- package/lib/components/atoms/image/image.component.d.ts +5 -0
- package/lib/components/molecules/action-card/action-card.component.d.ts +1 -1
- package/lib/components/molecules/card/card.component.d.ts +2 -1
- package/lib/components/molecules/checkbox-radio-input/checkbox-radio-input.component.d.ts +2 -3
- package/lib/components/molecules/chip-group/chip-group.component.d.ts +5 -0
- package/lib/components/molecules/command-display/command-display.component.d.ts +4 -0
- package/lib/components/molecules/comment/comment.component.d.ts +3 -0
- package/lib/components/molecules/cta-card/cta-card.component.d.ts +0 -1
- package/lib/components/molecules/hint/hint.component.d.ts +11 -1
- package/lib/components/molecules/pagination/pagination.component.d.ts +5 -0
- package/lib/components/molecules/password-input/password-input.component.d.ts +4 -2
- package/lib/components/molecules/permission-selector/types.d.ts +1 -0
- package/lib/components/molecules/rating/rating.component.d.ts +11 -0
- package/lib/components/molecules/text-input/text-input.component.d.ts +21 -0
- package/lib/components/organisms/form/form.component.d.ts +19 -0
- package/lib/components/types.d.ts +21 -1
- package/lib/services/presets/default-presets.d.ts +22 -0
- package/lib/services/presets/index.d.ts +1 -0
- package/lib/services/presets/preset.service.d.ts +4 -0
- package/lib/shared/utils/ionic-color.d.ts +20 -0
- package/lib/version.d.ts +1 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -7
- package/src/lib/components/styles/mixins.scss +16 -0
- package/esm2022/lib/components/molecules/content-card/content-card.component.mjs +0 -86
- package/esm2022/lib/components/molecules/content-card/types.mjs +0 -11
- package/esm2022/lib/components/molecules/email-input/email-input.component.mjs +0 -68
- package/esm2022/lib/components/molecules/hour-input/hour-input.component.mjs +0 -28
- package/esm2022/lib/components/molecules/info-card/info-card.component.mjs +0 -126
- package/esm2022/lib/components/molecules/info-card/types.mjs +0 -11
- package/esm2022/lib/components/molecules/number-input/number-input.component.mjs +0 -34
- package/lib/components/molecules/content-card/content-card.component.d.ts +0 -26
- package/lib/components/molecules/content-card/types.d.ts +0 -30
- package/lib/components/molecules/email-input/email-input.component.d.ts +0 -34
- package/lib/components/molecules/hour-input/hour-input.component.d.ts +0 -15
- package/lib/components/molecules/info-card/info-card.component.d.ts +0 -37
- package/lib/components/molecules/info-card/types.d.ts +0 -44
- package/lib/components/molecules/number-input/number-input.component.d.ts +0 -16
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, computed, input } from '@angular/core';
|
|
3
|
-
import { CONTENT_CARD_DEFAULTS } from './types';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
const IONIC_COLORS = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
|
|
6
|
-
function resolveColor(value) {
|
|
7
|
-
if (!value)
|
|
8
|
-
return undefined;
|
|
9
|
-
return IONIC_COLORS.includes(value) ? `var(--ion-color-${value})` : value;
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* val-content-card
|
|
13
|
-
*
|
|
14
|
-
* Generic container card with configurable padding, border radius, background
|
|
15
|
-
* color and shadow. Accepts arbitrary content via ng-content. Use it to wrap
|
|
16
|
-
* val-article, stats, or any other content that needs a card shell.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```html
|
|
20
|
-
* <val-content-card [props]="{ title: 'Summary', shadowed: true }">
|
|
21
|
-
* <p>Any inner content here.</p>
|
|
22
|
-
* </val-content-card>
|
|
23
|
-
* ```
|
|
24
|
-
*/
|
|
25
|
-
export class ContentCardComponent {
|
|
26
|
-
constructor() {
|
|
27
|
-
/** Component configuration */
|
|
28
|
-
this.props = input({});
|
|
29
|
-
/** Merged configuration with defaults */
|
|
30
|
-
this.config = computed(() => ({
|
|
31
|
-
...CONTENT_CARD_DEFAULTS,
|
|
32
|
-
...this.props(),
|
|
33
|
-
}));
|
|
34
|
-
this.resolvedBg = computed(() => resolveColor(this.config().backgroundColor));
|
|
35
|
-
this.resolvedColor = computed(() => resolveColor(this.config().color));
|
|
36
|
-
}
|
|
37
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
38
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: ContentCardComponent, isStandalone: true, selector: "val-content-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
39
|
-
<div
|
|
40
|
-
class="content-card"
|
|
41
|
-
[class.content-card--bordered]="config().bordered"
|
|
42
|
-
[class.content-card--shadowed]="config().shadowed"
|
|
43
|
-
[class.content-card--center]="config().align === 'center'"
|
|
44
|
-
[style.padding]="config().padding"
|
|
45
|
-
[style.border-radius]="config().borderRadius"
|
|
46
|
-
[style.background-color]="resolvedBg()"
|
|
47
|
-
[style.color]="resolvedColor()"
|
|
48
|
-
>
|
|
49
|
-
@if (config().title) {
|
|
50
|
-
<h3 class="content-card__title">{{ config().title }}</h3>
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
@if (config().description) {
|
|
54
|
-
<p class="content-card__description">{{ config().description }}</p>
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
<ng-content></ng-content>
|
|
58
|
-
</div>
|
|
59
|
-
`, isInline: true, styles: [":host{display:block}.content-card{background:var(--ion-card-background, var(--ion-background-color))}.content-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.content-card--shadowed{box-shadow:0 4px 16px #00000014}.content-card--center{text-align:center}.content-card__title{margin:0 0 .5rem;font-size:1.1rem;font-weight:700;color:inherit;line-height:1.3}.content-card__description{margin:0 0 1rem;font-size:.875rem;color:var(--ion-color-medium-shade);line-height:1.5}:host-context(body.dark) .content-card--bordered,:host-context(html.ion-palette-dark) .content-card--bordered,:host-context([data-theme=dark]) .content-card--bordered{border-color:#ffffff1f}:host-context(body.dark) .content-card--shadowed,:host-context(html.ion-palette-dark) .content-card--shadowed,:host-context([data-theme=dark]) .content-card--shadowed{box-shadow:0 4px 16px #0000004d}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }] }); }
|
|
60
|
-
}
|
|
61
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: ContentCardComponent, decorators: [{
|
|
62
|
-
type: Component,
|
|
63
|
-
args: [{ selector: 'val-content-card', standalone: true, imports: [CommonModule], template: `
|
|
64
|
-
<div
|
|
65
|
-
class="content-card"
|
|
66
|
-
[class.content-card--bordered]="config().bordered"
|
|
67
|
-
[class.content-card--shadowed]="config().shadowed"
|
|
68
|
-
[class.content-card--center]="config().align === 'center'"
|
|
69
|
-
[style.padding]="config().padding"
|
|
70
|
-
[style.border-radius]="config().borderRadius"
|
|
71
|
-
[style.background-color]="resolvedBg()"
|
|
72
|
-
[style.color]="resolvedColor()"
|
|
73
|
-
>
|
|
74
|
-
@if (config().title) {
|
|
75
|
-
<h3 class="content-card__title">{{ config().title }}</h3>
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
@if (config().description) {
|
|
79
|
-
<p class="content-card__description">{{ config().description }}</p>
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
<ng-content></ng-content>
|
|
83
|
-
</div>
|
|
84
|
-
`, styles: [":host{display:block}.content-card{background:var(--ion-card-background, var(--ion-background-color))}.content-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.content-card--shadowed{box-shadow:0 4px 16px #00000014}.content-card--center{text-align:center}.content-card__title{margin:0 0 .5rem;font-size:1.1rem;font-weight:700;color:inherit;line-height:1.3}.content-card__description{margin:0 0 1rem;font-size:.875rem;color:var(--ion-color-medium-shade);line-height:1.5}:host-context(body.dark) .content-card--bordered,:host-context(html.ion-palette-dark) .content-card--bordered,:host-context([data-theme=dark]) .content-card--bordered{border-color:#ffffff1f}:host-context(body.dark) .content-card--shadowed,:host-context(html.ion-palette-dark) .content-card--shadowed,:host-context([data-theme=dark]) .content-card--shadowed{box-shadow:0 4px 16px #0000004d}\n"] }]
|
|
85
|
-
}] });
|
|
86
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGVudC1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvY29udGVudC1jYXJkL2NvbnRlbnQtY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQXVCLHFCQUFxQixFQUFFLE1BQU0sU0FBUyxDQUFDOztBQUVyRSxNQUFNLFlBQVksR0FBRyxDQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFFckgsU0FBUyxZQUFZLENBQUMsS0FBeUI7SUFDN0MsSUFBSSxDQUFDLEtBQUs7UUFBRSxPQUFPLFNBQVMsQ0FBQztJQUM3QixPQUFPLFlBQVksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLG1CQUFtQixLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQzVFLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7OztHQWFHO0FBNkJILE1BQU0sT0FBTyxvQkFBb0I7SUE1QmpDO1FBNkJFLDhCQUE4QjtRQUNyQixVQUFLLEdBQUcsS0FBSyxDQUErQixFQUFrQyxDQUFDLENBQUM7UUFFekYseUNBQXlDO1FBQ3pDLFdBQU0sR0FBRyxRQUFRLENBQ2YsR0FBRyxFQUFFLENBQ0gsQ0FBQztZQUNDLEdBQUcscUJBQXFCO1lBQ3hCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNoQixDQUF1RCxDQUMzRCxDQUFDO1FBRUYsZUFBVSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUM7UUFDekUsa0JBQWEsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0tBQ25FOytHQWZZLG9CQUFvQjttR0FBcEIsb0JBQW9CLGdOQXhCckI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQXFCVCxvOEJBdEJTLFlBQVk7OzRGQXlCWCxvQkFBb0I7a0JBNUJoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxZQUFZLENBQUMsWUFDYjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBcUJUIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgY29tcHV0ZWQsIGlucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDb250ZW50Q2FyZE1ldGFkYXRhLCBDT05URU5UX0NBUkRfREVGQVVMVFMgfSBmcm9tICcuL3R5cGVzJztcblxuY29uc3QgSU9OSUNfQ09MT1JTID0gWydwcmltYXJ5JywgJ3NlY29uZGFyeScsICd0ZXJ0aWFyeScsICdzdWNjZXNzJywgJ3dhcm5pbmcnLCAnZGFuZ2VyJywgJ2xpZ2h0JywgJ21lZGl1bScsICdkYXJrJ107XG5cbmZ1bmN0aW9uIHJlc29sdmVDb2xvcih2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgcmV0dXJuIElPTklDX0NPTE9SUy5pbmNsdWRlcyh2YWx1ZSkgPyBgdmFyKC0taW9uLWNvbG9yLSR7dmFsdWV9KWAgOiB2YWx1ZTtcbn1cblxuLyoqXG4gKiB2YWwtY29udGVudC1jYXJkXG4gKlxuICogR2VuZXJpYyBjb250YWluZXIgY2FyZCB3aXRoIGNvbmZpZ3VyYWJsZSBwYWRkaW5nLCBib3JkZXIgcmFkaXVzLCBiYWNrZ3JvdW5kXG4gKiBjb2xvciBhbmQgc2hhZG93LiBBY2NlcHRzIGFyYml0cmFyeSBjb250ZW50IHZpYSBuZy1jb250ZW50LiBVc2UgaXQgdG8gd3JhcFxuICogdmFsLWFydGljbGUsIHN0YXRzLCBvciBhbnkgb3RoZXIgY29udGVudCB0aGF0IG5lZWRzIGEgY2FyZCBzaGVsbC5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1jb250ZW50LWNhcmQgW3Byb3BzXT1cInsgdGl0bGU6ICdTdW1tYXJ5Jywgc2hhZG93ZWQ6IHRydWUgfVwiPlxuICogICA8cD5BbnkgaW5uZXIgY29udGVudCBoZXJlLjwvcD5cbiAqIDwvdmFsLWNvbnRlbnQtY2FyZD5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICd2YWwtY29udGVudC1jYXJkJyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZV0sXG4gIHRlbXBsYXRlOiBgXG4gICAgPGRpdlxuICAgICAgY2xhc3M9XCJjb250ZW50LWNhcmRcIlxuICAgICAgW2NsYXNzLmNvbnRlbnQtY2FyZC0tYm9yZGVyZWRdPVwiY29uZmlnKCkuYm9yZGVyZWRcIlxuICAgICAgW2NsYXNzLmNvbnRlbnQtY2FyZC0tc2hhZG93ZWRdPVwiY29uZmlnKCkuc2hhZG93ZWRcIlxuICAgICAgW2NsYXNzLmNvbnRlbnQtY2FyZC0tY2VudGVyXT1cImNvbmZpZygpLmFsaWduID09PSAnY2VudGVyJ1wiXG4gICAgICBbc3R5bGUucGFkZGluZ109XCJjb25maWcoKS5wYWRkaW5nXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cImNvbmZpZygpLmJvcmRlclJhZGl1c1wiXG4gICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJyZXNvbHZlZEJnKClcIlxuICAgICAgW3N0eWxlLmNvbG9yXT1cInJlc29sdmVkQ29sb3IoKVwiXG4gICAgPlxuICAgICAgQGlmIChjb25maWcoKS50aXRsZSkge1xuICAgICAgICA8aDMgY2xhc3M9XCJjb250ZW50LWNhcmRfX3RpdGxlXCI+e3sgY29uZmlnKCkudGl0bGUgfX08L2gzPlxuICAgICAgfVxuXG4gICAgICBAaWYgKGNvbmZpZygpLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIDxwIGNsYXNzPVwiY29udGVudC1jYXJkX19kZXNjcmlwdGlvblwiPnt7IGNvbmZpZygpLmRlc2NyaXB0aW9uIH19PC9wPlxuICAgICAgfVxuXG4gICAgICA8bmctY29udGVudD48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG4gIGAsXG4gIHN0eWxlVXJsczogWycuL2NvbnRlbnQtY2FyZC5jb21wb25lbnQuc2NzcyddLFxufSlcbmV4cG9ydCBjbGFzcyBDb250ZW50Q2FyZENvbXBvbmVudCB7XG4gIC8qKiBDb21wb25lbnQgY29uZmlndXJhdGlvbiAqL1xuICByZWFkb25seSBwcm9wcyA9IGlucHV0PFBhcnRpYWw8Q29udGVudENhcmRNZXRhZGF0YT4+KHt9IGFzIFBhcnRpYWw8Q29udGVudENhcmRNZXRhZGF0YT4pO1xuXG4gIC8qKiBNZXJnZWQgY29uZmlndXJhdGlvbiB3aXRoIGRlZmF1bHRzICovXG4gIGNvbmZpZyA9IGNvbXB1dGVkKFxuICAgICgpID0+XG4gICAgICAoe1xuICAgICAgICAuLi5DT05URU5UX0NBUkRfREVGQVVMVFMsXG4gICAgICAgIC4uLnRoaXMucHJvcHMoKSxcbiAgICAgIH0pIGFzIENvbnRlbnRDYXJkTWV0YWRhdGEgJiB0eXBlb2YgQ09OVEVOVF9DQVJEX0RFRkFVTFRTXG4gICk7XG5cbiAgcmVzb2x2ZWRCZyA9IGNvbXB1dGVkKCgpID0+IHJlc29sdmVDb2xvcih0aGlzLmNvbmZpZygpLmJhY2tncm91bmRDb2xvcikpO1xuICByZXNvbHZlZENvbG9yID0gY29tcHV0ZWQoKCkgPT4gcmVzb2x2ZUNvbG9yKHRoaXMuY29uZmlnKCkuY29sb3IpKTtcbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default values for ContentCardMetadata.
|
|
3
|
-
*/
|
|
4
|
-
export const CONTENT_CARD_DEFAULTS = {
|
|
5
|
-
padding: '1.5rem',
|
|
6
|
-
borderRadius: '20px',
|
|
7
|
-
bordered: false,
|
|
8
|
-
shadowed: true,
|
|
9
|
-
align: 'start',
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2NvbnRlbnQtY2FyZC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyQkE7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FFOUI7SUFDRixPQUFPLEVBQUUsUUFBUTtJQUNqQixZQUFZLEVBQUUsTUFBTTtJQUNwQixRQUFRLEVBQUUsS0FBSztJQUNmLFFBQVEsRUFBRSxJQUFJO0lBQ2QsS0FBSyxFQUFFLE9BQU87Q0FDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBNZXRhZGF0YSBmb3IgdmFsLWNvbnRlbnQtY2FyZC5cbiAqXG4gKiBHZW5lcmljIGNvbnRhaW5lciBjYXJkIHdpdGggY29uZmlndXJhYmxlIHBhZGRpbmcsIGJvcmRlciByYWRpdXMsIGJhY2tncm91bmRcbiAqIGNvbG9yIGFuZCBzaGFkb3cuIFN1cHBvcnRzIG5nLWNvbnRlbnQgZm9yIGFyYml0cmFyeSBpbm5lciBjb250ZW50LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRlbnRDYXJkTWV0YWRhdGEge1xuICAvKiogT3B0aW9uYWwgY2FyZCB0aXRsZSByZW5kZXJlZCBhYm92ZSB0aGUgY29udGVudCAqL1xuICB0aXRsZT86IHN0cmluZztcbiAgLyoqIE9wdGlvbmFsIGRlc2NyaXB0aW9uIHJlbmRlcmVkIGJlbG93IHRoZSB0aXRsZSAqL1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgLyoqIEJhY2tncm91bmQgY29sb3Ig4oCUIElvbmljIGNvbG9yIG5hbWUgKHByaW1hcnnigKZkYXJrKSBvciBhbnkgQ1NTIGNvbG9yICovXG4gIGJhY2tncm91bmRDb2xvcj86IHN0cmluZztcbiAgLyoqIFRleHQgY29sb3Ig4oCUIElvbmljIGNvbG9yIG5hbWUgb3IgYW55IENTUyBjb2xvciAqL1xuICBjb2xvcj86IHN0cmluZztcbiAgLyoqIENhcmQgaW5uZXIgcGFkZGluZy4gRGVmYXVsdDogJzEuNXJlbScgKi9cbiAgcGFkZGluZz86IHN0cmluZztcbiAgLyoqIENhcmQgYm9yZGVyIHJhZGl1cy4gRGVmYXVsdDogJzIwcHgnICovXG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbiAgLyoqIFNob3cgYm9yZGVyLiBEZWZhdWx0OiBmYWxzZSAqL1xuICBib3JkZXJlZD86IGJvb2xlYW47XG4gIC8qKiBTaG93IGJveCBzaGFkb3cuIERlZmF1bHQ6IHRydWUgKi9cbiAgc2hhZG93ZWQ/OiBib29sZWFuO1xuICAvKiogVGV4dCBhbGlnbm1lbnQuIERlZmF1bHQ6ICdzdGFydCcgKi9cbiAgYWxpZ24/OiAnc3RhcnQnIHwgJ2NlbnRlcic7XG59XG5cbi8qKlxuICogRGVmYXVsdCB2YWx1ZXMgZm9yIENvbnRlbnRDYXJkTWV0YWRhdGEuXG4gKi9cbmV4cG9ydCBjb25zdCBDT05URU5UX0NBUkRfREVGQVVMVFM6IFJlcXVpcmVkPFxuICBQaWNrPENvbnRlbnRDYXJkTWV0YWRhdGEsICdwYWRkaW5nJyB8ICdib3JkZXJSYWRpdXMnIHwgJ2JvcmRlcmVkJyB8ICdzaGFkb3dlZCcgfCAnYWxpZ24nPlxuPiA9IHtcbiAgcGFkZGluZzogJzEuNXJlbScsXG4gIGJvcmRlclJhZGl1czogJzIwcHgnLFxuICBib3JkZXJlZDogZmFsc2UsXG4gIHNoYWRvd2VkOiB0cnVlLFxuICBhbGlnbjogJ3N0YXJ0Jyxcbn07XG4iXX0=
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, inject, Input } from '@angular/core';
|
|
3
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
4
|
-
import { IonInput } from '@ionic/angular/standalone';
|
|
5
|
-
import { PresetService } from '../../../services/presets';
|
|
6
|
-
import * as i0 from "@angular/core";
|
|
7
|
-
import * as i1 from "@angular/forms";
|
|
8
|
-
/**
|
|
9
|
-
* val-email-input
|
|
10
|
-
*
|
|
11
|
-
* An email input field integrated with Angular forms.
|
|
12
|
-
* Supports presets for reusable configurations.
|
|
13
|
-
*
|
|
14
|
-
* @example With preset (recommended):
|
|
15
|
-
* <val-email-input preset="form-field" [props]="{ control: myControl, placeholder: 'Email' }"></val-email-input>
|
|
16
|
-
*
|
|
17
|
-
* @example Static (backwards compatible):
|
|
18
|
-
* <val-email-input [props]="{ control: myControl, placeholder: 'Enter your email' }"></val-email-input>
|
|
19
|
-
*
|
|
20
|
-
* @input preset: string - Name of preset to apply (e.g., 'form-field')
|
|
21
|
-
* @input props: InputMetadata - Configuration for the input (overrides preset values)
|
|
22
|
-
*/
|
|
23
|
-
export class EmailInputComponent {
|
|
24
|
-
constructor() {
|
|
25
|
-
this.presets = inject(PresetService);
|
|
26
|
-
/**
|
|
27
|
-
* Input configuration object. Values here override preset values.
|
|
28
|
-
* @type {InputMetadata}
|
|
29
|
-
* @property control - The Angular FormControl for the input.
|
|
30
|
-
* @property placeholder - The placeholder text.
|
|
31
|
-
*/
|
|
32
|
-
this.props = {};
|
|
33
|
-
/**
|
|
34
|
-
* Resolved props after merging preset + explicit props.
|
|
35
|
-
*/
|
|
36
|
-
this.resolvedProps = {};
|
|
37
|
-
}
|
|
38
|
-
ngOnInit() {
|
|
39
|
-
this.resolveProps();
|
|
40
|
-
}
|
|
41
|
-
ngOnChanges(changes) {
|
|
42
|
-
if (changes['preset'] || changes['props']) {
|
|
43
|
-
this.resolveProps();
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
/**
|
|
47
|
-
* Merge preset configuration with explicit props.
|
|
48
|
-
* Explicit props take precedence over preset values.
|
|
49
|
-
*/
|
|
50
|
-
resolveProps() {
|
|
51
|
-
const presetProps = this.preset ? this.presets.get('emailInput', this.preset) : {};
|
|
52
|
-
this.resolvedProps = {
|
|
53
|
-
...presetProps,
|
|
54
|
-
...this.props,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
58
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: EmailInputComponent, isStandalone: true, selector: "val-email-input", inputs: { preset: "preset", props: "props" }, usesOnChanges: true, ngImport: i0, template: ` <ion-input [formControl]="resolvedProps.control" type="email" [placeholder]="resolvedProps.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
59
|
-
}
|
|
60
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: EmailInputComponent, decorators: [{
|
|
61
|
-
type: Component,
|
|
62
|
-
args: [{ selector: 'val-email-input', standalone: true, imports: [CommonModule, ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="resolvedProps.control" type="email" [placeholder]="resolvedProps.placeholder"></ion-input> ` }]
|
|
63
|
-
}], propDecorators: { preset: [{
|
|
64
|
-
type: Input
|
|
65
|
-
}], props: [{
|
|
66
|
-
type: Input
|
|
67
|
-
}] } });
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW1haWwtaW5wdXQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9jb21wb25lbnRzL21vbGVjdWxlcy9lbWFpbC1pbnB1dC9lbWFpbC1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBb0MsTUFBTSxlQUFlLENBQUM7QUFDM0YsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQzs7O0FBVTFEOzs7Ozs7Ozs7Ozs7OztHQWNHO0FBQ0gsTUFBTSxPQUFPLG1CQUFtQjtJQXRCaEM7UUF1QlUsWUFBTyxHQUFHLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQVd4Qzs7Ozs7V0FLRztRQUNNLFVBQUssR0FBMkIsRUFBRSxDQUFDO1FBRTVDOztXQUVHO1FBQ0gsa0JBQWEsR0FBa0IsRUFBbUIsQ0FBQztLQXdCcEQ7SUF0QkMsUUFBUTtRQUNOLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsV0FBVyxDQUFDLE9BQXNCO1FBQ2hDLElBQUksT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO1lBQzFDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNLLFlBQVk7UUFDbEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQTRCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUUvRyxJQUFJLENBQUMsYUFBYSxHQUFHO1lBQ25CLEdBQUcsV0FBVztZQUNkLEdBQUcsSUFBSSxDQUFDLEtBQUs7U0FDRyxDQUFDO0lBQ3JCLENBQUM7K0dBOUNVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDhJQWxCcEIsd0hBQXdILHlFQUR4SCxZQUFZLDhCQUFFLG1CQUFtQiwwVEFBRSxRQUFROzs0RkFtQjFDLG1CQUFtQjtrQkF0Qi9CLFNBQVM7K0JBQ0UsaUJBQWlCLGNBQ2YsSUFBSSxXQUNQLENBQUMsWUFBWSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsQ0FBQyxZQUM1Qyx3SEFBd0g7OEJBNEJ6SCxNQUFNO3NCQUFkLEtBQUs7Z0JBUUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IENvbXBvbmVudCwgaW5qZWN0LCBJbnB1dCwgT25DaGFuZ2VzLCBPbkluaXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBJb25JbnB1dCB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgUHJlc2V0U2VydmljZSB9IGZyb20gJy4uLy4uLy4uL3NlcnZpY2VzL3ByZXNldHMnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLWVtYWlsLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgSW9uSW5wdXRdLFxuICB0ZW1wbGF0ZTogYCA8aW9uLWlucHV0IFtmb3JtQ29udHJvbF09XCJyZXNvbHZlZFByb3BzLmNvbnRyb2xcIiB0eXBlPVwiZW1haWxcIiBbcGxhY2Vob2xkZXJdPVwicmVzb2x2ZWRQcm9wcy5wbGFjZWhvbGRlclwiPjwvaW9uLWlucHV0PiBgLFxuICBzdHlsZVVybHM6IFsnLi9lbWFpbC1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLWVtYWlsLWlucHV0XG4gKlxuICogQW4gZW1haWwgaW5wdXQgZmllbGQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMuXG4gKiBTdXBwb3J0cyBwcmVzZXRzIGZvciByZXVzYWJsZSBjb25maWd1cmF0aW9ucy5cbiAqXG4gKiBAZXhhbXBsZSBXaXRoIHByZXNldCAocmVjb21tZW5kZWQpOlxuICogPHZhbC1lbWFpbC1pbnB1dCBwcmVzZXQ9XCJmb3JtLWZpZWxkXCIgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sLCBwbGFjZWhvbGRlcjogJ0VtYWlsJyB9XCI+PC92YWwtZW1haWwtaW5wdXQ+XG4gKlxuICogQGV4YW1wbGUgU3RhdGljIChiYWNrd2FyZHMgY29tcGF0aWJsZSk6XG4gKiA8dmFsLWVtYWlsLWlucHV0IFtwcm9wc109XCJ7IGNvbnRyb2w6IG15Q29udHJvbCwgcGxhY2Vob2xkZXI6ICdFbnRlciB5b3VyIGVtYWlsJyB9XCI+PC92YWwtZW1haWwtaW5wdXQ+XG4gKlxuICogQGlucHV0IHByZXNldDogc3RyaW5nIC0gTmFtZSBvZiBwcmVzZXQgdG8gYXBwbHkgKGUuZy4sICdmb3JtLWZpZWxkJylcbiAqIEBpbnB1dCBwcm9wczogSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSBpbnB1dCAob3ZlcnJpZGVzIHByZXNldCB2YWx1ZXMpXG4gKi9cbmV4cG9ydCBjbGFzcyBFbWFpbElucHV0Q29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkNoYW5nZXMge1xuICBwcml2YXRlIHByZXNldHMgPSBpbmplY3QoUHJlc2V0U2VydmljZSk7XG5cbiAgLyoqXG4gICAqIFByZXNldCBuYW1lIHRvIGFwcGx5LiBQcmVzZXRzIGRlZmluZSByZXVzYWJsZSBpbnB1dCBjb25maWd1cmF0aW9uc1xuICAgKiB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGF0IGFwcCBsZXZlbCB2aWEgcHJvdmlkZVZhbHRlY2hQcmVzZXRzKCkuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIDx2YWwtZW1haWwtaW5wdXQgcHJlc2V0PVwiZm9ybS1maWVsZFwiIFtwcm9wc109XCJ7IGNvbnRyb2w6IGN0cmwgfVwiPjwvdmFsLWVtYWlsLWlucHV0PlxuICAgKi9cbiAgQElucHV0KCkgcHJlc2V0Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbnB1dCBjb25maWd1cmF0aW9uIG9iamVjdC4gVmFsdWVzIGhlcmUgb3ZlcnJpZGUgcHJlc2V0IHZhbHVlcy5cbiAgICogQHR5cGUge0lucHV0TWV0YWRhdGF9XG4gICAqIEBwcm9wZXJ0eSBjb250cm9sIC0gVGhlIEFuZ3VsYXIgRm9ybUNvbnRyb2wgZm9yIHRoZSBpbnB1dC5cbiAgICogQHByb3BlcnR5IHBsYWNlaG9sZGVyIC0gVGhlIHBsYWNlaG9sZGVyIHRleHQuXG4gICAqL1xuICBASW5wdXQoKSBwcm9wczogUGFydGlhbDxJbnB1dE1ldGFkYXRhPiA9IHt9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlZCBwcm9wcyBhZnRlciBtZXJnaW5nIHByZXNldCArIGV4cGxpY2l0IHByb3BzLlxuICAgKi9cbiAgcmVzb2x2ZWRQcm9wczogSW5wdXRNZXRhZGF0YSA9IHt9IGFzIElucHV0TWV0YWRhdGE7XG5cbiAgbmdPbkluaXQoKSB7XG4gICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgfVxuXG4gIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpIHtcbiAgICBpZiAoY2hhbmdlc1sncHJlc2V0J10gfHwgY2hhbmdlc1sncHJvcHMnXSkge1xuICAgICAgdGhpcy5yZXNvbHZlUHJvcHMoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTWVyZ2UgcHJlc2V0IGNvbmZpZ3VyYXRpb24gd2l0aCBleHBsaWNpdCBwcm9wcy5cbiAgICogRXhwbGljaXQgcHJvcHMgdGFrZSBwcmVjZWRlbmNlIG92ZXIgcHJlc2V0IHZhbHVlcy5cbiAgICovXG4gIHByaXZhdGUgcmVzb2x2ZVByb3BzKCk6IHZvaWQge1xuICAgIGNvbnN0IHByZXNldFByb3BzID0gdGhpcy5wcmVzZXQgPyAodGhpcy5wcmVzZXRzLmdldCgnZW1haWxJbnB1dCcsIHRoaXMucHJlc2V0KSBhcyBQYXJ0aWFsPElucHV0TWV0YWRhdGE+KSA6IHt9O1xuXG4gICAgdGhpcy5yZXNvbHZlZFByb3BzID0ge1xuICAgICAgLi4ucHJlc2V0UHJvcHMsXG4gICAgICAuLi50aGlzLnByb3BzLFxuICAgIH0gYXMgSW5wdXRNZXRhZGF0YTtcbiAgfVxufVxuIl19
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { IonDatetime } from '@ionic/angular/standalone';
|
|
4
|
-
import * as i0 from "@angular/core";
|
|
5
|
-
import * as i1 from "@angular/forms";
|
|
6
|
-
/**
|
|
7
|
-
* val-hour-input
|
|
8
|
-
*
|
|
9
|
-
* A time picker input integrated with Angular forms, using Ionic's datetime component.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* <val-hour-input [props]="{ control: myControl }"></val-hour-input>
|
|
13
|
-
*
|
|
14
|
-
* @input props: InputMetadata - Configuration for the time input (form control, etc.)
|
|
15
|
-
*/
|
|
16
|
-
export class HourInputComponent {
|
|
17
|
-
constructor() { }
|
|
18
|
-
ngOnInit() { }
|
|
19
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HourInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
20
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: HourInputComponent, isStandalone: true, selector: "val-hour-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-datetime [formControl]="props.control" presentation="time"></ion-datetime>`, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonDatetime, selector: "ion-datetime", inputs: ["cancelText", "clearText", "color", "dayValues", "disabled", "doneText", "firstDayOfWeek", "formatOptions", "highlightedDates", "hourCycle", "hourValues", "isDateEnabled", "locale", "max", "min", "minuteValues", "mode", "monthValues", "multiple", "name", "preferWheel", "presentation", "readonly", "showAdjacentDays", "showClearButton", "showDefaultButtons", "showDefaultTimeLabel", "showDefaultTitle", "size", "titleSelectedDatesFormatter", "value", "yearValues"] }] }); }
|
|
21
|
-
}
|
|
22
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: HourInputComponent, decorators: [{
|
|
23
|
-
type: Component,
|
|
24
|
-
args: [{ selector: 'val-hour-input', standalone: true, imports: [ReactiveFormsModule, IonDatetime], template: ` <ion-datetime [formControl]="props.control" presentation="time"></ion-datetime>` }]
|
|
25
|
-
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
26
|
-
type: Input
|
|
27
|
-
}] } });
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaG91ci1pbnB1dC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2hvdXItaW5wdXQvaG91ci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLDJCQUEyQixDQUFDOzs7QUFVeEQ7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLGtCQUFrQjtJQVE3QixnQkFBZSxDQUFDO0lBRWhCLFFBQVEsS0FBSSxDQUFDOytHQVZGLGtCQUFrQjttR0FBbEIsa0JBQWtCLHNHQWJuQixrRkFBa0YseUVBRGxGLG1CQUFtQiwwVEFBRSxXQUFXOzs0RkFjL0Isa0JBQWtCO2tCQWpCOUIsU0FBUzsrQkFDRSxnQkFBZ0IsY0FDZCxJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxXQUFXLENBQUMsWUFDakMsa0ZBQWtGO3dEQW1CbkYsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uRGF0ZXRpbWUgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IElucHV0TWV0YWRhdGEgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1ob3VyLWlucHV0JyxcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcbiAgaW1wb3J0czogW1JlYWN0aXZlRm9ybXNNb2R1bGUsIElvbkRhdGV0aW1lXSxcbiAgdGVtcGxhdGU6IGAgPGlvbi1kYXRldGltZSBbZm9ybUNvbnRyb2xdPVwicHJvcHMuY29udHJvbFwiIHByZXNlbnRhdGlvbj1cInRpbWVcIj48L2lvbi1kYXRldGltZT5gLFxuICBzdHlsZVVybHM6IFsnLi9ob3VyLWlucHV0LmNvbXBvbmVudC5zY3NzJ10sXG59KVxuLyoqXG4gKiB2YWwtaG91ci1pbnB1dFxuICpcbiAqIEEgdGltZSBwaWNrZXIgaW5wdXQgaW50ZWdyYXRlZCB3aXRoIEFuZ3VsYXIgZm9ybXMsIHVzaW5nIElvbmljJ3MgZGF0ZXRpbWUgY29tcG9uZW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLWhvdXItaW5wdXQgW3Byb3BzXT1cInsgY29udHJvbDogbXlDb250cm9sIH1cIj48L3ZhbC1ob3VyLWlucHV0PlxuICpcbiAqIEBpbnB1dCBwcm9wczogSW5wdXRNZXRhZGF0YSAtIENvbmZpZ3VyYXRpb24gZm9yIHRoZSB0aW1lIGlucHV0IChmb3JtIGNvbnRyb2wsIGV0Yy4pXG4gKi9cbmV4cG9ydCBjbGFzcyBIb3VySW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtJbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgdGltZSBpbnB1dC5cbiAgICovXG4gIEBJbnB1dCgpIHByb3BzOiBJbnB1dE1ldGFkYXRhO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBuZ09uSW5pdCgpIHt9XG59XG4iXX0=
|
|
@@ -1,126 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import { Component, computed, input } from '@angular/core';
|
|
3
|
-
import { IonIcon } from '@ionic/angular/standalone';
|
|
4
|
-
import { INFO_CARD_DEFAULTS } from './types';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
const IONIC_COLORS = ['primary', 'secondary', 'tertiary', 'success', 'warning', 'danger', 'light', 'medium', 'dark'];
|
|
7
|
-
/**
|
|
8
|
-
* val-info-card
|
|
9
|
-
*
|
|
10
|
-
* Card with icon + overtitle + title + subtitle on the left side, and a list
|
|
11
|
-
* of key-value pairs (label: value) on the right side. Inspired by npm's
|
|
12
|
-
* "Provenance" / metadata panel style.
|
|
13
|
-
*
|
|
14
|
-
* Two-column layout on desktop, stacked single-column on mobile.
|
|
15
|
-
*
|
|
16
|
-
* Presentational — pass already-resolved strings.
|
|
17
|
-
*
|
|
18
|
-
* @example
|
|
19
|
-
* ```html
|
|
20
|
-
* <val-info-card
|
|
21
|
-
* [props]="{
|
|
22
|
-
* icon: 'cube-outline',
|
|
23
|
-
* title: 'valtech-components',
|
|
24
|
-
* subtitle: 'v2.0.962',
|
|
25
|
-
* keyValues: [
|
|
26
|
-
* { label: 'License', value: 'MIT' },
|
|
27
|
-
* { label: 'Downloads', value: '1.2M' }
|
|
28
|
-
* ]
|
|
29
|
-
* }"
|
|
30
|
-
* />
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class InfoCardComponent {
|
|
34
|
-
constructor() {
|
|
35
|
-
/** Component configuration */
|
|
36
|
-
this.props = input({});
|
|
37
|
-
/** Merged configuration with defaults */
|
|
38
|
-
this.config = computed(() => ({
|
|
39
|
-
...INFO_CARD_DEFAULTS,
|
|
40
|
-
...this.props(),
|
|
41
|
-
}));
|
|
42
|
-
}
|
|
43
|
-
getIconColor() {
|
|
44
|
-
const color = this.config().iconColor;
|
|
45
|
-
if (!color)
|
|
46
|
-
return `var(--ion-color-primary)`;
|
|
47
|
-
return IONIC_COLORS.includes(color) ? `var(--ion-color-${color})` : color;
|
|
48
|
-
}
|
|
49
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InfoCardComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
50
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: InfoCardComponent, isStandalone: true, selector: "val-info-card", inputs: { props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `
|
|
51
|
-
<div
|
|
52
|
-
class="info-card"
|
|
53
|
-
[class.info-card--bordered]="config().bordered"
|
|
54
|
-
[class.info-card--shadowed]="config().shadowed"
|
|
55
|
-
[style.padding]="config().padding"
|
|
56
|
-
[style.border-radius]="config().borderRadius"
|
|
57
|
-
>
|
|
58
|
-
<div class="info-card__left">
|
|
59
|
-
@if (config().icon) {
|
|
60
|
-
<ion-icon class="info-card__icon" [name]="config().icon" [style.color]="getIconColor()"></ion-icon>
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
@if (config().overtitle) {
|
|
64
|
-
<span class="info-card__overtitle">{{ config().overtitle }}</span>
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
<h3 class="info-card__title">{{ config().title }}</h3>
|
|
68
|
-
|
|
69
|
-
@if (config().subtitle) {
|
|
70
|
-
<p class="info-card__subtitle">{{ config().subtitle }}</p>
|
|
71
|
-
}
|
|
72
|
-
</div>
|
|
73
|
-
|
|
74
|
-
@if (config().keyValues?.length) {
|
|
75
|
-
<div class="info-card__right">
|
|
76
|
-
@for (kv of config().keyValues; track $index) {
|
|
77
|
-
<div class="info-card__kv">
|
|
78
|
-
<span class="info-card__kv-label">{{ kv.label }}</span>
|
|
79
|
-
<span class="info-card__kv-value">{{ kv.value }}</span>
|
|
80
|
-
</div>
|
|
81
|
-
}
|
|
82
|
-
</div>
|
|
83
|
-
}
|
|
84
|
-
</div>
|
|
85
|
-
`, isInline: true, styles: [":host{display:block}.info-card{display:flex;flex-direction:row;gap:2rem;background:var(--ion-card-background, var(--ion-background-color))}.info-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.info-card--shadowed{box-shadow:0 2px 8px #00000014}.info-card__left{display:flex;flex-direction:column;gap:.35rem;flex:1 1 0;min-width:0}.info-card__icon{font-size:2rem;margin-bottom:.25rem}.info-card__overtitle{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ion-color-medium)}.info-card__title{margin:0;font-size:1.25rem;font-weight:700;color:var(--ion-text-color);line-height:1.3}.info-card__subtitle{margin:0;font-size:.875rem;color:var(--ion-color-medium-shade)}.info-card__right{display:flex;flex-direction:column;gap:.6rem;flex:0 0 auto;min-width:160px;max-width:260px}.info-card__kv{display:flex;flex-direction:column;gap:.1rem}.info-card__kv-label{font-size:.75rem;color:var(--ion-color-medium)}.info-card__kv-value{font-size:.9rem;font-weight:600;color:var(--ion-text-color);word-break:break-word}@media (max-width: 600px){.info-card{flex-direction:column;gap:1.25rem}.info-card__right{max-width:100%;flex-direction:row;flex-wrap:wrap;gap:.75rem 1.5rem}.info-card__kv{flex:0 0 auto}}:host-context(body.dark) .info-card--bordered,:host-context(html.ion-palette-dark) .info-card--bordered,:host-context([data-theme=dark]) .info-card--bordered{border-color:#ffffff1f}:host-context(body.dark) .info-card--shadowed,:host-context(html.ion-palette-dark) .info-card--shadowed,:host-context([data-theme=dark]) .info-card--shadowed{box-shadow:0 2px 8px #0000004d}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }] }); }
|
|
86
|
-
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: InfoCardComponent, decorators: [{
|
|
88
|
-
type: Component,
|
|
89
|
-
args: [{ selector: 'val-info-card', standalone: true, imports: [CommonModule, IonIcon], template: `
|
|
90
|
-
<div
|
|
91
|
-
class="info-card"
|
|
92
|
-
[class.info-card--bordered]="config().bordered"
|
|
93
|
-
[class.info-card--shadowed]="config().shadowed"
|
|
94
|
-
[style.padding]="config().padding"
|
|
95
|
-
[style.border-radius]="config().borderRadius"
|
|
96
|
-
>
|
|
97
|
-
<div class="info-card__left">
|
|
98
|
-
@if (config().icon) {
|
|
99
|
-
<ion-icon class="info-card__icon" [name]="config().icon" [style.color]="getIconColor()"></ion-icon>
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
@if (config().overtitle) {
|
|
103
|
-
<span class="info-card__overtitle">{{ config().overtitle }}</span>
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
<h3 class="info-card__title">{{ config().title }}</h3>
|
|
107
|
-
|
|
108
|
-
@if (config().subtitle) {
|
|
109
|
-
<p class="info-card__subtitle">{{ config().subtitle }}</p>
|
|
110
|
-
}
|
|
111
|
-
</div>
|
|
112
|
-
|
|
113
|
-
@if (config().keyValues?.length) {
|
|
114
|
-
<div class="info-card__right">
|
|
115
|
-
@for (kv of config().keyValues; track $index) {
|
|
116
|
-
<div class="info-card__kv">
|
|
117
|
-
<span class="info-card__kv-label">{{ kv.label }}</span>
|
|
118
|
-
<span class="info-card__kv-value">{{ kv.value }}</span>
|
|
119
|
-
</div>
|
|
120
|
-
}
|
|
121
|
-
</div>
|
|
122
|
-
}
|
|
123
|
-
</div>
|
|
124
|
-
`, styles: [":host{display:block}.info-card{display:flex;flex-direction:row;gap:2rem;background:var(--ion-card-background, var(--ion-background-color))}.info-card--bordered{border:1px solid var(--ion-color-light-shade, rgba(0, 0, 0, .1))}.info-card--shadowed{box-shadow:0 2px 8px #00000014}.info-card__left{display:flex;flex-direction:column;gap:.35rem;flex:1 1 0;min-width:0}.info-card__icon{font-size:2rem;margin-bottom:.25rem}.info-card__overtitle{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ion-color-medium)}.info-card__title{margin:0;font-size:1.25rem;font-weight:700;color:var(--ion-text-color);line-height:1.3}.info-card__subtitle{margin:0;font-size:.875rem;color:var(--ion-color-medium-shade)}.info-card__right{display:flex;flex-direction:column;gap:.6rem;flex:0 0 auto;min-width:160px;max-width:260px}.info-card__kv{display:flex;flex-direction:column;gap:.1rem}.info-card__kv-label{font-size:.75rem;color:var(--ion-color-medium)}.info-card__kv-value{font-size:.9rem;font-weight:600;color:var(--ion-text-color);word-break:break-word}@media (max-width: 600px){.info-card{flex-direction:column;gap:1.25rem}.info-card__right{max-width:100%;flex-direction:row;flex-wrap:wrap;gap:.75rem 1.5rem}.info-card__kv{flex:0 0 auto}}:host-context(body.dark) .info-card--bordered,:host-context(html.ion-palette-dark) .info-card--bordered,:host-context([data-theme=dark]) .info-card--bordered{border-color:#ffffff1f}:host-context(body.dark) .info-card--shadowed,:host-context(html.ion-palette-dark) .info-card--shadowed,:host-context([data-theme=dark]) .info-card--shadowed{box-shadow:0 2px 8px #0000004d}\n"] }]
|
|
125
|
-
}] });
|
|
126
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5mby1jYXJkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvaW5mby1jYXJkL2luZm8tY2FyZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMzRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDcEQsT0FBTyxFQUFvQixrQkFBa0IsRUFBRSxNQUFNLFNBQVMsQ0FBQzs7QUFFL0QsTUFBTSxZQUFZLEdBQUcsQ0FBQyxTQUFTLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBRXJIOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBeUJHO0FBMkNILE1BQU0sT0FBTyxpQkFBaUI7SUExQzlCO1FBMkNFLDhCQUE4QjtRQUNyQixVQUFLLEdBQUcsS0FBSyxDQUE0QixFQUErQixDQUFDLENBQUM7UUFFbkYseUNBQXlDO1FBQ3pDLFdBQU0sR0FBRyxRQUFRLENBQ2YsR0FBRyxFQUFFLENBQ0gsQ0FBQztZQUNDLEdBQUcsa0JBQWtCO1lBQ3JCLEdBQUcsSUFBSSxDQUFDLEtBQUssRUFBRTtTQUNoQixDQUFpRCxDQUNyRCxDQUFDO0tBT0g7SUFMQyxZQUFZO1FBQ1YsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsS0FBSztZQUFFLE9BQU8sMEJBQTBCLENBQUM7UUFDOUMsT0FBTyxZQUFZLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxtQkFBbUIsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztJQUM1RSxDQUFDOytHQWpCVSxpQkFBaUI7bUdBQWpCLGlCQUFpQiw2TUF0Q2xCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVCwycURBcENTLFlBQVksK0JBQUUsT0FBTzs7NEZBdUNwQixpQkFBaUI7a0JBMUM3QixTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxZQUFZLEVBQUUsT0FBTyxDQUFDLFlBQ3RCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1DVCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBDb21wb25lbnQsIGNvbXB1dGVkLCBpbnB1dCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSW9uSWNvbiB9IGZyb20gJ0Bpb25pYy9hbmd1bGFyL3N0YW5kYWxvbmUnO1xuaW1wb3J0IHsgSW5mb0NhcmRNZXRhZGF0YSwgSU5GT19DQVJEX0RFRkFVTFRTIH0gZnJvbSAnLi90eXBlcyc7XG5cbmNvbnN0IElPTklDX0NPTE9SUyA9IFsncHJpbWFyeScsICdzZWNvbmRhcnknLCAndGVydGlhcnknLCAnc3VjY2VzcycsICd3YXJuaW5nJywgJ2RhbmdlcicsICdsaWdodCcsICdtZWRpdW0nLCAnZGFyayddO1xuXG4vKipcbiAqIHZhbC1pbmZvLWNhcmRcbiAqXG4gKiBDYXJkIHdpdGggaWNvbiArIG92ZXJ0aXRsZSArIHRpdGxlICsgc3VidGl0bGUgb24gdGhlIGxlZnQgc2lkZSwgYW5kIGEgbGlzdFxuICogb2Yga2V5LXZhbHVlIHBhaXJzIChsYWJlbDogdmFsdWUpIG9uIHRoZSByaWdodCBzaWRlLiBJbnNwaXJlZCBieSBucG0nc1xuICogXCJQcm92ZW5hbmNlXCIgLyBtZXRhZGF0YSBwYW5lbCBzdHlsZS5cbiAqXG4gKiBUd28tY29sdW1uIGxheW91dCBvbiBkZXNrdG9wLCBzdGFja2VkIHNpbmdsZS1jb2x1bW4gb24gbW9iaWxlLlxuICpcbiAqIFByZXNlbnRhdGlvbmFsIOKAlCBwYXNzIGFscmVhZHktcmVzb2x2ZWQgc3RyaW5ncy5cbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgaHRtbFxuICogPHZhbC1pbmZvLWNhcmRcbiAqICAgW3Byb3BzXT1cIntcbiAqICAgICBpY29uOiAnY3ViZS1vdXRsaW5lJyxcbiAqICAgICB0aXRsZTogJ3ZhbHRlY2gtY29tcG9uZW50cycsXG4gKiAgICAgc3VidGl0bGU6ICd2Mi4wLjk2MicsXG4gKiAgICAga2V5VmFsdWVzOiBbXG4gKiAgICAgICB7IGxhYmVsOiAnTGljZW5zZScsIHZhbHVlOiAnTUlUJyB9LFxuICogICAgICAgeyBsYWJlbDogJ0Rvd25sb2FkcycsIHZhbHVlOiAnMS4yTScgfVxuICogICAgIF1cbiAqICAgfVwiXG4gKiAvPlxuICogYGBgXG4gKi9cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ3ZhbC1pbmZvLWNhcmQnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBJb25JY29uXSxcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2XG4gICAgICBjbGFzcz1cImluZm8tY2FyZFwiXG4gICAgICBbY2xhc3MuaW5mby1jYXJkLS1ib3JkZXJlZF09XCJjb25maWcoKS5ib3JkZXJlZFwiXG4gICAgICBbY2xhc3MuaW5mby1jYXJkLS1zaGFkb3dlZF09XCJjb25maWcoKS5zaGFkb3dlZFwiXG4gICAgICBbc3R5bGUucGFkZGluZ109XCJjb25maWcoKS5wYWRkaW5nXCJcbiAgICAgIFtzdHlsZS5ib3JkZXItcmFkaXVzXT1cImNvbmZpZygpLmJvcmRlclJhZGl1c1wiXG4gICAgPlxuICAgICAgPGRpdiBjbGFzcz1cImluZm8tY2FyZF9fbGVmdFwiPlxuICAgICAgICBAaWYgKGNvbmZpZygpLmljb24pIHtcbiAgICAgICAgICA8aW9uLWljb24gY2xhc3M9XCJpbmZvLWNhcmRfX2ljb25cIiBbbmFtZV09XCJjb25maWcoKS5pY29uXCIgW3N0eWxlLmNvbG9yXT1cImdldEljb25Db2xvcigpXCI+PC9pb24taWNvbj5cbiAgICAgICAgfVxuXG4gICAgICAgIEBpZiAoY29uZmlnKCkub3ZlcnRpdGxlKSB7XG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWNhcmRfX292ZXJ0aXRsZVwiPnt7IGNvbmZpZygpLm92ZXJ0aXRsZSB9fTwvc3Bhbj5cbiAgICAgICAgfVxuXG4gICAgICAgIDxoMyBjbGFzcz1cImluZm8tY2FyZF9fdGl0bGVcIj57eyBjb25maWcoKS50aXRsZSB9fTwvaDM+XG5cbiAgICAgICAgQGlmIChjb25maWcoKS5zdWJ0aXRsZSkge1xuICAgICAgICAgIDxwIGNsYXNzPVwiaW5mby1jYXJkX19zdWJ0aXRsZVwiPnt7IGNvbmZpZygpLnN1YnRpdGxlIH19PC9wPlxuICAgICAgICB9XG4gICAgICA8L2Rpdj5cblxuICAgICAgQGlmIChjb25maWcoKS5rZXlWYWx1ZXM/Lmxlbmd0aCkge1xuICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1jYXJkX19yaWdodFwiPlxuICAgICAgICAgIEBmb3IgKGt2IG9mIGNvbmZpZygpLmtleVZhbHVlczsgdHJhY2sgJGluZGV4KSB7XG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaW5mby1jYXJkX19rdlwiPlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cImluZm8tY2FyZF9fa3YtbGFiZWxcIj57eyBrdi5sYWJlbCB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJpbmZvLWNhcmRfX2t2LXZhbHVlXCI+e3sga3YudmFsdWUgfX08L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICB9XG4gICAgICAgIDwvZGl2PlxuICAgICAgfVxuICAgIDwvZGl2PlxuICBgLFxuICBzdHlsZVVybHM6IFsnLi9pbmZvLWNhcmQuY29tcG9uZW50LnNjc3MnXSxcbn0pXG5leHBvcnQgY2xhc3MgSW5mb0NhcmRDb21wb25lbnQge1xuICAvKiogQ29tcG9uZW50IGNvbmZpZ3VyYXRpb24gKi9cbiAgcmVhZG9ubHkgcHJvcHMgPSBpbnB1dDxQYXJ0aWFsPEluZm9DYXJkTWV0YWRhdGE+Pih7fSBhcyBQYXJ0aWFsPEluZm9DYXJkTWV0YWRhdGE+KTtcblxuICAvKiogTWVyZ2VkIGNvbmZpZ3VyYXRpb24gd2l0aCBkZWZhdWx0cyAqL1xuICBjb25maWcgPSBjb21wdXRlZChcbiAgICAoKSA9PlxuICAgICAgKHtcbiAgICAgICAgLi4uSU5GT19DQVJEX0RFRkFVTFRTLFxuICAgICAgICAuLi50aGlzLnByb3BzKCksXG4gICAgICB9KSBhcyBJbmZvQ2FyZE1ldGFkYXRhICYgdHlwZW9mIElORk9fQ0FSRF9ERUZBVUxUU1xuICApO1xuXG4gIGdldEljb25Db2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbG9yID0gdGhpcy5jb25maWcoKS5pY29uQ29sb3I7XG4gICAgaWYgKCFjb2xvcikgcmV0dXJuIGB2YXIoLS1pb24tY29sb3ItcHJpbWFyeSlgO1xuICAgIHJldHVybiBJT05JQ19DT0xPUlMuaW5jbHVkZXMoY29sb3IpID8gYHZhcigtLWlvbi1jb2xvci0ke2NvbG9yfSlgIDogY29sb3I7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Default values for InfoCardMetadata.
|
|
3
|
-
*/
|
|
4
|
-
export const INFO_CARD_DEFAULTS = {
|
|
5
|
-
iconColor: 'primary',
|
|
6
|
-
bordered: true,
|
|
7
|
-
shadowed: false,
|
|
8
|
-
padding: '1.5rem',
|
|
9
|
-
borderRadius: '16px',
|
|
10
|
-
};
|
|
11
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvbW9sZWN1bGVzL2luZm8tY2FyZC90eXBlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEwQ0E7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FFM0I7SUFDRixTQUFTLEVBQUUsU0FBUztJQUNwQixRQUFRLEVBQUUsSUFBSTtJQUNkLFFBQVEsRUFBRSxLQUFLO0lBQ2YsT0FBTyxFQUFFLFFBQVE7SUFDakIsWUFBWSxFQUFFLE1BQU07Q0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQSBzaW5nbGUga2V5LXZhbHVlIHBhaXIgc2hvd24gaW4gdGhlIHJpZ2h0IGNvbHVtbiBvZiB2YWwtaW5mby1jYXJkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZm9DYXJkS2V5VmFsdWUge1xuICAvKiogTGFiZWwgKHNob3duIGluIG11dGVkIGNvbG9yKSAqL1xuICBsYWJlbDogc3RyaW5nO1xuICAvKiogVmFsdWUgKHNob3duIGluIGJvbGQpICovXG4gIHZhbHVlOiBzdHJpbmc7XG4gIC8qKiBPcHRpb25hbCB0b2tlbiBmb3IgY2xpY2sgaWRlbnRpZmljYXRpb24gKi9cbiAgdG9rZW4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogTWV0YWRhdGEgZm9yIHZhbC1pbmZvLWNhcmQuXG4gKlxuICogQ2FyZCB3aXRoIGljb24gKyBvdmVydGl0bGUgKyB0aXRsZSArIHN1YnRpdGxlIG9uIHRoZSBsZWZ0IHNpZGUsIGFuZCBhIGxpc3RcbiAqIG9mIGtleS12YWx1ZSBwYWlycyBvbiB0aGUgcmlnaHQgc2lkZS4gSW5zcGlyZWQgYnkgbnBtIFwiUHJvdmVuYW5jZVwiIC8gbWV0YWRhdGFcbiAqIHBhbmVscy4gVHdvLWNvbHVtbiBsYXlvdXQgb24gZGVza3RvcCwgc3RhY2tlZCBvbiBtb2JpbGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5mb0NhcmRNZXRhZGF0YSB7XG4gIC8qKiBpb24taWNvbiBuYW1lICovXG4gIGljb24/OiBzdHJpbmc7XG4gIC8qKiBJY29uIGNvbG9yIChJb25pYyBjb2xvciBuYW1lIG9yIENTUyBjb2xvcikuIERlZmF1bHQ6ICdwcmltYXJ5JyAqL1xuICBpY29uQ29sb3I/OiBzdHJpbmc7XG4gIC8qKiBTbWFsbCBsYWJlbCBhYm92ZSB0aGUgdGl0bGUgKi9cbiAgb3ZlcnRpdGxlPzogc3RyaW5nO1xuICAvKiogTWFpbiB0aXRsZSAqL1xuICB0aXRsZTogc3RyaW5nO1xuICAvKiogU3VidGl0bGUgYmVsb3cgdGhlIHRpdGxlICovXG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuICAvKiogS2V5LXZhbHVlIHBhaXJzIHNob3duIGluIHRoZSByaWdodCBjb2x1bW4gKi9cbiAga2V5VmFsdWVzPzogSW5mb0NhcmRLZXlWYWx1ZVtdO1xuICAvKiogU2hvdyBib3JkZXIuIERlZmF1bHQ6IHRydWUgKi9cbiAgYm9yZGVyZWQ/OiBib29sZWFuO1xuICAvKiogU2hvdyBzaGFkb3cuIERlZmF1bHQ6IGZhbHNlICovXG4gIHNoYWRvd2VkPzogYm9vbGVhbjtcbiAgLyoqIENhcmQgcGFkZGluZy4gRGVmYXVsdDogJzEuNXJlbScgKi9cbiAgcGFkZGluZz86IHN0cmluZztcbiAgLyoqIENhcmQgYm9yZGVyIHJhZGl1cy4gRGVmYXVsdDogJzE2cHgnICovXG4gIGJvcmRlclJhZGl1cz86IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZhdWx0IHZhbHVlcyBmb3IgSW5mb0NhcmRNZXRhZGF0YS5cbiAqL1xuZXhwb3J0IGNvbnN0IElORk9fQ0FSRF9ERUZBVUxUUzogUmVxdWlyZWQ8XG4gIFBpY2s8SW5mb0NhcmRNZXRhZGF0YSwgJ2ljb25Db2xvcicgfCAnYm9yZGVyZWQnIHwgJ3NoYWRvd2VkJyB8ICdwYWRkaW5nJyB8ICdib3JkZXJSYWRpdXMnPlxuPiA9IHtcbiAgaWNvbkNvbG9yOiAncHJpbWFyeScsXG4gIGJvcmRlcmVkOiB0cnVlLFxuICBzaGFkb3dlZDogZmFsc2UsXG4gIHBhZGRpbmc6ICcxLjVyZW0nLFxuICBib3JkZXJSYWRpdXM6ICcxNnB4Jyxcbn07XG4iXX0=
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Component, Input } from '@angular/core';
|
|
2
|
-
import { ReactiveFormsModule } from '@angular/forms';
|
|
3
|
-
import { IonInput } from '@ionic/angular/standalone';
|
|
4
|
-
import { applyDefaultValueToControl } from '../../../shared/utils/form-defaults';
|
|
5
|
-
import * as i0 from "@angular/core";
|
|
6
|
-
import * as i1 from "@angular/forms";
|
|
7
|
-
/**
|
|
8
|
-
* val-number-input
|
|
9
|
-
*
|
|
10
|
-
* A number input field integrated with Angular forms.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* <val-number-input [props]="{ control: myControl, placeholder: 'Enter a number' }"></val-number-input>
|
|
14
|
-
*
|
|
15
|
-
* @input props: InputMetadata - Configuration for the input (form control, placeholder, etc.)
|
|
16
|
-
*/
|
|
17
|
-
export class NumberInputComponent {
|
|
18
|
-
constructor() { }
|
|
19
|
-
ngOnInit() {
|
|
20
|
-
// Apply default values on initialization
|
|
21
|
-
if (this.props?.withDefault || this.props?.value) {
|
|
22
|
-
applyDefaultValueToControl(this.props);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumberInputComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
26
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.14", type: NumberInputComponent, isStandalone: true, selector: "val-number-input", inputs: { props: "props" }, ngImport: i0, template: ` <ion-input [formControl]="props.control" type="number" [placeholder]="props.placeholder"></ion-input> `, isInline: true, styles: [""], dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: IonInput, selector: "ion-input", inputs: ["accept", "autocapitalize", "autocomplete", "autocorrect", "autofocus", "clearInput", "clearOnEdit", "color", "counter", "counterFormatter", "debounce", "disabled", "enterkeyhint", "errorText", "fill", "helperText", "inputmode", "label", "labelPlacement", "max", "maxlength", "min", "minlength", "mode", "multiple", "name", "pattern", "placeholder", "readonly", "required", "shape", "size", "spellcheck", "step", "type", "value"] }] }); }
|
|
27
|
-
}
|
|
28
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: NumberInputComponent, decorators: [{
|
|
29
|
-
type: Component,
|
|
30
|
-
args: [{ selector: 'val-number-input', standalone: true, imports: [ReactiveFormsModule, IonInput], template: ` <ion-input [formControl]="props.control" type="number" [placeholder]="props.placeholder"></ion-input> ` }]
|
|
31
|
-
}], ctorParameters: () => [], propDecorators: { props: [{
|
|
32
|
-
type: Input
|
|
33
|
-
}] } });
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVyLWlucHV0LmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9tb2xlY3VsZXMvbnVtYmVyLWlucHV0L251bWJlci1pbnB1dC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQVUsTUFBTSxlQUFlLENBQUM7QUFDekQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDckQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQ3JELE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDOzs7QUFVakY7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxPQUFPLG9CQUFvQjtJQVMvQixnQkFBZSxDQUFDO0lBRWhCLFFBQVE7UUFDTix5Q0FBeUM7UUFDekMsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLFdBQVcsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRSxDQUFDO1lBQ2pELDBCQUEwQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN6QyxDQUFDO0lBQ0gsQ0FBQzsrR0FoQlUsb0JBQW9CO21HQUFwQixvQkFBb0Isd0dBYnJCLHlHQUF5Ryx5RUFEekcsbUJBQW1CLDBUQUFFLFFBQVE7OzRGQWM1QixvQkFBb0I7a0JBakJoQyxTQUFTOytCQUNFLGtCQUFrQixjQUNoQixJQUFJLFdBQ1AsQ0FBQyxtQkFBbUIsRUFBRSxRQUFRLENBQUMsWUFDOUIseUdBQXlHO3dEQW9CMUcsS0FBSztzQkFBYixLQUFLIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBJbnB1dCwgT25Jbml0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgSW9uSW5wdXQgfSBmcm9tICdAaW9uaWMvYW5ndWxhci9zdGFuZGFsb25lJztcbmltcG9ydCB7IGFwcGx5RGVmYXVsdFZhbHVlVG9Db250cm9sIH0gZnJvbSAnLi4vLi4vLi4vc2hhcmVkL3V0aWxzL2Zvcm0tZGVmYXVsdHMnO1xuaW1wb3J0IHsgSW5wdXRNZXRhZGF0YSB9IGZyb20gJy4uLy4uL3R5cGVzJztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAndmFsLW51bWJlci1pbnB1dCcsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtSZWFjdGl2ZUZvcm1zTW9kdWxlLCBJb25JbnB1dF0sXG4gIHRlbXBsYXRlOiBgIDxpb24taW5wdXQgW2Zvcm1Db250cm9sXT1cInByb3BzLmNvbnRyb2xcIiB0eXBlPVwibnVtYmVyXCIgW3BsYWNlaG9sZGVyXT1cInByb3BzLnBsYWNlaG9sZGVyXCI+PC9pb24taW5wdXQ+IGAsXG4gIHN0eWxlVXJsczogWycuL251bWJlci1pbnB1dC5jb21wb25lbnQuc2NzcyddLFxufSlcbi8qKlxuICogdmFsLW51bWJlci1pbnB1dFxuICpcbiAqIEEgbnVtYmVyIGlucHV0IGZpZWxkIGludGVncmF0ZWQgd2l0aCBBbmd1bGFyIGZvcm1zLlxuICpcbiAqIEBleGFtcGxlXG4gKiA8dmFsLW51bWJlci1pbnB1dCBbcHJvcHNdPVwieyBjb250cm9sOiBteUNvbnRyb2wsIHBsYWNlaG9sZGVyOiAnRW50ZXIgYSBudW1iZXInIH1cIj48L3ZhbC1udW1iZXItaW5wdXQ+XG4gKlxuICogQGlucHV0IHByb3BzOiBJbnB1dE1ldGFkYXRhIC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGlucHV0IChmb3JtIGNvbnRyb2wsIHBsYWNlaG9sZGVyLCBldGMuKVxuICovXG5leHBvcnQgY2xhc3MgTnVtYmVySW5wdXRDb21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQge1xuICAvKipcbiAgICogSW5wdXQgY29uZmlndXJhdGlvbiBvYmplY3QuXG4gICAqIEB0eXBlIHtJbnB1dE1ldGFkYXRhfVxuICAgKiBAcHJvcGVydHkgY29udHJvbCAtIFRoZSBBbmd1bGFyIEZvcm1Db250cm9sIGZvciB0aGUgaW5wdXQuXG4gICAqIEBwcm9wZXJ0eSBwbGFjZWhvbGRlciAtIFRoZSBwbGFjZWhvbGRlciB0ZXh0LlxuICAgKi9cbiAgQElucHV0KCkgcHJvcHM6IElucHV0TWV0YWRhdGE7XG5cbiAgY29uc3RydWN0b3IoKSB7fVxuXG4gIG5nT25Jbml0KCkge1xuICAgIC8vIEFwcGx5IGRlZmF1bHQgdmFsdWVzIG9uIGluaXRpYWxpemF0aW9uXG4gICAgaWYgKHRoaXMucHJvcHM/LndpdGhEZWZhdWx0IHx8IHRoaXMucHJvcHM/LnZhbHVlKSB7XG4gICAgICBhcHBseURlZmF1bHRWYWx1ZVRvQ29udHJvbCh0aGlzLnByb3BzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { ContentCardMetadata } from './types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* val-content-card
|
|
5
|
-
*
|
|
6
|
-
* Generic container card with configurable padding, border radius, background
|
|
7
|
-
* color and shadow. Accepts arbitrary content via ng-content. Use it to wrap
|
|
8
|
-
* val-article, stats, or any other content that needs a card shell.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```html
|
|
12
|
-
* <val-content-card [props]="{ title: 'Summary', shadowed: true }">
|
|
13
|
-
* <p>Any inner content here.</p>
|
|
14
|
-
* </val-content-card>
|
|
15
|
-
* ```
|
|
16
|
-
*/
|
|
17
|
-
export declare class ContentCardComponent {
|
|
18
|
-
/** Component configuration */
|
|
19
|
-
readonly props: import("@angular/core").InputSignal<Partial<ContentCardMetadata>>;
|
|
20
|
-
/** Merged configuration with defaults */
|
|
21
|
-
config: import("@angular/core").Signal<ContentCardMetadata & Required<Pick<ContentCardMetadata, "borderRadius" | "bordered" | "shadowed" | "align" | "padding">>>;
|
|
22
|
-
resolvedBg: import("@angular/core").Signal<string>;
|
|
23
|
-
resolvedColor: import("@angular/core").Signal<string>;
|
|
24
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<ContentCardComponent, never>;
|
|
25
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ContentCardComponent, "val-content-card", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
|
|
26
|
-
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Metadata for val-content-card.
|
|
3
|
-
*
|
|
4
|
-
* Generic container card with configurable padding, border radius, background
|
|
5
|
-
* color and shadow. Supports ng-content for arbitrary inner content.
|
|
6
|
-
*/
|
|
7
|
-
export interface ContentCardMetadata {
|
|
8
|
-
/** Optional card title rendered above the content */
|
|
9
|
-
title?: string;
|
|
10
|
-
/** Optional description rendered below the title */
|
|
11
|
-
description?: string;
|
|
12
|
-
/** Background color — Ionic color name (primary…dark) or any CSS color */
|
|
13
|
-
backgroundColor?: string;
|
|
14
|
-
/** Text color — Ionic color name or any CSS color */
|
|
15
|
-
color?: string;
|
|
16
|
-
/** Card inner padding. Default: '1.5rem' */
|
|
17
|
-
padding?: string;
|
|
18
|
-
/** Card border radius. Default: '20px' */
|
|
19
|
-
borderRadius?: string;
|
|
20
|
-
/** Show border. Default: false */
|
|
21
|
-
bordered?: boolean;
|
|
22
|
-
/** Show box shadow. Default: true */
|
|
23
|
-
shadowed?: boolean;
|
|
24
|
-
/** Text alignment. Default: 'start' */
|
|
25
|
-
align?: 'start' | 'center';
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Default values for ContentCardMetadata.
|
|
29
|
-
*/
|
|
30
|
-
export declare const CONTENT_CARD_DEFAULTS: Required<Pick<ContentCardMetadata, 'padding' | 'borderRadius' | 'bordered' | 'shadowed' | 'align'>>;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { OnChanges, OnInit, SimpleChanges } from '@angular/core';
|
|
2
|
-
import { InputMetadata } from '../../types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class EmailInputComponent implements OnInit, OnChanges {
|
|
5
|
-
private presets;
|
|
6
|
-
/**
|
|
7
|
-
* Preset name to apply. Presets define reusable input configurations
|
|
8
|
-
* that can be registered at app level via provideValtechPresets().
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* <val-email-input preset="form-field" [props]="{ control: ctrl }"></val-email-input>
|
|
12
|
-
*/
|
|
13
|
-
preset?: string;
|
|
14
|
-
/**
|
|
15
|
-
* Input configuration object. Values here override preset values.
|
|
16
|
-
* @type {InputMetadata}
|
|
17
|
-
* @property control - The Angular FormControl for the input.
|
|
18
|
-
* @property placeholder - The placeholder text.
|
|
19
|
-
*/
|
|
20
|
-
props: Partial<InputMetadata>;
|
|
21
|
-
/**
|
|
22
|
-
* Resolved props after merging preset + explicit props.
|
|
23
|
-
*/
|
|
24
|
-
resolvedProps: InputMetadata;
|
|
25
|
-
ngOnInit(): void;
|
|
26
|
-
ngOnChanges(changes: SimpleChanges): void;
|
|
27
|
-
/**
|
|
28
|
-
* Merge preset configuration with explicit props.
|
|
29
|
-
* Explicit props take precedence over preset values.
|
|
30
|
-
*/
|
|
31
|
-
private resolveProps;
|
|
32
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<EmailInputComponent, never>;
|
|
33
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<EmailInputComponent, "val-email-input", never, { "preset": { "alias": "preset"; "required": false; }; "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
34
|
-
}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { OnInit } from '@angular/core';
|
|
2
|
-
import { InputMetadata } from '../../types';
|
|
3
|
-
import * as i0 from "@angular/core";
|
|
4
|
-
export declare class HourInputComponent implements OnInit {
|
|
5
|
-
/**
|
|
6
|
-
* Input configuration object.
|
|
7
|
-
* @type {InputMetadata}
|
|
8
|
-
* @property control - The Angular FormControl for the time input.
|
|
9
|
-
*/
|
|
10
|
-
props: InputMetadata;
|
|
11
|
-
constructor();
|
|
12
|
-
ngOnInit(): void;
|
|
13
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<HourInputComponent, never>;
|
|
14
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<HourInputComponent, "val-hour-input", never, { "props": { "alias": "props"; "required": false; }; }, {}, never, never, true, never>;
|
|
15
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { InfoCardMetadata } from './types';
|
|
2
|
-
import * as i0 from "@angular/core";
|
|
3
|
-
/**
|
|
4
|
-
* val-info-card
|
|
5
|
-
*
|
|
6
|
-
* Card with icon + overtitle + title + subtitle on the left side, and a list
|
|
7
|
-
* of key-value pairs (label: value) on the right side. Inspired by npm's
|
|
8
|
-
* "Provenance" / metadata panel style.
|
|
9
|
-
*
|
|
10
|
-
* Two-column layout on desktop, stacked single-column on mobile.
|
|
11
|
-
*
|
|
12
|
-
* Presentational — pass already-resolved strings.
|
|
13
|
-
*
|
|
14
|
-
* @example
|
|
15
|
-
* ```html
|
|
16
|
-
* <val-info-card
|
|
17
|
-
* [props]="{
|
|
18
|
-
* icon: 'cube-outline',
|
|
19
|
-
* title: 'valtech-components',
|
|
20
|
-
* subtitle: 'v2.0.962',
|
|
21
|
-
* keyValues: [
|
|
22
|
-
* { label: 'License', value: 'MIT' },
|
|
23
|
-
* { label: 'Downloads', value: '1.2M' }
|
|
24
|
-
* ]
|
|
25
|
-
* }"
|
|
26
|
-
* />
|
|
27
|
-
* ```
|
|
28
|
-
*/
|
|
29
|
-
export declare class InfoCardComponent {
|
|
30
|
-
/** Component configuration */
|
|
31
|
-
readonly props: import("@angular/core").InputSignal<Partial<InfoCardMetadata>>;
|
|
32
|
-
/** Merged configuration with defaults */
|
|
33
|
-
config: import("@angular/core").Signal<InfoCardMetadata & Required<Pick<InfoCardMetadata, "borderRadius" | "bordered" | "iconColor" | "shadowed" | "padding">>>;
|
|
34
|
-
getIconColor(): string;
|
|
35
|
-
static ɵfac: i0.ɵɵFactoryDeclaration<InfoCardComponent, never>;
|
|
36
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<InfoCardComponent, "val-info-card", never, { "props": { "alias": "props"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
|
|
37
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* A single key-value pair shown in the right column of val-info-card.
|
|
3
|
-
*/
|
|
4
|
-
export interface InfoCardKeyValue {
|
|
5
|
-
/** Label (shown in muted color) */
|
|
6
|
-
label: string;
|
|
7
|
-
/** Value (shown in bold) */
|
|
8
|
-
value: string;
|
|
9
|
-
/** Optional token for click identification */
|
|
10
|
-
token?: string;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
13
|
-
* Metadata for val-info-card.
|
|
14
|
-
*
|
|
15
|
-
* Card with icon + overtitle + title + subtitle on the left side, and a list
|
|
16
|
-
* of key-value pairs on the right side. Inspired by npm "Provenance" / metadata
|
|
17
|
-
* panels. Two-column layout on desktop, stacked on mobile.
|
|
18
|
-
*/
|
|
19
|
-
export interface InfoCardMetadata {
|
|
20
|
-
/** ion-icon name */
|
|
21
|
-
icon?: string;
|
|
22
|
-
/** Icon color (Ionic color name or CSS color). Default: 'primary' */
|
|
23
|
-
iconColor?: string;
|
|
24
|
-
/** Small label above the title */
|
|
25
|
-
overtitle?: string;
|
|
26
|
-
/** Main title */
|
|
27
|
-
title: string;
|
|
28
|
-
/** Subtitle below the title */
|
|
29
|
-
subtitle?: string;
|
|
30
|
-
/** Key-value pairs shown in the right column */
|
|
31
|
-
keyValues?: InfoCardKeyValue[];
|
|
32
|
-
/** Show border. Default: true */
|
|
33
|
-
bordered?: boolean;
|
|
34
|
-
/** Show shadow. Default: false */
|
|
35
|
-
shadowed?: boolean;
|
|
36
|
-
/** Card padding. Default: '1.5rem' */
|
|
37
|
-
padding?: string;
|
|
38
|
-
/** Card border radius. Default: '16px' */
|
|
39
|
-
borderRadius?: string;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Default values for InfoCardMetadata.
|
|
43
|
-
*/
|
|
44
|
-
export declare const INFO_CARD_DEFAULTS: Required<Pick<InfoCardMetadata, 'iconColor' | 'bordered' | 'shadowed' | 'padding' | 'borderRadius'>>;
|