valtech-components 2.0.451 → 2.0.453
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/organisms/tabbed-content/tabbed-content.component.mjs +170 -0
- package/esm2022/lib/components/organisms/tabbed-content/types.mjs +2 -0
- package/esm2022/lib/components/templates/page-content/page-content.component.mjs +11 -11
- package/esm2022/lib/components/templates/page-template/page-template.component.mjs +3 -5
- package/esm2022/lib/services/auth/auth-state.service.mjs +173 -0
- package/esm2022/lib/services/auth/auth.service.mjs +454 -0
- package/esm2022/lib/services/auth/config.mjs +76 -0
- package/esm2022/lib/services/auth/guards.mjs +194 -0
- package/esm2022/lib/services/auth/index.mjs +70 -0
- package/esm2022/lib/services/auth/interceptor.mjs +98 -0
- package/esm2022/lib/services/auth/storage.service.mjs +141 -0
- package/esm2022/lib/services/auth/sync.service.mjs +149 -0
- package/esm2022/lib/services/auth/token.service.mjs +113 -0
- package/esm2022/lib/services/auth/types.mjs +29 -0
- package/esm2022/lib/services/firebase/config.mjs +108 -0
- package/esm2022/lib/services/firebase/firebase.service.mjs +288 -0
- package/esm2022/lib/services/firebase/firestore-collection.mjs +254 -0
- package/esm2022/lib/services/firebase/firestore.service.mjs +509 -0
- package/esm2022/lib/services/firebase/index.mjs +49 -0
- package/esm2022/lib/services/firebase/messaging.service.mjs +512 -0
- package/esm2022/lib/services/firebase/shared-config.mjs +138 -0
- package/esm2022/lib/services/firebase/storage.service.mjs +422 -0
- package/esm2022/lib/services/firebase/types.mjs +8 -0
- package/esm2022/lib/services/firebase/utils/path-builder.mjs +195 -0
- package/esm2022/lib/services/firebase/utils/query-builder.mjs +302 -0
- package/esm2022/lib/services/link-processor.service.mjs +61 -43
- package/esm2022/lib/services/modal/modal.service.mjs +8 -9
- package/esm2022/lib/services/navigation.service.mjs +11 -11
- package/esm2022/public-api.mjs +23 -4
- package/fesm2022/valtech-components.mjs +4599 -102
- package/fesm2022/valtech-components.mjs.map +1 -1
- package/lib/components/organisms/tabbed-content/tabbed-content.component.d.ts +65 -0
- package/lib/components/organisms/tabbed-content/types.d.ts +53 -0
- package/lib/components/templates/page-content/page-content.component.d.ts +3 -0
- package/lib/services/auth/auth-state.service.d.ts +85 -0
- package/lib/services/auth/auth.service.d.ts +146 -0
- package/lib/services/auth/config.d.ts +38 -0
- package/lib/services/auth/guards.d.ts +123 -0
- package/lib/services/auth/index.d.ts +63 -0
- package/lib/services/auth/interceptor.d.ts +22 -0
- package/lib/services/auth/storage.service.d.ts +48 -0
- package/lib/services/auth/sync.service.d.ts +49 -0
- package/lib/services/auth/token.service.d.ts +51 -0
- package/lib/services/auth/types.d.ts +315 -0
- package/lib/services/firebase/config.d.ts +49 -0
- package/lib/services/firebase/firebase.service.d.ts +140 -0
- package/lib/services/firebase/firestore-collection.d.ts +175 -0
- package/lib/services/firebase/firestore.service.d.ts +304 -0
- package/lib/services/firebase/index.d.ts +39 -0
- package/lib/services/firebase/messaging.service.d.ts +263 -0
- package/lib/services/firebase/shared-config.d.ts +126 -0
- package/lib/services/firebase/storage.service.d.ts +206 -0
- package/lib/services/firebase/types.d.ts +281 -0
- package/lib/services/firebase/utils/path-builder.d.ts +132 -0
- package/lib/services/firebase/utils/query-builder.d.ts +210 -0
- package/lib/services/modal/modal.service.d.ts +2 -0
- package/lib/services/navigation.service.d.ts +4 -4
- package/package.json +3 -1
- package/public-api.d.ts +9 -0
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs +0 -136
- package/fesm2022/valtech-components-simple-modal-content.component-DQhEgUmS.mjs.map +0 -1
package/public-api.d.ts
CHANGED
|
@@ -44,13 +44,16 @@ export * from './lib/components/molecules/card/card.component';
|
|
|
44
44
|
export * from './lib/components/molecules/card/types';
|
|
45
45
|
export * from './lib/components/molecules/check-input/check-input.component';
|
|
46
46
|
export * from './lib/components/molecules/comment-input/comment-input.component';
|
|
47
|
+
export * from './lib/components/molecules/comment-input/types';
|
|
47
48
|
export * from './lib/components/molecules/content-loader/content-loader.component';
|
|
48
49
|
export * from './lib/components/molecules/content-loader/types';
|
|
49
50
|
export * from './lib/components/molecules/date-input/date-input.component';
|
|
51
|
+
export * from './lib/components/molecules/date-input/types';
|
|
50
52
|
export * from './lib/components/molecules/email-input/email-input.component';
|
|
51
53
|
export * from './lib/components/molecules/expandable-text/expandable-text.component';
|
|
52
54
|
export * from './lib/components/molecules/expandable-text/types';
|
|
53
55
|
export * from './lib/components/molecules/file-input/file-input.component';
|
|
56
|
+
export * from './lib/components/molecules/file-input/types';
|
|
54
57
|
export * from './lib/components/molecules/hint/hint.component';
|
|
55
58
|
export * from './lib/components/molecules/hour-input/hour-input.component';
|
|
56
59
|
export * from './lib/components/molecules/language-selector/language-selector.component';
|
|
@@ -65,8 +68,10 @@ export * from './lib/components/molecules/notes-box/notes-box.component';
|
|
|
65
68
|
export * from './lib/components/molecules/notes-box/types';
|
|
66
69
|
export * from './lib/components/molecules/number-input/number-input.component';
|
|
67
70
|
export * from './lib/components/molecules/number-from-to/number-from-to.component';
|
|
71
|
+
export * from './lib/components/molecules/number-from-to/types';
|
|
68
72
|
export * from './lib/components/molecules/password-input/password-input.component';
|
|
69
73
|
export * from './lib/components/molecules/pin-input/pin-input.component';
|
|
74
|
+
export * from './lib/components/molecules/pin-input/types';
|
|
70
75
|
export * from './lib/components/molecules/popover-selector/popover-selector.component';
|
|
71
76
|
export * from './lib/components/molecules/popover-selector/types';
|
|
72
77
|
export * from './lib/components/molecules/progress-status/progress-status.component';
|
|
@@ -185,6 +190,8 @@ export * from './lib/components/organisms/company-footer/company-footer.componen
|
|
|
185
190
|
export * from './lib/components/organisms/company-footer/types';
|
|
186
191
|
export * from './lib/components/organisms/menu/menu.component';
|
|
187
192
|
export * from './lib/components/organisms/menu/types';
|
|
193
|
+
export * from './lib/components/organisms/tabbed-content/tabbed-content.component';
|
|
194
|
+
export * from './lib/components/organisms/tabbed-content/types';
|
|
188
195
|
export * from './lib/components/templates/layout/layout.component';
|
|
189
196
|
export * from './lib/components/templates/simple/simple.component';
|
|
190
197
|
export * from './lib/components/templates/simple/types';
|
|
@@ -210,6 +217,8 @@ export * from './lib/services/qr-generator/qr-generator.service';
|
|
|
210
217
|
export * from './lib/services/qr-generator/types';
|
|
211
218
|
export * from './lib/services/modal/modal.service';
|
|
212
219
|
export * from './lib/services/modal/types';
|
|
220
|
+
export * from './lib/services/firebase';
|
|
221
|
+
export * from './lib/services/auth';
|
|
213
222
|
export * from './lib/components/types';
|
|
214
223
|
export * from './lib/shared/pipes/process-links.pipe';
|
|
215
224
|
export * from './lib/shared/utils/dom';
|
|
@@ -1,136 +0,0 @@
|
|
|
1
|
-
import { CommonModule } from '@angular/common';
|
|
2
|
-
import * as i0 from '@angular/core';
|
|
3
|
-
import { Component, Input } from '@angular/core';
|
|
4
|
-
import { IonHeader, IonToolbar, IonTitle, IonButtons, IonButton, IonIcon, IonContent, IonFooter, IonSpinner } from '@ionic/angular/standalone';
|
|
5
|
-
import { addIcons } from 'ionicons';
|
|
6
|
-
import { closeOutline } from 'ionicons/icons';
|
|
7
|
-
|
|
8
|
-
addIcons({ closeOutline });
|
|
9
|
-
/**
|
|
10
|
-
* Internal component for simple content modals.
|
|
11
|
-
* Used by ModalService.openSimple()
|
|
12
|
-
*/
|
|
13
|
-
class SimpleModalContentComponent {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.title = '';
|
|
16
|
-
this.content = '';
|
|
17
|
-
this.buttons = [];
|
|
18
|
-
this.showCloseButton = true;
|
|
19
|
-
}
|
|
20
|
-
async onButtonClick(button) {
|
|
21
|
-
if (button.handler) {
|
|
22
|
-
const result = await button.handler();
|
|
23
|
-
// If handler returns false, don't dismiss
|
|
24
|
-
if (result === false) {
|
|
25
|
-
return;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
this._modalRef?.dismiss(undefined, button.role || 'confirm');
|
|
29
|
-
}
|
|
30
|
-
onDismiss(role) {
|
|
31
|
-
this._modalRef?.dismiss(undefined, role);
|
|
32
|
-
}
|
|
33
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleModalContentComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
|
|
34
|
-
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.14", type: SimpleModalContentComponent, isStandalone: true, selector: "val-simple-modal-content", inputs: { title: "title", content: "content", buttons: "buttons", showCloseButton: "showCloseButton", _modalRef: "_modalRef" }, ngImport: i0, template: `
|
|
35
|
-
<ion-header>
|
|
36
|
-
<ion-toolbar>
|
|
37
|
-
<ion-title>{{ title }}</ion-title>
|
|
38
|
-
@if (showCloseButton) {
|
|
39
|
-
<ion-buttons slot="end">
|
|
40
|
-
<ion-button (click)="onDismiss('close')">
|
|
41
|
-
<ion-icon slot="icon-only" name="close-outline"></ion-icon>
|
|
42
|
-
</ion-button>
|
|
43
|
-
</ion-buttons>
|
|
44
|
-
}
|
|
45
|
-
</ion-toolbar>
|
|
46
|
-
</ion-header>
|
|
47
|
-
|
|
48
|
-
<ion-content class="ion-padding">
|
|
49
|
-
<div [innerHTML]="content"></div>
|
|
50
|
-
</ion-content>
|
|
51
|
-
|
|
52
|
-
@if (buttons && buttons.length > 0) {
|
|
53
|
-
<ion-footer>
|
|
54
|
-
<ion-toolbar>
|
|
55
|
-
<div class="button-container">
|
|
56
|
-
@for (button of buttons; track button.text) {
|
|
57
|
-
<ion-button
|
|
58
|
-
[color]="button.color || 'medium'"
|
|
59
|
-
[fill]="button.fill || 'solid'"
|
|
60
|
-
[size]="button.size || 'default'"
|
|
61
|
-
[disabled]="button.disabled || button.loading"
|
|
62
|
-
[class]="button.cssClass"
|
|
63
|
-
(click)="onButtonClick(button)"
|
|
64
|
-
>
|
|
65
|
-
@if (button.loading) {
|
|
66
|
-
<ion-spinner name="crescent"></ion-spinner>
|
|
67
|
-
} @else {
|
|
68
|
-
{{ button.text }}
|
|
69
|
-
}
|
|
70
|
-
</ion-button>
|
|
71
|
-
}
|
|
72
|
-
</div>
|
|
73
|
-
</ion-toolbar>
|
|
74
|
-
</ion-footer>
|
|
75
|
-
}
|
|
76
|
-
`, isInline: true, styles: [".button-container{display:flex;justify-content:flex-end;gap:8px;padding:8px 0}ion-content{--padding-top: 16px;--padding-bottom: 16px}ion-footer ion-toolbar{--padding-start: 16px;--padding-end: 16px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonButtons, selector: "ion-buttons", inputs: ["collapse"] }, { kind: "component", type: IonButton, selector: "ion-button", inputs: ["buttonType", "color", "disabled", "download", "expand", "fill", "form", "href", "mode", "rel", "routerAnimation", "routerDirection", "shape", "size", "strong", "target", "type"] }, { kind: "component", type: IonIcon, selector: "ion-icon", inputs: ["color", "flipRtl", "icon", "ios", "lazy", "md", "mode", "name", "sanitize", "size", "src"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "component", type: IonFooter, selector: "ion-footer", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonSpinner, selector: "ion-spinner", inputs: ["color", "duration", "name", "paused"] }] }); }
|
|
77
|
-
}
|
|
78
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImport: i0, type: SimpleModalContentComponent, decorators: [{
|
|
79
|
-
type: Component,
|
|
80
|
-
args: [{ selector: 'val-simple-modal-content', standalone: true, imports: [CommonModule, IonHeader, IonToolbar, IonTitle, IonButtons, IonButton, IonIcon, IonContent, IonFooter, IonSpinner], template: `
|
|
81
|
-
<ion-header>
|
|
82
|
-
<ion-toolbar>
|
|
83
|
-
<ion-title>{{ title }}</ion-title>
|
|
84
|
-
@if (showCloseButton) {
|
|
85
|
-
<ion-buttons slot="end">
|
|
86
|
-
<ion-button (click)="onDismiss('close')">
|
|
87
|
-
<ion-icon slot="icon-only" name="close-outline"></ion-icon>
|
|
88
|
-
</ion-button>
|
|
89
|
-
</ion-buttons>
|
|
90
|
-
}
|
|
91
|
-
</ion-toolbar>
|
|
92
|
-
</ion-header>
|
|
93
|
-
|
|
94
|
-
<ion-content class="ion-padding">
|
|
95
|
-
<div [innerHTML]="content"></div>
|
|
96
|
-
</ion-content>
|
|
97
|
-
|
|
98
|
-
@if (buttons && buttons.length > 0) {
|
|
99
|
-
<ion-footer>
|
|
100
|
-
<ion-toolbar>
|
|
101
|
-
<div class="button-container">
|
|
102
|
-
@for (button of buttons; track button.text) {
|
|
103
|
-
<ion-button
|
|
104
|
-
[color]="button.color || 'medium'"
|
|
105
|
-
[fill]="button.fill || 'solid'"
|
|
106
|
-
[size]="button.size || 'default'"
|
|
107
|
-
[disabled]="button.disabled || button.loading"
|
|
108
|
-
[class]="button.cssClass"
|
|
109
|
-
(click)="onButtonClick(button)"
|
|
110
|
-
>
|
|
111
|
-
@if (button.loading) {
|
|
112
|
-
<ion-spinner name="crescent"></ion-spinner>
|
|
113
|
-
} @else {
|
|
114
|
-
{{ button.text }}
|
|
115
|
-
}
|
|
116
|
-
</ion-button>
|
|
117
|
-
}
|
|
118
|
-
</div>
|
|
119
|
-
</ion-toolbar>
|
|
120
|
-
</ion-footer>
|
|
121
|
-
}
|
|
122
|
-
`, styles: [".button-container{display:flex;justify-content:flex-end;gap:8px;padding:8px 0}ion-content{--padding-top: 16px;--padding-bottom: 16px}ion-footer ion-toolbar{--padding-start: 16px;--padding-end: 16px}\n"] }]
|
|
123
|
-
}], propDecorators: { title: [{
|
|
124
|
-
type: Input
|
|
125
|
-
}], content: [{
|
|
126
|
-
type: Input
|
|
127
|
-
}], buttons: [{
|
|
128
|
-
type: Input
|
|
129
|
-
}], showCloseButton: [{
|
|
130
|
-
type: Input
|
|
131
|
-
}], _modalRef: [{
|
|
132
|
-
type: Input
|
|
133
|
-
}] } });
|
|
134
|
-
|
|
135
|
-
export { SimpleModalContentComponent };
|
|
136
|
-
//# sourceMappingURL=valtech-components-simple-modal-content.component-DQhEgUmS.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"valtech-components-simple-modal-content.component-DQhEgUmS.mjs","sources":["../../../src/lib/services/modal/simple-modal-content.component.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { Component, Input } from '@angular/core';\nimport { IonHeader, IonToolbar, IonTitle, IonButtons, IonButton, IonIcon, IonContent, IonFooter, IonSpinner } from '@ionic/angular/standalone';\nimport { addIcons } from 'ionicons';\nimport { closeOutline } from 'ionicons/icons';\nimport { ModalButton } from './types';\n\naddIcons({ closeOutline });\n\n/**\n * Internal component for simple content modals.\n * Used by ModalService.openSimple()\n */\n@Component({\n selector: 'val-simple-modal-content',\n standalone: true,\n imports: [CommonModule, IonHeader, IonToolbar, IonTitle, IonButtons, IonButton, IonIcon, IonContent, IonFooter, IonSpinner],\n template: `\n <ion-header>\n <ion-toolbar>\n <ion-title>{{ title }}</ion-title>\n @if (showCloseButton) {\n <ion-buttons slot=\"end\">\n <ion-button (click)=\"onDismiss('close')\">\n <ion-icon slot=\"icon-only\" name=\"close-outline\"></ion-icon>\n </ion-button>\n </ion-buttons>\n }\n </ion-toolbar>\n </ion-header>\n\n <ion-content class=\"ion-padding\">\n <div [innerHTML]=\"content\"></div>\n </ion-content>\n\n @if (buttons && buttons.length > 0) {\n <ion-footer>\n <ion-toolbar>\n <div class=\"button-container\">\n @for (button of buttons; track button.text) {\n <ion-button\n [color]=\"button.color || 'medium'\"\n [fill]=\"button.fill || 'solid'\"\n [size]=\"button.size || 'default'\"\n [disabled]=\"button.disabled || button.loading\"\n [class]=\"button.cssClass\"\n (click)=\"onButtonClick(button)\"\n >\n @if (button.loading) {\n <ion-spinner name=\"crescent\"></ion-spinner>\n } @else {\n {{ button.text }}\n }\n </ion-button>\n }\n </div>\n </ion-toolbar>\n </ion-footer>\n }\n `,\n styles: [`\n .button-container {\n display: flex;\n justify-content: flex-end;\n gap: 8px;\n padding: 8px 0;\n }\n\n ion-content {\n --padding-top: 16px;\n --padding-bottom: 16px;\n }\n\n ion-footer ion-toolbar {\n --padding-start: 16px;\n --padding-end: 16px;\n }\n `],\n})\nexport class SimpleModalContentComponent {\n @Input() title: string = '';\n @Input() content: string = '';\n @Input() buttons: ModalButton[] = [];\n @Input() showCloseButton: boolean = true;\n\n // Injected by ModalService\n @Input() _modalRef: { dismiss: (data?: any, role?: string) => Promise<boolean> };\n\n async onButtonClick(button: ModalButton): Promise<void> {\n if (button.handler) {\n const result = await button.handler();\n // If handler returns false, don't dismiss\n if (result === false) {\n return;\n }\n }\n\n this._modalRef?.dismiss(undefined, button.role || 'confirm');\n }\n\n onDismiss(role: string): void {\n this._modalRef?.dismiss(undefined, role);\n }\n}\n"],"names":[],"mappings":"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"}
|