@codex-ts/core-lib 1.0.13 → 1.0.15
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/fesm2022/codex-ts-core-lib.mjs +228 -128
- package/fesm2022/codex-ts-core-lib.mjs.map +1 -1
- package/lib/components/base-task-dashboard.component.d.ts +88 -0
- package/lib/keycloak/keycloak.providers.d.ts +6 -0
- package/lib/keycloak/keycloak.service.d.ts +9 -11
- package/package.json +2 -2
- package/public-api.d.ts +2 -1
- package/src/lib/assets/keycloak/silent-check-sso.html +11 -0
- package/lib/keycloak/keycloak.guard.d.ts +0 -25
|
@@ -1,26 +1,25 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken,
|
|
3
|
-
import { map, retry, timeout, catchError, take, finalize as finalize$1, switchMap, takeUntil, mergeMap, tap, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
4
|
-
import { BehaviorSubject, finalize, Observable, forkJoin, throwError, of, isObservable, Subject, take as take$1, tap as tap$1, map as map$1, catchError as catchError$1, takeUntil as takeUntil$1, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs';
|
|
2
|
+
import { InjectionToken, inject, PLATFORM_ID, signal, computed, Injectable, importProvidersFrom, Component, NgModule, Directive, Input, ViewChild, Pipe } from '@angular/core';
|
|
5
3
|
import * as i1 from '@angular/common/http';
|
|
6
|
-
import { HttpParams } from '@angular/common/http';
|
|
7
|
-
import * as i1$
|
|
8
|
-
import
|
|
9
|
-
import
|
|
4
|
+
import { HttpClient, HttpClientModule, HttpParams } from '@angular/common/http';
|
|
5
|
+
import * as i1$2 from '@angular/common';
|
|
6
|
+
import { isPlatformBrowser, CommonModule, formatDate } from '@angular/common';
|
|
7
|
+
import { BehaviorSubject, finalize, Observable, forkJoin, throwError, of, isObservable, Subject, take as take$1, tap as tap$1, map as map$1, catchError as catchError$1, takeUntil as takeUntil$1, ReplaySubject, distinctUntilChanged as distinctUntilChanged$1 } from 'rxjs';
|
|
8
|
+
import { retry, timeout, catchError, take, map, finalize as finalize$1, switchMap, takeUntil, mergeMap, tap, debounceTime, distinctUntilChanged } from 'rxjs/operators';
|
|
9
|
+
import * as i4 from 'primeng/api';
|
|
10
|
+
import * as i1$1 from '@angular/forms';
|
|
10
11
|
import { FormGroup, ReactiveFormsModule } from '@angular/forms';
|
|
11
|
-
import * as i2
|
|
12
|
+
import * as i2 from '@ngx-formly/core';
|
|
12
13
|
import { FieldType, FormlyModule, FieldWrapper } from '@ngx-formly/core';
|
|
13
|
-
import * as i1$3 from '@angular/common';
|
|
14
|
-
import { CommonModule, formatDate } from '@angular/common';
|
|
15
14
|
import * as i3 from 'primeng/inputtext';
|
|
16
15
|
import { InputTextModule } from 'primeng/inputtext';
|
|
17
|
-
import * as i4 from 'primeng/select';
|
|
16
|
+
import * as i4$1 from 'primeng/select';
|
|
18
17
|
import { SelectModule } from 'primeng/select';
|
|
19
|
-
import * as i4$
|
|
18
|
+
import * as i4$2 from 'primeng/radiobutton';
|
|
20
19
|
import { RadioButtonModule } from 'primeng/radiobutton';
|
|
21
20
|
import * as i3$1 from 'primeng/inputnumber';
|
|
22
21
|
import { InputNumberModule } from 'primeng/inputnumber';
|
|
23
|
-
import * as i4$
|
|
22
|
+
import * as i4$3 from 'primeng/multiselect';
|
|
24
23
|
import { MultiSelectModule } from 'primeng/multiselect';
|
|
25
24
|
import * as i3$2 from 'primeng/datepicker';
|
|
26
25
|
import { DatePickerModule } from 'primeng/datepicker';
|
|
@@ -28,8 +27,9 @@ import * as i3$3 from 'primeng/checkbox';
|
|
|
28
27
|
import { CheckboxModule } from 'primeng/checkbox';
|
|
29
28
|
import * as i3$4 from 'primeng/inputtextarea';
|
|
30
29
|
import { Textarea } from 'primeng/inputtextarea';
|
|
31
|
-
import * as i2$
|
|
30
|
+
import * as i2$1 from 'primeng/tooltip';
|
|
32
31
|
import { TooltipModule } from 'primeng/tooltip';
|
|
32
|
+
import * as i1$3 from '@angular/router';
|
|
33
33
|
|
|
34
34
|
class AppConstants {
|
|
35
35
|
static FORM = {
|
|
@@ -137,23 +137,46 @@ var TaskRole;
|
|
|
137
137
|
const KEYCLOAK_CONFIG = new InjectionToken('KEYCLOAK_CONFIG');
|
|
138
138
|
|
|
139
139
|
class KeycloakService {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
140
|
+
http = inject(HttpClient);
|
|
141
|
+
platformId = inject(PLATFORM_ID);
|
|
142
|
+
config = inject(KEYCLOAK_CONFIG);
|
|
143
|
+
isBrowser = isPlatformBrowser(this.platformId);
|
|
144
|
+
#keycloakInstance = signal(null);
|
|
145
|
+
#isAuthenticated = signal(false);
|
|
146
|
+
#userProfile = signal(null);
|
|
147
|
+
isAuthenticated$ = computed(() => this.#isAuthenticated());
|
|
148
|
+
userProfile$ = computed(() => this.#userProfile());
|
|
149
|
+
loadKeycloakScript() {
|
|
150
|
+
if (!this.isBrowser)
|
|
151
|
+
return Promise.resolve();
|
|
152
|
+
if (typeof Keycloak !== 'undefined')
|
|
153
|
+
return Promise.resolve();
|
|
154
|
+
return new Promise((resolve, reject) => {
|
|
155
|
+
const script = document.createElement('script');
|
|
156
|
+
script.src = `${this.config.authServerUrl}/js/keycloak.js`;
|
|
157
|
+
script.async = true;
|
|
158
|
+
script.onload = () => resolve();
|
|
159
|
+
script.onerror = () => reject(new Error('Failed to load Keycloak script'));
|
|
160
|
+
document.head.appendChild(script);
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
getSilentCheckUrl() {
|
|
164
|
+
if (!this.isBrowser)
|
|
165
|
+
return '';
|
|
166
|
+
return `${window.location.origin}/node_modules/@codex-ts/core-lib/assets/keycloak/silent-check-sso.html`;
|
|
148
167
|
}
|
|
149
168
|
async initialize() {
|
|
169
|
+
if (!this.isBrowser)
|
|
170
|
+
return false;
|
|
150
171
|
try {
|
|
151
|
-
this.
|
|
152
|
-
const
|
|
172
|
+
await this.loadKeycloakScript();
|
|
173
|
+
const keycloak = new Keycloak(this.config);
|
|
174
|
+
this.#keycloakInstance.set(keycloak);
|
|
175
|
+
const authenticated = await keycloak.init({
|
|
153
176
|
onLoad: 'check-sso',
|
|
154
|
-
silentCheckSsoRedirectUri: this.
|
|
177
|
+
silentCheckSsoRedirectUri: this.getSilentCheckUrl()
|
|
155
178
|
});
|
|
156
|
-
this.
|
|
179
|
+
this.#isAuthenticated.set(authenticated);
|
|
157
180
|
if (authenticated) {
|
|
158
181
|
await this.loadUserProfile();
|
|
159
182
|
}
|
|
@@ -169,18 +192,15 @@ class KeycloakService {
|
|
|
169
192
|
...this.config.loginOptions,
|
|
170
193
|
...options
|
|
171
194
|
};
|
|
172
|
-
return this
|
|
195
|
+
return this.#keycloakInstance()?.login(loginOptions);
|
|
173
196
|
}
|
|
174
197
|
logout() {
|
|
175
|
-
return this
|
|
176
|
-
}
|
|
177
|
-
isLoggedIn() {
|
|
178
|
-
return this.isAuthenticated$.asObservable();
|
|
198
|
+
return this.#keycloakInstance()?.logout();
|
|
179
199
|
}
|
|
180
200
|
async getToken() {
|
|
181
201
|
try {
|
|
182
202
|
await this.updateToken(this.config.tokenValidityInSeconds || 60);
|
|
183
|
-
return this
|
|
203
|
+
return this.#keycloakInstance()?.token;
|
|
184
204
|
}
|
|
185
205
|
catch (error) {
|
|
186
206
|
console.error('Failed to get token:', error);
|
|
@@ -188,24 +208,23 @@ class KeycloakService {
|
|
|
188
208
|
}
|
|
189
209
|
}
|
|
190
210
|
getRoles() {
|
|
191
|
-
|
|
211
|
+
const keycloak = this.#keycloakInstance();
|
|
212
|
+
if (!keycloak?.realmAccess?.roles) {
|
|
192
213
|
return [];
|
|
193
214
|
}
|
|
194
|
-
return
|
|
215
|
+
return keycloak.realmAccess.roles;
|
|
195
216
|
}
|
|
196
217
|
hasRole(role) {
|
|
197
218
|
return this.getRoles().includes(role);
|
|
198
219
|
}
|
|
199
|
-
getUserProfile() {
|
|
200
|
-
return this.userProfile$.asObservable();
|
|
201
|
-
}
|
|
202
220
|
updateToken(minValidity = 60) {
|
|
203
221
|
return new Promise((resolve, reject) => {
|
|
204
|
-
|
|
222
|
+
const keycloak = this.#keycloakInstance();
|
|
223
|
+
if (!keycloak?.token) {
|
|
205
224
|
resolve(false);
|
|
206
225
|
return;
|
|
207
226
|
}
|
|
208
|
-
|
|
227
|
+
keycloak.updateToken(minValidity)
|
|
209
228
|
.then((refreshed) => {
|
|
210
229
|
resolve(refreshed);
|
|
211
230
|
})
|
|
@@ -217,80 +236,34 @@ class KeycloakService {
|
|
|
217
236
|
}
|
|
218
237
|
async loadUserProfile() {
|
|
219
238
|
try {
|
|
220
|
-
const
|
|
221
|
-
|
|
239
|
+
const keycloak = this.#keycloakInstance();
|
|
240
|
+
if (!keycloak)
|
|
241
|
+
return;
|
|
242
|
+
const profile = await keycloak.loadUserProfile();
|
|
243
|
+
this.#userProfile.set(profile);
|
|
222
244
|
}
|
|
223
245
|
catch (error) {
|
|
224
246
|
console.error('Failed to load user profile:', error);
|
|
225
247
|
}
|
|
226
248
|
}
|
|
227
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakService, deps: [
|
|
249
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
228
250
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakService, providedIn: 'root' });
|
|
229
251
|
}
|
|
230
252
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakService, decorators: [{
|
|
231
253
|
type: Injectable,
|
|
232
254
|
args: [{ providedIn: 'root' }]
|
|
233
|
-
}]
|
|
234
|
-
type: Inject,
|
|
235
|
-
args: [KEYCLOAK_CONFIG]
|
|
236
|
-
}] }, { type: i1.HttpClient }] });
|
|
255
|
+
}] });
|
|
237
256
|
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
// Handle authentication check
|
|
248
|
-
if (!authenticated) {
|
|
249
|
-
this.keycloakService.login({
|
|
250
|
-
redirectUri: window.location.origin + state.url
|
|
251
|
-
});
|
|
252
|
-
return false;
|
|
253
|
-
}
|
|
254
|
-
// Handle role-based access
|
|
255
|
-
const requiredRoles = route.data['roles'];
|
|
256
|
-
if (requiredRoles && !this.hasRequiredRoles(requiredRoles)) {
|
|
257
|
-
// Redirect to unauthorized page if roles don't match
|
|
258
|
-
return this.router.createUrlTree(['/unauthorized']);
|
|
259
|
-
}
|
|
260
|
-
return true;
|
|
261
|
-
}));
|
|
262
|
-
}
|
|
263
|
-
hasRequiredRoles(requiredRoles) {
|
|
264
|
-
const userRoles = this.keycloakService.getRoles();
|
|
265
|
-
return requiredRoles.every(role => userRoles.includes(role));
|
|
266
|
-
}
|
|
267
|
-
/**
|
|
268
|
-
* Checks if all required roles are present
|
|
269
|
-
* @param route Route being activated
|
|
270
|
-
* @returns true if no roles are required or if all required roles are present
|
|
271
|
-
*/
|
|
272
|
-
checkRoles(route) {
|
|
273
|
-
const requiredRoles = route.data['roles'];
|
|
274
|
-
if (!requiredRoles || requiredRoles.length === 0) {
|
|
275
|
-
return true;
|
|
276
|
-
}
|
|
277
|
-
return this.hasRequiredRoles(requiredRoles);
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* Gets redirect URL from route if present
|
|
281
|
-
* @param state Router state
|
|
282
|
-
* @returns URL to redirect to after login or undefined
|
|
283
|
-
*/
|
|
284
|
-
getLoginRedirectUrl(state) {
|
|
285
|
-
return window.location.origin + state.url;
|
|
286
|
-
}
|
|
287
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakAuthGuard, deps: [{ token: KeycloakService }, { token: i1$1.Router }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
288
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakAuthGuard, providedIn: 'root' });
|
|
257
|
+
function provideKeycloak(config) {
|
|
258
|
+
return [
|
|
259
|
+
importProvidersFrom(HttpClientModule),
|
|
260
|
+
{
|
|
261
|
+
provide: KEYCLOAK_CONFIG,
|
|
262
|
+
useValue: config
|
|
263
|
+
},
|
|
264
|
+
KeycloakService
|
|
265
|
+
];
|
|
289
266
|
}
|
|
290
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: KeycloakAuthGuard, decorators: [{
|
|
291
|
-
type: Injectable,
|
|
292
|
-
args: [{ providedIn: 'root' }]
|
|
293
|
-
}], ctorParameters: () => [{ type: KeycloakService }, { type: i1$1.Router }] });
|
|
294
267
|
|
|
295
268
|
/**
|
|
296
269
|
* A general-purpose HTTP utility service that provides enhanced HTTP operations
|
|
@@ -570,7 +543,7 @@ class HttpUtilityService {
|
|
|
570
543
|
});
|
|
571
544
|
}
|
|
572
545
|
}
|
|
573
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: HttpUtilityService, deps: [{ token: i1.HttpClient }, { token:
|
|
546
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: HttpUtilityService, deps: [{ token: i1.HttpClient }, { token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
574
547
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: HttpUtilityService, providedIn: 'root' });
|
|
575
548
|
}
|
|
576
549
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: HttpUtilityService, decorators: [{
|
|
@@ -578,7 +551,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
|
|
|
578
551
|
args: [{
|
|
579
552
|
providedIn: 'root'
|
|
580
553
|
}]
|
|
581
|
-
}], ctorParameters: () => [{ type: i1.HttpClient }, { type:
|
|
554
|
+
}], ctorParameters: () => [{ type: i1.HttpClient }, { type: i4.MessageService }] });
|
|
582
555
|
|
|
583
556
|
/**
|
|
584
557
|
* A utility service that provides common reusable functionality
|
|
@@ -753,12 +726,12 @@ class NotificationService {
|
|
|
753
726
|
clearMessage() {
|
|
754
727
|
this.messageSubject.next(null);
|
|
755
728
|
}
|
|
756
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NotificationService, deps: [{ token:
|
|
729
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NotificationService, deps: [{ token: i4.MessageService }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
757
730
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NotificationService });
|
|
758
731
|
}
|
|
759
732
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NotificationService, decorators: [{
|
|
760
733
|
type: Injectable
|
|
761
|
-
}], ctorParameters: () => [{ type:
|
|
734
|
+
}], ctorParameters: () => [{ type: i4.MessageService }] });
|
|
762
735
|
|
|
763
736
|
class BaseCrudService {
|
|
764
737
|
httpUtility;
|
|
@@ -1144,7 +1117,7 @@ class TextInputType extends FieldType {
|
|
|
1144
1117
|
[placeholder]="props['placeholder'] || ''"
|
|
1145
1118
|
[attr.aria-label]="props['label'] || props['placeholder'] || ''"
|
|
1146
1119
|
class="w-full"/>
|
|
1147
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
1120
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i3.InputText, selector: "[pInputText]", inputs: ["variant", "fluid", "pSize"] }] });
|
|
1148
1121
|
}
|
|
1149
1122
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: TextInputType, decorators: [{
|
|
1150
1123
|
type: Component,
|
|
@@ -1198,7 +1171,7 @@ class SelectType extends FieldType {
|
|
|
1198
1171
|
styleClass="w-full">
|
|
1199
1172
|
</p-select>
|
|
1200
1173
|
</ng-container>
|
|
1201
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$
|
|
1174
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: SelectModule }, { kind: "component", type: i4$1.Select, selector: "p-select", inputs: ["id", "scrollHeight", "filter", "name", "style", "panelStyle", "styleClass", "panelStyleClass", "readonly", "required", "editable", "appendTo", "tabindex", "placeholder", "loadingIcon", "filterPlaceholder", "filterLocale", "variant", "inputId", "dataKey", "filterBy", "filterFields", "autofocus", "resetFilterOnHide", "checkmark", "dropdownIcon", "loading", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "autoDisplayFirst", "group", "showClear", "emptyFilterMessage", "emptyMessage", "lazy", "virtualScroll", "virtualScrollItemSize", "virtualScrollOptions", "size", "overlayOptions", "ariaFilterLabel", "ariaLabel", "ariaLabelledBy", "filterMatchMode", "maxlength", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "focusOnHover", "selectOnFocus", "autoOptionFocus", "autofocusFilter", "fluid", "disabled", "itemSize", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "filterValue", "options"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onShow", "onHide", "onClear", "onLazyLoad"] }] });
|
|
1202
1175
|
}
|
|
1203
1176
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: SelectType, decorators: [{
|
|
1204
1177
|
type: Component,
|
|
@@ -1251,7 +1224,7 @@ class RadioType extends FieldType {
|
|
|
1251
1224
|
</div>
|
|
1252
1225
|
</ng-container>
|
|
1253
1226
|
</div>
|
|
1254
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$
|
|
1227
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: RadioButtonModule }, { kind: "component", type: i4$2.RadioButton, selector: "p-radioButton, p-radiobutton, p-radio-button", inputs: ["value", "formControlName", "name", "disabled", "variant", "size", "tabindex", "inputId", "ariaLabelledBy", "ariaLabel", "style", "styleClass", "autofocus", "binary"], outputs: ["onClick", "onFocus", "onBlur"] }] });
|
|
1255
1228
|
}
|
|
1256
1229
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: RadioType, decorators: [{
|
|
1257
1230
|
type: Component,
|
|
@@ -1314,7 +1287,7 @@ class NumericInputType extends FieldType {
|
|
|
1314
1287
|
[showButtons]="true"
|
|
1315
1288
|
class="w-full">
|
|
1316
1289
|
</p-inputNumber>
|
|
1317
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
1290
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: InputNumberModule }, { kind: "component", type: i3$1.InputNumber, selector: "p-inputNumber, p-inputnumber, p-input-number", inputs: ["showButtons", "format", "buttonLayout", "inputId", "styleClass", "style", "placeholder", "size", "maxlength", "tabindex", "title", "ariaLabelledBy", "ariaLabel", "ariaRequired", "name", "required", "autocomplete", "min", "max", "incrementButtonClass", "decrementButtonClass", "incrementButtonIcon", "decrementButtonIcon", "readonly", "step", "allowEmpty", "locale", "localeMatcher", "mode", "currency", "currencyDisplay", "useGrouping", "variant", "minFractionDigits", "maxFractionDigits", "prefix", "suffix", "inputStyle", "inputStyleClass", "showClear", "autofocus", "disabled", "fluid"], outputs: ["onInput", "onFocus", "onBlur", "onKeyDown", "onClear"] }] });
|
|
1318
1291
|
}
|
|
1319
1292
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: NumericInputType, decorators: [{
|
|
1320
1293
|
type: Component,
|
|
@@ -1382,7 +1355,7 @@ class MultiselectType extends FieldType {
|
|
|
1382
1355
|
styleClass="w-full">
|
|
1383
1356
|
</p-multiSelect>
|
|
1384
1357
|
</ng-container>
|
|
1385
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$
|
|
1358
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "pipe", type: i1$2.AsyncPipe, name: "async" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: MultiSelectModule }, { kind: "component", type: i4$3.MultiSelect, selector: "p-multiSelect, p-multiselect, p-multi-select", inputs: ["id", "ariaLabel", "style", "styleClass", "panelStyle", "panelStyleClass", "inputId", "disabled", "fluid", "readonly", "group", "filter", "filterPlaceHolder", "filterLocale", "overlayVisible", "tabindex", "variant", "appendTo", "dataKey", "name", "ariaLabelledBy", "displaySelectedLabel", "maxSelectedLabels", "selectionLimit", "selectedItemsLabel", "showToggleAll", "emptyFilterMessage", "emptyMessage", "resetFilterOnHide", "dropdownIcon", "chipIcon", "optionLabel", "optionValue", "optionDisabled", "optionGroupLabel", "optionGroupChildren", "showHeader", "filterBy", "scrollHeight", "lazy", "virtualScroll", "loading", "virtualScrollItemSize", "loadingIcon", "virtualScrollOptions", "overlayOptions", "ariaFilterLabel", "filterMatchMode", "tooltip", "tooltipPosition", "tooltipPositionStyle", "tooltipStyleClass", "autofocusFilter", "display", "autocomplete", "size", "showClear", "autofocus", "autoZIndex", "baseZIndex", "showTransitionOptions", "hideTransitionOptions", "defaultLabel", "placeholder", "options", "filterValue", "itemSize", "selectAll", "focusOnHover", "filterFields", "selectOnFocus", "autoOptionFocus"], outputs: ["onChange", "onFilter", "onFocus", "onBlur", "onClick", "onClear", "onPanelShow", "onPanelHide", "onLazyLoad", "onRemove", "onSelectAllChange"] }] });
|
|
1386
1359
|
}
|
|
1387
1360
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: MultiselectType, decorators: [{
|
|
1388
1361
|
type: Component,
|
|
@@ -1483,7 +1456,7 @@ class DateType extends FieldType {
|
|
|
1483
1456
|
(onSelect)="onDateSelect($event)"
|
|
1484
1457
|
(onInput)="onDateInput($event)">
|
|
1485
1458
|
</p-datepicker>
|
|
1486
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
1459
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: DatePickerModule }, { kind: "component", type: i3$2.DatePicker, selector: "p-datePicker, p-datepicker, p-date-picker", inputs: ["iconDisplay", "style", "styleClass", "inputStyle", "inputId", "name", "inputStyleClass", "placeholder", "ariaLabelledBy", "ariaLabel", "iconAriaLabel", "disabled", "dateFormat", "multipleSeparator", "rangeSeparator", "inline", "showOtherMonths", "selectOtherMonths", "showIcon", "fluid", "icon", "appendTo", "readonlyInput", "shortYearCutoff", "monthNavigator", "yearNavigator", "hourFormat", "timeOnly", "stepHour", "stepMinute", "stepSecond", "showSeconds", "required", "showOnFocus", "showWeek", "startWeekFromFirstDayOfYear", "showClear", "dataType", "selectionMode", "maxDateCount", "showButtonBar", "todayButtonStyleClass", "clearButtonStyleClass", "autofocus", "autoZIndex", "baseZIndex", "panelStyleClass", "panelStyle", "keepInvalid", "hideOnDateTimeSelect", "touchUI", "timeSeparator", "focusTrap", "showTransitionOptions", "hideTransitionOptions", "tabindex", "variant", "size", "minDate", "maxDate", "disabledDates", "disabledDays", "yearRange", "showTime", "responsiveOptions", "numberOfMonths", "firstDayOfWeek", "locale", "view", "defaultDate"], outputs: ["onFocus", "onBlur", "onClose", "onSelect", "onClear", "onInput", "onTodayClick", "onClearClick", "onMonthChange", "onYearChange", "onClickOutside", "onShow"] }] });
|
|
1487
1460
|
}
|
|
1488
1461
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: DateType, decorators: [{
|
|
1489
1462
|
type: Component,
|
|
@@ -1537,7 +1510,7 @@ class CheckboxType extends FieldType {
|
|
|
1537
1510
|
{{props['checkboxLabel'] || ''}}
|
|
1538
1511
|
</p-checkbox>
|
|
1539
1512
|
</div>
|
|
1540
|
-
`, isInline: true, styles: [".checkbox-container{display:flex;align-items:center;height:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
1513
|
+
`, isInline: true, styles: [".checkbox-container{display:flex;align-items:center;height:40px}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: CheckboxModule }, { kind: "component", type: i3$3.Checkbox, selector: "p-checkbox, p-checkBox, p-check-box", inputs: ["value", "name", "disabled", "binary", "ariaLabelledBy", "ariaLabel", "tabindex", "inputId", "style", "inputStyle", "styleClass", "inputClass", "indeterminate", "size", "formControl", "checkboxIcon", "readonly", "required", "autofocus", "trueValue", "falseValue", "variant"], outputs: ["onChange", "onFocus", "onBlur"] }] });
|
|
1541
1514
|
}
|
|
1542
1515
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: CheckboxType, decorators: [{
|
|
1543
1516
|
type: Component,
|
|
@@ -1580,7 +1553,7 @@ class TextareaType extends FieldType {
|
|
|
1580
1553
|
[placeholder]="props['placeholder'] || ''"
|
|
1581
1554
|
class="w-full">
|
|
1582
1555
|
</textarea>
|
|
1583
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$
|
|
1556
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$1.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormlyModule }, { kind: "directive", type: i2.ɵFormlyAttributes, selector: "[formlyAttributes]", inputs: ["formlyAttributes", "id"] }, { kind: "ngmodule", type: Textarea }, { kind: "directive", type: i3$4.InputTextarea, selector: "[pInputTextarea]", inputs: ["autoResize", "variant", "fluid"], outputs: ["onResize"] }] });
|
|
1584
1557
|
}
|
|
1585
1558
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: TextareaType, decorators: [{
|
|
1586
1559
|
type: Component,
|
|
@@ -1647,7 +1620,7 @@ class FormFieldWrapper extends FieldWrapper {
|
|
|
1647
1620
|
{{ errorMessage }}
|
|
1648
1621
|
</small>
|
|
1649
1622
|
</div>
|
|
1650
|
-
`, isInline: true, styles: [":is() .required-star{color:var(--red-500);margin-left:.25rem}:is() .p-input-error :where(input,.p-inputtext){border-color:var(--red-500)}:is() .p-input-error :where(input:enabled:focus,.p-inputtext:enabled:focus){border-color:var(--red-500);box-shadow:0 0 0 1px var(--red-500)}:is() .p-error{color:var(--red-500);margin-top:.5rem}:is() small{color:var(--text-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$
|
|
1623
|
+
`, isInline: true, styles: [":is() .required-star{color:var(--red-500);margin-left:.25rem}:is() .p-input-error :where(input,.p-inputtext){border-color:var(--red-500)}:is() .p-input-error :where(input:enabled:focus,.p-inputtext:enabled:focus){border-color:var(--red-500);box-shadow:0 0 0 1px var(--red-500)}:is() .p-error{color:var(--red-500);margin-top:.5rem}:is() small{color:var(--text-color-secondary)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i1$2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "ngmodule", type: TooltipModule }, { kind: "directive", type: i2$1.Tooltip, selector: "[pTooltip]", inputs: ["tooltipPosition", "tooltipEvent", "appendTo", "positionStyle", "tooltipStyleClass", "tooltipZIndex", "escape", "showDelay", "hideDelay", "life", "positionTop", "positionLeft", "autoHide", "fitContent", "hideOnEscape", "pTooltip", "tooltipDisabled", "tooltipOptions"] }] });
|
|
1651
1624
|
}
|
|
1652
1625
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: FormFieldWrapper, decorators: [{
|
|
1653
1626
|
type: Component,
|
|
@@ -1694,7 +1667,7 @@ const FORMLY_WRAPPERS = {
|
|
|
1694
1667
|
|
|
1695
1668
|
class CoreFormlyModule {
|
|
1696
1669
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: CoreFormlyModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
1697
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: CoreFormlyModule, imports: [i2
|
|
1670
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: CoreFormlyModule, imports: [i2.FormlyModule], exports: [FormlyModule] });
|
|
1698
1671
|
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: CoreFormlyModule, imports: [FormlyModule.forRoot({
|
|
1699
1672
|
types: [
|
|
1700
1673
|
{ name: FORMLY_TYPES.TEXT, component: TextInputType, wrappers: [FORMLY_WRAPPERS.FORM_FIELD] },
|
|
@@ -2023,7 +1996,7 @@ class BaseFormComponent extends BasePageComponent {
|
|
|
2023
1996
|
isInContext(contextType) {
|
|
2024
1997
|
return this.state.context === contextType;
|
|
2025
1998
|
}
|
|
2026
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseFormComponent, deps: [{ token: i1$
|
|
1999
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseFormComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$3.Router }, { token: NotificationService }, { token: UtilsService }, { token: FormlyConfigService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2027
2000
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: BaseFormComponent, isStandalone: true, selector: "ng-component", inputs: { formData: "formData" }, usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
2028
2001
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseFormComponent });
|
|
2029
2002
|
}
|
|
@@ -2034,7 +2007,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
|
|
|
2034
2007
|
args: [{
|
|
2035
2008
|
template: ''
|
|
2036
2009
|
}]
|
|
2037
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2010
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$3.Router }, { type: NotificationService }, { type: UtilsService }, { type: FormlyConfigService }], propDecorators: { formData: [{
|
|
2038
2011
|
type: Input
|
|
2039
2012
|
}] } });
|
|
2040
2013
|
|
|
@@ -2326,12 +2299,12 @@ class BaseListPageComponent extends BaseTableComponent {
|
|
|
2326
2299
|
}
|
|
2327
2300
|
return true;
|
|
2328
2301
|
}
|
|
2329
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseListPageComponent, deps: [{ token: i1$
|
|
2302
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseListPageComponent, deps: [{ token: i1$3.Router }, { token: NotificationService }, { token: UtilsService }, { token: i4.ConfirmationService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2330
2303
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.6", type: BaseListPageComponent, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
2331
2304
|
}
|
|
2332
2305
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseListPageComponent, decorators: [{
|
|
2333
2306
|
type: Directive
|
|
2334
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2307
|
+
}], ctorParameters: () => [{ type: i1$3.Router }, { type: NotificationService }, { type: UtilsService }, { type: i4.ConfirmationService }] });
|
|
2335
2308
|
|
|
2336
2309
|
class BaseTabbedFormComponent extends BasePageComponent {
|
|
2337
2310
|
route;
|
|
@@ -2619,7 +2592,7 @@ class BaseTabbedFormComponent extends BasePageComponent {
|
|
|
2619
2592
|
getTabTitle(data) {
|
|
2620
2593
|
throw new Error('Method not implemented.');
|
|
2621
2594
|
}
|
|
2622
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTabbedFormComponent, deps: [{ token: i1$
|
|
2595
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTabbedFormComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$3.Router }, { token: NotificationService }, { token: UtilsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2623
2596
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: BaseTabbedFormComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
2624
2597
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTabbedFormComponent });
|
|
2625
2598
|
}
|
|
@@ -2630,7 +2603,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
|
|
|
2630
2603
|
args: [{
|
|
2631
2604
|
template: ''
|
|
2632
2605
|
}]
|
|
2633
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2606
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$3.Router }, { type: NotificationService }, { type: UtilsService }] });
|
|
2634
2607
|
|
|
2635
2608
|
class BaseListTabbedFormComponent extends BasePageComponent {
|
|
2636
2609
|
route;
|
|
@@ -2802,7 +2775,7 @@ class BaseListTabbedFormComponent extends BasePageComponent {
|
|
|
2802
2775
|
isValidPageMode(mode) {
|
|
2803
2776
|
return Object.values(AppConstants.PAGE_MODE).includes(mode);
|
|
2804
2777
|
}
|
|
2805
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseListTabbedFormComponent, deps: [{ token: i1$
|
|
2778
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseListTabbedFormComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$3.Router }, { token: NotificationService }, { token: UtilsService }], target: i0.ɵɵFactoryTarget.Component });
|
|
2806
2779
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.6", type: BaseListTabbedFormComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: '', isInline: true });
|
|
2807
2780
|
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseListTabbedFormComponent });
|
|
2808
2781
|
}
|
|
@@ -2813,7 +2786,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
|
|
|
2813
2786
|
args: [{
|
|
2814
2787
|
template: ''
|
|
2815
2788
|
}]
|
|
2816
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2789
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$3.Router }, { type: NotificationService }, { type: UtilsService }] });
|
|
2817
2790
|
|
|
2818
2791
|
/**
|
|
2819
2792
|
* Base component for all task detail components in the application.
|
|
@@ -2928,12 +2901,139 @@ class BaseTaskDetailsComponent extends BasePageComponent {
|
|
|
2928
2901
|
this.destroyed$.next();
|
|
2929
2902
|
this.destroyed$.complete();
|
|
2930
2903
|
}
|
|
2931
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTaskDetailsComponent, deps: [{ token: i1$
|
|
2904
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTaskDetailsComponent, deps: [{ token: i1$3.ActivatedRoute }, { token: i1$3.Router }, { token: NotificationService }, { token: UtilsService }, { token: FormlyConfigService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
2932
2905
|
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.6", type: BaseTaskDetailsComponent, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
2933
2906
|
}
|
|
2934
2907
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTaskDetailsComponent, decorators: [{
|
|
2935
2908
|
type: Directive
|
|
2936
|
-
}], ctorParameters: () => [{ type: i1$
|
|
2909
|
+
}], ctorParameters: () => [{ type: i1$3.ActivatedRoute }, { type: i1$3.Router }, { type: NotificationService }, { type: UtilsService }, { type: FormlyConfigService }] });
|
|
2910
|
+
|
|
2911
|
+
/**
|
|
2912
|
+
* Base component for all task dashboard components in the application.
|
|
2913
|
+
* Provides common functionality for task management operations while
|
|
2914
|
+
* inheriting table functionality from BaseTableComponent.
|
|
2915
|
+
*/
|
|
2916
|
+
class BaseTaskDashboardComponent extends BaseTableComponent {
|
|
2917
|
+
router;
|
|
2918
|
+
notificationService;
|
|
2919
|
+
utilsService;
|
|
2920
|
+
confirmationService;
|
|
2921
|
+
actionLoading = false;
|
|
2922
|
+
taskStatuses = [];
|
|
2923
|
+
taskPriorities = [];
|
|
2924
|
+
assignedToOptions = [];
|
|
2925
|
+
dateRange = {
|
|
2926
|
+
start: null,
|
|
2927
|
+
end: null
|
|
2928
|
+
};
|
|
2929
|
+
constructor(router, notificationService, utilsService, confirmationService) {
|
|
2930
|
+
super(utilsService, notificationService);
|
|
2931
|
+
this.router = router;
|
|
2932
|
+
this.notificationService = notificationService;
|
|
2933
|
+
this.utilsService = utilsService;
|
|
2934
|
+
this.confirmationService = confirmationService;
|
|
2935
|
+
}
|
|
2936
|
+
/**
|
|
2937
|
+
* Initialize the component and load reference data
|
|
2938
|
+
*/
|
|
2939
|
+
ngOnInit() {
|
|
2940
|
+
super.ngOnInit();
|
|
2941
|
+
this.loadReferenceData();
|
|
2942
|
+
}
|
|
2943
|
+
/**
|
|
2944
|
+
* Load all reference data needed for the task dashboard
|
|
2945
|
+
*/
|
|
2946
|
+
loadReferenceData() {
|
|
2947
|
+
}
|
|
2948
|
+
/**
|
|
2949
|
+
* Create a new task
|
|
2950
|
+
*/
|
|
2951
|
+
onCreate() {
|
|
2952
|
+
this.navigateTo([this.getFormRoute()], { [AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.CREATE });
|
|
2953
|
+
}
|
|
2954
|
+
/**
|
|
2955
|
+
* Navigate to view a task
|
|
2956
|
+
* @param item The task to view
|
|
2957
|
+
*/
|
|
2958
|
+
onView(item) {
|
|
2959
|
+
if (!this.validateItemUuid(item, 'view'))
|
|
2960
|
+
return;
|
|
2961
|
+
this.navigateTo([this.getFormRoute()], {
|
|
2962
|
+
[AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.VIEW,
|
|
2963
|
+
[AppConstants.FORM.UUID]: item.uuid
|
|
2964
|
+
});
|
|
2965
|
+
}
|
|
2966
|
+
/**
|
|
2967
|
+
* Navigate to edit a task
|
|
2968
|
+
* @param item The task to edit
|
|
2969
|
+
*/
|
|
2970
|
+
onEdit(item) {
|
|
2971
|
+
if (!this.validateItemUuid(item, 'edit'))
|
|
2972
|
+
return;
|
|
2973
|
+
this.navigateTo([this.getFormRoute()], {
|
|
2974
|
+
[AppConstants.FORM.MODE]: AppConstants.PAGE_MODE.EDIT,
|
|
2975
|
+
[AppConstants.FORM.UUID]: item.uuid
|
|
2976
|
+
});
|
|
2977
|
+
}
|
|
2978
|
+
/**
|
|
2979
|
+
* Delete a task with confirmation
|
|
2980
|
+
* @param item The task to delete
|
|
2981
|
+
*/
|
|
2982
|
+
onDelete(item) {
|
|
2983
|
+
if (!this.validateItemUuid(item, 'delete'))
|
|
2984
|
+
return;
|
|
2985
|
+
this.confirmationService.confirm({
|
|
2986
|
+
message: `Are you sure you want to delete this ${this.getEntityName()}?`,
|
|
2987
|
+
header: 'Confirm Deletion',
|
|
2988
|
+
icon: 'pi pi-exclamation-triangle',
|
|
2989
|
+
accept: () => {
|
|
2990
|
+
this.actionLoading = true;
|
|
2991
|
+
this.getEntityService().delete(item.uuid)
|
|
2992
|
+
.pipe(finalize$1(() => this.actionLoading = false))
|
|
2993
|
+
.subscribe({
|
|
2994
|
+
next: () => {
|
|
2995
|
+
this.showSuccess(`${this.getEntityName()} ${AppMessages.LIST.SUCCESS.DELETE}`);
|
|
2996
|
+
this.loadData();
|
|
2997
|
+
},
|
|
2998
|
+
error: (error) => {
|
|
2999
|
+
console.error('Delete failed:', error);
|
|
3000
|
+
this.showError(`${AppMessages.LIST.ERROR.DELETE} ${this.getEntityName()}`);
|
|
3001
|
+
}
|
|
3002
|
+
});
|
|
3003
|
+
}
|
|
3004
|
+
});
|
|
3005
|
+
}
|
|
3006
|
+
/**
|
|
3007
|
+
* Navigate to a route with error handling
|
|
3008
|
+
* @param path The route path
|
|
3009
|
+
* @param matrixParams Optional matrix parameters
|
|
3010
|
+
*/
|
|
3011
|
+
navigateTo(path, matrixParams) {
|
|
3012
|
+
this.router.navigate(path, { queryParams: matrixParams })
|
|
3013
|
+
.catch(error => {
|
|
3014
|
+
console.error('Navigation error:', error);
|
|
3015
|
+
this.showError(AppMessages.LIST.ERROR.NAVIGATION);
|
|
3016
|
+
});
|
|
3017
|
+
}
|
|
3018
|
+
/**
|
|
3019
|
+
* Validate that an item has a UUID
|
|
3020
|
+
* @param item The item to validate
|
|
3021
|
+
* @param action The action being performed
|
|
3022
|
+
* @returns true if valid, false otherwise
|
|
3023
|
+
*/
|
|
3024
|
+
validateItemUuid(item, action) {
|
|
3025
|
+
if (!item?.uuid) {
|
|
3026
|
+
this.showError(`${AppMessages.LIST.ERROR.INVALID_ID} ${action}`);
|
|
3027
|
+
return false;
|
|
3028
|
+
}
|
|
3029
|
+
return true;
|
|
3030
|
+
}
|
|
3031
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTaskDashboardComponent, deps: [{ token: i1$3.Router }, { token: NotificationService }, { token: UtilsService }, { token: i4.ConfirmationService }], target: i0.ɵɵFactoryTarget.Directive });
|
|
3032
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "19.2.6", type: BaseTaskDashboardComponent, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
3033
|
+
}
|
|
3034
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: BaseTaskDashboardComponent, decorators: [{
|
|
3035
|
+
type: Directive
|
|
3036
|
+
}], ctorParameters: () => [{ type: i1$3.Router }, { type: NotificationService }, { type: UtilsService }, { type: i4.ConfirmationService }] });
|
|
2937
3037
|
|
|
2938
3038
|
class IndianDatePipe {
|
|
2939
3039
|
datePipe;
|
|
@@ -2969,7 +3069,7 @@ class IndianDatePipe {
|
|
|
2969
3069
|
return value; // original dd-MM-yyyy
|
|
2970
3070
|
}
|
|
2971
3071
|
}
|
|
2972
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: IndianDatePipe, deps: [{ token: i1$
|
|
3072
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: IndianDatePipe, deps: [{ token: i1$2.DatePipe }], target: i0.ɵɵFactoryTarget.Pipe });
|
|
2973
3073
|
static ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "19.2.6", ngImport: i0, type: IndianDatePipe, isStandalone: true, name: "indianDate" });
|
|
2974
3074
|
}
|
|
2975
3075
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImport: i0, type: IndianDatePipe, decorators: [{
|
|
@@ -2978,7 +3078,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
|
|
|
2978
3078
|
name: 'indianDate',
|
|
2979
3079
|
standalone: true
|
|
2980
3080
|
}]
|
|
2981
|
-
}], ctorParameters: () => [{ type: i1$
|
|
3081
|
+
}], ctorParameters: () => [{ type: i1$2.DatePipe }] });
|
|
2982
3082
|
|
|
2983
3083
|
/*
|
|
2984
3084
|
* Public API Surface of core-lib
|
|
@@ -2989,5 +3089,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.6", ngImpor
|
|
|
2989
3089
|
* Generated bundle index. Do not edit.
|
|
2990
3090
|
*/
|
|
2991
3091
|
|
|
2992
|
-
export { AppConstants, AppMessages, BaseCrudService, BaseFormComponent, BaseListPageComponent, BaseListTabbedFormComponent, BasePageComponent, BaseTabbedFormComponent, BaseTaskDetailsComponent, BaseTaskService, ComponentContext, CoreFormlyModule, FormService, FormlyConfigService, HttpUtilityService, IndianDatePipe, KEYCLOAK_CONFIG,
|
|
3092
|
+
export { AppConstants, AppMessages, BaseCrudService, BaseFormComponent, BaseListPageComponent, BaseListTabbedFormComponent, BasePageComponent, BaseTabbedFormComponent, BaseTaskDashboardComponent, BaseTaskDetailsComponent, BaseTaskService, ComponentContext, CoreFormlyModule, FormService, FormlyConfigService, HttpUtilityService, IndianDatePipe, KEYCLOAK_CONFIG, KeycloakService, NotificationService, TabbedFormType, TaskRole, UtilsService, provideKeycloak };
|
|
2993
3093
|
//# sourceMappingURL=codex-ts-core-lib.mjs.map
|