@cauca-911/management 22.0.0 → 22.0.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"cauca-911-management.mjs","sources":["../../../projects/cauca-management/src/lib/provide-cauca-management.ts","../../../projects/cauca-management/src/lib/management.routes.ts","../../../projects/cauca-management/src/lib/core/api/group-management.service.ts","../../../projects/cauca-management/src/lib/components/group-list-grid/group-list-grid.component.ts","../../../projects/cauca-management/src/lib/components/group-list-grid/group-list-grid.component.html","../../../projects/cauca-management/src/lib/pages/groups-page/groups-page.component.ts","../../../projects/cauca-management/src/lib/pages/groups-page/groups-page.component.html","../../../projects/cauca-management/src/lib/core/functions/generate-group.ts","../../../projects/cauca-management/src/lib/core/states/group-edition-state.service.ts","../../../projects/cauca-management/src/lib/core/models/user-for-group.ts","../../../projects/cauca-management/src/lib/core/api/user-search.service.ts","../../../projects/cauca-management/src/lib/components/group-user-selection-dialog/group-user-selection-dialog.component.html","../../../projects/cauca-management/src/lib/components/group-user-selection-dialog/group-user-selection-dialog.component.ts","../../../projects/cauca-management/src/lib/components/group-user-edition-list/group-user-edition-list.component.html","../../../projects/cauca-management/src/lib/components/group-user-edition-list/group-user-edition-list.component.ts","../../../projects/cauca-management/src/lib/core/models/group.ts","../../../projects/cauca-management/src/lib/core/api/permission-management.service.ts","../../../projects/cauca-management/src/lib/components/group-permission-list/group-permission-list.component.html","../../../projects/cauca-management/src/lib/components/group-permission-list/group-permission-list.component.ts","../../../projects/cauca-management/src/lib/components/group-edition-form/group-edition-form.component.html","../../../projects/cauca-management/src/lib/components/group-edition-form/group-edition-form.component.ts","../../../projects/cauca-management/src/lib/pages/group-edition-page/group-edition-page.component.html","../../../projects/cauca-management/src/lib/pages/group-edition-page/group-edition-page.component.ts","../../../projects/cauca-management/src/lib/cauca-management.service.ts","../../../projects/cauca-management/src/lib/cauca-management.component.ts","../../../projects/cauca-management/src/lib/cauca-management.component.html","../../../projects/cauca-management/src/lib/shared/services/management-group.service.ts","../../../projects/cauca-management/src/lib/shared/services/management-user.service.ts","../../../projects/cauca-management/src/lib/shared/services/management-permission.service.ts","../../../projects/cauca-management/src/lib/cauca-management-group/cauca-management-group.component.html","../../../projects/cauca-management/src/lib/cauca-management-group/cauca-management-group.component.ts","../../../projects/cauca-management/src/lib/shared/models/user-model.ts","../../../projects/cauca-management/src/lib/cauca-management-user/cauca-management-user.component.ts","../../../projects/cauca-management/src/lib/cauca-management-user/cauca-management-user.component.html","../../../projects/cauca-management/src/lib/cauca-management.module.ts","../../../projects/cauca-management/src/lib/shared/models/user-group-model.ts","../../../projects/cauca-management/src/lib/shared/models/user-permission-model.ts","../../../projects/cauca-management/src/lib/shared/models/group-model.ts","../../../projects/cauca-management/src/lib/shared/models/group-permission-model.ts","../../../projects/cauca-management/src/public-api.ts","../../../projects/cauca-management/src/cauca-911-management.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Injector, Provider, Type } from '@angular/core';\r\nimport { RefreshablePermissionState } from '../public-api';\r\n\r\nexport const MANAGEMENT_URL_PREFIX = new InjectionToken<string>('MANAGEMENT_URL_PREFIX');\r\nexport const MANAGEMENT_ROUTE_SEGMENT = new InjectionToken<string>('MANAGEMENT_ROUTE_SEGMENT');\r\nexport const REFRESHABLE_PERMISSION_STATE_TOKEN = new InjectionToken<RefreshablePermissionState>('REFRESHABLE_PERMISSION_STATE_TOKEN');\r\n\r\nexport interface CaucaManagementConfig {\r\n managementUrlPrefix?: string | null;\r\n managementRouteSegment?: string | null;\r\n refreshablePermissionState: Type<RefreshablePermissionState>;\r\n}\r\n\r\nexport function provideCaucaManagement(config: CaucaManagementConfig): (Provider | EnvironmentProviders)[] {\r\n return [\r\n ...(config?.managementUrlPrefix != null\r\n ? [{ provide: MANAGEMENT_URL_PREFIX, useValue: config.managementUrlPrefix }]\r\n : []),\r\n ...(config?.managementRouteSegment != null\r\n ? [{ provide: MANAGEMENT_ROUTE_SEGMENT, useValue: config.managementRouteSegment }]\r\n : []),\r\n { provide: REFRESHABLE_PERMISSION_STATE_TOKEN, useFactory: (injector: Injector) => injector.get(config.refreshablePermissionState), deps: [Injector] } \r\n ];\r\n}","import { Routes } from '@angular/router';\r\nimport { pendingChangesGuard } from '@cauca-911/material';\r\n\r\nexport const managementGroupRoutes: Routes = [{\r\n path: 'groups',\r\n loadComponent: () => import('./pages/groups-page/groups-page.component').then(m => m.GroupsPageComponent),\r\n }, {\r\n path: 'groups/:id',\r\n loadComponent: () => import('./pages/group-edition-page/group-edition-page.component').then(m => m.GroupEditionPageComponent),\r\n canDeactivate: [pendingChangesGuard],\r\n }];","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { firstValueFrom } from 'rxjs';\nimport { Group } from '../models/group';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GroupManagementService {\n\n private readonly client = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly urlPrefix = inject(MANAGEMENT_URL_PREFIX, { optional: true }) ?? '';\n\n public async deleteGroup(groupId: string): Promise<void> {\n await firstValueFrom(this.client.delete(this.buildApiUrl(`GroupManagement/${groupId}`)));\n }\n\n public async save(group: Group): Promise<void> {\n await firstValueFrom( this.client.post<Group>(this.buildApiUrl(`GroupManagement`), group));\n }\n\n public async get(groupId: string): Promise<Group> {\n return await firstValueFrom(this.client.get<Group>(this.buildApiUrl(`GroupManagement/${groupId}`)));\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n const normalizedPrefix = this.urlPrefix.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}/${path}`\n : `${normalizedApiUrl}/${path}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, OnInit, ViewChild } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatSort } from '@angular/material/sort';\nimport { Router } from '@angular/router';\nimport ODataFilterBuilder from 'odata-filter-builder';\nimport { ODataFilter } from 'odata-data-source';\nimport { DialogService } from '@cauca-911/material';\nimport { DataGridCommandsColumnComponent, OdataGridComponent, SortableDataGridCheckColumnComponent, SortableDataGridColumnComponent } from '@cauca-911/datagrid';\nimport { GroupManagementService } from '../../core/api/group-management.service';\n\n@Component({\n selector: 'cauca-group-list-grid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatSort, OdataGridComponent, SortableDataGridColumnComponent, SortableDataGridCheckColumnComponent, DataGridCommandsColumnComponent, TranslatePipe],\n templateUrl: './group-list-grid.component.html',\n styleUrl: './group-list-grid.component.scss'\n})\nexport class GroupListGridComponent implements OnInit {\n\n public readonly columns = computed(() => this.getColumns());\n\n @ViewChild(OdataGridComponent, { static: true }) public table!: OdataGridComponent;\n @ViewChild(MatSort, { static: true }) public sort!: MatSort;\n\n private readonly router = inject(Router);\n private readonly dialog = inject(DialogService);\n private readonly service = inject(GroupManagementService);\n\n public ngOnInit(): void {\n this.table.setUpSort(this.sort);\n }\n\n public createGroup(): void {\n this.router.navigate([this.router.url, 'new']);\n }\n\n public async deleteGroup(group: any): Promise<void> {\n if (await this.dialog.askForDeleteConfirmation(group.name, 'management.group', true)) {\n try {\n await this.service.deleteGroup(group.id);\n this.table.refreshData();\n } catch {\n await this.dialog.showDeletionError(group.name);\n }\n }\n }\n\n public filterPredicate = (filter: string): ODataFilter[] => {\n let builder = new ODataFilterBuilder();\n if (filter) {\n builder = builder.and(ODataFilterBuilder('or')\n .contains('searchableGroup', filter)\n .contains('searchableUsers', filter)\n );\n }\n return [{getFilter: () => [builder.toString()]}];\n };\n\n private getColumns(): string[] {\n const baseColumns = ['name', 'assignableByAllUsers'];\n return [...baseColumns, 'buttons'];\n }\n}\n\n","<cauca-odata-grid matSort\n [showTableOptions]=\"true\"\n class=\"groups-datagrid\"\n aria-describedby=\"Groups table\"\n resourceName=\"GroupList\"\n [showAddButton]=\"true\"\n (addButtonClick)=\"createGroup()\"\n [addButtonLabel]=\"'groups.addButtonLabel'| translate\"\n [baseSort]=\"['name']\"\n [filterPredicate]=\"filterPredicate\"\n [displayedColumns]=\"columns()\">\n\n <cauca-sortable-data-grid-column id=\"name\" prop=\"name\" [label]=\"'groups.groupNameColumnLabel'|translate\"/>\n <cauca-sortable-data-grid-check-column id=\"is-assignable-all-users\" prop=\"assignableByAllUsers\" [label]=\"'groups.assignableByAllUsersColumnLabel'|translate\" width=\"200px\" />\n <cauca-data-grid-commands-column id=\"buttons\" prop=\"buttons\" [canDelete]=\"true\" [canEdit]=\"true\" editLinkField=\"id\" (deleteClick)=\"deleteGroup($event)\" />\n\n</cauca-odata-grid>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { PageTitleComponent } from '@cauca-911/material';\nimport { GroupListGridComponent } from '../../components/group-list-grid/group-list-grid.component';\n\n@Component({\n selector: 'cauca-groups-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatCardModule, PageTitleComponent, GroupListGridComponent],\n templateUrl: './groups-page.component.html',\n styleUrl: './groups-page.component.scss'\n})\nexport class GroupsPageComponent {\n}\n","<cauca-page-title\n [showBreadcrumb]=\"true\"\n caption=\"menu.groups\"\n baseCrumb=\"menu.management\"\n breadcrumb=\"menu.groups\" />\n\n<mat-card class=\"page-content\">\n\n <mat-card-content class=\"page-content-grid\">\n <cauca-group-list-grid />\n </mat-card-content>\n\n</mat-card>\n","import { v4 as uuid } from 'uuid';\nimport { Group } from '../models/group';\n\nexport function generateGroup(): Group {\n return {\n id: uuid(),\n name: '',\n assignableByAllUsers: false,\n permissions: [],\n users: []\n };\n}","import { inject, Injectable } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { GroupManagementService } from '../api/group-management.service';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Group, GroupUser } from '../models/group';\nimport { generateGroup } from '../functions/generate-group';\nimport { startWith } from 'rxjs';\nimport { REFRESHABLE_PERMISSION_STATE_TOKEN } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GroupEditionStateService {\n public isEditionMode = true;\n public form = this.generateForm();\n public id: string| null = null;\n\n public readonly users = toSignal(\n this.form.get('users')!.valueChanges.pipe(startWith(this.form.get('users')!.value)),\n { initialValue: [] as GroupUser[] }\n );\n\n private readonly usersControl = this.form.get('users') as FormControl<GroupUser[]>;\n private currentGroup: Group| null = null;\n private readonly dataService = inject(GroupManagementService);\n private readonly userPermissionStateService = inject(REFRESHABLE_PERMISSION_STATE_TOKEN);\n\n public async setGroup(id: string): Promise<void> {\n if (id === 'new') {\n this.isEditionMode = false;\n this.generateNewGroup();\n } else {\n this.setCurrentGroup(await this.dataService.get(id));\n }\n }\n\n public async saveData(): Promise<boolean> {\n const data = this.getUpdatedGroup();\n if (this.form.valid) {\n this.form.disable();\n await this.dataService.save(data);\n await this.refreshCurrentUserPermissions();\n return true;\n } else {\n return false;\n }\n }\n\n public generateNewGroup(): void {\n this.currentGroup = generateGroup();\n this.setCurrentGroup(this.currentGroup);\n this.form.markAsPristine();\n }\n\n public setCurrentGroup(group: Group): void {\n this.id = group.id;\n this.currentGroup = group;\n if (!this.isEditionMode) {\n this.form.get('name')!.setValidators(Validators.required);\n }\n this.form.patchValue(group);\n this.form.get('users')!.setValue(group.users || []);\n this.form.get('permissions')!.setValue(group.permissions || []);\n this.form.markAsPristine();\n }\n\n public getUpdatedGroup(): Group {\n const formValues = this.form.value;\n return {\n ...this.currentGroup,\n ...formValues,\n };\n }\n\n public isDirty(): boolean {\n return this.form.dirty;\n }\n\n public isValid(): boolean {\n this.form.updateValueAndValidity();\n return this.form.valid;\n }\n\n public showErrors(): void {\n this.form.markAllAsTouched();\n }\n\n public addUsers(users: GroupUser[]): void {\n const current = this.usersControl.value ?? [];\n const existingIds = new Set(current.map(u => u.id));\n const newUsers = users.filter(u => !existingIds.has(u.id));\n this.usersControl.setValue([...current, ...newUsers]);\n this.form.markAsDirty();\n }\n\n public removeUser(userId: string): void {\n const current = this.usersControl.value ?? [];\n this.usersControl.setValue(current.filter(u => u.id !== userId));\n this.form.markAsDirty();\n }\n\n private async refreshCurrentUserPermissions() {\n try {\n await this.userPermissionStateService.refresh();\n } catch (error) {\n console.error('Error refreshing user permissions after group save', error);\n }\n }\n\n private generateForm(): FormGroup {\n const formGroup = new FormGroup({\n name: new FormControl('', [Validators.required]),\n assignableByAllUsers: new FormControl(false),\n users: new FormControl([]),\n permissions: new FormControl([])\n });\n return formGroup;\n }\n}\n","export interface UserForGroupData {\r\n id: string;\r\n firstName: string;\r\n lastName: string;\r\n additionalInformation: string|undefined;\r\n}\r\n\r\nexport class UserForGroup {\r\n public id: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public fullName: string;\r\n public additionalInformation: string|undefined;\r\n\r\n public constructor(data: UserForGroupData) {\r\n this.id = data.id;\r\n this.firstName = data.firstName;\r\n this.lastName = data.lastName;\r\n this.fullName = `${data.firstName} ${data.lastName}`;\r\n this.additionalInformation = data.additionalInformation;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { firstValueFrom } from 'rxjs';\nimport { UserForGroup, UserForGroupData } from '../models/user-for-group';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserSearchService {\n\n private readonly client = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly urlPrefix = inject(MANAGEMENT_URL_PREFIX, { optional: true }) ?? '';\n\n public async search(\n query: string,\n excludedUserIds: string[],\n skip: number,\n top: number\n ): Promise<{ items: UserForGroup[]; totalCount: number }> {\n const url = this.buildApiUrl('UserSearch');\n const body: { query: string; skip: number; top: number; excludedUserIds: string[] } = {\n query,\n skip,\n top,\n excludedUserIds\n };\n const response = await firstValueFrom(\n this.client.post<{ items: UserForGroupData[]; totalCount: number }>(url, body)\n );\n return {\n items: response.items.map(u => new UserForGroup(u)),\n totalCount: response.totalCount\n };\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n const normalizedPrefix = this.urlPrefix.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}/${path}`\n : `${normalizedApiUrl}/${path}`;\n }\n}\n","<div mat-dialog-title>\n <div class=\"h6\">{{ 'groupEdition.userSelectionTitle' | translate }}</div>\n <cauca-icon-button id=\"closeButton\" (buttonClick)=\"closeClick()\" icon=\"close\" />\n</div>\n\n<mat-dialog-content class=\"dialog-content\">\n <mat-form-field subscriptSizing=\"dynamic\" class=\"search-field\">\n <mat-label>{{ 'groupEdition.searchUserPlaceholder' | translate }}</mat-label>\n <input matInput type=\"text\" [value]=\"searchTerm()\" (input)=\"searchTerm.set($any($event.target).value)\" />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n\n @if (searchTerm().length >= 0 && searchTerm().length < MIN_SEARCH_LENGTH) {\n <div class=\"search-hint body2\">{{ 'groupEdition.searchMinChars' | translate }}</div>\n }\n\n <div class=\"results-region\">\n <cauca-loading-error (retryRequest)=\"searchResource.reload()\" />\n\n @if (searchResource.isLoading() && !results().length) {\n <cauca-loading-spinner-indicator />\n } @else if (results().length) {\n <mat-selection-list class=\"results-list\" [compareWith]=\"compareUserById\" (selectionChange)=\"onSelectionChange($event)\">\n @for (user of results(); track user.id; let i = $index) {\n <mat-list-option\n [value]=\"user\"\n [selected]=\"selectedUserIds().has(user.id)\"\n color=\"primary\"\n class=\"result-item\"\n [class.result-item--even]=\"i % 2 === 1\">\n <span matListItemTitle>{{ user.fullName }}</span>\n @if (user.additionalInformation) {\n <span matListItemSubtitle>{{ user.additionalInformation }}</span>\n }\n </mat-list-option>\n }\n </mat-selection-list>\n\n @if (totalCount() > PAGE_SIZE) {\n <cauca-list-paginator\n #resultPaginator\n [itemsCount]=\"totalCount()\"\n [pageSize]=\"PAGE_SIZE\"\n (pageChange)=\"onPageChange($event)\" />\n }\n } @else if (!searchResource.isLoading() && totalCount() === 0 && debouncedSearch().length >= MIN_SEARCH_LENGTH) {\n <div class=\"no-results body2\">{{ 'noResult' | translate }}</div>\n }\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"dialog-actions\">\n <div class=\"selected-users-panel\">\n <span class=\"selected-users-label caption\">{{ 'groupEdition.selectedUsersLabel' | translate }}</span>\n <div class=\"selected-users-names body2\" [matTooltip]=\"selectedUsersLabel()\">{{ selectedUsersLabel() }}</div>\n </div>\n <cauca-stroked-button color=\"primary\" label=\"cancel\" (buttonClick)=\"cancel()\" />\n <cauca-raised-button\n color=\"primary\"\n label=\"ok\"\n [isDisabled]=\"selectedUsers().length === 0\"\n (buttonClick)=\"confirm()\" />\n</mat-dialog-actions>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, resource, signal, untracked, viewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs';\nimport { LoadingSpinnerIndicatorComponent, LoadingErrorComponent, StrokedButtonComponent, RaisedButtonComponent, LoadingStateService, ListPaginatorComponent, IconButtonComponent } from '@cauca-911/material';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { UserSearchService } from '../../core/api/user-search.service';\nimport { UserForGroup } from '../../core/models/user-for-group';\nimport { GroupUser } from '../../core/models/group';\n\nexport interface GroupUserSelectionDialogData {\n currentUserIds: string[];\n}\n\n@Component({\n selector: 'cauca-group-user-selection-dialog',\n standalone: true,\n imports: [\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatListModule,\n FormsModule,\n TranslatePipe,\n LoadingSpinnerIndicatorComponent,\n LoadingErrorComponent,\n StrokedButtonComponent,\n RaisedButtonComponent,\n ListPaginatorComponent,\n MatTooltipModule,\n IconButtonComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [UserSearchService, LoadingStateService],\n templateUrl: './group-user-selection-dialog.component.html',\n styleUrl: './group-user-selection-dialog.component.scss'\n})\nexport class GroupUserSelectionDialogComponent {\n protected readonly MIN_SEARCH_LENGTH = 3;\n protected readonly PAGE_SIZE = 10;\n protected readonly data = inject<GroupUserSelectionDialogData>(MAT_DIALOG_DATA);\n protected readonly searchTerm = signal('');\n protected readonly selectedUsers = signal<GroupUser[]>([]);\n protected readonly currentPage = signal(1);\n protected readonly paginator = viewChild<ListPaginatorComponent>('resultPaginator');\n\n protected readonly selectedUserIds = computed(() => new Set(this.selectedUsers().map(u => u.id)));\n\n protected readonly selectedUsersLabel = computed(() =>\n [...this.selectedUsers()]\n .sort((a, b) => toLowerCaseAndWithoutDiacritics(a.fullName).localeCompare(toLowerCaseAndWithoutDiacritics(b.fullName)))\n .map(u => u.fullName)\n .join(', ')\n );\n\n protected readonly debouncedSearch = toSignal(\n toObservable(this.searchTerm).pipe(debounceTime(300)),\n { initialValue: '' }\n );\n\n protected readonly searchResource = resource({\n params: computed(() => ({ query: this.debouncedSearch(), page: this.currentPage() })),\n loader: ({ params }) => {\n if (params.query.length < this.MIN_SEARCH_LENGTH) {\n return Promise.resolve({ items: [], totalCount: 0 });\n }\n const skip = (params.page - 1) * this.PAGE_SIZE;\n return this.userSearchService.search(params.query, this.data.currentUserIds, skip, this.PAGE_SIZE);\n }\n });\n\n protected readonly results = computed(() => this.lastResult().items);\n protected readonly totalCount = computed(() => this.lastResult().totalCount);\n\n private readonly lastResult = signal<{ items: UserForGroup[]; totalCount: number }>({ items: [], totalCount: 0 });\n private readonly dialogRef = inject(MatDialogRef<GroupUserSelectionDialogComponent>);\n private readonly userSearchService = inject(UserSearchService);\n\n public constructor() {\n effect(() => {\n const value = this.searchResource.value();\n if (value) {\n untracked(() => this.lastResult.set(value));\n }\n });\n\n effect(() => {\n this.debouncedSearch();\n untracked(() => {\n this.currentPage.set(1);\n this.paginator()?.moveToFirst();\n this.lastResult.set({ items: [], totalCount: 0 });\n });\n });\n }\n\n public closeClick(): void {\n this.dialogRef.close();\n }\n\n public toggleUser(user: UserForGroup): void {\n const groupUser: GroupUser = { id: user.id, fullName: user.fullName, additionalInformation: user.additionalInformation };\n if (this.selectedUserIds().has(user.id)) {\n this.selectedUsers.update(current => current.filter(u => u.id !== user.id));\n } else {\n this.selectedUsers.update(current => [...current, groupUser]);\n }\n }\n\n public onPageChange(page: number): void {\n this.currentPage.set(page);\n }\n\n public onSelectionChange(event: MatSelectionListChange): void {\n for (const option of event.options) {\n this.toggleUser(option.value as UserForGroup);\n }\n }\n\n public cancel(): void {\n this.dialogRef.close();\n }\n\n public confirm(): void {\n this.dialogRef.close(this.selectedUsers());\n }\n\n protected readonly compareUserById = (a: UserForGroup, b: UserForGroup): boolean => a?.id === b?.id;\n}\n","<div class=\"user-edition-list\">\n\n <mat-form-field subscriptSizing=\"dynamic\" class=\"filter-field\">\n <mat-label>{{ 'groupEdition.filterUsersPlaceholder' | translate }}</mat-label>\n <input matInput type=\"text\" [value]=\"filterTerm()\" (input)=\"filterTerm.set($any($event.target).value)\" />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n\n <mat-list class=\"users-list\">\n @for (user of pagedUsers(); track user.id) {\n <mat-list-item class=\"user-item\">\n <mat-icon matListItemIcon>person</mat-icon>\n <div matListItemTitle class=\"user-name\">{{ user.fullName }}</div>\n @if (user.additionalInformation) {\n <div matListItemLine class=\"user-additional-information\">{{ user.additionalInformation }}</div>\n }\n <cauca-icon-button\n matListItemMeta\n class=\"delete-button\"\n icon=\"delete\"\n color=\"error\"\n (buttonClick)=\"removeUser(user)\"\n [attr.aria-label]=\"'groupEdition.removeUserLabel' | translate\" />\n </mat-list-item>\n } @empty {\n @if (filterTerm()) {\n <div class=\"no-users body2\">{{ 'groupEdition.noFilteredUsers' | translate }}</div>\n } @else {\n <div class=\"no-users body2\">{{ 'groupEdition.noUsers' | translate }}</div>\n }\n }\n </mat-list>\n\n @if (filteredUsers().length > PAGE_SIZE) {\n <cauca-list-paginator\n #paginator\n [itemsCount]=\"filteredUsers().length\"\n [pageSize]=\"PAGE_SIZE\"\n (pageChange)=\"onPageChange($event)\" />\n }\n\n <cauca-raised-button\n class=\"add-users-button\"\n color=\"primary\"\n label=\"groupEdition.addUsersButton\"\n (buttonClick)=\"openAddUsersDialog()\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, signal, untracked, viewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DialogService, IconButtonComponent, ListPaginatorComponent, RaisedButtonComponent } from '@cauca-911/material';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { GroupUser } from '../../core/models/group';\nimport { GroupUserSelectionDialogComponent, GroupUserSelectionDialogData } from '../group-user-selection-dialog/group-user-selection-dialog.component';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n selector: 'cauca-group-user-edition-list',\n standalone: true,\n imports: [TranslatePipe, IconButtonComponent, RaisedButtonComponent, ListPaginatorComponent, MatFormFieldModule, MatInputModule, MatIconModule, FormsModule, MatListModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DialogService],\n templateUrl: './group-user-edition-list.component.html',\n styleUrl: './group-user-edition-list.component.scss'\n})\nexport class GroupUserEditionListComponent {\n protected readonly PAGE_SIZE = 10;\n protected readonly currentPage = signal(1);\n protected readonly filterTerm = signal('');\n protected readonly paginator = viewChild<ListPaginatorComponent>('paginator');\n\n protected readonly sortedUsers = computed(() =>\n [...this.state.users()].sort((a, b) =>\n toLowerCaseAndWithoutDiacritics(a.fullName).localeCompare(toLowerCaseAndWithoutDiacritics(b.fullName))\n )\n );\n\n protected readonly filteredUsers = computed(() => {\n const term = toLowerCaseAndWithoutDiacritics(this.filterTerm());\n if (!term) return this.sortedUsers();\n return this.sortedUsers().filter(u => toLowerCaseAndWithoutDiacritics(u.fullName).includes(term));\n });\n\n protected readonly pagedUsers = computed(() => {\n const start = (this.currentPage() - 1) * this.PAGE_SIZE;\n return this.filteredUsers().slice(start, start + this.PAGE_SIZE);\n });\n\n private readonly state = inject(GroupEditionStateService);\n private readonly dialogService = inject(DialogService);\n private readonly dialog = inject(MatDialog);\n\n public constructor() {\n effect(() => {\n this.filterTerm();\n untracked(() => {\n this.currentPage.set(1);\n this.paginator()?.moveToFirst();\n });\n });\n }\n\n public async removeUser(user: GroupUser): Promise<void> {\n const confirmed = await this.dialogService.askForDeleteConfirmation(\n user.fullName,\n 'groupEdition.userEntityName',\n true\n );\n if (confirmed) {\n this.state.removeUser(user.id);\n this.clampCurrentPage();\n }\n }\n\n public onPageChange(page: number): void {\n this.currentPage.set(page);\n }\n\n public openAddUsersDialog(): void {\n const currentUserIds = this.state.users().map((u: GroupUser) => u.id);\n const dialogData: GroupUserSelectionDialogData = { currentUserIds };\n\n this.dialog.open(GroupUserSelectionDialogComponent, {\n width: '600px',\n maxHeight: '80vh',\n autoFocus: false,\n data: dialogData\n }).afterClosed().subscribe((selectedUsers: GroupUser[] | undefined) => {\n if (selectedUsers?.length) {\n this.state.addUsers(selectedUsers);\n this.paginator()?.moveToFirst();\n this.currentPage.set(1);\n }\n });\n }\n\n private clampCurrentPage(): void {\n const total = untracked(this.filteredUsers).length;\n const maxPage = Math.ceil(total / this.PAGE_SIZE) || 1;\n if (untracked(this.currentPage) > maxPage) {\n this.currentPage.set(1);\n this.paginator()?.moveToFirst();\n }\n }\n}\n","import { Permission } from \"./permission\";\nimport { v4 as uuid } from 'uuid';\n\nexport interface Group {\n id: string;\n name: string;\n assignableByAllUsers: boolean;\n permissions: GroupPermission[];\n users: GroupUser[];\n}\n\nexport interface GroupUser {\n id: string;\n fullName: string;\n additionalInformation?: string|undefined;\n}\n\nexport interface GroupPermission {\n idModulePermission: string;\n isAllowed: boolean;\n idGroup: string;\n id: string;\n}\n\nexport class PermissionValue {\n public id: string;\n public name: string;\n public allowed: boolean|null;\n\n private permission: Permission;\n private groupPermission: GroupPermission|null|undefined;\n\n public constructor(permission: Permission, groupPermission: GroupPermission|null|undefined) {\n this.id = permission.id;\n this.permission = permission;\n this.groupPermission = groupPermission;\n this.name = permission.name;\n this.allowed = groupPermission?.isAllowed ?? null;\n }\n\n public toGroupPermission(idGroup: string): GroupPermission|null {\n if (this.allowed === null) {\n return null;\n } else if (this.groupPermission) {\n return { ...this.groupPermission, isAllowed: this.allowed };\n } else {\n return { id: uuid(), idGroup, idModulePermission: this.permission.id, isAllowed: this.allowed };\n }\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { firstValueFrom } from 'rxjs';\nimport { Permission } from '../models/permission';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionManagementService {\n\n private readonly client = inject(HttpClient);\n private readonly baseUrl = this.buildBaseUrl(\n inject(CaucaCoreService).getConfig().apiUrl, \n inject(MANAGEMENT_URL_PREFIX, { optional: true }));\n\n public async get(): Promise<Permission[]> {\n return await firstValueFrom(this.client.get<Permission[]>(this.buildApiUrl(`PermissionManagement`)));\n }\n\n private buildBaseUrl(apiUrl: string, urlPrefix: string | null): string {\n const normalizedApiUrl = apiUrl.replace(/\\/+$/, '');\n const normalizedPrefix = urlPrefix?.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}`\n : normalizedApiUrl;\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n return `${normalizedApiUrl}/${path}`;\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\" appearance=\"outline\" class=\"full-width-field grid-search-box\">\n <mat-label>{{ 'dataGrid.keywordsLabel' | translate }}</mat-label>\n <input matInput [(ngModel)]=\"searchText\">\n <mat-icon matSuffix>search</mat-icon>\n</mat-form-field>\n\n<mat-selection-list id=\"permission-list\">\n @for (permission of filteredPermissionsValues(); track permission.id) {\n <mat-list-item class=\"permission-item\">\n <mat-checkbox\n [color]=\"permission.allowed === null ? undefined : 'primary'\"\n [indeterminate]=\"permission.allowed === null\"\n [checked]=\"permission.allowed\"\n (click)=\"onValueChange(permission)\" >\n {{permission.name}}\n </mat-checkbox>\n </mat-list-item>\n } @empty {\n <div class=\"no-result\">\n <mat-icon class=\"no-result-icon\">grid_off</mat-icon>\n <div class=\"no-result-text body2\">{{ 'noResult' | translate }}</div>\n </div>\n }\n\n</mat-selection-list>\n","import { ChangeDetectionStrategy, Component, computed, inject, model, OnInit, signal } from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIcon } from '@angular/material/icon';\nimport { PermissionValue, GroupPermission } from '../../core/models/group';\nimport { Permission } from '../../core/models/permission';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { PermissionManagementService } from '../../core/api/permission-management.service';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'cauca-group-permission-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatListModule, MatFormField, MatLabel, MatInput, MatSuffix, TranslatePipe, FormsModule, MatIcon, MatCheckboxModule],\n templateUrl: './group-permission-list.component.html',\n styleUrl: './group-permission-list.component.scss',\n})\nexport class GroupPermissionListComponent implements OnInit {\n\n public searchText = model<string>('');\n public currentPermissions = signal<PermissionValue[]>([]);\n public filteredPermissionsValues = computed(() =>\n this.currentPermissions()?.filter((permission) => toLowerCaseAndWithoutDiacritics(permission.name)\n .includes(toLowerCaseAndWithoutDiacritics(this.searchText()))) || []);\n\n private readonly service = inject(PermissionManagementService);\n private readonly state = inject(GroupEditionStateService);\n private modulePermissions!: Permission[];\n\n public async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n public onValueChange(value: PermissionValue): void {\n if (value.allowed === null) {\n value.allowed = true;\n } else if (value.allowed) {\n value.allowed = false;\n } else {\n value.allowed = null;\n }\n this.state.form.get('permissions')!.setValue(this.toGroupPermissions(this.state.id!));\n }\n\n private async loadData(): Promise<void> {\n try {\n this.modulePermissions = await this.service.get();\n const values = this.modulePermissions\n .map((permission) => new PermissionValue(permission, this.getPermissions().find((groupPermission) => groupPermission.idModulePermission === permission.id)));\n this.currentPermissions.set(values);\n } catch {\n this.modulePermissions = [];\n }\n }\n\n private toGroupPermissions(idGroup: string): GroupPermission[] {\n return this.currentPermissions().map((permissionValue) => permissionValue.toGroupPermission(idGroup))\n .filter((groupPermission) => groupPermission !== null) as GroupPermission[];\n }\n\n private getPermissions(): GroupPermission[] {\n return this.state.form.get('permissions')!.value;\n }\n\n}\n","<div [formGroup]=\"state.form\">\n\n <cauca-group-container id=\"group-options\" caption=\"groupEdition.groupNameFieldLabel\">\n <mat-form-field id=\"group-name\">\n <mat-label>{{ 'groupEdition.nameFieldLabel' | translate }}</mat-label>\n <input matInput type=\"text\" formControlName=\"name\" required>\n @if (state.form.get(\"name\").hasError('required')) {<mat-error>{{'error.requiredField' | translate}}</mat-error>}\n </mat-form-field>\n <mat-slide-toggle id=\"assignable-by-all-users\" formControlName=\"assignableByAllUsers\" color=\"primary\">{{'groupEdition.assignableByAllUsersLabel' | translate}}</mat-slide-toggle>\n </cauca-group-container>\n\n <mat-divider />\n\n <cauca-group-container id=\"group-users\" caption=\"groupEdition.groupUsersFieldLabel\">\n <cauca-group-user-edition-list />\n </cauca-group-container>\n\n <mat-divider />\n\n <cauca-group-container id=\"group-permissions\" caption=\"groupEdition.groupPermissionsFieldLabel\">\n <cauca-group-permission-list />\n </cauca-group-container>\n\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { GroupUserEditionListComponent } from '../group-user-edition-list/group-user-edition-list.component';\nimport { GroupPermissionListComponent } from '../group-permission-list/group-permission-list.component';\nimport { GroupContainerComponent } from '@cauca-911/material';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'cauca-group-edition-form',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslatePipe, MatFormFieldModule, MatInputModule, MatSlideToggleModule, MatDividerModule, ReactiveFormsModule, GroupContainerComponent, GroupUserEditionListComponent, GroupPermissionListComponent],\n templateUrl: './group-edition-form.component.html',\n styleUrl: './group-edition-form.component.scss'\n})\nexport class GroupEditionFormComponent {\n public readonly state = inject(GroupEditionStateService);\n}\n","<cauca-page-title\n [caption]=\"title()\"\n baseCrumb=\"menu.management\"\n [breadcrumb]=\"title()\"\n [location]=\"currentLocation()\"\n [showBreadcrumb]=\"true\" />\n\n<mat-card>\n\n <mat-card-content>\n\n <cauca-loading-spinner-indicator />\n <cauca-loading-error (retryRequest)=\"loadData()\" />\n\n @if (isLoaded()) {\n <cauca-group-edition-form />\n }\n\n @if (showSavingError()) {\n <div class=\"spacer\"></div>\n <cauca-saving-error-box [show]=\"showSavingError()\" />\n }\n\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"spacer\"></div>\n <cauca-stroked-button class=\"cancel-button\" color=\"primary\" label=\"cancel\" [isDisabled]=\"isSaving()\" (buttonClick)=\"cancel()\" />\n <cauca-raised-button class=\"save-button\" color=\"primary\" label=\"save\" [isInProgress]=\"isSaving()\" (buttonClick)=\"save()\" />\n </mat-card-actions>\n\n</mat-card>\n","import { ChangeDetectionStrategy, Component, computed, HostListener, inject, input, OnInit, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { Router } from '@angular/router';\nimport { PageTitleComponent, LoadingSpinnerIndicatorComponent, LoadingErrorComponent, SavingErrorBoxComponent, StrokedButtonComponent, RaisedButtonComponent, LoadingStateService, DialogService, ConfirmationResult, OnDeactivate } from '@cauca-911/material';\nimport { GroupEditionFormComponent } from '../../components/group-edition-form/group-edition-form.component';\nimport { GroupManagementService } from '../../core/api/group-management.service';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { MANAGEMENT_ROUTE_SEGMENT } from '../../provide-cauca-management';\n\n@Component({\n selector: 'cauca-group-edition-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PageTitleComponent, MatCardModule, LoadingSpinnerIndicatorComponent, LoadingErrorComponent, SavingErrorBoxComponent, StrokedButtonComponent, RaisedButtonComponent, GroupEditionFormComponent],\n templateUrl: './group-edition-page.component.html',\n styleUrl: './group-edition-page.component.scss',\n providers: [\n GroupEditionStateService,\n LoadingStateService,\n GroupManagementService,\n ]\n})\nexport class GroupEditionPageComponent implements OnInit, OnDeactivate {\n\n public readonly id = input.required<string>();\n public readonly isLoaded = signal<boolean>(false);\n public readonly isSaving = signal<boolean>(false);\n public readonly showSavingError = signal(false);\n public readonly title = computed(() => 'groupEdition.' + (this.id() === 'new' ? 'newGroupTitle' : 'editGroupTitle'));\n public readonly currentLocation = computed(() => [{ link: this.groupsPath, title: 'menu.groups' }]);\n\n private readonly state = inject(GroupEditionStateService);\n private readonly dialog = inject(DialogService);\n private readonly router = inject(Router);\n private readonly managementRouteSegment = inject(MANAGEMENT_ROUTE_SEGMENT, { optional: true });\n private readonly groupsPath = this.buildGroupsPath();\n private isClosing = false;\n\n public ngOnInit(): void {\n this.loadData();\n }\n\n public async canDeactivate(): Promise<boolean> {\n return await this.canCancel();\n }\n\n public async cancel(): Promise<void> {\n if (await this.canCancel()) {\n this.isClosing = true;\n await this.router.navigate([this.groupsPath]);\n }\n }\n\n public async save(): Promise<void> {\n try {\n await this.tryToSave();\n } catch {\n this.showSavingError.set(true);\n } finally {\n this.resetSavingState();\n }\n }\n\n public async loadData(): Promise<void> {\n try {\n await this.state.setGroup(this.id());\n this.isLoaded.set(true);\n } catch (e) {\n console.error(e);\n this.isLoaded.set(false);\n }\n }\n\n @HostListener('window:beforeunload', ['$event'])\n protected async onBeforeUnload(e: BeforeUnloadEvent): Promise<void> {\n if (await this.canCancel()) {\n e.preventDefault();\n }\n }\n\n private async tryToSave(): Promise<void> {\n this.initializeSavingState();\n if (await this.state.saveData()) {\n this.isClosing = true;\n this.router.navigate([this.groupsPath]);\n } else {\n this.showValidationError();\n }\n }\n\n private buildGroupsPath(): string {\n const defaultRouteSegment = 'management';\n const rawRouteSegment = this.managementRouteSegment?.trim();\n\n if (rawRouteSegment == null || rawRouteSegment === '') {\n return `/${defaultRouteSegment}/groups`;\n }\n\n const normalizedRouteSegment = rawRouteSegment\n .split('/')\n .map(segment => segment.trim())\n .find(segment => segment !== '') ?? defaultRouteSegment;\n\n return `/${normalizedRouteSegment}/groups`;\n }\n\n private async canCancel(): Promise<boolean> {\n return this.isClosing || !this.state.isDirty() || await this.askForCancelConfirmation() === ConfirmationResult.Yes;\n }\n\n private initializeSavingState(): void {\n this.isSaving.set(true);\n this.showSavingError.set(false);\n }\n\n private resetSavingState(): void {\n this.isSaving.set(false);\n this.state.form.enable();\n }\n\n private async askForCancelConfirmation(): Promise<ConfirmationResult> {\n return await this.dialog.askForConfirmation('cancelEditionDialog.title', 'cancelEditionDialog.message');\n }\n\n private showValidationError(): void {\n this.state.form.markAllAsTouched();\n this.dialog.showDialog('validationErrorDialog.title', 'validationErrorDialog.messageNext');\n }\n\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CaucaManagementService {\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'cauca-management',\n templateUrl: './cauca-management.component.html',\n styles: [],\n imports: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaucaManagementComponent {\n\n}\n","<div>{{'core.noGenericComponentOnThisLibrary' | translate}}</div>","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { GroupModel } from '../models/group-model';\n\n/**\n * @deprecated This service is obsolete and should not be used.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ManagementGroupService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly baseUrlToUse = this.baseUrl.endsWith('api/') ? this.baseUrl : this.baseUrl + 'api/';\n\n public getAll(): Observable<GroupModel[]> {\n return this.http.get<GroupModel[]>(`${this.baseUrlToUse}GroupManagement`);\n }\n\n public get(idGroup: string): Observable<GroupModel> {\n return this.http.get<GroupModel>(`${this.baseUrlToUse}GroupManagement/${idGroup}`);\n }\n\n public save(group: GroupModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}GroupManagement`, group);\n }\n\n public delete(idGroup: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}GroupManagement/${idGroup}`);\n }\n\n public hasExistingGroupName(group: GroupModel): Observable<boolean> {\n return this.http.post<boolean>(`${this.baseUrlToUse}GroupManagement/GroupNameAlreadyExist`, group);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { UserGroupModel } from '../models/user-group-model';\nimport { UserPermissionModel } from '../models/user-permission-model';\nimport { CaucaCoreService } from '@cauca-911/core';\n\n/**\n * @deprecated This service is obsolete and should not be used.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ManagementUserService {\n protected readonly http = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly baseUrlToUse = this.baseUrl.endsWith('api/') ? this.baseUrl : this.baseUrl + 'api/';\n\n public getAll<TUser>(): Observable<TUser[]> {\n return this.http.get<TUser[]>(`${this.baseUrlToUse}UserManagement`);\n }\n\n public get<TUser>(idUser: string): Observable<TUser> {\n return this.http.get<TUser>(`${this.baseUrlToUse}UserManagement/${idUser}`);\n }\n\n public getGroup(idUser: string): Observable<any> {\n return this.http.get(`${this.baseUrlToUse}UserManagement/${idUser}/groups`);\n }\n\n public addGroup(userGroup: UserGroupModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}UserManagement/group`, userGroup);\n }\n\n public deleteGroup(idUserGroup: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}UserManagement/groups/${idUserGroup}`);\n }\n\n public addPermission(userPermission: UserPermissionModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}UserManagement/permission`, userPermission);\n }\n\n public deletePermission(idUserPermission: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}UserManagement/groups/${idUserPermission}`);\n }\n\n public save<TUser>(user: TUser): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}UserManagement`, user);\n }\n\n public delete(idUser: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}UserManagement/${idUser}`);\n }\n\n public hasExistingUserName<TUser>(user: TUser): Observable<boolean> {\n return this.http.post<boolean>(`${this.baseUrlToUse}UserManagement/UserNameAlreadyExist`, user);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { PermissionModel } from '../models/permission-model';\n\n\n/**\n * @deprecated This service is obsolete and should not be used.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ManagementPermissionService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly baseUrlToUse = this.baseUrl.endsWith('api/') ? this.baseUrl : this.baseUrl + 'api/';\n\n public getAll(): Observable<PermissionModel[]> {\n return this.http.get<PermissionModel[]>(`${this.baseUrlToUse}PermissionManagement`);\n }\n\n public get(idPermission: string): Observable<PermissionModel> {\n return this.http.get<PermissionModel>(`${this.baseUrlToUse}PermissionManagement/${idPermission}`);\n }\n\n public save(permission: PermissionModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}PermissionManagement`, permission);\n }\n\n public delete(idPermission: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}PermissionManagement/${idPermission}`);\n }\n}\n","<cauca-dx-data-grid [allowPrint]=\"showPrintButton()\" keyExpr=\"id\" [dataSource]=\"groups\"\n (onRowInserted)=\"onRowInserted($event)\" (onInitNewRow)=\"onInitNewRow()\" (onRowUpdated)=\"onRowUpdated($event)\"\n (onEditingStart)=\"onEditingStart($event)\" (onRowRemoved)=\"onRowRemoved($event)\">\n\n <dxi-column dataField=\"name\" [caption]=\"'management.name' | translate\">\n <dxi-validation-rule type=\"async\" [message]=\"'management.groupNameAlreadyUsed' | translate\"\n [validationCallback]=\"groupNameAlreadyUsedValidation\"></dxi-validation-rule>\n </dxi-column>\n <dxi-column dataField=\"assignableByAllUsers\" [caption]=\"'management.assignableByAllUsers' | translate\"\n dataType=\"boolean\" [visible]=\"showAssignableByAllUsers()\">\n </dxi-column>\n <dxi-column dataField=\"users\" [caption]=\"'management.users' | translate\" editCellTemplate=\"usersEditTemplate\"\n [calculateCellValue]=\"calculateUsersCellValue\">\n </dxi-column>\n <dxi-column dataField=\"permissions\" [caption]=\"'management.permissions' | translate\" [visible]=\"false\"\n editCellTemplate=\"permissionsEditTemplate\">\n </dxi-column>\n <dxo-export [enabled]=\"false\"></dxo-export>\n <dxo-editing mode=\"popup\" [allowAdding]=\"true\" [allowUpdating]=\"true\" [allowDeleting]=\"true\" [useIcons]=\"true\">\n <dxo-popup [showTitle]=\"true\" [title]=\"'management.group' | translate\" [fullScreen]=\"!showColumn\"></dxo-popup>\n <dxo-form colCount=\"1\" [labelLocation]=\"showColumnXS ? 'left' : 'top'\">\n <dxi-item dataField=\"name\" [isRequired]=\"true\"></dxi-item>\n <dxi-item dataField=\"users\"></dxi-item>\n <dxi-item dataField=\"permissions\"></dxi-item>\n <dxi-item dataField=\"assignableByAllUsers\" [visible]=\"showAssignableByAllUsers()\"></dxi-item>\n </dxo-form>\n </dxo-editing>\n\n <div *dxTemplate=\"let field of 'usersEditTemplate'\">\n <dx-tag-box valueExpr=\"id\" [displayExpr]=\"fullName\" [dataSource]=\"users\" [searchEnabled]=\"true\"\n [searchExpr]=\"fullName\" (onInitialized)=\"getGroupUser(field, $event)\"\n (onValueChanged)=\"setGroupUser(field, $event)\">\n </dx-tag-box>\n </div>\n <div *dxTemplate=\"let field of 'permissionsEditTemplate'\">\n <dx-list [dataSource]=\"permissions\" itemTemplate=\"rowTemplate\" [searchEnabled]=\"true\"\n [searchExpr]=\"['name', 'tag']\" [hoverStateEnabled]=\"hoverStatePermission()\">\n <div *dxTemplate=\"let permission of 'rowTemplate'\">\n <dx-check-box [text]=\"permission.name\" (onInitialized)=\"getPermissionStatus(field, permission, $event)\"\n (onValueChanged)=\"checkBoxToggled(field, permission, $event)\">\n </dx-check-box>\n </div>\n </dx-list>\n </div>\n</cauca-dx-data-grid>","import { Component, OnInit, inject, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CaucaDevextremeModule } from '@cauca-911/devextreme';\nimport { DxCheckBoxModule } from 'devextreme-angular/ui/check-box';\nimport { DxListModule } from 'devextreme-angular/ui/list';\nimport { DxTagBoxModule } from 'devextreme-angular/ui/tag-box';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { UserModel } from '../shared/models/user-model';\nimport { UserGroupModel } from '../shared/models/user-group-model';\nimport { GroupModel } from '../shared/models/group-model';\nimport { GroupPermissionModel } from '../shared/models/group-permission-model';\nimport { ManagementGroupService } from '../shared/services/management-group.service';\nimport { ManagementUserService } from '../shared/services/management-user.service';\nimport { PermissionModel } from '../shared/models/permission-model';\nimport { ManagementPermissionService } from '../shared/services/management-permission.service';\n\n/**\n * @deprecated This component is obsolete and should not be used.\n */\n@Component({\n selector: 'cauca-management-group',\n templateUrl: './cauca-management-group.component.html',\n styleUrls: ['./cauca-management-group.component.scss'],\n imports: [CaucaDevextremeModule, DxCheckBoxModule, DxListModule, DxTagBoxModule, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaucaManagementGroupComponent implements OnInit {\n\n public readonly showPrintButton = input(true);\n public readonly hoverStatePermission = input(true);\n public readonly showAssignableByAllUsers = input(true);\n\n public groups: GroupModel[] = [];\n public users: UserModel[] = [];\n public permissions: PermissionModel[] = [];\n public userFullName: any = {};\n public showColumn = true;\n public showColumnXS = true;\n public translations: any = [];\n\n private groupUsers: any;\n private readonly managementGroupService = inject(ManagementGroupService);\n private readonly managementUserService = inject(ManagementUserService);\n private readonly managementPermissionService = inject(ManagementPermissionService);\n\n public constructor() {\n const breakpointObserver = inject(BreakpointObserver);\n\n breakpointObserver.observe(['(max-width: 1000px)']).subscribe((result: any) => {\n this.showColumn = !result.matches;\n });\n breakpointObserver.observe(['(max-width: 600px)']).subscribe((result: any) => {\n this.showColumnXS = !result.matches;\n });\n }\n\n public ngOnInit(): void {\n this.managementUserService.getAll<UserModel>().subscribe((data: UserModel[]) => {\n this.users = data;\n this.users.forEach((user: UserModel) => {\n if (user.isActive) {\n if (user.firstName !== '' && user.lastName !== '') {\n this.userFullName[user.id] = `${user.firstName} ${user.lastName}`;\n }\n }\n });\n });\n this.managementPermissionService.getAll().subscribe((permissions: PermissionModel[]) => {\n const permissionIndex = permissions.findIndex((c: PermissionModel) => c.tag === 'CanAccessPermissions');\n if (permissionIndex !== -1) {\n permissions.splice(permissionIndex, 1);\n }\n permissions.sort((a: PermissionModel, b: PermissionModel) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n });\n this.permissions = permissions;\n });\n this.getGroups();\n }\n\n public fullName(data: any): string {\n if (!data) {\n return '';\n }\n\n return `${data.firstName} ${data.lastName}`;\n }\n\n public getGroupUser(field: any, e: any): void {\n const users: string[] = [];\n if (this.groupUsers) {\n this.groupUsers.forEach((user: any) => {\n users.push(user.idUser);\n });\n }\n e.component.option('value', users);\n }\n\n public setGroupUser(field: any, e: any): void {\n const groupUser: UserGroupModel[] = [];\n\n e.value.forEach((idUser: string) => {\n const groupIndex = (field.data.users || []).findIndex((g: any) => g.idUser === idUser);\n\n if (groupIndex === -1) {\n groupUser.push({ idUser, } as UserGroupModel);\n } else {\n groupUser.push(field.data.users[groupIndex]);\n }\n });\n\n field.setValue(JSON.parse(JSON.stringify(groupUser)));\n }\n\n public setGroupPermission(field: any, e: any): void {\n const groupUser: UserGroupModel[] = [];\n\n e.value.forEach((idUser: string) => {\n groupUser.push({\n idUser,\n } as UserGroupModel);\n });\n\n field.setValue(JSON.parse(JSON.stringify(groupUser)));\n }\n\n public getPermissionStatus(field: any, permission: any, e: any): void {\n const groupPermission = (field.value || []).find((p: any) => p.idModulePermission === permission.id);\n\n if (groupPermission) {\n e.component.option('value', groupPermission.isAllowed);\n } else {\n e.component.option('value', undefined);\n }\n }\n\n public checkBoxToggled(field: any, permission: any, e: any): void {\n if (e.component.skipOnValueChanged) {\n e.component.skipOnValueChanged = false;\n return;\n }\n if (e.component.setUndefinedNextTime) {\n e.component.setUndefinedNextTime = false;\n e.component.skipOnValueChanged = true;\n e.component.option('value', undefined);\n this.setPermissionStatus(field, permission, undefined);\n return;\n }\n if (e.value === false) {\n e.component.setUndefinedNextTime = true;\n }\n\n this.setPermissionStatus(field, permission, e.value);\n }\n\n public onRowInserted(e: any): void {\n this.saveGroup(e.data as GroupModel);\n }\n\n public onRowUpdated(e: any): void {\n this.saveGroup(e.data as GroupModel);\n }\n\n public onRowRemoved(e: any): void {\n const group = (e.data as GroupModel);\n this.managementGroupService.delete(group.id).subscribe(() => {\n this.getGroups();\n });\n }\n\n public calculateUsersCellValue = (e: any): string => {\n const users = (e.users ? e.users as UserGroupModel[] : []);\n let usersNames: any[] = [];\n users.forEach((user: UserGroupModel) => {\n const userGroup = this.users.filter((u: UserModel) => u.id === user.idUser);\n if (userGroup && userGroup[0]) {\n usersNames.push(userGroup[0].firstName + ' ' + userGroup[0].lastName);\n }\n });\n usersNames = usersNames.sort((one: string, two: string) => (one < two ? -1 : 1));\n return usersNames.join(', ');\n };\n\n public onEditingStart(e: any): void {\n this.groupUsers = e.data.users;\n }\n\n public onInitNewRow(): void {\n this.groupUsers = [];\n }\n\n public groupNameAlreadyUsedValidation = (e: any): Promise<boolean> => this.managementGroupService.hasExistingGroupName(e.data).pipe(\n map((exist: boolean) => !exist)\n ).toPromise();\n\n private setPermissionStatus(field: any, permission: any, value: any): void {\n const groupPermissions = field.value || [];\n const groupIndex = groupPermissions.findIndex((p: GroupPermissionModel) => p.idModulePermission === permission.id);\n\n if (groupIndex > -1) {\n groupPermissions[groupIndex].isAllowed = value;\n } else {\n groupPermissions.push({\n idModulePermission: permission.id,\n isAllowed: value,\n } as GroupPermissionModel);\n }\n\n field.setValue(JSON.parse(JSON.stringify(groupPermissions)));\n }\n\n private saveGroup(group: GroupModel): void {\n this.removePermissionUndefined(group);\n if (group.users) {\n group.users.forEach((userGroup: UserGroupModel) => {\n userGroup.idGroup = group.id;\n });\n }\n if (group.permissions) {\n group.permissions.forEach((groupPermission: GroupPermissionModel) => {\n groupPermission.idGroup = group.id;\n });\n }\n this.managementGroupService.save(group).subscribe(() => {\n this.getGroups();\n });\n this.groupUsers = [];\n }\n\n private removePermissionUndefined(group: GroupModel): void {\n group.permissions = group.permissions.filter((permission: GroupPermissionModel) => permission.isAllowed !== undefined);\n }\n\n private getGroups(): void {\n this.managementGroupService.getAll().subscribe((data: any) => this.groups = data);\n }\n}\n","import { UserGroupModel } from './user-group-model';\nimport { UserPermissionModel } from './user-permission-model';\n\n/**\n * @deprecated This model is obsolete and should not be used.\n */\n\nexport class UserModel {\n public id: string;\n public userName = '';\n public firstName = '';\n public lastName = '';\n public password = '';\n public email = '';\n public isActive = true;\n public groups: UserGroupModel[];\n public permissions: UserPermissionModel[];\n public twoFactorAuthenticatorEnabled = false;\n}\n","import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { UserModel } from '../shared/models/user-model';\nimport { ManagementUserService } from '../shared/services/management-user.service';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CaucaDevextremeModule } from '@cauca-911/devextreme';\n\n/**\n * @deprecated This component is obsolete and should not be used.\n */\n\n@Component({\n selector: 'cauca-management-user',\n templateUrl: './cauca-management-user.component.html',\n styleUrls: ['./cauca-management-user.component.scss'],\n imports: [CaucaDevextremeModule, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaucaManagementUserComponent implements OnInit {\n\n public users: UserModel[] = [\n new UserModel()\n ];\n public showColumnXS = true;\n private readonly managementUserService = inject(ManagementUserService);\n\n public constructor() {\n const breakpointObserver = inject(BreakpointObserver);\n\n breakpointObserver.observe(['(max-width: 600px)']).subscribe((result: BreakpointState) => {\n this.showColumnXS = !result.matches;\n });\n }\n\n public ngOnInit(): void {\n this.getUsers();\n }\n\n public onRowInserted(e: any): void {\n this.saveGroup(e.data as UserModel);\n }\n\n public onRowUpdated(e: any): void {\n this.saveGroup(e.key as UserModel);\n }\n\n public onRowRemoved(e: any): void {\n const user = (e.data as UserModel);\n this.managementUserService.delete(user.id).subscribe((_data: any) => {\n this.getUsers();\n });\n }\n\n public userNameAlreadyUsedValidation = (e): Promise<boolean> => this.managementUserService.hasExistingUserName(e.data).pipe(\n map((exist: boolean) => !exist)\n ).toPromise();\n\n private saveGroup(user: UserModel): void {\n this.managementUserService.save<UserModel>(user).subscribe(() => {\n this.getUsers();\n });\n }\n\n private getUsers(): void {\n this.managementUserService.getAll<UserModel>().subscribe((data: any) => this.users = data);\n }\n}\n","<cauca-dx-data-grid\n keyExpr=\"id\"\n [dataSource]=\"users\"\n (onRowInserted)=\"onRowInserted($event)\"\n (onRowUpdated)=\"onRowUpdated($event)\"\n (onRowRemoved)=\"onRowRemoved($event)\">\n\n <dxi-column dataField=\"userName\" [caption]=\"'management.userName' | translate\">\n <dxi-validation-rule type=\"async\" [message]=\"'management.userNameAlreadyUsed' | translate\" [validationCallback]=\"userNameAlreadyUsedValidation\"></dxi-validation-rule>\n </dxi-column>\n <dxi-column dataField=\"isActive\" [caption]=\"'management.isActive' | translate\" [visible]=\"false\"></dxi-column>\n <dxi-column dataField=\"firstName\" [caption]=\"'management.firstName' | translate\"></dxi-column>\n <dxi-column dataField=\"lastName\" [caption]=\"'management.lastName' | translate\"></dxi-column>\n <dxi-column dataField=\"groups\" [caption]=\"'management.group' | translate\"></dxi-column>\n\n <dxo-editing mode=\"popup\" [allowAdding]=\"true\" [allowUpdating]=\"true\" [allowDeleting]=\"true\" [useIcons]=\"true\">\n <dxo-popup [showTitle]=\"true\" [title]=\"'management.group' | translate\"></dxo-popup>\n <dxo-form colCount=\"2\" [labelLocation]=\"showColumnXS ? 'left' : 'top'\">\n <dxi-item dataField=\"userName\" [isRequired]=\"true\"></dxi-item>\n <dxi-item dataField=\"isActive\"></dxi-item>\n <dxi-item dataField=\"firstName\"></dxi-item>\n <dxi-item dataField=\"lastName\"></dxi-item>\n <dxi-item dataField=\"group\"></dxi-item>\n </dxo-form>\n </dxo-editing>\n</cauca-dx-data-grid>\n","import { NgModule } from '@angular/core';\nimport { CaucaManagementComponent } from './cauca-management.component';\nimport { CaucaManagementGroupComponent } from './cauca-management-group/cauca-management-group.component';\nimport { CaucaManagementUserComponent } from './cauca-management-user/cauca-management-user.component';\n\n/**\n * @deprecated Import CaucaManagementComponent, CaucaManagementUserComponent and\n * CaucaManagementGroupComponent directly in your standalone components. Kept as a re-export\n * so existing consumers keep compiling.\n */\n@NgModule({\n imports: [\n CaucaManagementComponent,\n CaucaManagementGroupComponent,\n CaucaManagementUserComponent,\n ],\n exports: [\n CaucaManagementComponent,\n CaucaManagementUserComponent,\n CaucaManagementGroupComponent,\n ]\n})\nexport class CaucaManagementModule { }\n","/**\n * @deprecated This model is obsolete and should not be used.\n */\n\nexport class UserGroupModel {\n public idUserGroup = '';\n public idGroup = '';\n public idUser = '';\n}\n","/**\n * @deprecated This model is obsolete and should not be used.\n */\nexport class UserPermissionModel {\n public idUserPermission = '';\n public isAllowed = false;\n public idUser = '';\n public idModulePermission = '';\n}\n","import {GroupPermissionModel} from './group-permission-model';\nimport {UserGroupModel} from './user-group-model';\n\n/**\n * @deprecated This model is obsolete and should not be used.\n */\nexport class GroupModel {\n public id: string;\n public name = '';\n public users: UserGroupModel[] = [];\n public permissions: GroupPermissionModel[] = [];\n public assignableByAllUsers: boolean;\n}\n","/**\n * @deprecated This model is obsolete and should not be used.\n */\nexport class GroupPermissionModel {\n public idGroupPermission = '';\n public isAllowed = false;\n public idGroup = '';\n public idModulePermission = '';\n}\n","/*\n * Public API Surface of cauca-management\n */\n\n\nexport * from './lib/provide-cauca-management';\nexport * from './lib/management.routes';\nexport * from './lib/core/refreshable-permission-state';\n\nexport * from './lib/pages/groups-page/groups-page.component';\nexport * from './lib/pages/group-edition-page/group-edition-page.component';\n\n// all of the following is deprecated and will be removed in a future release.\nexport * from './lib/cauca-management.service';\nexport * from './lib/cauca-management.component';\nexport * from './lib/cauca-management.module';\nexport * from './lib/cauca-management-group/cauca-management-group.component';\nexport * from './lib/cauca-management-user/cauca-management-user.component';\n\nexport { ManagementUserService } from './lib/shared/services/management-user.service';\nexport { ManagementGroupService } from './lib/shared/services/management-group.service';\nexport { UserModel } from './lib/shared/models/user-model';\nexport { UserGroupModel } from './lib/shared/models/user-group-model';\nexport { UserPermissionModel } from './lib/shared/models/user-permission-model';\nexport { GroupModel } from './lib/shared/models/group-model';\nexport { GroupPermissionModel } from './lib/shared/models/group-permission-model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_c0","uuid","_forTrack0","i1","i2","i5","i3","i4"],"mappings":"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"}
1
+ {"version":3,"file":"cauca-911-management.mjs","sources":["../../../projects/cauca-management/src/lib/provide-cauca-management.ts","../../../projects/cauca-management/src/lib/management.routes.ts","../../../projects/cauca-management/src/lib/core/api/group-management.service.ts","../../../projects/cauca-management/src/lib/components/group-list-grid/group-list-grid.component.ts","../../../projects/cauca-management/src/lib/components/group-list-grid/group-list-grid.component.html","../../../projects/cauca-management/src/lib/pages/groups-page/groups-page.component.ts","../../../projects/cauca-management/src/lib/pages/groups-page/groups-page.component.html","../../../projects/cauca-management/src/lib/core/functions/generate-group.ts","../../../projects/cauca-management/src/lib/core/states/group-edition-state.service.ts","../../../projects/cauca-management/src/lib/core/models/user-for-group.ts","../../../projects/cauca-management/src/lib/core/api/user-search.service.ts","../../../projects/cauca-management/src/lib/components/group-user-selection-dialog/group-user-selection-dialog.component.html","../../../projects/cauca-management/src/lib/components/group-user-selection-dialog/group-user-selection-dialog.component.ts","../../../projects/cauca-management/src/lib/components/group-user-edition-list/group-user-edition-list.component.html","../../../projects/cauca-management/src/lib/components/group-user-edition-list/group-user-edition-list.component.ts","../../../projects/cauca-management/src/lib/core/models/group.ts","../../../projects/cauca-management/src/lib/core/api/permission-management.service.ts","../../../projects/cauca-management/src/lib/components/group-permission-list/group-permission-list.component.html","../../../projects/cauca-management/src/lib/components/group-permission-list/group-permission-list.component.ts","../../../projects/cauca-management/src/lib/components/group-edition-form/group-edition-form.component.html","../../../projects/cauca-management/src/lib/components/group-edition-form/group-edition-form.component.ts","../../../projects/cauca-management/src/lib/pages/group-edition-page/group-edition-page.component.html","../../../projects/cauca-management/src/lib/pages/group-edition-page/group-edition-page.component.ts","../../../projects/cauca-management/src/lib/core/api/user-permission-detail.service.ts","../../../projects/cauca-management/src/lib/core/models/user-permission-detail.ts","../../../projects/cauca-management/src/lib/components/user-permission-list/user-permission-list.component.html","../../../projects/cauca-management/src/lib/components/user-permission-list/user-permission-list.component.ts","../../../projects/cauca-management/src/lib/components/user-permissions-dialog/user-permissions-dialog.component.html","../../../projects/cauca-management/src/lib/components/user-permissions-dialog/user-permissions-dialog.component.ts","../../../projects/cauca-management/src/lib/cauca-management.service.ts","../../../projects/cauca-management/src/lib/cauca-management.component.ts","../../../projects/cauca-management/src/lib/cauca-management.component.html","../../../projects/cauca-management/src/lib/shared/services/management-group.service.ts","../../../projects/cauca-management/src/lib/shared/services/management-user.service.ts","../../../projects/cauca-management/src/lib/shared/services/management-permission.service.ts","../../../projects/cauca-management/src/lib/cauca-management-group/cauca-management-group.component.html","../../../projects/cauca-management/src/lib/cauca-management-group/cauca-management-group.component.ts","../../../projects/cauca-management/src/lib/shared/models/user-model.ts","../../../projects/cauca-management/src/lib/cauca-management-user/cauca-management-user.component.ts","../../../projects/cauca-management/src/lib/cauca-management-user/cauca-management-user.component.html","../../../projects/cauca-management/src/lib/cauca-management.module.ts","../../../projects/cauca-management/src/lib/shared/models/user-group-model.ts","../../../projects/cauca-management/src/lib/shared/models/user-permission-model.ts","../../../projects/cauca-management/src/lib/shared/models/group-model.ts","../../../projects/cauca-management/src/lib/shared/models/group-permission-model.ts","../../../projects/cauca-management/src/public-api.ts","../../../projects/cauca-management/src/cauca-911-management.ts"],"sourcesContent":["import { EnvironmentProviders, InjectionToken, Injector, Provider, Type } from '@angular/core';\r\nimport { RefreshablePermissionState } from '../public-api';\r\n\r\nexport const MANAGEMENT_URL_PREFIX = new InjectionToken<string>('MANAGEMENT_URL_PREFIX');\r\nexport const MANAGEMENT_ROUTE_SEGMENT = new InjectionToken<string>('MANAGEMENT_ROUTE_SEGMENT');\r\nexport const REFRESHABLE_PERMISSION_STATE_TOKEN = new InjectionToken<RefreshablePermissionState>('REFRESHABLE_PERMISSION_STATE_TOKEN');\r\n\r\nexport interface CaucaManagementConfig {\r\n managementUrlPrefix?: string | null;\r\n managementRouteSegment?: string | null;\r\n refreshablePermissionState: Type<RefreshablePermissionState>;\r\n}\r\n\r\nexport function provideCaucaManagement(config: CaucaManagementConfig): (Provider | EnvironmentProviders)[] {\r\n return [\r\n ...(config?.managementUrlPrefix != null\r\n ? [{ provide: MANAGEMENT_URL_PREFIX, useValue: config.managementUrlPrefix }]\r\n : []),\r\n ...(config?.managementRouteSegment != null\r\n ? [{ provide: MANAGEMENT_ROUTE_SEGMENT, useValue: config.managementRouteSegment }]\r\n : []),\r\n { provide: REFRESHABLE_PERMISSION_STATE_TOKEN, useFactory: (injector: Injector) => injector.get(config.refreshablePermissionState), deps: [Injector] } \r\n ];\r\n}","import { Routes } from '@angular/router';\r\nimport { pendingChangesGuard } from '@cauca-911/material';\r\n\r\nexport const managementGroupRoutes: Routes = [{\r\n path: 'groups',\r\n loadComponent: () => import('./pages/groups-page/groups-page.component').then(m => m.GroupsPageComponent),\r\n }, {\r\n path: 'groups/:id',\r\n loadComponent: () => import('./pages/group-edition-page/group-edition-page.component').then(m => m.GroupEditionPageComponent),\r\n canDeactivate: [pendingChangesGuard],\r\n }];","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { firstValueFrom } from 'rxjs';\nimport { Group } from '../models/group';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GroupManagementService {\n\n private readonly client = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly urlPrefix = inject(MANAGEMENT_URL_PREFIX, { optional: true }) ?? '';\n\n public async deleteGroup(groupId: string): Promise<void> {\n await firstValueFrom(this.client.delete(this.buildApiUrl(`GroupManagement/${groupId}`)));\n }\n\n public async save(group: Group): Promise<void> {\n await firstValueFrom( this.client.post<Group>(this.buildApiUrl(`GroupManagement`), group));\n }\n\n public async get(groupId: string): Promise<Group> {\n return await firstValueFrom(this.client.get<Group>(this.buildApiUrl(`GroupManagement/${groupId}`)));\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n const normalizedPrefix = this.urlPrefix.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}/${path}`\n : `${normalizedApiUrl}/${path}`;\n }\n}\n","import { ChangeDetectionStrategy, Component, computed, inject, OnInit, ViewChild } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { MatSort } from '@angular/material/sort';\nimport { Router } from '@angular/router';\nimport ODataFilterBuilder from 'odata-filter-builder';\nimport { ODataFilter } from 'odata-data-source';\nimport { DialogService } from '@cauca-911/material';\nimport { DataGridCommandsColumnComponent, OdataGridComponent, SortableDataGridCheckColumnComponent, SortableDataGridColumnComponent } from '@cauca-911/datagrid';\nimport { GroupManagementService } from '../../core/api/group-management.service';\n\n@Component({\n selector: 'cauca-group-list-grid',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatSort, OdataGridComponent, SortableDataGridColumnComponent, SortableDataGridCheckColumnComponent, DataGridCommandsColumnComponent, TranslatePipe],\n templateUrl: './group-list-grid.component.html',\n styleUrl: './group-list-grid.component.scss'\n})\nexport class GroupListGridComponent implements OnInit {\n\n public readonly columns = computed(() => this.getColumns());\n\n @ViewChild(OdataGridComponent, { static: true }) public table!: OdataGridComponent;\n @ViewChild(MatSort, { static: true }) public sort!: MatSort;\n\n private readonly router = inject(Router);\n private readonly dialog = inject(DialogService);\n private readonly service = inject(GroupManagementService);\n\n public ngOnInit(): void {\n this.table.setUpSort(this.sort);\n }\n\n public createGroup(): void {\n this.router.navigate([this.router.url, 'new']);\n }\n\n public async deleteGroup(group: any): Promise<void> {\n if (await this.dialog.askForDeleteConfirmation(group.name, 'management.group', true)) {\n try {\n await this.service.deleteGroup(group.id);\n this.table.refreshData();\n } catch {\n await this.dialog.showDeletionError(group.name);\n }\n }\n }\n\n public filterPredicate = (filter: string): ODataFilter[] => {\n let builder = new ODataFilterBuilder();\n if (filter) {\n builder = builder.and(ODataFilterBuilder('or')\n .contains('searchableGroup', filter)\n .contains('searchableUsers', filter)\n );\n }\n return [{getFilter: () => [builder.toString()]}];\n };\n\n private getColumns(): string[] {\n const baseColumns = ['name', 'assignableByAllUsers'];\n return [...baseColumns, 'buttons'];\n }\n}\n\n","<cauca-odata-grid matSort\n [showTableOptions]=\"true\"\n class=\"groups-datagrid\"\n aria-describedby=\"Groups table\"\n resourceName=\"GroupList\"\n [showAddButton]=\"true\"\n (addButtonClick)=\"createGroup()\"\n [addButtonLabel]=\"'groups.addButtonLabel'| translate\"\n [baseSort]=\"['name']\"\n [filterPredicate]=\"filterPredicate\"\n [displayedColumns]=\"columns()\">\n\n <cauca-sortable-data-grid-column id=\"name\" prop=\"name\" [label]=\"'groups.groupNameColumnLabel'|translate\"/>\n <cauca-sortable-data-grid-check-column id=\"is-assignable-all-users\" prop=\"assignableByAllUsers\" [label]=\"'groups.assignableByAllUsersColumnLabel'|translate\" width=\"200px\" />\n <cauca-data-grid-commands-column id=\"buttons\" prop=\"buttons\" [canDelete]=\"true\" [canEdit]=\"true\" editLinkField=\"id\" (deleteClick)=\"deleteGroup($event)\" />\n\n</cauca-odata-grid>\n","import { ChangeDetectionStrategy, Component } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { PageTitleComponent } from '@cauca-911/material';\nimport { GroupListGridComponent } from '../../components/group-list-grid/group-list-grid.component';\n\n@Component({\n selector: 'cauca-groups-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatCardModule, PageTitleComponent, GroupListGridComponent],\n templateUrl: './groups-page.component.html',\n styleUrl: './groups-page.component.scss'\n})\nexport class GroupsPageComponent {\n}\n","<cauca-page-title\n [showBreadcrumb]=\"true\"\n caption=\"menu.groups\"\n baseCrumb=\"menu.management\"\n breadcrumb=\"menu.groups\" />\n\n<mat-card class=\"page-content\">\n\n <mat-card-content class=\"page-content-grid\">\n <cauca-group-list-grid />\n </mat-card-content>\n\n</mat-card>\n","import { v4 as uuid } from 'uuid';\nimport { Group } from '../models/group';\n\nexport function generateGroup(): Group {\n return {\n id: uuid(),\n name: '',\n assignableByAllUsers: false,\n permissions: [],\n users: []\n };\n}","import { inject, Injectable } from '@angular/core';\nimport { toSignal } from '@angular/core/rxjs-interop';\nimport { GroupManagementService } from '../api/group-management.service';\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\nimport { Group, GroupUser } from '../models/group';\nimport { generateGroup } from '../functions/generate-group';\nimport { startWith } from 'rxjs';\nimport { REFRESHABLE_PERMISSION_STATE_TOKEN } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GroupEditionStateService {\n public isEditionMode = true;\n public form = this.generateForm();\n public id: string| null = null;\n\n public readonly users = toSignal(\n this.form.get('users')!.valueChanges.pipe(startWith(this.form.get('users')!.value)),\n { initialValue: [] as GroupUser[] }\n );\n\n private readonly usersControl = this.form.get('users') as FormControl<GroupUser[]>;\n private currentGroup: Group| null = null;\n private readonly dataService = inject(GroupManagementService);\n private readonly userPermissionStateService = inject(REFRESHABLE_PERMISSION_STATE_TOKEN);\n\n public async setGroup(id: string): Promise<void> {\n if (id === 'new') {\n this.isEditionMode = false;\n this.generateNewGroup();\n } else {\n this.setCurrentGroup(await this.dataService.get(id));\n }\n }\n\n public async saveData(): Promise<boolean> {\n const data = this.getUpdatedGroup();\n if (this.form.valid) {\n this.form.disable();\n await this.dataService.save(data);\n await this.refreshCurrentUserPermissions();\n return true;\n } else {\n return false;\n }\n }\n\n public generateNewGroup(): void {\n this.currentGroup = generateGroup();\n this.setCurrentGroup(this.currentGroup);\n this.form.markAsPristine();\n }\n\n public setCurrentGroup(group: Group): void {\n this.id = group.id;\n this.currentGroup = group;\n if (!this.isEditionMode) {\n this.form.get('name')!.setValidators(Validators.required);\n }\n this.form.patchValue(group);\n this.form.get('users')!.setValue(group.users || []);\n this.form.get('permissions')!.setValue(group.permissions || []);\n this.form.markAsPristine();\n }\n\n public getUpdatedGroup(): Group {\n const formValues = this.form.value;\n return {\n ...this.currentGroup,\n ...formValues,\n };\n }\n\n public isDirty(): boolean {\n return this.form.dirty;\n }\n\n public isValid(): boolean {\n this.form.updateValueAndValidity();\n return this.form.valid;\n }\n\n public showErrors(): void {\n this.form.markAllAsTouched();\n }\n\n public addUsers(users: GroupUser[]): void {\n const current = this.usersControl.value ?? [];\n const existingIds = new Set(current.map(u => u.id));\n const newUsers = users.filter(u => !existingIds.has(u.id));\n this.usersControl.setValue([...current, ...newUsers]);\n this.form.markAsDirty();\n }\n\n public removeUser(userId: string): void {\n const current = this.usersControl.value ?? [];\n this.usersControl.setValue(current.filter(u => u.id !== userId));\n this.form.markAsDirty();\n }\n\n private async refreshCurrentUserPermissions() {\n try {\n await this.userPermissionStateService.refresh();\n } catch (error) {\n console.error('Error refreshing user permissions after group save', error);\n }\n }\n\n private generateForm(): FormGroup {\n const formGroup = new FormGroup({\n name: new FormControl('', [Validators.required]),\n assignableByAllUsers: new FormControl(false),\n users: new FormControl([]),\n permissions: new FormControl([])\n });\n return formGroup;\n }\n}\n","export interface UserForGroupData {\r\n id: string;\r\n firstName: string;\r\n lastName: string;\r\n additionalInformation: string|undefined;\r\n}\r\n\r\nexport class UserForGroup {\r\n public id: string;\r\n public firstName: string;\r\n public lastName: string;\r\n public fullName: string;\r\n public additionalInformation: string|undefined;\r\n\r\n public constructor(data: UserForGroupData) {\r\n this.id = data.id;\r\n this.firstName = data.firstName;\r\n this.lastName = data.lastName;\r\n this.fullName = `${data.firstName} ${data.lastName}`;\r\n this.additionalInformation = data.additionalInformation;\r\n }\r\n}\r\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { firstValueFrom } from 'rxjs';\nimport { UserForGroup, UserForGroupData } from '../models/user-for-group';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserSearchService {\n\n private readonly client = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly urlPrefix = inject(MANAGEMENT_URL_PREFIX, { optional: true }) ?? '';\n\n public async search(\n query: string,\n excludedUserIds: string[],\n skip: number,\n top: number\n ): Promise<{ items: UserForGroup[]; totalCount: number }> {\n const url = this.buildApiUrl('UserSearch');\n const body: { query: string; skip: number; top: number; excludedUserIds: string[] } = {\n query,\n skip,\n top,\n excludedUserIds\n };\n const response = await firstValueFrom(\n this.client.post<{ items: UserForGroupData[]; totalCount: number }>(url, body)\n );\n return {\n items: response.items.map(u => new UserForGroup(u)),\n totalCount: response.totalCount\n };\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n const normalizedPrefix = this.urlPrefix.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}/${path}`\n : `${normalizedApiUrl}/${path}`;\n }\n}\n","<div mat-dialog-title>\n <div class=\"h6\">{{ 'groupEdition.userSelectionTitle' | translate }}</div>\n <cauca-icon-button id=\"closeButton\" (buttonClick)=\"closeClick()\" icon=\"close\" />\n</div>\n\n<mat-dialog-content class=\"dialog-content\">\n <mat-form-field subscriptSizing=\"dynamic\" class=\"search-field\">\n <mat-label>{{ 'groupEdition.searchUserPlaceholder' | translate }}</mat-label>\n <input matInput type=\"text\" [value]=\"searchTerm()\" (input)=\"searchTerm.set($any($event.target).value)\" />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n\n @if (searchTerm().length >= 0 && searchTerm().length < MIN_SEARCH_LENGTH) {\n <div class=\"search-hint body2\">{{ 'groupEdition.searchMinChars' | translate }}</div>\n }\n\n <div class=\"results-region\">\n <cauca-loading-error (retryRequest)=\"searchResource.reload()\" />\n\n @if (searchResource.isLoading() && !results().length) {\n <cauca-loading-spinner-indicator />\n } @else if (results().length) {\n <mat-selection-list class=\"results-list\" [compareWith]=\"compareUserById\" (selectionChange)=\"onSelectionChange($event)\">\n @for (user of results(); track user.id; let i = $index) {\n <mat-list-option\n [value]=\"user\"\n [selected]=\"selectedUserIds().has(user.id)\"\n color=\"primary\"\n class=\"result-item\"\n [class.result-item--even]=\"i % 2 === 1\">\n <span matListItemTitle>{{ user.fullName }}</span>\n @if (user.additionalInformation) {\n <span matListItemSubtitle>{{ user.additionalInformation }}</span>\n }\n </mat-list-option>\n }\n </mat-selection-list>\n\n @if (totalCount() > PAGE_SIZE) {\n <cauca-list-paginator\n #resultPaginator\n [itemsCount]=\"totalCount()\"\n [pageSize]=\"PAGE_SIZE\"\n (pageChange)=\"onPageChange($event)\" />\n }\n } @else if (!searchResource.isLoading() && totalCount() === 0 && debouncedSearch().length >= MIN_SEARCH_LENGTH) {\n <div class=\"no-results body2\">{{ 'noResult' | translate }}</div>\n }\n </div>\n</mat-dialog-content>\n\n<mat-dialog-actions class=\"dialog-actions\">\n <div class=\"selected-users-panel\">\n <span class=\"selected-users-label caption\">{{ 'groupEdition.selectedUsersLabel' | translate }}</span>\n <div class=\"selected-users-names body2\" [matTooltip]=\"selectedUsersLabel()\">{{ selectedUsersLabel() }}</div>\n </div>\n <cauca-stroked-button color=\"primary\" label=\"cancel\" (buttonClick)=\"cancel()\" />\n <cauca-raised-button\n color=\"primary\"\n label=\"ok\"\n [isDisabled]=\"selectedUsers().length === 0\"\n (buttonClick)=\"confirm()\" />\n</mat-dialog-actions>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, resource, signal, untracked, viewChild } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { MatListModule, MatSelectionListChange } from '@angular/material/list';\nimport { MatTooltipModule } from '@angular/material/tooltip';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { toObservable, toSignal } from '@angular/core/rxjs-interop';\nimport { debounceTime } from 'rxjs';\nimport { LoadingSpinnerIndicatorComponent, LoadingErrorComponent, StrokedButtonComponent, RaisedButtonComponent, LoadingStateService, ListPaginatorComponent, IconButtonComponent } from '@cauca-911/material';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { UserSearchService } from '../../core/api/user-search.service';\nimport { UserForGroup } from '../../core/models/user-for-group';\nimport { GroupUser } from '../../core/models/group';\n\nexport interface GroupUserSelectionDialogData {\n currentUserIds: string[];\n}\n\n@Component({\n selector: 'cauca-group-user-selection-dialog',\n standalone: true,\n imports: [\n MatDialogModule,\n MatFormFieldModule,\n MatInputModule,\n MatIconModule,\n MatListModule,\n FormsModule,\n TranslatePipe,\n LoadingSpinnerIndicatorComponent,\n LoadingErrorComponent,\n StrokedButtonComponent,\n RaisedButtonComponent,\n ListPaginatorComponent,\n MatTooltipModule,\n IconButtonComponent,\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [UserSearchService, LoadingStateService],\n templateUrl: './group-user-selection-dialog.component.html',\n styleUrl: './group-user-selection-dialog.component.scss'\n})\nexport class GroupUserSelectionDialogComponent {\n protected readonly MIN_SEARCH_LENGTH = 3;\n protected readonly PAGE_SIZE = 10;\n protected readonly data = inject<GroupUserSelectionDialogData>(MAT_DIALOG_DATA);\n protected readonly searchTerm = signal('');\n protected readonly selectedUsers = signal<GroupUser[]>([]);\n protected readonly currentPage = signal(1);\n protected readonly paginator = viewChild<ListPaginatorComponent>('resultPaginator');\n\n protected readonly selectedUserIds = computed(() => new Set(this.selectedUsers().map(u => u.id)));\n\n protected readonly selectedUsersLabel = computed(() =>\n [...this.selectedUsers()]\n .sort((a, b) => toLowerCaseAndWithoutDiacritics(a.fullName).localeCompare(toLowerCaseAndWithoutDiacritics(b.fullName)))\n .map(u => u.fullName)\n .join(', ')\n );\n\n protected readonly debouncedSearch = toSignal(\n toObservable(this.searchTerm).pipe(debounceTime(300)),\n { initialValue: '' }\n );\n\n protected readonly searchResource = resource({\n params: computed(() => ({ query: this.debouncedSearch(), page: this.currentPage() })),\n loader: ({ params }) => {\n if (params.query.length < this.MIN_SEARCH_LENGTH) {\n return Promise.resolve({ items: [], totalCount: 0 });\n }\n const skip = (params.page - 1) * this.PAGE_SIZE;\n return this.userSearchService.search(params.query, this.data.currentUserIds, skip, this.PAGE_SIZE);\n }\n });\n\n protected readonly results = computed(() => this.lastResult().items);\n protected readonly totalCount = computed(() => this.lastResult().totalCount);\n\n private readonly lastResult = signal<{ items: UserForGroup[]; totalCount: number }>({ items: [], totalCount: 0 });\n private readonly dialogRef = inject(MatDialogRef<GroupUserSelectionDialogComponent>);\n private readonly userSearchService = inject(UserSearchService);\n\n public constructor() {\n effect(() => {\n const value = this.searchResource.value();\n if (value) {\n untracked(() => this.lastResult.set(value));\n }\n });\n\n effect(() => {\n this.debouncedSearch();\n untracked(() => {\n this.currentPage.set(1);\n this.paginator()?.moveToFirst();\n this.lastResult.set({ items: [], totalCount: 0 });\n });\n });\n }\n\n public closeClick(): void {\n this.dialogRef.close();\n }\n\n public toggleUser(user: UserForGroup): void {\n const groupUser: GroupUser = { id: user.id, fullName: user.fullName, additionalInformation: user.additionalInformation };\n if (this.selectedUserIds().has(user.id)) {\n this.selectedUsers.update(current => current.filter(u => u.id !== user.id));\n } else {\n this.selectedUsers.update(current => [...current, groupUser]);\n }\n }\n\n public onPageChange(page: number): void {\n this.currentPage.set(page);\n }\n\n public onSelectionChange(event: MatSelectionListChange): void {\n for (const option of event.options) {\n this.toggleUser(option.value as UserForGroup);\n }\n }\n\n public cancel(): void {\n this.dialogRef.close();\n }\n\n public confirm(): void {\n this.dialogRef.close(this.selectedUsers());\n }\n\n protected readonly compareUserById = (a: UserForGroup, b: UserForGroup): boolean => a?.id === b?.id;\n}\n","<div class=\"user-edition-list\">\n\n <mat-form-field subscriptSizing=\"dynamic\" class=\"filter-field\">\n <mat-label>{{ 'groupEdition.filterUsersPlaceholder' | translate }}</mat-label>\n <input matInput type=\"text\" [value]=\"filterTerm()\" (input)=\"filterTerm.set($any($event.target).value)\" />\n <mat-icon matSuffix>search</mat-icon>\n </mat-form-field>\n\n <mat-list class=\"users-list\">\n @for (user of pagedUsers(); track user.id) {\n <mat-list-item class=\"user-item\">\n <mat-icon matListItemIcon>person</mat-icon>\n <div matListItemTitle class=\"user-name\">{{ user.fullName }}</div>\n @if (user.additionalInformation) {\n <div matListItemLine class=\"user-additional-information\">{{ user.additionalInformation }}</div>\n }\n <cauca-icon-button\n matListItemMeta\n class=\"delete-button\"\n icon=\"delete\"\n color=\"error\"\n (buttonClick)=\"removeUser(user)\"\n [attr.aria-label]=\"'groupEdition.removeUserLabel' | translate\" />\n </mat-list-item>\n } @empty {\n @if (filterTerm()) {\n <div class=\"no-users body2\">{{ 'groupEdition.noFilteredUsers' | translate }}</div>\n } @else {\n <div class=\"no-users body2\">{{ 'groupEdition.noUsers' | translate }}</div>\n }\n }\n </mat-list>\n\n @if (filteredUsers().length > PAGE_SIZE) {\n <cauca-list-paginator\n #paginator\n [itemsCount]=\"filteredUsers().length\"\n [pageSize]=\"PAGE_SIZE\"\n (pageChange)=\"onPageChange($event)\" />\n }\n\n <cauca-raised-button\n class=\"add-users-button\"\n color=\"primary\"\n label=\"groupEdition.addUsersButton\"\n (buttonClick)=\"openAddUsersDialog()\" />\n</div>\n","import { ChangeDetectionStrategy, Component, computed, effect, inject, signal, untracked, viewChild } from '@angular/core';\nimport { MatDialog } from '@angular/material/dialog';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { MatInputModule } from '@angular/material/input';\nimport { MatIconModule } from '@angular/material/icon';\nimport { FormsModule } from '@angular/forms';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { DialogService, IconButtonComponent, ListPaginatorComponent, RaisedButtonComponent } from '@cauca-911/material';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { GroupUser } from '../../core/models/group';\nimport { GroupUserSelectionDialogComponent, GroupUserSelectionDialogData } from '../group-user-selection-dialog/group-user-selection-dialog.component';\nimport { MatListModule } from '@angular/material/list';\n\n@Component({\n selector: 'cauca-group-user-edition-list',\n standalone: true,\n imports: [TranslatePipe, IconButtonComponent, RaisedButtonComponent, ListPaginatorComponent, MatFormFieldModule, MatInputModule, MatIconModule, FormsModule, MatListModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n providers: [DialogService],\n templateUrl: './group-user-edition-list.component.html',\n styleUrl: './group-user-edition-list.component.scss'\n})\nexport class GroupUserEditionListComponent {\n protected readonly PAGE_SIZE = 10;\n protected readonly currentPage = signal(1);\n protected readonly filterTerm = signal('');\n protected readonly paginator = viewChild<ListPaginatorComponent>('paginator');\n\n protected readonly sortedUsers = computed(() =>\n [...this.state.users()].sort((a, b) =>\n toLowerCaseAndWithoutDiacritics(a.fullName).localeCompare(toLowerCaseAndWithoutDiacritics(b.fullName))\n )\n );\n\n protected readonly filteredUsers = computed(() => {\n const term = toLowerCaseAndWithoutDiacritics(this.filterTerm());\n if (!term) return this.sortedUsers();\n return this.sortedUsers().filter(u => toLowerCaseAndWithoutDiacritics(u.fullName).includes(term));\n });\n\n protected readonly pagedUsers = computed(() => {\n const start = (this.currentPage() - 1) * this.PAGE_SIZE;\n return this.filteredUsers().slice(start, start + this.PAGE_SIZE);\n });\n\n private readonly state = inject(GroupEditionStateService);\n private readonly dialogService = inject(DialogService);\n private readonly dialog = inject(MatDialog);\n\n public constructor() {\n effect(() => {\n this.filterTerm();\n untracked(() => {\n this.currentPage.set(1);\n this.paginator()?.moveToFirst();\n });\n });\n }\n\n public async removeUser(user: GroupUser): Promise<void> {\n const confirmed = await this.dialogService.askForDeleteConfirmation(\n user.fullName,\n 'groupEdition.userEntityName',\n true\n );\n if (confirmed) {\n this.state.removeUser(user.id);\n this.clampCurrentPage();\n }\n }\n\n public onPageChange(page: number): void {\n this.currentPage.set(page);\n }\n\n public openAddUsersDialog(): void {\n const currentUserIds = this.state.users().map((u: GroupUser) => u.id);\n const dialogData: GroupUserSelectionDialogData = { currentUserIds };\n\n this.dialog.open(GroupUserSelectionDialogComponent, {\n width: '600px',\n maxHeight: '80vh',\n autoFocus: false,\n data: dialogData\n }).afterClosed().subscribe((selectedUsers: GroupUser[] | undefined) => {\n if (selectedUsers?.length) {\n this.state.addUsers(selectedUsers);\n this.paginator()?.moveToFirst();\n this.currentPage.set(1);\n }\n });\n }\n\n private clampCurrentPage(): void {\n const total = untracked(this.filteredUsers).length;\n const maxPage = Math.ceil(total / this.PAGE_SIZE) || 1;\n if (untracked(this.currentPage) > maxPage) {\n this.currentPage.set(1);\n this.paginator()?.moveToFirst();\n }\n }\n}\n","import { Permission } from \"./permission\";\nimport { v4 as uuid } from 'uuid';\n\nexport interface Group {\n id: string;\n name: string;\n assignableByAllUsers: boolean;\n permissions: GroupPermission[];\n users: GroupUser[];\n}\n\nexport interface GroupUser {\n id: string;\n fullName: string;\n additionalInformation?: string|undefined;\n}\n\nexport interface GroupPermission {\n idModulePermission: string;\n isAllowed: boolean;\n idGroup: string;\n id: string;\n}\n\nexport class PermissionValue {\n public id: string;\n public name: string;\n public allowed: boolean|null;\n\n private permission: Permission;\n private groupPermission: GroupPermission|null|undefined;\n\n public constructor(permission: Permission, groupPermission: GroupPermission|null|undefined) {\n this.id = permission.id;\n this.permission = permission;\n this.groupPermission = groupPermission;\n this.name = permission.name;\n this.allowed = groupPermission?.isAllowed ?? null;\n }\n\n public toGroupPermission(idGroup: string): GroupPermission|null {\n if (this.allowed === null) {\n return null;\n } else if (this.groupPermission) {\n return { ...this.groupPermission, isAllowed: this.allowed };\n } else {\n return { id: uuid(), idGroup, idModulePermission: this.permission.id, isAllowed: this.allowed };\n }\n }\n}","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { firstValueFrom } from 'rxjs';\nimport { Permission } from '../models/permission';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PermissionManagementService {\n\n private readonly client = inject(HttpClient);\n private readonly baseUrl = this.buildBaseUrl(\n inject(CaucaCoreService).getConfig().apiUrl, \n inject(MANAGEMENT_URL_PREFIX, { optional: true }));\n\n public async get(): Promise<Permission[]> {\n return await firstValueFrom(this.client.get<Permission[]>(this.buildApiUrl(`PermissionManagement`)));\n }\n\n private buildBaseUrl(apiUrl: string, urlPrefix: string | null): string {\n const normalizedApiUrl = apiUrl.replace(/\\/+$/, '');\n const normalizedPrefix = urlPrefix?.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}`\n : normalizedApiUrl;\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n return `${normalizedApiUrl}/${path}`;\n }\n}\n","<mat-form-field subscriptSizing=\"dynamic\" appearance=\"outline\" class=\"full-width-field grid-search-box\">\n <mat-label>{{ 'dataGrid.keywordsLabel' | translate }}</mat-label>\n <input matInput [(ngModel)]=\"searchText\">\n <mat-icon matSuffix>search</mat-icon>\n</mat-form-field>\n\n<mat-selection-list id=\"permission-list\">\n @for (permission of filteredPermissionsValues(); track permission.id) {\n <mat-list-item class=\"permission-item\">\n <mat-checkbox\n [color]=\"permission.allowed === null ? undefined : 'primary'\"\n [indeterminate]=\"permission.allowed === null\"\n [checked]=\"permission.allowed\"\n (click)=\"onValueChange(permission)\" >\n {{permission.name}}\n </mat-checkbox>\n </mat-list-item>\n } @empty {\n <div class=\"no-result\">\n <mat-icon class=\"no-result-icon\">grid_off</mat-icon>\n <div class=\"no-result-text body2\">{{ 'noResult' | translate }}</div>\n </div>\n }\n\n</mat-selection-list>\n","import { ChangeDetectionStrategy, Component, computed, inject, model, OnInit, signal } from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { FormsModule } from '@angular/forms';\nimport { MatIcon } from '@angular/material/icon';\nimport { PermissionValue, GroupPermission } from '../../core/models/group';\nimport { Permission } from '../../core/models/permission';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { PermissionManagementService } from '../../core/api/permission-management.service';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { MatCheckboxModule } from '@angular/material/checkbox';\n\n@Component({\n selector: 'cauca-group-permission-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatListModule, MatFormField, MatLabel, MatInput, MatSuffix, TranslatePipe, FormsModule, MatIcon, MatCheckboxModule],\n templateUrl: './group-permission-list.component.html',\n styleUrl: './group-permission-list.component.scss',\n})\nexport class GroupPermissionListComponent implements OnInit {\n\n public searchText = model<string>('');\n public currentPermissions = signal<PermissionValue[]>([]);\n public filteredPermissionsValues = computed(() =>\n this.currentPermissions()?.filter((permission) => toLowerCaseAndWithoutDiacritics(permission.name)\n .includes(toLowerCaseAndWithoutDiacritics(this.searchText()))) || []);\n\n private readonly service = inject(PermissionManagementService);\n private readonly state = inject(GroupEditionStateService);\n private modulePermissions!: Permission[];\n\n public async ngOnInit(): Promise<void> {\n await this.loadData();\n }\n\n public onValueChange(value: PermissionValue): void {\n if (value.allowed === null) {\n value.allowed = true;\n } else if (value.allowed) {\n value.allowed = false;\n } else {\n value.allowed = null;\n }\n this.state.form.get('permissions')!.setValue(this.toGroupPermissions(this.state.id!));\n }\n\n private async loadData(): Promise<void> {\n try {\n this.modulePermissions = await this.service.get();\n const values = this.modulePermissions\n .map((permission) => new PermissionValue(permission, this.getPermissions().find((groupPermission) => groupPermission.idModulePermission === permission.id)));\n this.currentPermissions.set(values);\n } catch {\n this.modulePermissions = [];\n }\n }\n\n private toGroupPermissions(idGroup: string): GroupPermission[] {\n return this.currentPermissions().map((permissionValue) => permissionValue.toGroupPermission(idGroup))\n .filter((groupPermission) => groupPermission !== null) as GroupPermission[];\n }\n\n private getPermissions(): GroupPermission[] {\n return this.state.form.get('permissions')!.value;\n }\n\n}\n","<div [formGroup]=\"state.form\">\n\n <cauca-group-container id=\"group-options\" caption=\"groupEdition.groupNameFieldLabel\">\n <mat-form-field id=\"group-name\">\n <mat-label>{{ 'groupEdition.nameFieldLabel' | translate }}</mat-label>\n <input matInput type=\"text\" formControlName=\"name\" required>\n @if (state.form.get(\"name\").hasError('required')) {<mat-error>{{'error.requiredField' | translate}}</mat-error>}\n </mat-form-field>\n <mat-slide-toggle id=\"assignable-by-all-users\" formControlName=\"assignableByAllUsers\" color=\"primary\">{{'groupEdition.assignableByAllUsersLabel' | translate}}</mat-slide-toggle>\n </cauca-group-container>\n\n <mat-divider />\n\n <cauca-group-container id=\"group-users\" caption=\"groupEdition.groupUsersFieldLabel\">\n <cauca-group-user-edition-list />\n </cauca-group-container>\n\n <mat-divider />\n\n <cauca-group-container id=\"group-permissions\" caption=\"groupEdition.groupPermissionsFieldLabel\">\n <cauca-group-permission-list />\n </cauca-group-container>\n\n</div>\n","import { ChangeDetectionStrategy, Component, inject } from '@angular/core';\nimport { MatFormFieldModule } from '@angular/material/form-field';\nimport { ReactiveFormsModule } from '@angular/forms';\nimport { MatSlideToggleModule } from '@angular/material/slide-toggle';\nimport { MatDividerModule } from '@angular/material/divider';\nimport { MatInputModule } from '@angular/material/input';\nimport { GroupUserEditionListComponent } from '../group-user-edition-list/group-user-edition-list.component';\nimport { GroupPermissionListComponent } from '../group-permission-list/group-permission-list.component';\nimport { GroupContainerComponent } from '@cauca-911/material';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'cauca-group-edition-form',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [TranslatePipe, MatFormFieldModule, MatInputModule, MatSlideToggleModule, MatDividerModule, ReactiveFormsModule, GroupContainerComponent, GroupUserEditionListComponent, GroupPermissionListComponent],\n templateUrl: './group-edition-form.component.html',\n styleUrl: './group-edition-form.component.scss'\n})\nexport class GroupEditionFormComponent {\n public readonly state = inject(GroupEditionStateService);\n}\n","<cauca-page-title\n [caption]=\"title()\"\n baseCrumb=\"menu.management\"\n [breadcrumb]=\"title()\"\n [location]=\"currentLocation()\"\n [showBreadcrumb]=\"true\" />\n\n<mat-card>\n\n <mat-card-content>\n\n <cauca-loading-spinner-indicator />\n <cauca-loading-error (retryRequest)=\"loadData()\" />\n\n @if (isLoaded()) {\n <cauca-group-edition-form />\n }\n\n @if (showSavingError()) {\n <div class=\"spacer\"></div>\n <cauca-saving-error-box [show]=\"showSavingError()\" />\n }\n\n </mat-card-content>\n\n <mat-card-actions>\n <div class=\"spacer\"></div>\n <cauca-stroked-button class=\"cancel-button\" color=\"primary\" label=\"cancel\" [isDisabled]=\"isSaving()\" (buttonClick)=\"cancel()\" />\n <cauca-raised-button class=\"save-button\" color=\"primary\" label=\"save\" [isInProgress]=\"isSaving()\" (buttonClick)=\"save()\" />\n </mat-card-actions>\n\n</mat-card>\n","import { ChangeDetectionStrategy, Component, computed, HostListener, inject, input, OnInit, signal } from '@angular/core';\nimport { MatCardModule } from '@angular/material/card';\nimport { Router } from '@angular/router';\nimport { PageTitleComponent, LoadingSpinnerIndicatorComponent, LoadingErrorComponent, SavingErrorBoxComponent, StrokedButtonComponent, RaisedButtonComponent, LoadingStateService, DialogService, ConfirmationResult, OnDeactivate } from '@cauca-911/material';\nimport { GroupEditionFormComponent } from '../../components/group-edition-form/group-edition-form.component';\nimport { GroupManagementService } from '../../core/api/group-management.service';\nimport { GroupEditionStateService } from '../../core/states/group-edition-state.service';\nimport { MANAGEMENT_ROUTE_SEGMENT } from '../../provide-cauca-management';\n\n@Component({\n selector: 'cauca-group-edition-page',\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [PageTitleComponent, MatCardModule, LoadingSpinnerIndicatorComponent, LoadingErrorComponent, SavingErrorBoxComponent, StrokedButtonComponent, RaisedButtonComponent, GroupEditionFormComponent],\n templateUrl: './group-edition-page.component.html',\n styleUrl: './group-edition-page.component.scss',\n providers: [\n GroupEditionStateService,\n LoadingStateService,\n GroupManagementService,\n ]\n})\nexport class GroupEditionPageComponent implements OnInit, OnDeactivate {\n\n public readonly id = input.required<string>();\n public readonly isLoaded = signal<boolean>(false);\n public readonly isSaving = signal<boolean>(false);\n public readonly showSavingError = signal(false);\n public readonly title = computed(() => 'groupEdition.' + (this.id() === 'new' ? 'newGroupTitle' : 'editGroupTitle'));\n public readonly currentLocation = computed(() => [{ link: this.groupsPath, title: 'menu.groups' }]);\n\n private readonly state = inject(GroupEditionStateService);\n private readonly dialog = inject(DialogService);\n private readonly router = inject(Router);\n private readonly managementRouteSegment = inject(MANAGEMENT_ROUTE_SEGMENT, { optional: true });\n private readonly groupsPath = this.buildGroupsPath();\n private isClosing = false;\n\n public ngOnInit(): void {\n this.loadData();\n }\n\n public async canDeactivate(): Promise<boolean> {\n return await this.canCancel();\n }\n\n public async cancel(): Promise<void> {\n if (await this.canCancel()) {\n this.isClosing = true;\n await this.router.navigate([this.groupsPath]);\n }\n }\n\n public async save(): Promise<void> {\n try {\n await this.tryToSave();\n } catch {\n this.showSavingError.set(true);\n } finally {\n this.resetSavingState();\n }\n }\n\n public async loadData(): Promise<void> {\n try {\n await this.state.setGroup(this.id());\n this.isLoaded.set(true);\n } catch (e) {\n console.error(e);\n this.isLoaded.set(false);\n }\n }\n\n @HostListener('window:beforeunload', ['$event'])\n protected async onBeforeUnload(e: BeforeUnloadEvent): Promise<void> {\n if (await this.canCancel()) {\n e.preventDefault();\n }\n }\n\n private async tryToSave(): Promise<void> {\n this.initializeSavingState();\n if (await this.state.saveData()) {\n this.isClosing = true;\n this.router.navigate([this.groupsPath]);\n } else {\n this.showValidationError();\n }\n }\n\n private buildGroupsPath(): string {\n const defaultRouteSegment = 'management';\n const rawRouteSegment = this.managementRouteSegment?.trim();\n\n if (rawRouteSegment == null || rawRouteSegment === '') {\n return `/${defaultRouteSegment}/groups`;\n }\n\n const normalizedRouteSegment = rawRouteSegment\n .split('/')\n .map(segment => segment.trim())\n .find(segment => segment !== '') ?? defaultRouteSegment;\n\n return `/${normalizedRouteSegment}/groups`;\n }\n\n private async canCancel(): Promise<boolean> {\n return this.isClosing || !this.state.isDirty() || await this.askForCancelConfirmation() === ConfirmationResult.Yes;\n }\n\n private initializeSavingState(): void {\n this.isSaving.set(true);\n this.showSavingError.set(false);\n }\n\n private resetSavingState(): void {\n this.isSaving.set(false);\n this.state.form.enable();\n }\n\n private async askForCancelConfirmation(): Promise<ConfirmationResult> {\n return await this.dialog.askForConfirmation('cancelEditionDialog.title', 'cancelEditionDialog.message');\n }\n\n private showValidationError(): void {\n this.state.form.markAllAsTouched();\n this.dialog.showDialog('validationErrorDialog.title', 'validationErrorDialog.messageNext');\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { inject, Injectable } from '@angular/core';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { LoadingStateService } from '@cauca-911/material';\nimport { Observable } from 'rxjs';\nimport { UserPermissionDetail } from '../models/user-permission-detail';\nimport { MANAGEMENT_URL_PREFIX } from '../../provide-cauca-management';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserPermissionDetailService {\n\n private readonly client = inject(HttpClient);\n private readonly loadingState = inject(LoadingStateService, { optional: true });\n private readonly baseUrl = this.buildBaseUrl(\n inject(CaucaCoreService).getConfig().apiUrl,\n inject(MANAGEMENT_URL_PREFIX, { optional: true }));\n\n public getForUser(userId: string): Observable<UserPermissionDetail[]> {\n const request$ = this.client.get<UserPermissionDetail[]>(this.buildApiUrl(`UserPermissionDetails/user/${userId}`));\n return this.loadingState ? this.loadingState.withLoadingIndicator(request$) : request$;\n }\n\n private buildBaseUrl(apiUrl: string, urlPrefix: string | null): string {\n const normalizedApiUrl = apiUrl.replace(/\\/+$/, '');\n const normalizedPrefix = urlPrefix?.trim().replace(/^\\/+|\\/+$/g, '');\n return normalizedPrefix\n ? `${normalizedApiUrl}/${normalizedPrefix}`\n : normalizedApiUrl;\n }\n\n private buildApiUrl(path: string): string {\n const normalizedApiUrl = this.baseUrl.replace(/\\/+$/, '');\n return `${normalizedApiUrl}/${path}`;\n }\n}\n","export enum PermissionStatus {\n Undefined = 0,\n Allowed = 1,\n Denied = 2\n}\n\nexport enum UserPermissionOriginKind {\n Group = 0,\n UserOverride = 1\n}\n\nexport interface UserPermissionOrigin {\n kind: UserPermissionOriginKind;\n groupId: string | null;\n groupName: string | null;\n isAllowed: boolean;\n}\n\nexport interface UserPermissionDetail {\n idModulePermission: string;\n tag: string;\n name: string;\n status: PermissionStatus;\n origins: UserPermissionOrigin[];\n}\n","<mat-form-field subscriptSizing=\"dynamic\" appearance=\"outline\" class=\"search-field\">\n <mat-label>{{ 'dataGrid.keywordsLabel' | translate }}</mat-label>\n <input matInput type=\"text\" [value]=\"searchText()\" (input)=\"searchText.set($any($event.target).value)\">\n <mat-icon matSuffix>search</mat-icon>\n</mat-form-field>\n\n<mat-list id=\"permission-list\">\n @for (permission of filteredPermissions(); track permission.idModulePermission) {\n <mat-list-item class=\"permission-item\">\n\n <mat-icon matListItemIcon\n [class.allowed]=\"permission.status === PermissionStatus.Allowed\"\n [class.denied]=\"permission.status !== PermissionStatus.Allowed\">\n @if (permission.status === PermissionStatus.Allowed) {\n check\n } @else {\n block\n }\n </mat-icon>\n\n <div matListItemTitle>{{ permission.name }}</div>\n\n <cauca-icon-button\n matListItemMeta\n icon=\"info\"\n [matMenuTriggerFor]=\"originsMenu\" />\n\n <mat-menu #originsMenu=\"matMenu\">\n <div class=\"origins-menu-content\" (click)=\"$event.stopPropagation()\">\n <div class=\"origin-item body2\">{{ 'userPermissionDetails.originsLabel' | translate }}</div>\n @for (origin of permission.origins; track $index) {\n <div class=\"origin-item\">\n <mat-icon [class.allowed]=\"origin.isAllowed\" [class.denied]=\"!origin.isAllowed\">\n @if (origin.isAllowed) {\n check\n } @else {\n block\n }\n </mat-icon>\n <span class=\"origin-name body1\">\n {{ origin.kind === UserPermissionOriginKind.UserOverride\n ? ('userPermissionDetails.userOverrideOrigin' | translate)\n : origin.groupName }}\n </span>\n </div>\n } @empty {\n <div class=\"origin-item\">\n <span class=\"no-origins\">{{ 'userPermissionDetails.noOrigins' | translate }}</span>\n </div>\n }\n </div>\n </mat-menu>\n\n </mat-list-item>\n } @empty {\n <div class=\"no-result\">\n <mat-icon class=\"no-result-icon\">grid_off</mat-icon>\n <div class=\"no-result-text body2\">{{ 'noResult' | translate }}</div>\n </div>\n }\n</mat-list>\n","import { ChangeDetectionStrategy, Component, computed, input, signal } from '@angular/core';\nimport { MatListModule } from '@angular/material/list';\nimport { MatFormField, MatLabel, MatSuffix } from '@angular/material/form-field';\nimport { MatInput } from '@angular/material/input';\nimport { MatIcon } from '@angular/material/icon';\nimport { MatMenuModule } from '@angular/material/menu';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { IconButtonComponent } from '@cauca-911/material';\nimport { toLowerCaseAndWithoutDiacritics } from '@cauca-911/core';\nimport { PermissionStatus, UserPermissionDetail, UserPermissionOriginKind } from '../../core/models/user-permission-detail';\n\n@Component({\n selector: 'cauca-user-permission-list',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [MatListModule, MatFormField, MatLabel, MatInput, MatSuffix, MatIcon, MatMenuModule, TranslatePipe, IconButtonComponent],\n templateUrl: './user-permission-list.component.html',\n styleUrl: './user-permission-list.component.scss',\n})\nexport class UserPermissionListComponent {\n\n public readonly permissions = input.required<UserPermissionDetail[]>();\n public readonly PermissionStatus = PermissionStatus;\n public readonly UserPermissionOriginKind = UserPermissionOriginKind;\n\n public readonly searchText = signal<string>('');\n\n public readonly filteredPermissions = computed(() =>\n this.permissions().filter((permission) => toLowerCaseAndWithoutDiacritics(permission.name)\n .includes(toLowerCaseAndWithoutDiacritics(this.searchText()))));\n}\n","<div mat-dialog-title>\n <div class=\"title-block\">\n <div class=\"h6\">{{ 'userPermissionDetails.title' | translate }}</div>\n @if (data.userDisplayName) {\n <div class=\"subtitle body2\">{{ data.userDisplayName }}</div>\n }\n </div>\n</div>\n\n<mat-dialog-content class=\"dialog-content\">\n <cauca-loading-spinner-indicator />\n <cauca-loading-error (retryRequest)=\"permissionsResource.reload()\" />\n\n <cauca-user-permission-list [permissions]=\"permissions()\" />\n</mat-dialog-content>\n\n<mat-dialog-actions align=\"end\">\n <cauca-raised-button color=\"primary\" label=\"close\" (buttonClick)=\"closeDialog()\" />\n</mat-dialog-actions>\n","import { ChangeDetectionStrategy, Component, computed, inject } from '@angular/core';\nimport { MAT_DIALOG_DATA, MatDialogModule, MatDialogRef } from '@angular/material/dialog';\nimport { rxResource } from '@angular/core/rxjs-interop';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { LoadingErrorComponent, LoadingSpinnerIndicatorComponent, LoadingStateService, RaisedButtonComponent } from '@cauca-911/material';\nimport { UserPermissionDetailService } from '../../core/api/user-permission-detail.service';\nimport { UserPermissionDetail } from '../../core/models/user-permission-detail';\nimport { UserPermissionListComponent } from '../user-permission-list/user-permission-list.component';\n\nexport interface UserPermissionsDialogData {\n userId: string;\n userDisplayName?: string;\n}\n\n@Component({\n selector: 'cauca-user-permissions-dialog',\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [\n MatDialogModule,\n TranslatePipe,\n LoadingSpinnerIndicatorComponent,\n LoadingErrorComponent,\n RaisedButtonComponent,\n UserPermissionListComponent,\n ],\n providers: [LoadingStateService],\n templateUrl: './user-permissions-dialog.component.html',\n styleUrl: './user-permissions-dialog.component.scss'\n})\nexport class UserPermissionsDialogComponent {\n\n public readonly data = inject<UserPermissionsDialogData>(MAT_DIALOG_DATA);\n\n public readonly permissionsResource = rxResource<UserPermissionDetail[], string>({\n params: () => this.data.userId,\n stream: ({ params: userId }) => this.service.getForUser(userId)\n });\n public readonly permissions = computed(() => this.permissionsResource.value() ?? []);\n\n private readonly dialogRef = inject(MatDialogRef<UserPermissionsDialogComponent>);\n private readonly service = inject(UserPermissionDetailService);\n\n public closeDialog(): void {\n this.dialogRef.close();\n }\n}\n","import { Injectable } from '@angular/core';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class CaucaManagementService {\n}\n","import { Component, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\n\n@Component({\n selector: 'cauca-management',\n templateUrl: './cauca-management.component.html',\n styles: [],\n imports: [TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaucaManagementComponent {\n\n}\n","<div>{{'core.noGenericComponentOnThisLibrary' | translate}}</div>","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { GroupModel } from '../models/group-model';\n\n/**\n * @deprecated This service is obsolete and should not be used.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ManagementGroupService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly baseUrlToUse = this.baseUrl.endsWith('api/') ? this.baseUrl : this.baseUrl + 'api/';\n\n public getAll(): Observable<GroupModel[]> {\n return this.http.get<GroupModel[]>(`${this.baseUrlToUse}GroupManagement`);\n }\n\n public get(idGroup: string): Observable<GroupModel> {\n return this.http.get<GroupModel>(`${this.baseUrlToUse}GroupManagement/${idGroup}`);\n }\n\n public save(group: GroupModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}GroupManagement`, group);\n }\n\n public delete(idGroup: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}GroupManagement/${idGroup}`);\n }\n\n public hasExistingGroupName(group: GroupModel): Observable<boolean> {\n return this.http.post<boolean>(`${this.baseUrlToUse}GroupManagement/GroupNameAlreadyExist`, group);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { UserGroupModel } from '../models/user-group-model';\nimport { UserPermissionModel } from '../models/user-permission-model';\nimport { CaucaCoreService } from '@cauca-911/core';\n\n/**\n * @deprecated This service is obsolete and should not be used.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ManagementUserService {\n protected readonly http = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly baseUrlToUse = this.baseUrl.endsWith('api/') ? this.baseUrl : this.baseUrl + 'api/';\n\n public getAll<TUser>(): Observable<TUser[]> {\n return this.http.get<TUser[]>(`${this.baseUrlToUse}UserManagement`);\n }\n\n public get<TUser>(idUser: string): Observable<TUser> {\n return this.http.get<TUser>(`${this.baseUrlToUse}UserManagement/${idUser}`);\n }\n\n public getGroup(idUser: string): Observable<any> {\n return this.http.get(`${this.baseUrlToUse}UserManagement/${idUser}/groups`);\n }\n\n public addGroup(userGroup: UserGroupModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}UserManagement/group`, userGroup);\n }\n\n public deleteGroup(idUserGroup: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}UserManagement/groups/${idUserGroup}`);\n }\n\n public addPermission(userPermission: UserPermissionModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}UserManagement/permission`, userPermission);\n }\n\n public deletePermission(idUserPermission: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}UserManagement/groups/${idUserPermission}`);\n }\n\n public save<TUser>(user: TUser): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}UserManagement`, user);\n }\n\n public delete(idUser: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}UserManagement/${idUser}`);\n }\n\n public hasExistingUserName<TUser>(user: TUser): Observable<boolean> {\n return this.http.post<boolean>(`${this.baseUrlToUse}UserManagement/UserNameAlreadyExist`, user);\n }\n}\n","import { Injectable, inject } from '@angular/core';\nimport { HttpClient } from '@angular/common/http';\nimport { Observable } from 'rxjs';\nimport { CaucaCoreService } from '@cauca-911/core';\nimport { PermissionModel } from '../models/permission-model';\n\n\n/**\n * @deprecated This service is obsolete and should not be used.\n */\n@Injectable({\n providedIn: 'root'\n})\nexport class ManagementPermissionService {\n private readonly http = inject(HttpClient);\n private readonly baseUrl = inject(CaucaCoreService).getConfig().apiUrl;\n private readonly baseUrlToUse = this.baseUrl.endsWith('api/') ? this.baseUrl : this.baseUrl + 'api/';\n\n public getAll(): Observable<PermissionModel[]> {\n return this.http.get<PermissionModel[]>(`${this.baseUrlToUse}PermissionManagement`);\n }\n\n public get(idPermission: string): Observable<PermissionModel> {\n return this.http.get<PermissionModel>(`${this.baseUrlToUse}PermissionManagement/${idPermission}`);\n }\n\n public save(permission: PermissionModel): Observable<any> {\n return this.http.post(`${this.baseUrlToUse}PermissionManagement`, permission);\n }\n\n public delete(idPermission: string): Observable<any> {\n return this.http.delete(`${this.baseUrlToUse}PermissionManagement/${idPermission}`);\n }\n}\n","<cauca-dx-data-grid [allowPrint]=\"showPrintButton()\" keyExpr=\"id\" [dataSource]=\"groups\"\n (onRowInserted)=\"onRowInserted($event)\" (onInitNewRow)=\"onInitNewRow()\" (onRowUpdated)=\"onRowUpdated($event)\"\n (onEditingStart)=\"onEditingStart($event)\" (onRowRemoved)=\"onRowRemoved($event)\">\n\n <dxi-column dataField=\"name\" [caption]=\"'management.name' | translate\">\n <dxi-validation-rule type=\"async\" [message]=\"'management.groupNameAlreadyUsed' | translate\"\n [validationCallback]=\"groupNameAlreadyUsedValidation\"></dxi-validation-rule>\n </dxi-column>\n <dxi-column dataField=\"assignableByAllUsers\" [caption]=\"'management.assignableByAllUsers' | translate\"\n dataType=\"boolean\" [visible]=\"showAssignableByAllUsers()\">\n </dxi-column>\n <dxi-column dataField=\"users\" [caption]=\"'management.users' | translate\" editCellTemplate=\"usersEditTemplate\"\n [calculateCellValue]=\"calculateUsersCellValue\">\n </dxi-column>\n <dxi-column dataField=\"permissions\" [caption]=\"'management.permissions' | translate\" [visible]=\"false\"\n editCellTemplate=\"permissionsEditTemplate\">\n </dxi-column>\n <dxo-export [enabled]=\"false\"></dxo-export>\n <dxo-editing mode=\"popup\" [allowAdding]=\"true\" [allowUpdating]=\"true\" [allowDeleting]=\"true\" [useIcons]=\"true\">\n <dxo-popup [showTitle]=\"true\" [title]=\"'management.group' | translate\" [fullScreen]=\"!showColumn\"></dxo-popup>\n <dxo-form colCount=\"1\" [labelLocation]=\"showColumnXS ? 'left' : 'top'\">\n <dxi-item dataField=\"name\" [isRequired]=\"true\"></dxi-item>\n <dxi-item dataField=\"users\"></dxi-item>\n <dxi-item dataField=\"permissions\"></dxi-item>\n <dxi-item dataField=\"assignableByAllUsers\" [visible]=\"showAssignableByAllUsers()\"></dxi-item>\n </dxo-form>\n </dxo-editing>\n\n <div *dxTemplate=\"let field of 'usersEditTemplate'\">\n <dx-tag-box valueExpr=\"id\" [displayExpr]=\"fullName\" [dataSource]=\"users\" [searchEnabled]=\"true\"\n [searchExpr]=\"fullName\" (onInitialized)=\"getGroupUser(field, $event)\"\n (onValueChanged)=\"setGroupUser(field, $event)\">\n </dx-tag-box>\n </div>\n <div *dxTemplate=\"let field of 'permissionsEditTemplate'\">\n <dx-list [dataSource]=\"permissions\" itemTemplate=\"rowTemplate\" [searchEnabled]=\"true\"\n [searchExpr]=\"['name', 'tag']\" [hoverStateEnabled]=\"hoverStatePermission()\">\n <div *dxTemplate=\"let permission of 'rowTemplate'\">\n <dx-check-box [text]=\"permission.name\" (onInitialized)=\"getPermissionStatus(field, permission, $event)\"\n (onValueChanged)=\"checkBoxToggled(field, permission, $event)\">\n </dx-check-box>\n </div>\n </dx-list>\n </div>\n</cauca-dx-data-grid>","import { Component, OnInit, inject, input, ChangeDetectionStrategy } from '@angular/core';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CaucaDevextremeModule } from '@cauca-911/devextreme';\nimport { DxCheckBoxModule } from 'devextreme-angular/ui/check-box';\nimport { DxListModule } from 'devextreme-angular/ui/list';\nimport { DxTagBoxModule } from 'devextreme-angular/ui/tag-box';\nimport { BreakpointObserver } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { UserModel } from '../shared/models/user-model';\nimport { UserGroupModel } from '../shared/models/user-group-model';\nimport { GroupModel } from '../shared/models/group-model';\nimport { GroupPermissionModel } from '../shared/models/group-permission-model';\nimport { ManagementGroupService } from '../shared/services/management-group.service';\nimport { ManagementUserService } from '../shared/services/management-user.service';\nimport { PermissionModel } from '../shared/models/permission-model';\nimport { ManagementPermissionService } from '../shared/services/management-permission.service';\n\n/**\n * @deprecated This component is obsolete and should not be used.\n */\n@Component({\n selector: 'cauca-management-group',\n templateUrl: './cauca-management-group.component.html',\n styleUrls: ['./cauca-management-group.component.scss'],\n imports: [CaucaDevextremeModule, DxCheckBoxModule, DxListModule, DxTagBoxModule, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaucaManagementGroupComponent implements OnInit {\n\n public readonly showPrintButton = input(true);\n public readonly hoverStatePermission = input(true);\n public readonly showAssignableByAllUsers = input(true);\n\n public groups: GroupModel[] = [];\n public users: UserModel[] = [];\n public permissions: PermissionModel[] = [];\n public userFullName: any = {};\n public showColumn = true;\n public showColumnXS = true;\n public translations: any = [];\n\n private groupUsers: any;\n private readonly managementGroupService = inject(ManagementGroupService);\n private readonly managementUserService = inject(ManagementUserService);\n private readonly managementPermissionService = inject(ManagementPermissionService);\n\n public constructor() {\n const breakpointObserver = inject(BreakpointObserver);\n\n breakpointObserver.observe(['(max-width: 1000px)']).subscribe((result: any) => {\n this.showColumn = !result.matches;\n });\n breakpointObserver.observe(['(max-width: 600px)']).subscribe((result: any) => {\n this.showColumnXS = !result.matches;\n });\n }\n\n public ngOnInit(): void {\n this.managementUserService.getAll<UserModel>().subscribe((data: UserModel[]) => {\n this.users = data;\n this.users.forEach((user: UserModel) => {\n if (user.isActive) {\n if (user.firstName !== '' && user.lastName !== '') {\n this.userFullName[user.id] = `${user.firstName} ${user.lastName}`;\n }\n }\n });\n });\n this.managementPermissionService.getAll().subscribe((permissions: PermissionModel[]) => {\n const permissionIndex = permissions.findIndex((c: PermissionModel) => c.tag === 'CanAccessPermissions');\n if (permissionIndex !== -1) {\n permissions.splice(permissionIndex, 1);\n }\n permissions.sort((a: PermissionModel, b: PermissionModel) => {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n });\n this.permissions = permissions;\n });\n this.getGroups();\n }\n\n public fullName(data: any): string {\n if (!data) {\n return '';\n }\n\n return `${data.firstName} ${data.lastName}`;\n }\n\n public getGroupUser(field: any, e: any): void {\n const users: string[] = [];\n if (this.groupUsers) {\n this.groupUsers.forEach((user: any) => {\n users.push(user.idUser);\n });\n }\n e.component.option('value', users);\n }\n\n public setGroupUser(field: any, e: any): void {\n const groupUser: UserGroupModel[] = [];\n\n e.value.forEach((idUser: string) => {\n const groupIndex = (field.data.users || []).findIndex((g: any) => g.idUser === idUser);\n\n if (groupIndex === -1) {\n groupUser.push({ idUser, } as UserGroupModel);\n } else {\n groupUser.push(field.data.users[groupIndex]);\n }\n });\n\n field.setValue(JSON.parse(JSON.stringify(groupUser)));\n }\n\n public setGroupPermission(field: any, e: any): void {\n const groupUser: UserGroupModel[] = [];\n\n e.value.forEach((idUser: string) => {\n groupUser.push({\n idUser,\n } as UserGroupModel);\n });\n\n field.setValue(JSON.parse(JSON.stringify(groupUser)));\n }\n\n public getPermissionStatus(field: any, permission: any, e: any): void {\n const groupPermission = (field.value || []).find((p: any) => p.idModulePermission === permission.id);\n\n if (groupPermission) {\n e.component.option('value', groupPermission.isAllowed);\n } else {\n e.component.option('value', undefined);\n }\n }\n\n public checkBoxToggled(field: any, permission: any, e: any): void {\n if (e.component.skipOnValueChanged) {\n e.component.skipOnValueChanged = false;\n return;\n }\n if (e.component.setUndefinedNextTime) {\n e.component.setUndefinedNextTime = false;\n e.component.skipOnValueChanged = true;\n e.component.option('value', undefined);\n this.setPermissionStatus(field, permission, undefined);\n return;\n }\n if (e.value === false) {\n e.component.setUndefinedNextTime = true;\n }\n\n this.setPermissionStatus(field, permission, e.value);\n }\n\n public onRowInserted(e: any): void {\n this.saveGroup(e.data as GroupModel);\n }\n\n public onRowUpdated(e: any): void {\n this.saveGroup(e.data as GroupModel);\n }\n\n public onRowRemoved(e: any): void {\n const group = (e.data as GroupModel);\n this.managementGroupService.delete(group.id).subscribe(() => {\n this.getGroups();\n });\n }\n\n public calculateUsersCellValue = (e: any): string => {\n const users = (e.users ? e.users as UserGroupModel[] : []);\n let usersNames: any[] = [];\n users.forEach((user: UserGroupModel) => {\n const userGroup = this.users.filter((u: UserModel) => u.id === user.idUser);\n if (userGroup && userGroup[0]) {\n usersNames.push(userGroup[0].firstName + ' ' + userGroup[0].lastName);\n }\n });\n usersNames = usersNames.sort((one: string, two: string) => (one < two ? -1 : 1));\n return usersNames.join(', ');\n };\n\n public onEditingStart(e: any): void {\n this.groupUsers = e.data.users;\n }\n\n public onInitNewRow(): void {\n this.groupUsers = [];\n }\n\n public groupNameAlreadyUsedValidation = (e: any): Promise<boolean> => this.managementGroupService.hasExistingGroupName(e.data).pipe(\n map((exist: boolean) => !exist)\n ).toPromise();\n\n private setPermissionStatus(field: any, permission: any, value: any): void {\n const groupPermissions = field.value || [];\n const groupIndex = groupPermissions.findIndex((p: GroupPermissionModel) => p.idModulePermission === permission.id);\n\n if (groupIndex > -1) {\n groupPermissions[groupIndex].isAllowed = value;\n } else {\n groupPermissions.push({\n idModulePermission: permission.id,\n isAllowed: value,\n } as GroupPermissionModel);\n }\n\n field.setValue(JSON.parse(JSON.stringify(groupPermissions)));\n }\n\n private saveGroup(group: GroupModel): void {\n this.removePermissionUndefined(group);\n if (group.users) {\n group.users.forEach((userGroup: UserGroupModel) => {\n userGroup.idGroup = group.id;\n });\n }\n if (group.permissions) {\n group.permissions.forEach((groupPermission: GroupPermissionModel) => {\n groupPermission.idGroup = group.id;\n });\n }\n this.managementGroupService.save(group).subscribe(() => {\n this.getGroups();\n });\n this.groupUsers = [];\n }\n\n private removePermissionUndefined(group: GroupModel): void {\n group.permissions = group.permissions.filter((permission: GroupPermissionModel) => permission.isAllowed !== undefined);\n }\n\n private getGroups(): void {\n this.managementGroupService.getAll().subscribe((data: any) => this.groups = data);\n }\n}\n","import { UserGroupModel } from './user-group-model';\nimport { UserPermissionModel } from './user-permission-model';\n\n/**\n * @deprecated This model is obsolete and should not be used.\n */\n\nexport class UserModel {\n public id: string;\n public userName = '';\n public firstName = '';\n public lastName = '';\n public password = '';\n public email = '';\n public isActive = true;\n public groups: UserGroupModel[];\n public permissions: UserPermissionModel[];\n public twoFactorAuthenticatorEnabled = false;\n}\n","import { Component, OnInit, inject, ChangeDetectionStrategy } from '@angular/core';\nimport { UserModel } from '../shared/models/user-model';\nimport { ManagementUserService } from '../shared/services/management-user.service';\nimport { BreakpointObserver, BreakpointState } from '@angular/cdk/layout';\nimport { map } from 'rxjs/operators';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { CaucaDevextremeModule } from '@cauca-911/devextreme';\n\n/**\n * @deprecated This component is obsolete and should not be used.\n */\n\n@Component({\n selector: 'cauca-management-user',\n templateUrl: './cauca-management-user.component.html',\n styleUrls: ['./cauca-management-user.component.scss'],\n imports: [CaucaDevextremeModule, TranslatePipe],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class CaucaManagementUserComponent implements OnInit {\n\n public users: UserModel[] = [\n new UserModel()\n ];\n public showColumnXS = true;\n private readonly managementUserService = inject(ManagementUserService);\n\n public constructor() {\n const breakpointObserver = inject(BreakpointObserver);\n\n breakpointObserver.observe(['(max-width: 600px)']).subscribe((result: BreakpointState) => {\n this.showColumnXS = !result.matches;\n });\n }\n\n public ngOnInit(): void {\n this.getUsers();\n }\n\n public onRowInserted(e: any): void {\n this.saveGroup(e.data as UserModel);\n }\n\n public onRowUpdated(e: any): void {\n this.saveGroup(e.key as UserModel);\n }\n\n public onRowRemoved(e: any): void {\n const user = (e.data as UserModel);\n this.managementUserService.delete(user.id).subscribe((_data: any) => {\n this.getUsers();\n });\n }\n\n public userNameAlreadyUsedValidation = (e): Promise<boolean> => this.managementUserService.hasExistingUserName(e.data).pipe(\n map((exist: boolean) => !exist)\n ).toPromise();\n\n private saveGroup(user: UserModel): void {\n this.managementUserService.save<UserModel>(user).subscribe(() => {\n this.getUsers();\n });\n }\n\n private getUsers(): void {\n this.managementUserService.getAll<UserModel>().subscribe((data: any) => this.users = data);\n }\n}\n","<cauca-dx-data-grid\n keyExpr=\"id\"\n [dataSource]=\"users\"\n (onRowInserted)=\"onRowInserted($event)\"\n (onRowUpdated)=\"onRowUpdated($event)\"\n (onRowRemoved)=\"onRowRemoved($event)\">\n\n <dxi-column dataField=\"userName\" [caption]=\"'management.userName' | translate\">\n <dxi-validation-rule type=\"async\" [message]=\"'management.userNameAlreadyUsed' | translate\" [validationCallback]=\"userNameAlreadyUsedValidation\"></dxi-validation-rule>\n </dxi-column>\n <dxi-column dataField=\"isActive\" [caption]=\"'management.isActive' | translate\" [visible]=\"false\"></dxi-column>\n <dxi-column dataField=\"firstName\" [caption]=\"'management.firstName' | translate\"></dxi-column>\n <dxi-column dataField=\"lastName\" [caption]=\"'management.lastName' | translate\"></dxi-column>\n <dxi-column dataField=\"groups\" [caption]=\"'management.group' | translate\"></dxi-column>\n\n <dxo-editing mode=\"popup\" [allowAdding]=\"true\" [allowUpdating]=\"true\" [allowDeleting]=\"true\" [useIcons]=\"true\">\n <dxo-popup [showTitle]=\"true\" [title]=\"'management.group' | translate\"></dxo-popup>\n <dxo-form colCount=\"2\" [labelLocation]=\"showColumnXS ? 'left' : 'top'\">\n <dxi-item dataField=\"userName\" [isRequired]=\"true\"></dxi-item>\n <dxi-item dataField=\"isActive\"></dxi-item>\n <dxi-item dataField=\"firstName\"></dxi-item>\n <dxi-item dataField=\"lastName\"></dxi-item>\n <dxi-item dataField=\"group\"></dxi-item>\n </dxo-form>\n </dxo-editing>\n</cauca-dx-data-grid>\n","import { NgModule } from '@angular/core';\nimport { CaucaManagementComponent } from './cauca-management.component';\nimport { CaucaManagementGroupComponent } from './cauca-management-group/cauca-management-group.component';\nimport { CaucaManagementUserComponent } from './cauca-management-user/cauca-management-user.component';\n\n/**\n * @deprecated Import CaucaManagementComponent, CaucaManagementUserComponent and\n * CaucaManagementGroupComponent directly in your standalone components. Kept as a re-export\n * so existing consumers keep compiling.\n */\n@NgModule({\n imports: [\n CaucaManagementComponent,\n CaucaManagementGroupComponent,\n CaucaManagementUserComponent,\n ],\n exports: [\n CaucaManagementComponent,\n CaucaManagementUserComponent,\n CaucaManagementGroupComponent,\n ]\n})\nexport class CaucaManagementModule { }\n","/**\n * @deprecated This model is obsolete and should not be used.\n */\n\nexport class UserGroupModel {\n public idUserGroup = '';\n public idGroup = '';\n public idUser = '';\n}\n","/**\n * @deprecated This model is obsolete and should not be used.\n */\nexport class UserPermissionModel {\n public idUserPermission = '';\n public isAllowed = false;\n public idUser = '';\n public idModulePermission = '';\n}\n","import {GroupPermissionModel} from './group-permission-model';\nimport {UserGroupModel} from './user-group-model';\n\n/**\n * @deprecated This model is obsolete and should not be used.\n */\nexport class GroupModel {\n public id: string;\n public name = '';\n public users: UserGroupModel[] = [];\n public permissions: GroupPermissionModel[] = [];\n public assignableByAllUsers: boolean;\n}\n","/**\n * @deprecated This model is obsolete and should not be used.\n */\nexport class GroupPermissionModel {\n public idGroupPermission = '';\n public isAllowed = false;\n public idGroup = '';\n public idModulePermission = '';\n}\n","/*\n * Public API Surface of cauca-management\n */\n\n\nexport * from './lib/provide-cauca-management';\nexport * from './lib/management.routes';\nexport * from './lib/core/refreshable-permission-state';\n\nexport * from './lib/pages/groups-page/groups-page.component';\nexport * from './lib/pages/group-edition-page/group-edition-page.component';\n\nexport * from './lib/components/user-permissions-dialog/user-permissions-dialog.component';\n\n// all of the following is deprecated and will be removed in a future release.\nexport * from './lib/cauca-management.service';\nexport * from './lib/cauca-management.component';\nexport * from './lib/cauca-management.module';\nexport * from './lib/cauca-management-group/cauca-management-group.component';\nexport * from './lib/cauca-management-user/cauca-management-user.component';\n\nexport { ManagementUserService } from './lib/shared/services/management-user.service';\nexport { ManagementGroupService } from './lib/shared/services/management-group.service';\nexport { UserModel } from './lib/shared/models/user-model';\nexport { UserGroupModel } from './lib/shared/models/user-group-model';\nexport { UserPermissionModel } from './lib/shared/models/user-permission-model';\nexport { GroupModel } from './lib/shared/models/group-model';\nexport { GroupPermissionModel } from './lib/shared/models/group-permission-model';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["_c0","uuid","_forTrack0","i1","i2","i5","i3","i4"],"mappings":"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"}