@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.
- package/README.md +24 -0
- package/esm2022/ieeesa-npm-groups.mjs +5 -0
- package/esm2022/lib/assets/constants.json +59 -0
- package/esm2022/lib/assets/form-validations.mjs +10 -0
- package/esm2022/lib/components/create-group/create-group.component.mjs +263 -0
- package/esm2022/lib/groups.component.mjs +113 -0
- package/esm2022/lib/groups.module.mjs +16 -0
- package/esm2022/lib/models/create-group.model.mjs +2 -0
- package/esm2022/lib/models/group-function-type.model.mjs +7 -0
- package/esm2022/lib/models/group-types.model.mjs +2 -0
- package/esm2022/lib/services/groups.service.mjs +60 -0
- package/esm2022/public-api.mjs +12 -0
- package/fesm2022/ieeesa-npm-groups.mjs +520 -0
- package/fesm2022/ieeesa-npm-groups.mjs.map +1 -0
- package/index.d.ts +5 -0
- package/lib/assets/form-validations.d.ts +5 -0
- package/lib/components/create-group/create-group.component.d.ts +133 -0
- package/lib/groups.component.d.ts +107 -0
- package/lib/groups.module.d.ts +6 -0
- package/lib/models/create-group.model.d.ts +16 -0
- package/lib/models/group-function-type.model.d.ts +4 -0
- package/lib/models/group-types.model.d.ts +23 -0
- package/lib/services/groups.service.d.ts +32 -0
- package/package.json +28 -0
- package/public-api.d.ts +8 -0
|
@@ -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,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,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
|
+
}
|
package/public-api.d.ts
ADDED
|
@@ -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";
|