@ieeesa-npm/tenants 0.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.
Files changed (41) hide show
  1. package/README.md +24 -0
  2. package/esm2022/ieeesa-npm-tenants.mjs +5 -0
  3. package/esm2022/lib/assets/constants.json +134 -0
  4. package/esm2022/lib/assets/tenant-validations.mjs +10 -0
  5. package/esm2022/lib/components/create-tenant-application/create-tenant-application.component.mjs +420 -0
  6. package/esm2022/lib/models/app-type-config.model.mjs +2 -0
  7. package/esm2022/lib/models/app-type.model.mjs +7 -0
  8. package/esm2022/lib/models/features.model.mjs +2 -0
  9. package/esm2022/lib/models/form-status.model.mjs +7 -0
  10. package/esm2022/lib/models/permission-type.model.mjs +12 -0
  11. package/esm2022/lib/models/table-column-schema-view-tenant-list.model.mjs +16 -0
  12. package/esm2022/lib/models/tenant.model.mjs +2 -0
  13. package/esm2022/lib/models/tenants-permission.model.mjs +2 -0
  14. package/esm2022/lib/models/tenants.model.mjs +2 -0
  15. package/esm2022/lib/services/tenant-applications.service.mjs +207 -0
  16. package/esm2022/lib/services/tenant-permissions-map.service.mjs +31 -0
  17. package/esm2022/lib/services/tenant-permissions.service.mjs +38 -0
  18. package/esm2022/lib/tenant-applications.component.mjs +14 -0
  19. package/esm2022/lib/tenant-applications.module.mjs +16 -0
  20. package/esm2022/public-api.mjs +14 -0
  21. package/fesm2022/ieeesa-npm-tenants.mjs +906 -0
  22. package/fesm2022/ieeesa-npm-tenants.mjs.map +1 -0
  23. package/index.d.ts +5 -0
  24. package/lib/assets/tenant-validations.d.ts +8 -0
  25. package/lib/components/create-tenant-application/create-tenant-application.component.d.ts +113 -0
  26. package/lib/models/app-type-config.model.d.ts +14 -0
  27. package/lib/models/app-type.model.d.ts +4 -0
  28. package/lib/models/features.model.d.ts +15 -0
  29. package/lib/models/form-status.model.d.ts +4 -0
  30. package/lib/models/permission-type.model.d.ts +8 -0
  31. package/lib/models/table-column-schema-view-tenant-list.model.d.ts +20 -0
  32. package/lib/models/tenant.model.d.ts +23 -0
  33. package/lib/models/tenants-permission.model.d.ts +9 -0
  34. package/lib/models/tenants.model.d.ts +23 -0
  35. package/lib/services/tenant-applications.service.d.ts +149 -0
  36. package/lib/services/tenant-permissions-map.service.d.ts +13 -0
  37. package/lib/services/tenant-permissions.service.d.ts +22 -0
  38. package/lib/tenant-applications.component.d.ts +5 -0
  39. package/lib/tenant-applications.module.d.ts +6 -0
  40. package/package.json +25 -0
  41. package/public-api.d.ts +10 -0
@@ -0,0 +1,906 @@
1
+ import * as i0 from '@angular/core';
2
+ import { Injectable, EventEmitter, Component, ViewEncapsulation, ViewChild, Output, NgModule } from '@angular/core';
3
+ import * as i1$1 from '@ieeesa-npm/presentation';
4
+ import { AlignType, AllowedFileTypes, FormControlType, DynamicFormComponent } from '@ieeesa-npm/presentation';
5
+ import { map, catchError, Subject, takeUntil } from 'rxjs';
6
+ import { Validators } from '@angular/forms';
7
+ import * as i4 from '@angular/common';
8
+ import { CommonModule } from '@angular/common';
9
+ import { validColorValidator } from 'ngx-colors';
10
+ import * as i1 from '@ieeesa-npm/utility';
11
+ import * as i3 from '@ieeesa-npm/shared';
12
+ import { MatButtonModule } from '@angular/material/button';
13
+
14
+ var createTenant = {
15
+ heading: "New Application",
16
+ label: {
17
+ leftButtonLabel: "Cancel",
18
+ rightButtonLabel: "Save",
19
+ appTitle: "Application Title",
20
+ appId: "Application Id",
21
+ appLogo: "Application Logo",
22
+ appHeading: "Application Heading",
23
+ appDescription: "Application Description",
24
+ appBgColor: "Application Background Color",
25
+ appHelpLink: "Application Help Link",
26
+ featuresList: "Selection of list of features",
27
+ featureVersion: "Feature Version",
28
+ domainURL: "Domain URL",
29
+ appType: "Application Type",
30
+ ariaLabel: {
31
+ appTitle: "Application Title",
32
+ appId: "Application Id",
33
+ appLogo: "Application Logo",
34
+ appHeading: "Application Heading",
35
+ appDescription: "Application Description",
36
+ appBgColor: "Application Background Color",
37
+ appHelpLink: "Application Help Link",
38
+ featuresList: "Selection of list of features",
39
+ featureVersion: "Feature Version",
40
+ domainURL: "Domain URL",
41
+ appType: "Application Type"
42
+ },
43
+ ariaDescribedById: {
44
+ appTitle: "ariaApplicationTitle",
45
+ appId: "ariaApplicationId",
46
+ appLogo: "ariaApplicationLogo",
47
+ appHeading: "ariaApplicationHeading",
48
+ appDescription: "ariaApplicationDescription",
49
+ appBgColor: "ariaApplicationBackgroundColor",
50
+ appHelpLink: "ariaApplicationHelpLink",
51
+ featuresList: "ariaFeatures",
52
+ featureVersion: "ariaFeatureVersion",
53
+ domainURL: "ariaDomainURL",
54
+ appType: "ariaApplicationType"
55
+ }
56
+ },
57
+ message: {
58
+ error: {
59
+ required: "This field is required.",
60
+ invalidColor: "Invalid color.",
61
+ invalidFile: "Invalid file format. Please upload SVG, PNG and JPG file format only.",
62
+ limit: {
63
+ appTitleMaxChars: "Application Title must not be greater than 50 characters long.",
64
+ appIdMaxChars: "Application Id must not be greater than 10 characters long.",
65
+ appHeadingMaxChars: "Application Heading must not be greater than 150 characters long.",
66
+ appDescriptionMaxChars: "Application Description must not be greater than 500 characters long.",
67
+ appLogoMaxSize: "File size exceeds the maximum limit."
68
+ },
69
+ pattern: {
70
+ appId: "It should only allow Alphanumeric characters.",
71
+ appHelpLink: "Invalid URL.",
72
+ appDomainUrl: "Invalid URL."
73
+ }
74
+ },
75
+ success: {
76
+ submission: "has been created successfully."
77
+ }
78
+ },
79
+ supportText: {
80
+ appTitle: "Enter application name.",
81
+ appId: "Enter application id.",
82
+ appLogo: "Upload application logo.",
83
+ appHeading: "Enter application heading.",
84
+ appDescription: "Enter application description.",
85
+ appBgColor: "Choose background color.",
86
+ appHelpLink: "Enter application help link.",
87
+ featuresList: "Select reusable feature(s).",
88
+ featureVersion: "Select feature version.",
89
+ domainURL: "Enter domain URL."
90
+ },
91
+ errors: {
92
+ "2003": "Application Type not found.",
93
+ "2026": "List of features not found.",
94
+ "2028": "Application Title is required.",
95
+ "2029": "Application Logo is required.",
96
+ "2030": "Application Heading is required.",
97
+ "2031": "Application Description is required.",
98
+ "2032": "Background color is required.",
99
+ "2033": "Help link is required.",
100
+ "2034": "Domain Url is required.",
101
+ "2035": "Application Type is required.",
102
+ "2036": "Application Features are required.",
103
+ "2037": "Application Title must not be greater than 50 characters long.",
104
+ "2038": "Application Heading must not be greater than 150 characters long",
105
+ "2039": "Application Description must not be greater than 500 characters long.",
106
+ "2040": "Invalid URL.",
107
+ "2041": "Application Id is required.",
108
+ "2042": "Application Id must not be greater than 10 characters long",
109
+ "2043": "Application Id contains invalid characters. Please enter alphanumeric characters only.",
110
+ "2044": "Invalid URL.",
111
+ "2045": "Application Id must be unique.",
112
+ "2046": "Application Features are required.",
113
+ "2047": "Application Type is required.",
114
+ "2048": "Features Not Found.",
115
+ "2049": "Unable to display tenants. Please try again latter."
116
+ },
117
+ buttons: {
118
+ addApplicationLabel: "Add Application"
119
+ }
120
+ };
121
+ var viewTenants = {
122
+ tenantsTitle: "Tenant Application Management",
123
+ addTenant: "Add Application",
124
+ emptyFieldValueReplacedBy: "-",
125
+ createTenantsIcon: "assets/images/sprites/sprites.svg#icon-create-group-white-bg",
126
+ pageSizeOptions: [
127
+ 10,
128
+ 20,
129
+ 50,
130
+ 100
131
+ ],
132
+ ariaLabel: {
133
+ add: "Add Application"
134
+ },
135
+ tableColumns: {
136
+ appId: "Application Id",
137
+ appTitle: "Application Title",
138
+ appDescription: "Application Description",
139
+ features: "Features",
140
+ status: "Status"
141
+ }
142
+ };
143
+ var errors = {
144
+ "2049": "Unable to display tenants. Please try again latter."
145
+ };
146
+ var routeConfigPath = {
147
+ viewTenants: "tenants/view-tenants-list",
148
+ viewTenantDetails: "tenants/view-tenants-list/view-tenant-details",
149
+ createTenant: "tenants/create-tenant"
150
+ };
151
+ var constants = {
152
+ createTenant: createTenant,
153
+ viewTenants: viewTenants,
154
+ errors: errors,
155
+ routeConfigPath: routeConfigPath
156
+ };
157
+
158
+ var screenTexts = /*#__PURE__*/Object.freeze({
159
+ __proto__: null,
160
+ createTenant: createTenant,
161
+ default: constants,
162
+ errors: errors,
163
+ routeConfigPath: routeConfigPath,
164
+ viewTenants: viewTenants
165
+ });
166
+
167
+ /* eslint-disable no-useless-escape */
168
+ const TenantsValidationPatterns = {
169
+ appTitleMaxLength: 50,
170
+ appIdMaxLength: 10,
171
+ appHeadingMaxLength: 150,
172
+ appDescriptionMaxLength: 500,
173
+ url: /^https:\/\//,
174
+ alphaNumeric: /^[a-zA-Z0-9]+$/
175
+ };
176
+
177
+ /* eslint-disable no-unused-vars */
178
+ var FormStatus;
179
+ (function (FormStatus) {
180
+ FormStatus["VALID"] = "VALID";
181
+ FormStatus["INVALID"] = "INVALID";
182
+ })(FormStatus || (FormStatus = {}));
183
+
184
+ class TenantPermissionsService {
185
+ /**
186
+ * Returns access provision for the passed action/feature based on whether the signed in user has appropriate permission.
187
+ * @param {PermissionType} permission
188
+ * @param {TenantsPermission[]} tenantsPermissions
189
+ * @return {boolean}
190
+ * @memberof TenantPermissionsService
191
+ */
192
+ validateAccessPermission(permission, userTenantsPermissions) {
193
+ const isPermitted = userTenantsPermissions && userTenantsPermissions.length
194
+ ? userTenantsPermissions?.some(({ permissionType }) => permissionType === permission)
195
+ : false;
196
+ return isPermitted;
197
+ }
198
+ /**
199
+ * Filters signed in user tenants permissions from entire tenants permissions.
200
+ * @param { UserPermission[] }
201
+ * @return {TenantsPermissions[]}
202
+ * @memberof TenantPermissionsService
203
+ */
204
+ filterTenantsPermissions(userPermissions, tenantsPermissions) {
205
+ const userTenantsPermission = tenantsPermissions?.filter((permission) => {
206
+ return userPermissions?.find(({ permissionId }) => permission?.permissionId === permissionId);
207
+ });
208
+ return userTenantsPermission;
209
+ }
210
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantPermissionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
211
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantPermissionsService, providedIn: 'root' }); }
212
+ }
213
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantPermissionsService, decorators: [{
214
+ type: Injectable,
215
+ args: [{
216
+ providedIn: 'root',
217
+ }]
218
+ }] });
219
+
220
+ /* eslint-disable no-unused-vars */
221
+ var PermissionType;
222
+ (function (PermissionType) {
223
+ PermissionType["VIEW_TENANTS"] = "VIEW_TENANTS";
224
+ PermissionType["CREATE_TENANT"] = "CREATE_TENANT";
225
+ })(PermissionType || (PermissionType = {}));
226
+ var TenantStatus;
227
+ (function (TenantStatus) {
228
+ TenantStatus["ACTIVE"] = "Active";
229
+ TenantStatus["INACTIVE"] = "Inactive";
230
+ })(TenantStatus || (TenantStatus = {}));
231
+
232
+ class TenantPermissionsMapService {
233
+ constructor() {
234
+ this.globalTenantsPermissions = [
235
+ {
236
+ permissionType: PermissionType.VIEW_TENANTS,
237
+ permissionName: 'View Tenant Applications',
238
+ permissionId: 'PERM_SAAPPS_1a2dbbb5-5fe1-4261-85b1-a5373f41075a',
239
+ },
240
+ ];
241
+ }
242
+ /**
243
+ * Returns global permissions mapping for tenants.
244
+ * @return {TenantsPermissions[]}
245
+ * @memberof TenantsPermissionsMapService
246
+ */
247
+ getGlobalTenantsPermissions() {
248
+ return this.globalTenantsPermissions;
249
+ }
250
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantPermissionsMapService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
251
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantPermissionsMapService, providedIn: 'root' }); }
252
+ }
253
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantPermissionsMapService, decorators: [{
254
+ type: Injectable,
255
+ args: [{
256
+ providedIn: 'root',
257
+ }]
258
+ }] });
259
+
260
+ /* eslint-disable @typescript-eslint/no-unused-vars */
261
+ class TenantApplicationsService {
262
+ constructor(
263
+ // eslint-disable-next-line no-unused-vars
264
+ httpService,
265
+ // eslint-disable-next-line no-unused-vars
266
+ tenantPermissionsService,
267
+ // eslint-disable-next-line no-unused-vars
268
+ tenantPermissionsMapService // eslint-disable-next-line no-empty-function
269
+ ) {
270
+ this.httpService = httpService;
271
+ this.tenantPermissionsService = tenantPermissionsService;
272
+ this.tenantPermissionsMapService = tenantPermissionsMapService;
273
+ this.tenantsText = errors;
274
+ this.createTenantsText = createTenant?.errors;
275
+ this.radioOptions = [];
276
+ this.checkBoxOptions = [];
277
+ }
278
+ setAppConfig(apiBaseUrl, userPermission) {
279
+ this.apiBaseUrl = apiBaseUrl;
280
+ this.userPermission = userPermission;
281
+ }
282
+ /**
283
+ * Sets the user tenants permissions
284
+ * @param {TenantsPermissions[]} TenantsPermissions
285
+ * @memberof TenantApplicationsService
286
+ */
287
+ setUserTenantsPermissions(userTenantsPermissions) {
288
+ this.userTenantsPermissions = userTenantsPermissions;
289
+ }
290
+ /**
291
+ * Returns the user tenants permissions
292
+ * @return {TenantsPermissions[]}
293
+ * @memberof TenantApplicationsService
294
+ */
295
+ getUserTenantsPermissions() {
296
+ return this.userTenantsPermissions;
297
+ }
298
+ /**
299
+ * Sets the user tenants information
300
+ * @param {TenantInfo} tenantInfo
301
+ * @memberof TenantApplicationsService
302
+ */
303
+ setSelectedTenantInformation(tenantInfo) {
304
+ this.selectedTenantInfo = tenantInfo;
305
+ }
306
+ /**
307
+ * Returns the tenants information
308
+ * @return {TenantInfo}
309
+ * @memberof TenantApplicationsService
310
+ */
311
+ getSelectedTenantInformation() {
312
+ return this.selectedTenantInfo;
313
+ }
314
+ /**
315
+ * Filter permissions
316
+ * @param usersPermissions
317
+ * @returns @memberof TenantApplicationsService
318
+ */
319
+ filterPermission(usersPermissions) {
320
+ return this.tenantPermissionsService?.filterTenantsPermissions(usersPermissions, this.tenantPermissionsMapService?.getGlobalTenantsPermissions());
321
+ }
322
+ /**
323
+ * Validating access for tenants
324
+ * @param permissionType Permission Type to validate permission
325
+ * @param mappedUserPermissions Permission which are mapped with tenants
326
+ * @returns true if permission is granted
327
+ */
328
+ validateAccess(permissionType, permissions) {
329
+ return this.tenantPermissionsService.validateAccessPermission(permissionType, permissions);
330
+ }
331
+ /**
332
+ * Gets the tenants.
333
+ * @param {GetTenantsPayload} payload
334
+ * @return {Observable<GetTenantsResponse>}
335
+ * @memberof TenantApplicationsService
336
+ */
337
+ getTenantsList(payload) {
338
+ return this.httpService
339
+ .postData(`${this.apiBaseUrl}/configurations/config/application`, payload)
340
+ .pipe(map((response) => {
341
+ return response;
342
+ }), catchError((error) => {
343
+ throw error;
344
+ }));
345
+ }
346
+ /**
347
+ * Gets list of features from server using HttpService.
348
+ * @return {Observable<GetFeaturesResponse>}
349
+ * @memberof TenantApplicationsService
350
+ */
351
+ getFeatures() {
352
+ return this.httpService
353
+ .getData(`${this.apiBaseUrl}/configurations/config/features`)
354
+ .pipe(map((response) => {
355
+ return response;
356
+ }), catchError((error) => {
357
+ throw error;
358
+ }));
359
+ }
360
+ /**
361
+ * Gets list of application types from server using HttpService.
362
+ * @return {Observable<GetAppTypesResponse>}
363
+ * @memberof TenantApplicationsService
364
+ */
365
+ getApplicationTypes() {
366
+ return this.httpService
367
+ .getData(`${this.apiBaseUrl}/configurations/config/app_type`)
368
+ .pipe(map((response) => {
369
+ return response;
370
+ }), catchError((error) => {
371
+ throw error;
372
+ }));
373
+ }
374
+ /**
375
+ * Posts tenant application form data to server using HttpService for creating new tenant application.
376
+ * @param {CreateTenantPayload} createTenantPayload
377
+ * @return {Observable<CreateTenantResponse>}
378
+ * @memberof TenantApplicationsService
379
+ */
380
+ createTenant(createTenantPayload) {
381
+ return this.httpService
382
+ .postData(`${this.apiBaseUrl}/configurations/config/createTenant`, createTenantPayload)
383
+ .pipe(map((response) => {
384
+ return response;
385
+ }), catchError((error) => {
386
+ throw error;
387
+ }));
388
+ }
389
+ /**
390
+ * Constructs the checkbox options from features list from server.
391
+ * @param {FeaturesList[]} features
392
+ * @returns {CheckboxOption[]}
393
+ */
394
+ getFeatureOptions(features) {
395
+ this.checkBoxOptions = [];
396
+ features?.forEach((feature) => {
397
+ this.checkBoxOptions?.push({
398
+ id: feature?.featureId,
399
+ name: feature?.featureName,
400
+ checked: feature?.isDefault,
401
+ disabled: feature?.isDefault,
402
+ });
403
+ });
404
+ return this.checkBoxOptions;
405
+ }
406
+ /**
407
+ * Constructs the radio options from application types from server.
408
+ * @param {AppTypeConfig[]} appTypeOptions
409
+ * @returns {RadioOption[]}
410
+ */
411
+ getApplicationTypeOptions(appTypeOptions) {
412
+ this.radioOptions = [];
413
+ appTypeOptions?.forEach((appType) => {
414
+ this.radioOptions?.push({
415
+ id: appType?.configFieldId,
416
+ label: appType?.configFieldValue?.type,
417
+ });
418
+ });
419
+ return this.radioOptions;
420
+ }
421
+ /**
422
+ * Constructs the selected features id's.
423
+ * @param {boolean[]} featureSelectionValues
424
+ * @returns {FeatureId[]}
425
+ */
426
+ getFeatureIds(featureSelectionValues) {
427
+ const featureIds = [];
428
+ featureSelectionValues?.forEach((featureValue, index) => {
429
+ if (featureValue) {
430
+ featureIds.push({
431
+ featureId: this.checkBoxOptions[index]?.id,
432
+ });
433
+ }
434
+ });
435
+ return featureIds;
436
+ }
437
+ /**
438
+ * Sets the tenant basic information.
439
+ * @param {CreateTenantRequestPayload} createTenantPayload
440
+ */
441
+ setTenantBasicInfo(createTenantPayload) {
442
+ this.tenantBasicInfo = createTenantPayload?.payload;
443
+ }
444
+ /**
445
+ * Returns the tenant basic information.
446
+ */
447
+ get getTenantBasicInfo() {
448
+ return this.tenantBasicInfo;
449
+ }
450
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsService, deps: [{ token: i1.HttpService }, { token: TenantPermissionsService }, { token: TenantPermissionsMapService }], target: i0.ɵɵFactoryTarget.Injectable }); }
451
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsService, providedIn: 'root' }); }
452
+ }
453
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsService, decorators: [{
454
+ type: Injectable,
455
+ args: [{
456
+ providedIn: 'root',
457
+ }]
458
+ }], ctorParameters: function () { return [{ type: i1.HttpService }, { type: TenantPermissionsService }, { type: TenantPermissionsMapService }]; } });
459
+
460
+ class CreateTenantApplicationComponent {
461
+ constructor(
462
+ // eslint-disable-next-line no-unused-vars
463
+ fileUploadService,
464
+ // eslint-disable-next-line no-unused-vars
465
+ tenantAppService,
466
+ // eslint-disable-next-line no-unused-vars
467
+ sharedService // eslint-disable-next-line no-empty-function
468
+ ) {
469
+ this.fileUploadService = fileUploadService;
470
+ this.tenantAppService = tenantAppService;
471
+ this.sharedService = sharedService;
472
+ this.destroy$ = new Subject();
473
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
474
+ this.constants = screenTexts;
475
+ this.createTenantTexts = this.constants?.createTenant;
476
+ this.leftButtonLabel = this.createTenantTexts?.label?.leftButtonLabel;
477
+ this.rightButtonLabel = this.createTenantTexts?.label?.rightButtonLabel;
478
+ this.colWidth = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };
479
+ this.actionButtonAlign = AlignType.LEFT;
480
+ this.submitFormResponse = new EventEmitter();
481
+ this.formCancel = new EventEmitter();
482
+ this.allowedFileTypes = [
483
+ AllowedFileTypes.JPG,
484
+ AllowedFileTypes.PNG,
485
+ AllowedFileTypes.SVG,
486
+ ];
487
+ }
488
+ ngOnInit() {
489
+ this.getFeatures();
490
+ }
491
+ /**
492
+ * Gets the list of features and updates the form control.
493
+ * @memberof CreateTenantApplicationComponent
494
+ */
495
+ getFeatures() {
496
+ this.tenantAppService
497
+ .getFeatures()
498
+ .pipe(takeUntil(this.destroy$))
499
+ .subscribe({
500
+ next: (response) => {
501
+ if (response?.status) {
502
+ this.featuresOptions = this.tenantAppService.getFeatureOptions(response?.body);
503
+ this.getApplicationTypes();
504
+ }
505
+ },
506
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
507
+ error: (error) => {
508
+ this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
509
+ },
510
+ });
511
+ }
512
+ /**
513
+ * Gets the application/tenant types and updates the form control.
514
+ * @memberof CreateTenantApplicationComponent
515
+ */
516
+ getApplicationTypes() {
517
+ this.tenantAppService
518
+ .getApplicationTypes()
519
+ .pipe(takeUntil(this.destroy$))
520
+ .subscribe({
521
+ next: (response) => {
522
+ if (response?.status) {
523
+ this.appTypeOptions =
524
+ this.tenantAppService.getApplicationTypeOptions(response?.body);
525
+ this.initializeCreateTenantFormGroup();
526
+ }
527
+ },
528
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
529
+ error: (error) => {
530
+ this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
531
+ },
532
+ });
533
+ }
534
+ /**
535
+ * Initialize the create tenant form group array.
536
+ * @memberof CreateTenantApplicationComponent
537
+ */
538
+ initializeCreateTenantFormGroup() {
539
+ this.createTenantFormGroup = {
540
+ formGroup: [
541
+ {
542
+ legend: '',
543
+ controls: [
544
+ {
545
+ type: FormControlType.INPUT,
546
+ label: this.createTenantTexts?.label?.appTitle + '*',
547
+ controlName: 'appTitle',
548
+ value: '',
549
+ validation: [
550
+ Validators.required,
551
+ Validators.maxLength(TenantsValidationPatterns.appTitleMaxLength),
552
+ ],
553
+ supportMessage: this.createTenantTexts?.supportText?.appTitle,
554
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
555
+ maxErrorMessage: this.createTenantTexts?.message?.error?.limit?.appTitleMaxChars,
556
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appTitle,
557
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appTitle,
558
+ },
559
+ {
560
+ type: FormControlType.INPUT,
561
+ label: this.createTenantTexts?.label?.appId + '*',
562
+ controlName: 'appId',
563
+ value: '',
564
+ validation: [
565
+ Validators.required,
566
+ Validators.maxLength(TenantsValidationPatterns.appIdMaxLength),
567
+ Validators.pattern(TenantsValidationPatterns.alphaNumeric),
568
+ ],
569
+ supportMessage: this.createTenantTexts?.supportText?.appId,
570
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
571
+ maxErrorMessage: this.createTenantTexts?.message?.error?.limit?.appIdMaxChars,
572
+ patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.appId,
573
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appId,
574
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appId,
575
+ },
576
+ {
577
+ type: FormControlType?.FILE_UPLOAD,
578
+ label: this.createTenantTexts?.label?.appLogo + '*',
579
+ controlName: 'appLogo',
580
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
581
+ value: '',
582
+ placeholder: '',
583
+ supportMessage: this.createTenantTexts?.supportText?.appLogo,
584
+ validation: [Validators.required],
585
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appLogo,
586
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appLogo,
587
+ isMultiFileUpload: false,
588
+ maxUploadFileSize: 2,
589
+ maxFileSizeErrorMessage: this.createTenantTexts?.message?.error?.limit?.appLogoMaxSize,
590
+ allowedFileTypeErrorMessage: this.createTenantTexts?.message?.error?.invalidFile,
591
+ allowedFileTypes: this.allowedFileTypes,
592
+ },
593
+ {
594
+ type: FormControlType.INPUT,
595
+ label: this.createTenantTexts?.label?.appHeading + '*',
596
+ controlName: 'appHeading',
597
+ value: '',
598
+ validation: [
599
+ Validators.required,
600
+ Validators.maxLength(TenantsValidationPatterns.appHeadingMaxLength),
601
+ ],
602
+ supportMessage: this.createTenantTexts?.supportText?.appHeading,
603
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
604
+ maxErrorMessage: this.createTenantTexts?.message?.error?.limit
605
+ ?.appHeadingMaxChars,
606
+ patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.email,
607
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHeading,
608
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appHeading,
609
+ },
610
+ {
611
+ type: FormControlType.TEXT_AREA,
612
+ label: this.createTenantTexts?.label?.appDescription + '*',
613
+ controlName: 'appDescription',
614
+ value: '',
615
+ validation: [
616
+ Validators.required,
617
+ Validators.maxLength(TenantsValidationPatterns.appDescriptionMaxLength),
618
+ ],
619
+ supportMessage: this.createTenantTexts?.supportText?.appDescription,
620
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
621
+ maxErrorMessage: this.createTenantTexts?.message?.error?.limit
622
+ ?.appDescriptionMaxChars,
623
+ maxCharCount: TenantsValidationPatterns.appDescriptionMaxLength,
624
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appDescription,
625
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById
626
+ ?.appDescription,
627
+ ariaMultiline: true,
628
+ isResize: true,
629
+ },
630
+ {
631
+ type: FormControlType.COLOR_PICKER,
632
+ label: this.createTenantTexts?.label?.appBgColor + '*',
633
+ controlName: 'backgroundColor',
634
+ value: '',
635
+ placeholder: '',
636
+ supportMessage: this.createTenantTexts?.supportText?.appBgColor,
637
+ validation: [Validators.required, validColorValidator()],
638
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
639
+ invalidColorErrorMessage: this.createTenantTexts?.message?.error?.invalidColor,
640
+ ariaLabel: this.createTenantTexts?.supportText?.appBgColor,
641
+ ariaDescribedById: this.createTenantTexts?.supportText?.appBgColor,
642
+ },
643
+ {
644
+ type: FormControlType.INPUT,
645
+ label: this.createTenantTexts?.label?.appHelpLink + '*',
646
+ controlName: 'appHelpLink',
647
+ value: '',
648
+ validation: [
649
+ Validators.required,
650
+ Validators.pattern(TenantsValidationPatterns.url),
651
+ ],
652
+ supportMessage: this.createTenantTexts?.supportText?.appHelpLink,
653
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
654
+ patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.appHelpLink,
655
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appHelpLink,
656
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appHelpLink,
657
+ },
658
+ {
659
+ type: FormControlType.CHECKBOX,
660
+ label: this.createTenantTexts?.label?.featuresList + '*',
661
+ controlName: 'features',
662
+ checkboxOptions: this.featuresOptions,
663
+ minSelectionRequired: 1,
664
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.featuresList,
665
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.featuresList,
666
+ supportMessage: this.createTenantTexts?.supportText?.featuresList,
667
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
668
+ validation: [Validators.required],
669
+ },
670
+ {
671
+ type: FormControlType.INPUT,
672
+ label: this.createTenantTexts?.label?.domainURL + '*',
673
+ controlName: 'appDomainUrl',
674
+ value: '',
675
+ validation: [
676
+ Validators.required,
677
+ Validators.pattern(TenantsValidationPatterns.url),
678
+ ],
679
+ supportMessage: this.createTenantTexts?.supportText?.domainURL,
680
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
681
+ patternErrorMessage: this.createTenantTexts?.message?.error?.pattern?.appDomainUrl,
682
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.domainURL,
683
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.domainURL,
684
+ },
685
+ {
686
+ type: FormControlType.RADIO,
687
+ label: this.createTenantTexts?.label?.appType + '*',
688
+ controlName: 'appType',
689
+ value: '',
690
+ radioOptions: this.appTypeOptions,
691
+ validation: [Validators.required],
692
+ requiredErrorMessage: this.createTenantTexts?.message?.error?.required,
693
+ ariaLabel: this.createTenantTexts?.label?.ariaLabel?.appType,
694
+ ariaDescribedById: this.createTenantTexts?.label?.ariaDescribedById?.appType,
695
+ },
696
+ ],
697
+ },
698
+ ],
699
+ };
700
+ }
701
+ /**
702
+ * Creates tenant on form submission.
703
+ * @param {FormGroup[]} form
704
+ * @memberof CreateTenantApplicationComponent
705
+ */
706
+ onCreateTenantFormSubmit(form) {
707
+ form[0]?.markAllAsTouched();
708
+ if (form[0].status === FormStatus.VALID) {
709
+ this.createTenantPayload = this.getCreateTenantPayload(form[0].getRawValue());
710
+ if (this.file)
711
+ this.getFileUploadPresignedUrl(this.file);
712
+ }
713
+ }
714
+ /**
715
+ * Constructs create tenant payload from the form data and returns.
716
+ * @param {*} formData
717
+ * @return {CreateTenantRequestPayload}
718
+ * @memberof CreateTenantApplicationComponent
719
+ */
720
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
721
+ getCreateTenantPayload(formData) {
722
+ const payload = {
723
+ payload: {
724
+ appTitle: formData?.appTitle,
725
+ appId: formData?.appId,
726
+ appHeading: formData?.appHeading,
727
+ appDescription: formData?.appDescription,
728
+ backgroundColor: formData?.backgroundColor,
729
+ appLogo: formData?.appLogo,
730
+ appDomainUrl: formData?.appDomainUrl,
731
+ appHelpLink: formData?.appHelpLink,
732
+ appType: this.selectedAppTypeOption?.id,
733
+ features: this.tenantAppService.getFeatureIds(formData?.features),
734
+ },
735
+ };
736
+ return payload;
737
+ }
738
+ /**
739
+ * Gets create tenant form group reference and disables default features.
740
+ * @param {FormGroup[]} form
741
+ * @memberof CreateTenantApplicationComponent
742
+ */
743
+ getCreateTenantFormGroupRef(form) {
744
+ this.createTenantFormGroupRef = form[0];
745
+ const featuresFormArray = this.createTenantFormGroupRef?.controls['features'];
746
+ this.featuresOptions?.forEach((option, index) => {
747
+ if (option?.disabled) {
748
+ featuresFormArray?.at(index).disable();
749
+ }
750
+ });
751
+ }
752
+ /**
753
+ * Updates createTenantFormGroupRef on add tenant form change event.
754
+ * @param {FormGroup[]} form
755
+ * @memberof CreateTenantApplicationComponent
756
+ */
757
+ onCreateTenantFormChange(form) {
758
+ this.createTenantFormGroupRef = form[0];
759
+ }
760
+ /**
761
+ * Emits form cancel event.
762
+ * @memberof CreateTenantApplicationComponent
763
+ */
764
+ onFormCancel() {
765
+ this.formCancel.emit();
766
+ }
767
+ /**
768
+ * Gets the selected file when the file is browsed and on formFileUpload event is triggered.
769
+ * @param {File | FileList} file
770
+ */
771
+ onFormFileUpload(file) {
772
+ this.file = file;
773
+ }
774
+ /**
775
+ * Gets pre-signed URL to upload the selected file to AWS S3 bucket.
776
+ * @param {File | FileList} file
777
+ */
778
+ getFileUploadPresignedUrl(file) {
779
+ this.fileUploadService
780
+ .getFileUploadPresignedUrl(file)
781
+ .pipe(takeUntil(this.destroy$))
782
+ .subscribe({
783
+ next: (response) => {
784
+ this.fileUploadPresignedUrl = response?.body;
785
+ if (this.fileUploadPresignedUrl)
786
+ this.uploadFileToS3(file);
787
+ },
788
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-empty-function, no-empty-function
789
+ error: (error) => {
790
+ this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
791
+ },
792
+ });
793
+ }
794
+ /**
795
+ * Uploads the file to AWS S3 bucket and submit the form data to API to create new tenant.
796
+ * @param {File | FileList} file
797
+ */
798
+ uploadFileToS3(file) {
799
+ this.fileUploadService
800
+ .uploadFileToS3(this.fileUploadPresignedUrl, file)
801
+ .pipe(takeUntil(this.destroy$))
802
+ .subscribe({
803
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
804
+ next: (response) => {
805
+ this.fileUploadService.setFileUploadStatus(true);
806
+ this.tenantAppService
807
+ .createTenant(this.createTenantPayload)
808
+ .pipe(takeUntil(this.destroy$))
809
+ .subscribe({
810
+ next: (response) => {
811
+ if (response.status) {
812
+ this.tenantAppService.setTenantBasicInfo(this.createTenantPayload);
813
+ this.submitFormResponse.emit(response);
814
+ }
815
+ },
816
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
817
+ error: (error) => {
818
+ this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
819
+ },
820
+ });
821
+ },
822
+ // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any
823
+ error: (error) => {
824
+ this.fileUploadService.setFileUploadStatus(false);
825
+ this.sharedService.handleErrors(error, this.createTenantTexts?.errors);
826
+ },
827
+ });
828
+ }
829
+ /**
830
+ * Triggers when the color picker values has been changed.
831
+ * @param {string} color
832
+ */
833
+ onColorPickerChange(color) {
834
+ this.selectedColor = color;
835
+ }
836
+ /**
837
+ * Triggers when the radio option has been changed.
838
+ * @param {RadioOption} radioOption
839
+ */
840
+ onRadioOptionSelected(radioOption) {
841
+ this.selectedAppTypeOption = radioOption;
842
+ }
843
+ /**
844
+ * Implementation of ngOnDestroy lifecycle hook method to unsubscribe the open observable subscriptions.
845
+ * @memberof CreateTenantApplicationComponent
846
+ */
847
+ ngOnDestroy() {
848
+ this.destroy$.next(true);
849
+ this.destroy$.unsubscribe();
850
+ }
851
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateTenantApplicationComponent, deps: [{ token: i1$1.FileUploadService }, { token: TenantApplicationsService }, { token: i3.SharedService }], target: i0.ɵɵFactoryTarget.Component }); }
852
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: CreateTenantApplicationComponent, isStandalone: true, selector: "ieeesa-create-tenant-application", outputs: { submitFormResponse: "submitFormResponse", formCancel: "formCancel" }, viewQueries: [{ propertyName: "dynamicFormComponent", first: true, predicate: DynamicFormComponent, descendants: true }], ngImport: i0, template: "<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-create-tenant{max-width:50vw!important}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal-title{margin-left:15px!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:.5em;padding:2em 1em .75em;margin-top:2em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding-top:0!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__content,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label{color:#49454f}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label{padding-left:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__resize{resize:vertical}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:90%}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-flex{width:62.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field .mat-mdc-form-field{display:flex;min-height:40px}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field .mat-mdc-text-field-wrapper{padding:.5em 1em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__label,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__support-text{color:#49454f}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-form-error--text{padding:.25em 1em 0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__content{position:relative;bottom:10px}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__icon--warning{position:relative;bottom:6px}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:100%}}.ieeesa-color-picker .preview .circle.colornull{background:linear-gradient(135deg,#ecececb3 0% 45%,#f4f3f3 50%,#ecececb3 55% 100%)!important}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i4.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: DynamicFormComponent, selector: "ieeesa-dynamic-form", inputs: ["formGroups", "submitResponse", "searchResponse", "colWidth", "isLegendVisible", "rightButtonLabel", "leftButtonLabel", "isSubmitButtonDisabled", "isLeftButtonDisabled", "isLeftButtonNeeded", "actionButtonAlign"], outputs: ["formSubmit", "formChange", "formInput", "formLeftButtonClicked", "formSearchApply", "formGroupsReference", "dropdownChange", "formCheckboxSelection", "formDateSelected", "formSelectSearch", "formControlChange", "formAutoCompleteSearch", "formAutoCompleteClearSearchValue", "autoCompleteOptionSelected", "formAfterContentInit", "formSelectedDateRange", "addFormGroup", "formTimeSelected", "supportTextLinkClick", "formSlideToggleChange", "formFileUpload", "dropdownOpenedChange", "formColorPickerChange", "formRadioOptionSelected"], exportAs: ["dynamicForm"] }], encapsulation: i0.ViewEncapsulation.None }); }
853
+ }
854
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: CreateTenantApplicationComponent, decorators: [{
855
+ type: Component,
856
+ args: [{ selector: 'ieeesa-create-tenant-application', standalone: true, imports: [CommonModule, DynamicFormComponent], encapsulation: ViewEncapsulation.None, template: "<ieeesa-dynamic-form\r\n *ngIf=\"createTenantFormGroup\"\r\n class=\"ieeesa-create-tenant-form\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"false\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"createTenantFormGroup\"\r\n [isLeftButtonNeeded]=\"true\"\r\n (formSubmit)=\"onCreateTenantFormSubmit($event)\"\r\n (formChange)=\"onCreateTenantFormChange($event)\"\r\n (formLeftButtonClicked)=\"onFormCancel()\"\r\n (formGroupsReference)=\"getCreateTenantFormGroupRef($event)\"\r\n (formFileUpload)=\"onFormFileUpload($event)\"\r\n (formColorPickerChange)=\"onColorPickerChange($event)\"\r\n (formRadioOptionSelected)=\"onRadioOptionSelected($event)\"\r\n></ieeesa-dynamic-form>\r\n", styles: [".ieeesa-subtitle{text-align:left;font-family:Calibri Regular;font-size:1.5625rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-body{text-align:left;font-family:Calibri Regular;font-size:1.25rem;letter-spacing:0;color:#000;opacity:1}.ieeesa-display-lg-57{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:3.5625rem;line-height:64px;color:#000;letter-spacing:0}.ieeesa-display-md-45{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.813rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-md-47{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.9375rem;line-height:52px;color:#000;letter-spacing:0}.ieeesa-display-sm-38{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.375rem;line-height:44px;color:#000;letter-spacing:0}.ieeesa-headline-lg-32{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-lg-34{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:2.125rem;line-height:40px;color:#000;letter-spacing:0}.ieeesa-headline-md-30{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.875rem;line-height:36px;color:#000;letter-spacing:0}.ieeesa-headline-sm-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:32px;color:#00629b;letter-spacing:0}.ieeesa-headline-sm-26{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.625rem;line-height:32px;color:#000;letter-spacing:0}.ieeesa-title-lg-bold-24{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-lg-24{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.5rem;line-height:28px;color:#000;letter-spacing:0}.ieeesa-title-md-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.009375em}.ieeesa-title-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-title-sm-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-label-lg-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.ieeesa-btn-label-lg-bold-16{font-family:Calibri Regular;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#00629b;letter-spacing:.00625em}.ieeesa-label-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-label-sm-13{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.8125rem;line-height:16px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-16{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-bold-18{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-lg-18{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1.125rem;line-height:24px;color:#000;letter-spacing:.03125em}.ieeesa-body-md-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:20px;color:#1c1b1f;letter-spacing:.015625em}.ieeesa-body-md-16{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:20px;color:#000;letter-spacing:.015625em}.ieeesa-body-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-body-color-sm-14{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:.875rem;line-height:18px;color:#49454f;letter-spacing:.025em}.ieeesa-body-sm-bold-14{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:.875rem;line-height:16px;color:#000;letter-spacing:.025em}.ieeesa-title-inter-lg-bold-24{font-family:Inter Bold;font-style:normal;font-weight:700;font-size:1.5rem;line-height:29px;color:#000;letter-spacing:0}.mat-mdc-button.mat-mdc-button-base.mat-primary-button,.mat-mdc-button.mat-mdc-button-base.mat-secondary-button,.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button,.mat-mdc-button.mat-mdc-button-base.mat-text-button{min-width:103px;width:auto;min-height:40px;height:auto;border-radius:3px;text-align:center;padding:.625em 1.5em;border:none;font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#000;letter-spacing:.00625em}.mat-mdc-button.mat-mdc-button-base>.mat-icon{margin-right:11px}.mat-mdc-button.mat-mdc-button-base.mat-primary-button{background-color:#00629b;color:#fff}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:hover{background-color:#003e65}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:active{background-color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-primary-button:disabled{background-color:#1c1b1f1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button{color:#fff;background:#a7a8aa;box-shadow:0 1px 2px #0000004d,0 2px 6px 2px #00000026}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:hover{background:#a7a8aa}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:active{background:#1d192b1f}.mat-mdc-button.mat-mdc-button-base.mat-secondary-button:disabled{background:#1c1b1f1f;color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button{background-color:#fff;border:1px solid #00629b;color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:hover{background-color:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:active{background:#6750a41f}.mat-mdc-button.mat-mdc-button-base.mat-tertiary-button:disabled{border:1px solid rgba(28,27,31,.12);color:#1c1b1f;opacity:.38}.mat-mdc-button.mat-mdc-button-base.mat-text-button{color:#00629b}.mat-mdc-button.mat-mdc-button-base.mat-text-button:hover,.mat-mdc-button.mat-mdc-button-base.mat-text-button:active{background:#6750a414}.mat-mdc-button.mat-mdc-button-base.mat-text-button:disabled{color:#1c1b1f;opacity:.38}.ieeesa-text-button{color:#cac4d0;background:none;border:none}.ieeesa-view-more-or-less-button{border:none;background:none;text-decoration:underline;color:#00629b}.flex-align-center{display:flex;align-items:center;justify-content:center}.mat-button-toggle-checked{background-color:#a7a8aa}.mat-button-toggle-checked .mat-button-toggle-label-content:before{font-family:\"Font Awesome 5 Free\";font-weight:900;content:\"\\f00c\";padding-right:.5625em}.mat-button-toggle-group .mat-button-toggle-label-content{font-family:Calibri Bold;font-style:normal;font-weight:700;font-size:1rem;line-height:20px;color:#1c1b1f;letter-spacing:.00625em}.no-bg-color-btn{color:#00629b;border-radius:3px;border:1px solid #00629b;min-height:40px;height:auto}@media (max-width: 768px){.mat-button-toggle-group .mat-button-toggle-label-content{max-width:8ch;text-overflow:ellipsis;white-space:nowrap;overflow:hidden;position:relative}}.cdk-overlay-pane .mat-mdc-tooltip .mdc-tooltip__surface{color:#525252;padding:6px 12px;font-family:Calibri Regular;font-size:1rem;border:1px solid #cac4d0;background:#fff;box-shadow:0 4px 8px #00000040;max-width:unset!important}.cdk-overlay-pane .mat-mdc-option .mdc-list-item__primary-text{font-family:Calibri Regular!important}.cdk-overlay-pane.ieeesa-modal-confirm-dialog,.cdk-overlay-pane.ieeesa-modal-dialog,.cdk-overlay-pane.ieeesa-alert-dialog{width:100%;min-width:312px}.mat-mdc-form-field{font-family:Calibri Regular;font-style:normal;font-weight:400;font-size:1rem;line-height:24px;color:#49454f;letter-spacing:.03125em}.ieeesa-modal-dialog.ieeesa-create-tenant{max-width:50vw!important}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-container{box-shadow:none}.ieeesa-modal-dialog.ieeesa-create-tenant .mat-mdc-dialog-surface{border-radius:0;margin:1em 0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal{box-shadow:0 3px #11b7e5 inset,0 4px 24px #00000080;padding-bottom:.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-dialog-content{padding:1.5em 1em .75em!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal-title{margin-left:15px!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__actions{flex-direction:row-reverse;gap:.5em;padding:2em 1em .75em;margin-top:2em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field{margin-bottom:1em;padding-top:0!important}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__content,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label{color:#49454f}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field .mdc-label{padding-left:0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field .ieeesa-text-area-field__resize{resize:vertical}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:90%}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-flex{width:62.5em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field .mat-mdc-form-field{display:flex;min-height:40px}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field .mat-mdc-text-field-wrapper{padding:.5em 1em}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__label,.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__support-text{color:#49454f}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-form-error--text{padding:.25em 1em 0}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .mat-mdc-form-field-subscript-wrapper{display:none}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__content{position:relative;bottom:10px}.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-input-field__icon--warning{position:relative;bottom:6px}@media (max-width: 767px){.ieeesa-modal-dialog.ieeesa-create-tenant .ieeesa-modal .ieeesa-dynamic-form__form-field:not(.app-description,.app-logo){width:100%}}.ieeesa-color-picker .preview .circle.colornull{background:linear-gradient(135deg,#ecececb3 0% 45%,#f4f3f3 50%,#ecececb3 55% 100%)!important}\n"] }]
857
+ }], ctorParameters: function () { return [{ type: i1$1.FileUploadService }, { type: TenantApplicationsService }, { type: i3.SharedService }]; }, propDecorators: { dynamicFormComponent: [{
858
+ type: ViewChild,
859
+ args: [DynamicFormComponent]
860
+ }], submitFormResponse: [{
861
+ type: Output
862
+ }], formCancel: [{
863
+ type: Output
864
+ }] } });
865
+
866
+ /* eslint-disable no-empty-function */
867
+ class TenantApplicationsComponent {
868
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
869
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.2.12", type: TenantApplicationsComponent, isStandalone: true, selector: "ieeesa-tenant-applications", ngImport: i0, template: "", styles: [""], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "ngmodule", type: MatButtonModule }] }); }
870
+ }
871
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsComponent, decorators: [{
872
+ type: Component,
873
+ args: [{ selector: 'ieeesa-tenant-applications', standalone: true, imports: [CommonModule, MatButtonModule], template: "" }]
874
+ }] });
875
+
876
+ /* eslint-disable no-unused-vars */
877
+ var AppType;
878
+ (function (AppType) {
879
+ AppType["GENERIC"] = "Generic";
880
+ AppType["STANDALONE"] = "Standalone";
881
+ })(AppType || (AppType = {}));
882
+
883
+ class TenantApplicationsModule {
884
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
885
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsModule }); }
886
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsModule }); }
887
+ }
888
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImport: i0, type: TenantApplicationsModule, decorators: [{
889
+ type: NgModule,
890
+ args: [{
891
+ declarations: [],
892
+ imports: [],
893
+ exports: [],
894
+ }]
895
+ }] });
896
+
897
+ /*
898
+ * Public API Surface of tenants
899
+ */
900
+
901
+ /**
902
+ * Generated bundle index. Do not edit.
903
+ */
904
+
905
+ export { AppType, CreateTenantApplicationComponent, FormStatus, TenantApplicationsComponent, TenantApplicationsModule, TenantApplicationsService, TenantsValidationPatterns };
906
+ //# sourceMappingURL=ieeesa-npm-tenants.mjs.map