@ieeesa-npm/groups 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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ieeesa-npm-groups.mjs","sources":["../../../projects/groups/src/lib/assets/form-validations.ts","../../../projects/groups/src/lib/services/groups.service.ts","../../../projects/groups/src/lib/components/create-group/create-group.component.ts","../../../projects/groups/src/lib/components/create-group/create-group.component.html","../../../projects/groups/src/lib/models/group-function-type.model.ts","../../../projects/groups/src/lib/groups.component.ts","../../../projects/groups/src/lib/groups.component.html","../../../projects/groups/src/lib/groups.module.ts","../../../projects/groups/src/public-api.ts","../../../projects/groups/src/ieeesa-npm-groups.ts"],"sourcesContent":["/* eslint-disable no-useless-escape */\r\nexport const GroupsValidationPatterns = {\r\n // Group Name field regular expression, which accept Alpha Numeric, Special Characters (ASCII) and whitespace.\r\n groupName: /^[\\w\\s!\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]+$/,\r\n // Group Short Name field regular expression which accept letters, numbers and \".\",\",\" , \"/\", \"-\" , \"_\" characters.\r\n shortName: /^[a-zA-Z0-9.,\\/\\-_ ]+$/,\r\n // Group Scope field regular expression which accept Alpha Numeric, Special Characters and whitespace.\r\n groupScope: /^[\\w\\s!\"#$%&'()*+,-./:;<=>?@\\[\\]^_`{|}~]+$/,\r\n};","import { Injectable } from \"@angular/core\";\r\nimport {\r\n CreateGroupPayload,\r\n CreateGroupResponse,\r\n} from \"../models/create-group.model\";\r\nimport { HttpService } from \"@ieeesa-npm/utility\";\r\nimport { Observable, map, catchError } from \"rxjs\";\r\nimport { GroupTypeResponse } from \"../models/group-types.model\";\r\n\r\n/**\r\n * Groups service is an abstract layer and responsible for managing groups REST API calls.\r\n * @class GroupsService\r\n * @implements {OnDestroy}\r\n */\r\n@Injectable({\r\n providedIn: \"root\",\r\n})\r\nexport class GroupsService {\r\n apiBaseUrl!: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n userPermission: any;\r\n // eslint-disable-next-line no-empty-function, no-unused-vars\r\n constructor(private httpService: HttpService) {}\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n setAppConfig(apiBaseUrl: string, userPermission: any) {\r\n this.apiBaseUrl = apiBaseUrl;\r\n this.userPermission = userPermission;\r\n }\r\n\r\n /**\r\n * Gets application group types from API and returns it as an observable.\r\n * @return {Observable<GroupTypeResponse>} -It returns group types if success else error.\r\n * @memberof GroupsService\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n getGroupTypes(): Observable<GroupTypeResponse> {\r\n return this.httpService\r\n .getData(`${this.apiBaseUrl}/configurations/group_type`)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n\r\n /**\r\n * Posts create group form data to server using HttpService for creating new group.\r\n * @param {CreateGroupPayload} createGroupPayload -create group form data which includes group name, type, short name, scope.\r\n * @return {Observable<any>} -returns create group API response (success or error) as an observable.\r\n * @memberof GroupsService\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n createGroup(\r\n createGroupPayload: CreateGroupPayload\r\n ): Observable<CreateGroupResponse> {\r\n return this.httpService\r\n .postData(`${this.apiBaseUrl}/groups/create`, createGroupPayload)\r\n .pipe(\r\n map((response) => {\r\n return response;\r\n }),\r\n catchError((error) => {\r\n throw error;\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n EventEmitter,\r\n OnDestroy,\r\n OnInit,\r\n Output,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { CommonModule } from \"@angular/common\";\r\nimport { FormGroup, Validators } from \"@angular/forms\";\r\nimport {\r\n FormGrid,\r\n FormModel,\r\n SelectOption,\r\n DynamicFormComponent,\r\n FormControlType,\r\n AlignType,\r\n} from \"@ieeesa-npm/presentation\";\r\nimport {\r\n AlertsService,\r\n AlertType,\r\n GlobalErrorHandlerService,\r\n} from \"@ieeesa-npm/utility\";\r\nimport * as screenTexts from \"../../assets/constants.json\";\r\nimport { GroupsValidationPatterns } from \"../../assets/form-validations\";\r\nimport { CreateGroupPayload } from \"../../models/create-group.model\";\r\nimport { GroupsService } from \"../../services/groups.service\";\r\nimport { HttpErrorResponse } from \"@angular/common/http\";\r\nimport { MatDialogModule } from \"@angular/material/dialog\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport { GroupType } from \"../../models/group-types.model\";\r\n\r\n/**\r\n * CreateGroupComponent uses DynamicFormComponent to build create new group form and implement the functionalities of submission of form and handling success and error scenarios.\r\n * @class CreateGroupComponent\r\n * @implements {OnInit}\r\n * @implements {OnDestroy}\r\n */\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"ieeesa-create-group\",\r\n standalone: true,\r\n imports: [CommonModule, DynamicFormComponent, MatDialogModule],\r\n templateUrl: \"./create-group.component.html\",\r\n styleUrls: [\"./create-group.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [AlertsService],\r\n})\r\nexport class CreateGroupComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n /**\r\n * Event emitted when the form is successfully submitted.\r\n * @memberof CreateGroupComponent\r\n */\r\n @Output() submitFormResponse = new EventEmitter();\r\n /**\r\n * Event emitted when the form is cancelled.\r\n * @memberof CreateGroupComponent\r\n */\r\n @Output() formCancel = new EventEmitter();\r\n createGroupText = screenTexts?.createGroup;\r\n leftButtonLabel = this.createGroupText?.label?.leftButtonLabel;\r\n rightButtonLabel = this.createGroupText?.label?.rightButtonLabel;\r\n isLegendVisible = false;\r\n isLeftButtonNeeded = true;\r\n colWidth: FormGrid = { xs: 12, xl: 12, sm: 12, md: 12, lg: 12 };\r\n formGroup!: FormModel;\r\n groupTypes!: SelectOption[];\r\n actionButtonAlign = AlignType.LEFT;\r\n form!: FormGroup;\r\n // eslint-disable-next-line no-unused-vars, no-empty-function\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n private groupsService: GroupsService,\r\n // eslint-disable-next-line no-unused-vars\r\n private globalErrorHandlerService: GlobalErrorHandlerService,\r\n // eslint-disable-next-line no-unused-vars\r\n public alertService: AlertsService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Initialize the create group form group array and component.\r\n * @return -returns nothing\r\n * @memberof CreateGroupComponent\r\n */\r\n ngOnInit(): void {\r\n this.groupsService\r\n .getGroupTypes()\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res) => {\r\n if (res?.status) {\r\n this.groupTypes = Object.entries(res.body.configFieldValue).map(\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n ([id, item]: [string, GroupType]) => ({\r\n id: id,\r\n name: item.name,\r\n })\r\n );\r\n if (this.groupTypes.length) {\r\n this.createFormGroup();\r\n }\r\n }\r\n },\r\n error: (error) => {\r\n if (error && error instanceof HttpErrorResponse) {\r\n this.globalErrorHandlerService.handleError(error);\r\n }\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Initialize the create group form group array.\r\n * @memberof CreateGroupComponent\r\n */\r\n createFormGroup(): void {\r\n this.formGroup = {\r\n formGroup: [\r\n {\r\n legend: \"\",\r\n controls: [\r\n {\r\n type: FormControlType.SELECT,\r\n label: this.createGroupText?.label?.groupType + \"*\",\r\n controlName: \"groupType\",\r\n requiredErrorMessage: this.createGroupText?.message?.error\r\n ?.required,\r\n value: \"\",\r\n validation: [Validators.required],\r\n dropdownOptions: this.groupTypes,\r\n supportMessage: this.createGroupText?.supportText?.groupType,\r\n ariaLabel: this.createGroupText?.label?.ariaLabel?.groupType,\r\n placeholder: \"\",\r\n ariaDescribedById: this.createGroupText?.label?.ariaDescribedById\r\n ?.groupType,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createGroupText?.label?.groupName + \"*\",\r\n controlName: \"groupName\",\r\n requiredErrorMessage: this.createGroupText?.message?.error\r\n ?.required,\r\n value: \"\",\r\n placeholder: \"\",\r\n supportMessage: this.createGroupText?.supportText?.groupName,\r\n patternErrorMessage: this.createGroupText?.message?.error?.pattern\r\n ?.groupName,\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n screenTexts?.createGroup?.characterLimit?.character500\r\n ),\r\n Validators.pattern(GroupsValidationPatterns.groupName),\r\n ],\r\n maxErrorMessage: this.createGroupText?.message?.error?.limit\r\n ?.groupName,\r\n ariaLabel: this.createGroupText?.label?.ariaLabel?.groupName,\r\n ariaDescribedById: this.createGroupText?.label?.ariaDescribedById\r\n ?.groupName,\r\n },\r\n {\r\n type: FormControlType.INPUT,\r\n label: this.createGroupText?.label?.shortName + \"*\",\r\n controlName: \"shortName\",\r\n requiredErrorMessage: this.createGroupText?.message?.error\r\n ?.required,\r\n value: \"\",\r\n patternErrorMessage: this.createGroupText?.message?.error?.pattern\r\n ?.shortName,\r\n placeholder: \"\",\r\n supportMessage: this.createGroupText?.supportText?.shortName,\r\n validation: [\r\n Validators.required,\r\n Validators.maxLength(\r\n screenTexts?.createGroup?.characterLimit?.character15\r\n ),\r\n Validators.pattern(GroupsValidationPatterns.shortName),\r\n ],\r\n maxErrorMessage: this.createGroupText?.message?.error?.limit\r\n ?.shortName,\r\n ariaLabel: this.createGroupText?.label?.ariaLabel?.shortName,\r\n ariaDescribedById: this.createGroupText?.label?.ariaDescribedById\r\n ?.shortName,\r\n },\r\n {\r\n type: FormControlType.TEXT_AREA,\r\n label: this.createGroupText?.label?.groupScope,\r\n controlName: \"groupScope\",\r\n patternErrorMessage: this.createGroupText?.message?.error?.pattern\r\n ?.groupScope,\r\n value: \"\",\r\n placeholder: \"\",\r\n supportMessage: this.createGroupText?.supportText?.groupScope,\r\n isResize: true,\r\n maxLength:\r\n screenTexts?.createGroup?.characterLimit?.character2000,\r\n validation: [\r\n Validators.maxLength(\r\n screenTexts?.createGroup?.characterLimit?.character1500\r\n ),\r\n Validators.pattern(GroupsValidationPatterns.groupScope),\r\n ],\r\n maxErrorMessage: this.createGroupText?.message?.error?.limit\r\n ?.groupScope,\r\n ariaLabel: this.createGroupText?.label?.ariaLabel?.groupScope,\r\n ariaDescribedById: this.createGroupText?.label?.ariaDescribedById\r\n ?.groupScope,\r\n },\r\n ],\r\n },\r\n ],\r\n };\r\n }\r\n /**\r\n * Handles client side validation and emits create group information.\r\n * @param {FormGroup[]} form -Array of formGroup\r\n * @return -returns nothing\r\n * @memberof CreateGroupComponent\r\n */\r\n onFormSubmit(form: FormGroup[]): void {\r\n form[0]?.markAllAsTouched();\r\n if (form[0].status === \"VALID\") {\r\n const formResponse = form[0].getRawValue();\r\n const createGroupPayload: CreateGroupPayload = {\r\n payload: {\r\n groupName: formResponse?.groupName,\r\n groupShortName: formResponse?.shortName,\r\n groupType: formResponse?.groupType?.name,\r\n groupDesc: formResponse?.groupScope,\r\n groupParentId: null,\r\n },\r\n };\r\n this.groupsService\r\n .createGroup(createGroupPayload)\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe({\r\n next: (res) => {\r\n if (res?.status) {\r\n this.submitFormResponse.emit(res);\r\n }\r\n },\r\n error: (error) => {\r\n const errorCodeArr: string[] = error?.error?.body?.errorCodes;\r\n if (Array.isArray(errorCodeArr)) {\r\n const errorMessage: string[] = [];\r\n errorCodeArr.forEach((item: string, index: number) => {\r\n const errorMessageKey = errorCodeArr[\r\n index\r\n ] as keyof typeof this.createGroupText.message.error.unique;\r\n errorMessage.push(\r\n this.createGroupText?.message?.error?.unique[errorMessageKey]\r\n );\r\n });\r\n this.alertService.showMessage({\r\n status: \"custom\",\r\n message: errorMessage,\r\n alertType: AlertType.ERROR,\r\n isCloseNeeded: true,\r\n });\r\n } else if (error && error instanceof HttpErrorResponse) {\r\n this.globalErrorHandlerService.handleError(error);\r\n }\r\n },\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * Get form reference.\r\n * @param {FormGroup[]} form\r\n * @memberof CreateGroupComponent\r\n */\r\n getFormGroupReference(form: FormGroup[]) {\r\n this.form = form[0];\r\n }\r\n\r\n /**\r\n * Emits form cancel event.\r\n * @return -returns nothing\r\n * @memberof CreateGroupComponent\r\n */\r\n createGroupCancelled(): void {\r\n this.formCancel.emit();\r\n }\r\n\r\n /**\r\n * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof CreateGroupComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<ieeesa-dynamic-form\r\n *ngIf=\"formGroup\"\r\n [leftButtonLabel]=\"leftButtonLabel\"\r\n [rightButtonLabel]=\"rightButtonLabel\"\r\n [isLegendVisible]=\"isLegendVisible\"\r\n [colWidth]=\"colWidth\"\r\n [actionButtonAlign]=\"actionButtonAlign\"\r\n [formGroups]=\"formGroup\"\r\n [isLeftButtonNeeded]=\"isLeftButtonNeeded\"\r\n (formSubmit)=\"onFormSubmit($event)\"\r\n (formLeftButtonClicked)=\"createGroupCancelled()\"\r\n (formGroupsReference)=\"getFormGroupReference($event)\"\r\n></ieeesa-dynamic-form>","/* eslint-disable no-unused-vars */\r\nexport enum GroupFunctionType {\r\n CREATE = \"CREATE\",\r\n EDIT = \"EDIT\"\r\n}","import { CommonModule } from \"@angular/common\";\r\nimport {\r\n Component,\r\n Input,\r\n OnDestroy,\r\n OnInit,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport { MatDialog, MatDialogModule } from \"@angular/material/dialog\";\r\nimport { CreateGroupComponent } from \"./components/create-group/create-group.component\";\r\nimport { GroupsService } from \"./services/groups.service\";\r\nimport { ModalComponent } from \"@ieeesa-npm/presentation\";\r\nimport { ModalType, AlertsService, AlertType } from \"@ieeesa-npm/utility\";\r\nimport { Subject, takeUntil } from \"rxjs\";\r\nimport * as screenTexts from \"./assets/constants.json\";\r\nimport { GroupFunctionType } from \"./models/group-function-type.model\";\r\n\r\n/**\r\n * Groups component is a wrapper or container component for groups management reusable component and in this component integrates all group management functionalities and this will be entry component for managing groups when it is consumed in other applications.\r\n * @class GroupsComponent\r\n */\r\n@Component({\r\n // eslint-disable-next-line @angular-eslint/component-selector\r\n selector: \"ieeesa-groups\",\r\n standalone: true,\r\n imports: [CommonModule, MatDialogModule],\r\n templateUrl: \"./groups.component.html\",\r\n styleUrls: [\"./groups.component.scss\"],\r\n encapsulation: ViewEncapsulation.None,\r\n providers: [AlertsService],\r\n})\r\nexport class GroupsComponent implements OnInit, OnDestroy {\r\n destroy$: Subject<boolean> = new Subject<boolean>();\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n dialogRef: any;\r\n @Input() applicationId!: string;\r\n @Input() apiBaseURL!: string;\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n @Input() permissions!: any;\r\n createGroupText = screenTexts?.createGroup;\r\n functionType!: GroupFunctionType;\r\n constructor(\r\n // eslint-disable-next-line no-unused-vars\r\n public dialog: MatDialog,\r\n // eslint-disable-next-line no-unused-vars\r\n private groupsService: GroupsService,\r\n // eslint-disable-next-line no-unused-vars\r\n public alertService: AlertsService // eslint-disable-next-line no-empty-function\r\n ) {}\r\n\r\n /**\r\n * Initialize the groups component.\r\n * @return -returns nothing\r\n * @memberof GroupsComponent\r\n */\r\n ngOnInit(): void {\r\n this.groupsService.setAppConfig(this.apiBaseURL, this.permissions);\r\n }\r\n\r\n /**\r\n * Sets the dialog options for create group modal and calls openModal method.\r\n * @return -returns nothing\r\n * @memberof GroupsComponent\r\n */\r\n openCreateGroupForm(): void {\r\n const dialogOptions = {\r\n heading: this.createGroupText?.heading,\r\n isCloseNeeded: true,\r\n componentReference: CreateGroupComponent,\r\n modalType: ModalType.FORM,\r\n };\r\n this.functionType = GroupFunctionType.CREATE;\r\n this.openModal(dialogOptions, \"ieeesa-create-group\");\r\n }\r\n\r\n /**\r\n * Opens modal component with for received params and handles form submission success and errors.\r\n * @param {*} dialogOptions\r\n * @param {string} [className]\r\n * @return -returns nothing\r\n * @memberof GroupsComponent\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-inferrable-types\r\n openModal(dialogOptions: any, className?: string): void {\r\n className = className ?? \"\";\r\n this.dialogRef = this.dialog.open(ModalComponent, {\r\n data: dialogOptions,\r\n width: \"auto\",\r\n panelClass: [\"ieeesa-modal-dialog\", className],\r\n ariaModal: true,\r\n });\r\n this.dialogRef?.componentInstance?.submitFormResponse\r\n .pipe(takeUntil(this.destroy$))\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any, no-unused-vars\r\n .subscribe((result: any) => {\r\n this.dialogRef.close();\r\n if (this.functionType === GroupFunctionType.CREATE) {\r\n this.alertService.showMessage({\r\n status: \"custom\",\r\n alertType: AlertType.SUCCESS,\r\n isCloseNeeded: true,\r\n message: this.createGroupText?.message?.success?.submission,\r\n });\r\n }\r\n });\r\n this.dialogRef?.componentInstance?.formCancel\r\n .pipe(takeUntil(this.destroy$))\r\n .subscribe(() => {\r\n this.dialogRef.close();\r\n });\r\n }\r\n\r\n /**\r\n * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.\r\n * @memberof GroupsComponent\r\n */\r\n ngOnDestroy(): void {\r\n this.destroy$.next(true);\r\n this.destroy$.unsubscribe();\r\n }\r\n}\r\n","<button type=\"button\" (click)=\"openCreateGroupForm()\">Create Group</button>","import { NgModule } from '@angular/core';\r\n\r\n@NgModule({\r\n declarations: [],\r\n imports: [\r\n ],\r\n exports: []\r\n})\r\nexport class GroupsModule { }\r\n","/*\r\n * Public API Surface of groups\r\n */\r\nexport * from \"./lib/components/create-group/create-group.component\";\r\nexport * from \"./lib/groups.component\";\r\n\r\nexport * from \"./lib/services/groups.service\";\r\n\r\nexport * from \"./lib/models/create-group.model\";\r\nexport * from \"./lib/models/group-types.model\";\r\nexport * from \"./lib/models/group-function-type.model\";\r\n\r\nexport * from \"./lib/assets/form-validations\";\r\n\r\nexport * from \"./lib/groups.module\";","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","screenTexts?.createGroup","i1.GroupsService","i2.GroupsService","i3"],"mappings":"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"}
package/index.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ /// <amd-module name="@ieeesa-npm/groups" />
5
+ export * from './public-api';
@@ -0,0 +1,5 @@
1
+ export declare const GroupsValidationPatterns: {
2
+ groupName: RegExp;
3
+ shortName: RegExp;
4
+ groupScope: RegExp;
5
+ };
@@ -0,0 +1,133 @@
1
+ import { EventEmitter, OnDestroy, OnInit } from "@angular/core";
2
+ import { FormGroup } from "@angular/forms";
3
+ import { FormGrid, FormModel, SelectOption, AlignType } from "@ieeesa-npm/presentation";
4
+ import { AlertsService, GlobalErrorHandlerService } from "@ieeesa-npm/utility";
5
+ import { GroupsService } from "../../services/groups.service";
6
+ import { Subject } from "rxjs";
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * CreateGroupComponent uses DynamicFormComponent to build create new group form and implement the functionalities of submission of form and handling success and error scenarios.
10
+ * @class CreateGroupComponent
11
+ * @implements {OnInit}
12
+ * @implements {OnDestroy}
13
+ */
14
+ export declare class CreateGroupComponent implements OnInit, OnDestroy {
15
+ private groupsService;
16
+ private globalErrorHandlerService;
17
+ alertService: AlertsService;
18
+ destroy$: Subject<boolean>;
19
+ /**
20
+ * Event emitted when the form is successfully submitted.
21
+ * @memberof CreateGroupComponent
22
+ */
23
+ submitFormResponse: EventEmitter<any>;
24
+ /**
25
+ * Event emitted when the form is cancelled.
26
+ * @memberof CreateGroupComponent
27
+ */
28
+ formCancel: EventEmitter<any>;
29
+ createGroupText: {
30
+ heading: string;
31
+ label: {
32
+ groupType: string;
33
+ groupName: string;
34
+ shortName: string;
35
+ groupScope: string;
36
+ rightButtonLabel: string;
37
+ leftButtonLabel: string;
38
+ ariaLabel: {
39
+ groupType: string;
40
+ groupName: string;
41
+ shortName: string;
42
+ groupScope: string;
43
+ };
44
+ ariaDescribedById: {
45
+ groupType: string;
46
+ groupName: string;
47
+ shortName: string;
48
+ groupScope: string;
49
+ };
50
+ };
51
+ characterLimit: {
52
+ character500: number;
53
+ character15: number;
54
+ character1500: number;
55
+ character2000: number;
56
+ };
57
+ message: {
58
+ error: {
59
+ required: string;
60
+ limit: {
61
+ groupName: string;
62
+ shortName: string;
63
+ groupScope: string;
64
+ };
65
+ pattern: {
66
+ groupName: string;
67
+ shortName: string;
68
+ groupScope: string;
69
+ };
70
+ unique: {
71
+ "1001": string;
72
+ "1002": string;
73
+ };
74
+ };
75
+ success: {
76
+ submission: string;
77
+ };
78
+ };
79
+ supportText: {
80
+ groupType: string;
81
+ groupName: string;
82
+ shortName: string;
83
+ groupScope: string;
84
+ };
85
+ };
86
+ leftButtonLabel: string;
87
+ rightButtonLabel: string;
88
+ isLegendVisible: boolean;
89
+ isLeftButtonNeeded: boolean;
90
+ colWidth: FormGrid;
91
+ formGroup: FormModel;
92
+ groupTypes: SelectOption[];
93
+ actionButtonAlign: AlignType;
94
+ form: FormGroup;
95
+ constructor(groupsService: GroupsService, globalErrorHandlerService: GlobalErrorHandlerService, alertService: AlertsService);
96
+ /**
97
+ * Initialize the create group form group array and component.
98
+ * @return -returns nothing
99
+ * @memberof CreateGroupComponent
100
+ */
101
+ ngOnInit(): void;
102
+ /**
103
+ * Initialize the create group form group array.
104
+ * @memberof CreateGroupComponent
105
+ */
106
+ createFormGroup(): void;
107
+ /**
108
+ * Handles client side validation and emits create group information.
109
+ * @param {FormGroup[]} form -Array of formGroup
110
+ * @return -returns nothing
111
+ * @memberof CreateGroupComponent
112
+ */
113
+ onFormSubmit(form: FormGroup[]): void;
114
+ /**
115
+ * Get form reference.
116
+ * @param {FormGroup[]} form
117
+ * @memberof CreateGroupComponent
118
+ */
119
+ getFormGroupReference(form: FormGroup[]): void;
120
+ /**
121
+ * Emits form cancel event.
122
+ * @return -returns nothing
123
+ * @memberof CreateGroupComponent
124
+ */
125
+ createGroupCancelled(): void;
126
+ /**
127
+ * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.
128
+ * @memberof CreateGroupComponent
129
+ */
130
+ ngOnDestroy(): void;
131
+ static ɵfac: i0.ɵɵFactoryDeclaration<CreateGroupComponent, never>;
132
+ static ɵcmp: i0.ɵɵComponentDeclaration<CreateGroupComponent, "ieeesa-create-group", never, {}, { "submitFormResponse": "submitFormResponse"; "formCancel": "formCancel"; }, never, never, true, never>;
133
+ }
@@ -0,0 +1,107 @@
1
+ import { OnDestroy, OnInit } from "@angular/core";
2
+ import { MatDialog } from "@angular/material/dialog";
3
+ import { GroupsService } from "./services/groups.service";
4
+ import { AlertsService } from "@ieeesa-npm/utility";
5
+ import { Subject } from "rxjs";
6
+ import { GroupFunctionType } from "./models/group-function-type.model";
7
+ import * as i0 from "@angular/core";
8
+ /**
9
+ * Groups component is a wrapper or container component for groups management reusable component and in this component integrates all group management functionalities and this will be entry component for managing groups when it is consumed in other applications.
10
+ * @class GroupsComponent
11
+ */
12
+ export declare class GroupsComponent implements OnInit, OnDestroy {
13
+ dialog: MatDialog;
14
+ private groupsService;
15
+ alertService: AlertsService;
16
+ destroy$: Subject<boolean>;
17
+ dialogRef: any;
18
+ applicationId: string;
19
+ apiBaseURL: string;
20
+ permissions: any;
21
+ createGroupText: {
22
+ heading: string;
23
+ label: {
24
+ groupType: string;
25
+ groupName: string;
26
+ shortName: string;
27
+ groupScope: string;
28
+ rightButtonLabel: string;
29
+ leftButtonLabel: string;
30
+ ariaLabel: {
31
+ groupType: string;
32
+ groupName: string;
33
+ shortName: string;
34
+ groupScope: string;
35
+ };
36
+ ariaDescribedById: {
37
+ groupType: string;
38
+ groupName: string;
39
+ shortName: string;
40
+ groupScope: string;
41
+ };
42
+ };
43
+ characterLimit: {
44
+ character500: number;
45
+ character15: number;
46
+ character1500: number;
47
+ character2000: number;
48
+ };
49
+ message: {
50
+ error: {
51
+ required: string;
52
+ limit: {
53
+ groupName: string;
54
+ shortName: string;
55
+ groupScope: string;
56
+ };
57
+ pattern: {
58
+ groupName: string;
59
+ shortName: string;
60
+ groupScope: string;
61
+ };
62
+ unique: {
63
+ "1001": string;
64
+ "1002": string;
65
+ };
66
+ };
67
+ success: {
68
+ submission: string;
69
+ };
70
+ };
71
+ supportText: {
72
+ groupType: string;
73
+ groupName: string;
74
+ shortName: string;
75
+ groupScope: string;
76
+ };
77
+ };
78
+ functionType: GroupFunctionType;
79
+ constructor(dialog: MatDialog, groupsService: GroupsService, alertService: AlertsService);
80
+ /**
81
+ * Initialize the groups component.
82
+ * @return -returns nothing
83
+ * @memberof GroupsComponent
84
+ */
85
+ ngOnInit(): void;
86
+ /**
87
+ * Sets the dialog options for create group modal and calls openModal method.
88
+ * @return -returns nothing
89
+ * @memberof GroupsComponent
90
+ */
91
+ openCreateGroupForm(): void;
92
+ /**
93
+ * Opens modal component with for received params and handles form submission success and errors.
94
+ * @param {*} dialogOptions
95
+ * @param {string} [className]
96
+ * @return -returns nothing
97
+ * @memberof GroupsComponent
98
+ */
99
+ openModal(dialogOptions: any, className?: string): void;
100
+ /**
101
+ * NgOnDestroy performs necessary cleanup tasks, such as unsubscribing from subscription when the component is being destroyed.
102
+ * @memberof GroupsComponent
103
+ */
104
+ ngOnDestroy(): void;
105
+ static ɵfac: i0.ɵɵFactoryDeclaration<GroupsComponent, never>;
106
+ static ɵcmp: i0.ɵɵComponentDeclaration<GroupsComponent, "ieeesa-groups", never, { "applicationId": { "alias": "applicationId"; "required": false; }; "apiBaseURL": { "alias": "apiBaseURL"; "required": false; }; "permissions": { "alias": "permissions"; "required": false; }; }, {}, never, never, true, never>;
107
+ }
@@ -0,0 +1,6 @@
1
+ import * as i0 from "@angular/core";
2
+ export declare class GroupsModule {
3
+ static ɵfac: i0.ɵɵFactoryDeclaration<GroupsModule, never>;
4
+ static ɵmod: i0.ɵɵNgModuleDeclaration<GroupsModule, never, never, never>;
5
+ static ɵinj: i0.ɵɵInjectorDeclaration<GroupsModule>;
6
+ }
@@ -0,0 +1,16 @@
1
+ export interface CreateGroupPayload {
2
+ payload: {
3
+ groupName: string;
4
+ groupShortName: string;
5
+ groupType: string;
6
+ groupDesc?: string;
7
+ groupParentId: null;
8
+ };
9
+ }
10
+ export interface CreateGroupResponse {
11
+ status: boolean;
12
+ message: string;
13
+ body?: string | null | {
14
+ errorCodes: string[];
15
+ };
16
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum GroupFunctionType {
2
+ CREATE = "CREATE",
3
+ EDIT = "EDIT"
4
+ }
@@ -0,0 +1,23 @@
1
+ export interface GroupTypeResponse {
2
+ status: boolean;
3
+ message: string;
4
+ body: {
5
+ configFieldName: string;
6
+ configFieldValue: {
7
+ [key: string]: GroupType;
8
+ };
9
+ };
10
+ }
11
+ export interface GroupType {
12
+ name: string;
13
+ legendColor: string;
14
+ description: string;
15
+ businessRule: {
16
+ allowSubGroup: boolean;
17
+ allowRoster: boolean;
18
+ rosterType: string;
19
+ allowAlternateVoting: boolean;
20
+ manageRosterInApp: boolean;
21
+ allowedGroupType: string[];
22
+ };
23
+ }
@@ -0,0 +1,32 @@
1
+ import { CreateGroupPayload, CreateGroupResponse } from "../models/create-group.model";
2
+ import { HttpService } from "@ieeesa-npm/utility";
3
+ import { Observable } from "rxjs";
4
+ import { GroupTypeResponse } from "../models/group-types.model";
5
+ import * as i0 from "@angular/core";
6
+ /**
7
+ * Groups service is an abstract layer and responsible for managing groups REST API calls.
8
+ * @class GroupsService
9
+ * @implements {OnDestroy}
10
+ */
11
+ export declare class GroupsService {
12
+ private httpService;
13
+ apiBaseUrl: string;
14
+ userPermission: any;
15
+ constructor(httpService: HttpService);
16
+ setAppConfig(apiBaseUrl: string, userPermission: any): void;
17
+ /**
18
+ * Gets application group types from API and returns it as an observable.
19
+ * @return {Observable<GroupTypeResponse>} -It returns group types if success else error.
20
+ * @memberof GroupsService
21
+ */
22
+ getGroupTypes(): Observable<GroupTypeResponse>;
23
+ /**
24
+ * Posts create group form data to server using HttpService for creating new group.
25
+ * @param {CreateGroupPayload} createGroupPayload -create group form data which includes group name, type, short name, scope.
26
+ * @return {Observable<any>} -returns create group API response (success or error) as an observable.
27
+ * @memberof GroupsService
28
+ */
29
+ createGroup(createGroupPayload: CreateGroupPayload): Observable<CreateGroupResponse>;
30
+ static ɵfac: i0.ɵɵFactoryDeclaration<GroupsService, never>;
31
+ static ɵprov: i0.ɵɵInjectableDeclaration<GroupsService>;
32
+ }
package/package.json ADDED
@@ -0,0 +1,28 @@
1
+ {
2
+ "name": "@ieeesa-npm/groups",
3
+ "version": "0.0.1",
4
+ "peerDependencies": {
5
+ "@angular/common": "^16.1.0",
6
+ "@angular/core": "^16.1.0",
7
+ "@ieeesa-npm/presentation": "^0.2.4",
8
+ "@ieeesa-npm/shared-styles": "^0.0.4",
9
+ "@ieeesa-npm/utility": "^0.2.1"
10
+ },
11
+ "dependencies": {
12
+ "tslib": "^2.3.0"
13
+ },
14
+ "sideEffects": false,
15
+ "module": "fesm2022/ieeesa-npm-groups.mjs",
16
+ "typings": "index.d.ts",
17
+ "exports": {
18
+ "./package.json": {
19
+ "default": "./package.json"
20
+ },
21
+ ".": {
22
+ "types": "./index.d.ts",
23
+ "esm2022": "./esm2022/ieeesa-npm-groups.mjs",
24
+ "esm": "./esm2022/ieeesa-npm-groups.mjs",
25
+ "default": "./fesm2022/ieeesa-npm-groups.mjs"
26
+ }
27
+ }
28
+ }
@@ -0,0 +1,8 @@
1
+ export * from "./lib/components/create-group/create-group.component";
2
+ export * from "./lib/groups.component";
3
+ export * from "./lib/services/groups.service";
4
+ export * from "./lib/models/create-group.model";
5
+ export * from "./lib/models/group-types.model";
6
+ export * from "./lib/models/group-function-type.model";
7
+ export * from "./lib/assets/form-validations";
8
+ export * from "./lib/groups.module";