@masterteam/users-groups 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"masterteam-users-groups.mjs","sources":["../../../../packages/masterteam/users-groups/src/store/users-groups/users-groups.actions.ts","../../../../packages/masterteam/users-groups/src/store/users-groups/users-groups.model.ts","../../../../packages/masterteam/users-groups/src/store/users-groups/users-groups.state.ts","../../../../packages/masterteam/users-groups/src/store/users-groups/users-groups.facade.ts","../../../../packages/masterteam/users-groups/src/lib/users-groups/users-groups.ts","../../../../packages/masterteam/users-groups/src/lib/users-groups/users-groups.html","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/users/user-form/user-form.ts","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/users/user-form/user-form.html","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/users/users.ts","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/users/users.html","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/groups/group-form/group-form.ts","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/groups/group-form/group-form.html","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/groups/groups.ts","../../../../packages/masterteam/users-groups/src/lib/users-groups/pages/groups/groups.html","../../../../packages/masterteam/users-groups/src/store/index.ts","../../../../packages/masterteam/users-groups/src/masterteam-users-groups.ts"],"sourcesContent":["import { User, Group } from './users-groups.model';\r\n\r\nexport class GetUsers {\r\n static readonly type = '[UsersGroups] Get Users';\r\n}\r\n\r\nexport class GetUser {\r\n static readonly type = '[UsersGroups] Get One';\r\n constructor(public userName: string | null) {}\r\n}\r\n\r\nexport class CreateUser {\r\n static readonly type = '[UsersGroups] Create User';\r\n constructor(public payload: Partial<User>) {}\r\n}\r\nexport class AddUserToGroup {\r\n static readonly type = '[UsersGroups] Add User To Group';\r\n constructor(\r\n public payload: {\r\n groupId: string;\r\n userId: string;\r\n },\r\n ) {}\r\n}\r\n\r\nexport class UpdateUser {\r\n static readonly type = '[UsersGroups] Update User';\r\n constructor(\r\n public userId: string | undefined,\r\n public changes: Partial<User>,\r\n ) {}\r\n}\r\n\r\nexport class DeleteUser {\r\n static readonly type = '[UsersGroups] Delete User';\r\n constructor(public userName: string | number) {}\r\n}\r\nexport class DeleteUserFromGroup {\r\n static readonly type = '[UsersGroups] Delete User From Group';\r\n constructor(public payload: any) {}\r\n}\r\n\r\nexport class GetGroups {\r\n static readonly type = '[UsersGroups] Get Groups';\r\n}\r\nexport class ClearSelectedGroup {\r\n static readonly type = '[UsersGroups] Clear Selected Group';\r\n}\r\nexport class GetGroup {\r\n static readonly type = '[UsersGroups] Get One Group';\r\n constructor(public groupId: string | number | null) {}\r\n}\r\n\r\nexport class CreateGroup {\r\n static readonly type = '[UsersGroups] Create Group';\r\n constructor(public payload: Partial<Group>) {}\r\n}\r\n\r\nexport class UpdateGroup {\r\n static readonly type = '[UsersGroups] Update Group';\r\n constructor(\r\n public groupId: string | number | undefined,\r\n public changes: Partial<Group>,\r\n ) {}\r\n}\r\n\r\nexport class DeleteGroup {\r\n static readonly type = '[UsersGroups] Delete Group';\r\n constructor(public groupId: string | number) {}\r\n}\r\n","import { LoadingStateShape } from '../utils/state-helpers';\r\n\r\nexport interface User {\r\n displayName: string;\r\n userId: string;\r\n userName: string;\r\n photo?: any;\r\n password?: string;\r\n image?: string;\r\n department?: string | null;\r\n stars?: number;\r\n mobile?: string;\r\n ext?: number;\r\n isExternal?: boolean;\r\n email?: string;\r\n}\r\n\r\nexport interface Group {\r\n id?: string | number;\r\n name?: any;\r\n createdAt?: any;\r\n workspace?: any;\r\n description?: string;\r\n members?: any[];\r\n membersCount?: number;\r\n}\r\n\r\nexport enum UsersGroupsActionKey {\r\n GetUsers = 'getUsers',\r\n GetUser = 'getUser',\r\n CreateUser = 'createUser',\r\n UpdateUser = 'updateUser',\r\n DeleteUser = 'deleteUser',\r\n AddUserToGroup = 'addUserToGroup',\r\n DeleteUserFromGroup = 'deleteUserFromGroup',\r\n GetGroups = 'getGroups',\r\n GetGroup = 'getGroup',\r\n CreateGroup = 'createGroup',\r\n UpdateGroup = 'updateGroup',\r\n DeleteGroup = 'deleteGroup',\r\n}\r\n\r\nexport interface UsersGroupsStateModel extends LoadingStateShape<UsersGroupsActionKey> {\r\n users: User[];\r\n selectedUser: User | null;\r\n groups: Group[];\r\n selectedGroup: Group | null;\r\n}\r\n","import { REQUEST_CONTEXT } from '@masterteam/components';\r\nimport { State, Action, StateContext, Selector } from '@ngxs/store';\r\nimport {\r\n CreateUser,\r\n DeleteUser,\r\n GetUser,\r\n GetUsers,\r\n UpdateUser,\r\n ClearSelectedGroup,\r\n CreateGroup,\r\n DeleteGroup,\r\n GetGroup,\r\n GetGroups,\r\n UpdateGroup,\r\n AddUserToGroup,\r\n DeleteUserFromGroup,\r\n} from './users-groups.actions';\r\nimport {\r\n User,\r\n Group,\r\n UsersGroupsActionKey,\r\n UsersGroupsStateModel,\r\n} from './users-groups.model';\r\nimport { HttpClient, HttpContext } from '@angular/common/http';\r\nimport { inject, Injectable } from '@angular/core';\r\nimport { Response } from './api.model';\r\nimport { CrudStateBase, handleApiRequest } from '@masterteam/components';\r\n\r\n@State<UsersGroupsStateModel>({\r\n name: 'usersGroups',\r\n defaults: {\r\n users: [],\r\n selectedUser: null,\r\n groups: [],\r\n selectedGroup: null,\r\n loadingActive: [],\r\n errors: {},\r\n },\r\n})\r\n@Injectable()\r\nexport class UsersGroupsState extends CrudStateBase<\r\n any,\r\n UsersGroupsStateModel,\r\n UsersGroupsActionKey\r\n> {\r\n private http = inject(HttpClient);\r\n context = new HttpContext().set(REQUEST_CONTEXT, {\r\n useBaseUrl: true,\r\n });\r\n\r\n // ============================================================================\r\n // Data Selectors - Individual selectors for fine-grained reactivity\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getUsers(state: UsersGroupsStateModel): User[] {\r\n return state.users;\r\n }\r\n\r\n @Selector()\r\n static getSelectedUser(state: UsersGroupsStateModel): User | null {\r\n return state.selectedUser;\r\n }\r\n\r\n @Selector()\r\n static getGroups(state: UsersGroupsStateModel): Group[] {\r\n return state.groups;\r\n }\r\n\r\n @Selector()\r\n static getSelectedGroup(state: UsersGroupsStateModel): Group | null {\r\n return state.selectedGroup;\r\n }\r\n\r\n // ============================================================================\r\n // Loading/Error Slice Selectors - REQUIRED for optimal performance\r\n // ============================================================================\r\n\r\n @Selector()\r\n static getLoadingActive(state: UsersGroupsStateModel): string[] {\r\n return state.loadingActive;\r\n }\r\n\r\n @Selector()\r\n static getErrors(\r\n state: UsersGroupsStateModel,\r\n ): Record<string, string | null> {\r\n return state.errors;\r\n }\r\n\r\n // ============================================================================\r\n // CRUD Actions\r\n // ============================================================================\r\n @Action(GetUsers)\r\n getUsers(ctx: StateContext<UsersGroupsStateModel>) {\r\n const req$ = this.http.get<Response<User[]>>('Identity/users', {\r\n context: this.context,\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.GetUsers,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n users: response.data ?? [],\r\n }),\r\n });\r\n }\r\n @Action(GetUser)\r\n getUser(ctx: StateContext<UsersGroupsStateModel>, { userName }: GetUser) {\r\n const req$ = this.http.get<Response<User[]>>(\r\n `Identity/users/${userName}?editMode=true`,\r\n { context: this.context },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.GetUser,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedUser: response.data?.[0] ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(CreateUser)\r\n createUser(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { payload }: CreateUser,\r\n ) {\r\n const req$ = this.http.post<Response<User>>('Identity/user', payload, {\r\n context: this.context,\r\n });\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.CreateUser,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const newUser = response.data;\r\n if (!newUser) return {};\r\n\r\n return {\r\n users: this.adapter.addOne(state.users as any[], newUser),\r\n selectedUser: newUser,\r\n };\r\n },\r\n onError: (error) => {\r\n throw error;\r\n },\r\n });\r\n }\r\n @Action(AddUserToGroup)\r\n addUserToGroup(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { payload }: AddUserToGroup,\r\n ) {\r\n const req$ = this.http.post<Response<any>>(\r\n `identity/groups/${payload.groupId}/members`,\r\n { member: payload?.userId },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.AddUserToGroup,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const newMembers = response.data?.members ?? [];\r\n const existingMembers = state.selectedGroup?.members ?? [];\r\n\r\n return {\r\n selectedGroup: {\r\n ...(state.selectedGroup ?? {}),\r\n members: [...existingMembers, ...newMembers],\r\n },\r\n };\r\n },\r\n });\r\n }\r\n @Action(UpdateUser)\r\n updateUser(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { changes, userId }: UpdateUser,\r\n ) {\r\n const req$ = this.http.put<Response<User>>(\r\n `Identity/user/${userId}`,\r\n changes,\r\n {\r\n context: this.context,\r\n },\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.UpdateUser,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedUser = response.data;\r\n if (!updatedUser) return {};\r\n\r\n return {\r\n users: this.adapter.upsertOne(\r\n state.users as any[],\r\n updatedUser,\r\n 'userId' as any,\r\n ),\r\n selectedUser: updatedUser,\r\n };\r\n },\r\n onError: (error) => {\r\n throw error;\r\n },\r\n });\r\n }\r\n\r\n @Action(DeleteUser)\r\n deleteUser(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { userName }: DeleteUser,\r\n ) {\r\n const req$ = this.http.delete<Response<void>>(`Identity/user/${userName}`, {\r\n context: this.context,\r\n });\r\n\r\n return this.delete(ctx, {\r\n key: UsersGroupsActionKey.DeleteUser,\r\n request$: req$,\r\n stateProperty: (state) => state.users as any[],\r\n uniqueKey: 'userName' as any,\r\n id: userName,\r\n });\r\n }\r\n @Action(DeleteUserFromGroup)\r\n deleteUserFromGroup(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { payload }: DeleteUserFromGroup,\r\n ) {\r\n const req$ = this.http.delete<Response<void>>(\r\n `identity/groups/${payload.groupId}/members/${payload.userName}`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.DeleteUserFromGroup,\r\n request$: req$,\r\n onSuccess: (_response, state) => {\r\n const filteredMembers =\r\n state.selectedGroup?.members?.filter(\r\n (e) => e.user.userName !== payload.userName,\r\n ) ?? [];\r\n\r\n return {\r\n selectedGroup: {\r\n ...(state.selectedGroup ?? {}),\r\n members: filteredMembers,\r\n },\r\n };\r\n },\r\n });\r\n }\r\n\r\n @Action(GetGroups)\r\n getGroups(ctx: StateContext<UsersGroupsStateModel>) {\r\n const req$ = this.http.get<Response<Group[]>>('Identity/groups');\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.GetGroups,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n groups: response.data ?? [],\r\n }),\r\n });\r\n }\r\n @Action(GetGroup)\r\n getGroup(ctx: StateContext<UsersGroupsStateModel>, { groupId }: GetGroup) {\r\n const req$ = this.http.get<Response<Group>>(\r\n `Identity/groups/${groupId}?Mode=edit`,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.GetGroup,\r\n request$: req$,\r\n onSuccess: (response) => ({\r\n selectedGroup: response.data ?? null,\r\n }),\r\n });\r\n }\r\n\r\n @Action(CreateGroup)\r\n createGroup(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { payload }: CreateGroup,\r\n ) {\r\n const req$ = this.http.post<Response<any>>('Identity/groups', payload);\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.CreateGroup,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const newGroup = response.data?.result ?? null;\r\n if (!newGroup) return {};\r\n\r\n return {\r\n groups: this.adapter.addOne(state.groups as any[], newGroup),\r\n selectedGroup: newGroup,\r\n };\r\n },\r\n });\r\n }\r\n @Action(UpdateGroup)\r\n updateGroup(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { changes, groupId }: UpdateGroup,\r\n ) {\r\n const req$ = this.http.put<Response<Group>>(\r\n `Identity/groups/${groupId}`,\r\n changes,\r\n );\r\n\r\n return handleApiRequest({\r\n ctx,\r\n key: UsersGroupsActionKey.UpdateGroup,\r\n request$: req$,\r\n onSuccess: (response, state) => {\r\n const updatedGroup = {\r\n ...response.data,\r\n members: state.selectedGroup?.members,\r\n membersCount: state.selectedGroup?.members?.length ?? 0,\r\n };\r\n\r\n return {\r\n groups: this.adapter.upsertOne(\r\n state.groups as any[],\r\n updatedGroup,\r\n 'id' as any,\r\n ),\r\n selectedGroup: updatedGroup,\r\n };\r\n },\r\n });\r\n }\r\n\r\n @Action(DeleteGroup)\r\n deleteGroup(\r\n ctx: StateContext<UsersGroupsStateModel>,\r\n { groupId }: DeleteGroup,\r\n ) {\r\n const req$ = this.http.delete<Response<void>>(`Identity/groups/${groupId}`);\r\n\r\n return this.delete(ctx, {\r\n key: UsersGroupsActionKey.DeleteGroup,\r\n request$: req$,\r\n stateProperty: (state) => state.groups as any[],\r\n uniqueKey: 'id' as any,\r\n id: groupId,\r\n });\r\n }\r\n // ============================================================================\r\n // Simple State Updates (No HTTP)\r\n // ============================================================================\r\n\r\n @Action(ClearSelectedGroup)\r\n clearSelectedGroup(ctx: StateContext<UsersGroupsStateModel>) {\r\n ctx.patchState({ selectedGroup: null });\r\n }\r\n}\r\n","import { UsersGroupsState } from './users-groups.state';\r\nimport { Injectable, computed, inject } from '@angular/core';\r\nimport { select, Store } from '@ngxs/store';\r\nimport {\r\n CreateUser,\r\n UpdateUser,\r\n DeleteUser,\r\n GetUsers,\r\n GetUser,\r\n CreateGroup,\r\n UpdateGroup,\r\n DeleteGroup,\r\n GetGroups,\r\n GetGroup,\r\n ClearSelectedGroup,\r\n AddUserToGroup,\r\n DeleteUserFromGroup,\r\n} from './users-groups.actions';\r\nimport { User, Group, UsersGroupsActionKey } from './users-groups.model';\r\n\r\n@Injectable({ providedIn: 'root' })\r\nexport class UsersGroupsFacade {\r\n private readonly store = inject(Store);\r\n\r\n // ============================================================================\r\n // Data Selectors - Memoized by NGXS (fine-grained reactivity)\r\n // ============================================================================\r\n readonly users = select(UsersGroupsState.getUsers);\r\n readonly selectedUser = select(UsersGroupsState.getSelectedUser);\r\n readonly groups = select(UsersGroupsState.getGroups);\r\n readonly selectedGroup = select(UsersGroupsState.getSelectedGroup);\r\n\r\n // ============================================================================\r\n // Loading/Error Slices - Memoized by NGXS\r\n // ============================================================================\r\n private readonly loadingActive = select(UsersGroupsState.getLoadingActive);\r\n\r\n // ============================================================================\r\n // Loading Signals - Computed from slice (minimal reactivity)\r\n // ============================================================================\r\n readonly isLoadingUsers = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.GetUsers),\r\n );\r\n readonly isLoadingUser = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.GetUser),\r\n );\r\n readonly isSavingUser = computed(\r\n () =>\r\n this.loadingActive().includes(UsersGroupsActionKey.CreateUser) ||\r\n this.loadingActive().includes(UsersGroupsActionKey.UpdateUser),\r\n );\r\n readonly isDeletingUser = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.DeleteUser),\r\n );\r\n\r\n readonly isLoadingGroups = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.GetGroups),\r\n );\r\n readonly isLoadingGroup = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.GetGroup),\r\n );\r\n readonly isSavingGroup = computed(\r\n () =>\r\n this.loadingActive().includes(UsersGroupsActionKey.CreateGroup) ||\r\n this.loadingActive().includes(UsersGroupsActionKey.UpdateGroup),\r\n );\r\n readonly isDeletingGroup = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.DeleteGroup),\r\n );\r\n\r\n readonly isAddingUserToGroup = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.AddUserToGroup),\r\n );\r\n readonly isDeletingUserFromGroup = computed(() =>\r\n this.loadingActive().includes(UsersGroupsActionKey.DeleteUserFromGroup),\r\n );\r\n\r\n // ============================================================================\r\n // Action Dispatchers\r\n // ============================================================================\r\n getUsers() {\r\n return this.store.dispatch(new GetUsers());\r\n }\r\n\r\n getUser(id: string | null) {\r\n return this.store.dispatch(new GetUser(id));\r\n }\r\n\r\n createUser(payload: Partial<User>) {\r\n return this.store.dispatch(new CreateUser(payload));\r\n }\r\n\r\n addUserToGroup(userId: string, groupId: string) {\r\n return this.store.dispatch(new AddUserToGroup({ userId, groupId }));\r\n }\r\n\r\n deleteUserFromGroup(payload: any) {\r\n return this.store.dispatch(new DeleteUserFromGroup(payload));\r\n }\r\n\r\n updateUser(id: string | undefined, changes: Partial<User>) {\r\n return this.store.dispatch(new UpdateUser(id, changes));\r\n }\r\n\r\n deleteUser(userName: string | number) {\r\n return this.store.dispatch(new DeleteUser(userName));\r\n }\r\n\r\n getGroups() {\r\n return this.store.dispatch(new GetGroups());\r\n }\r\n\r\n getGroup(id: string | number | null) {\r\n return this.store.dispatch(new GetGroup(id));\r\n }\r\n\r\n createGroup(payload: Partial<Group>) {\r\n return this.store.dispatch(new CreateGroup(payload));\r\n }\r\n\r\n updateGroup(id: string | number | undefined, changes: Partial<Group>) {\r\n return this.store.dispatch(new UpdateGroup(id, changes));\r\n }\r\n\r\n deleteGroup(groupId: string | number) {\r\n return this.store.dispatch(new DeleteGroup(groupId));\r\n }\r\n\r\n clearSelectedGroup() {\r\n this.store.dispatch(new ClearSelectedGroup());\r\n }\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { Component, inject, OnInit, signal } from '@angular/core';\r\nimport { Breadcrumb } from '@masterteam/components/breadcrumb';\r\nimport { UsersGroupsFacade } from '../../store/users-groups';\r\nimport { ActivatedRoute, Router, RouterOutlet } from '@angular/router';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { Page } from '@masterteam/components/page';\r\nimport { PageHeaderTab } from '@masterteam/components/page-header';\r\nimport { Button } from '@masterteam/components/button';\r\n\r\n@Component({\r\n selector: 'mt-users-groups',\r\n styleUrl: './users-groups.css',\r\n templateUrl: './users-groups.html',\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Page,\r\n Breadcrumb,\r\n RouterOutlet,\r\n TranslocoDirective,\r\n Button,\r\n ],\r\n})\r\nexport default class UsersGroups implements OnInit {\r\n protected readonly facade = inject(UsersGroupsFacade);\r\n private readonly route = inject(ActivatedRoute);\r\n private readonly router = inject(Router);\r\n protected readonly translocoService = inject(TranslocoService);\r\n selectedTab = signal<string>('users');\r\n\r\n tabsList: PageHeaderTab[] = [\r\n {\r\n label: this.translocoService.translate('users-groups.users'),\r\n value: 'users',\r\n },\r\n {\r\n label: this.translocoService.translate('users-groups.groups'),\r\n value: 'groups',\r\n },\r\n ];\r\n breadcrumbItems: { label?: string; routerLink?: string; icon?: string }[] = [\r\n {\r\n label: '',\r\n icon: 'general.home-line',\r\n routerLink: '/control-panel/workspaces',\r\n },\r\n {\r\n label: this.translocoService.translate(\r\n 'product-settings.product-settings',\r\n ),\r\n routerLink: '/control-panel/product-settings',\r\n },\r\n { label: this.translocoService.translate('users-groups.users-groups') },\r\n ];\r\n\r\n ngOnInit() {\r\n const selectedTab = this.route.snapshot.firstChild?.data['componentType'];\r\n this.selectedTab.set(selectedTab || 'users');\r\n this.facade.getUsers();\r\n }\r\n\r\n goBack() {\r\n this.router.navigate(['control-panel/product-settings']);\r\n }\r\n\r\n onTabChange(event: any) {\r\n this.selectedTab.set(event);\r\n if (event == 'users') {\r\n this.router.navigate(['users'], { relativeTo: this.route });\r\n } else if (event == 'groups') {\r\n this.router.navigate(['groups'], { relativeTo: this.route });\r\n }\r\n }\r\n\r\n getUsers() {\r\n this.facade.getUsers();\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <mt-page\r\n [title]=\"t('users-groups')\"\r\n [avatarIcon]=\"'user.user-circle'\"\r\n [avatarStyle]=\"{\r\n '--p-avatar-background': 'var(--p-sky-100)',\r\n '--p-avatar-color': 'var(--p-sky-700)',\r\n }\"\r\n [tabs]=\"tabsList\"\r\n [activeTab]=\"selectedTab()\"\r\n (tabChange)=\"onTabChange($event)\"\r\n (backButtonClick)=\"goBack()\"\r\n backButton\r\n >\r\n <div class=\"flex justify-between items-end\">\r\n <div>\r\n <h3 class=\"font-bold text-lg\">{{ t(\"users-groups\") }}</h3>\r\n <mt-breadcrumb\r\n [items]=\"breadcrumbItems\"\r\n [styleClass]=\"'flex justify-start mx-1'\"\r\n ></mt-breadcrumb>\r\n </div>\r\n @if (selectedTab() === \"users\") {\r\n <mt-button\r\n [icon]=\"'arrow.refresh-cw-02'\"\r\n [label]=\"\r\n translocoService.translate('users-groups.sync-users-information')\r\n \"\r\n [severity]=\"'primary'\"\r\n [variant]=\"'outlined'\"\r\n [size]=\"'small'\"\r\n (click)=\"getUsers()\"\r\n class=\"mx-4\"\r\n >\r\n </mt-button>\r\n }\r\n </div>\r\n <router-outlet />\r\n </mt-page>\r\n</ng-container>\r\n","import {\r\n Component,\r\n inject,\r\n OnInit,\r\n signal,\r\n effect,\r\n input,\r\n computed,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { AbstractControl, ValidationErrors, ValidatorFn } from '@angular/forms';\r\n\r\n// Masterteam dialog\r\nimport { DialogService, ModalRef } from '@masterteam/components/dialog';\r\nimport { DynamicFormConfig, ValidatorConfig } from '@masterteam/components';\r\nimport { User, UsersGroupsFacade } from '../../../../../store/users-groups';\r\nimport { UserSearchFieldConfig } from '@masterteam/components';\r\nimport { Tabs } from '@masterteam/components/tabs';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { HttpContext } from '@angular/common/http';\r\nimport { REQUEST_CONTEXT } from '@masterteam/components';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { UploadFileFieldConfig } from '@masterteam/components';\r\n\r\n@Component({\r\n selector: 'mt-user-form',\r\n templateUrl: './user-form.html',\r\n styleUrls: ['./user-form.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n Tabs,\r\n TranslocoPipe,\r\n ],\r\n providers: [DialogService],\r\n})\r\nexport default class UserForm implements OnInit {\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n userForEdit = input<User | null>(null);\r\n selectedTab = signal<string>('internal');\r\n private readonly translocoService = inject(TranslocoService);\r\n tabsList = [\r\n {\r\n label: this.translocoService.translate('users-groups.internal'),\r\n value: 'internal',\r\n },\r\n {\r\n label: this.translocoService.translate('users-groups.external'),\r\n value: 'external',\r\n },\r\n ];\r\n private readonly facade = inject(UsersGroupsFacade);\r\n selectedUser = this.facade.selectedUser;\r\n internalUserFormControl = new FormControl();\r\n externalUserFormControl = new FormControl();\r\n getUserFormLoading = this.facade.isLoadingUser;\r\n createUpdateUserLoading = this.facade.isSavingUser;\r\n context = new HttpContext().set(REQUEST_CONTEXT, {\r\n useBaseUrl: true,\r\n });\r\n internalUserFormConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'internalUserFormConfig',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n new UserSearchFieldConfig({\r\n key: 'userField',\r\n label: this.translocoService.translate('users-groups.user-name'),\r\n apiUrl: 'Identity/adUsers',\r\n context: this.context,\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n }),\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n fieldColSpan = computed(() => (this.userForEdit()?.userName ? 12 : 6));\r\n externalUserFormConfig = computed<DynamicFormConfig>(() => ({\r\n sections: [\r\n {\r\n key: 'externalUserFormConfig',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n new UploadFileFieldConfig({\r\n key: 'image',\r\n label: 'Avatar',\r\n shape: 'circle',\r\n endPoint: 'avatar',\r\n context: this.context,\r\n colSpan: 12,\r\n order: 1,\r\n }),\r\n {\r\n key: 'displayName',\r\n label: this.translocoService.translate('users-groups.display-name'),\r\n placeholder: this.translocoService.translate(\r\n 'users-groups.display-name',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n colSpan: this.fieldColSpan(),\r\n order: 2,\r\n },\r\n {\r\n key: 'email',\r\n label: this.translocoService.translate('users-groups.email'),\r\n placeholder: this.translocoService.translate('users-groups.email'),\r\n inputType: 'email',\r\n required: true,\r\n validators: [\r\n ValidatorConfig.required('Email is required'),\r\n ValidatorConfig.email('Please enter a valid email address'),\r\n ],\r\n colSpan: this.fieldColSpan(),\r\n order: 4,\r\n },\r\n {\r\n key: 'mobile',\r\n label: this.translocoService.translate('users-groups.mobile'),\r\n placeholder: this.translocoService.translate('users-groups.mobile'),\r\n validators: [ValidatorConfig.required()],\r\n colSpan: this.fieldColSpan(),\r\n order: 5,\r\n },\r\n ],\r\n },\r\n ],\r\n }));\r\n\r\n constructor() {\r\n effect(() => {\r\n const userName = this.userForEdit()?.userName;\r\n if (this.selectedUser() && userName) {\r\n this.selectedTab.set('external');\r\n const data = {\r\n ...this.selectedUser(),\r\n image: this.selectedUser()?.photo,\r\n };\r\n this.externalUserFormControl.patchValue(data);\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.userForEdit()?.userName) {\r\n this.facade.getUser(this.userForEdit()?.userName || null);\r\n }\r\n this.updateFormFields();\r\n }\r\n\r\n onSubmit() {\r\n if (this.userForEdit()?.userName) {\r\n const payload = {\r\n displayName: this.externalUserFormControl.value?.displayName,\r\n email: this.externalUserFormControl.value?.email,\r\n mobile: this.externalUserFormControl.value?.mobile,\r\n image: this.externalUserFormControl.value?.image?.fileName,\r\n };\r\n this.facade.updateUser(this.userForEdit()?.userId, payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n let payload: Partial<User> = {};\r\n if (this.selectedTab() === 'internal') {\r\n payload = {\r\n userName: this.internalUserFormControl.value?.userField?.userName,\r\n isExternal: false,\r\n };\r\n } else {\r\n payload = {\r\n userId: '',\r\n userName: this.externalUserFormControl.value?.userName,\r\n displayName: this.externalUserFormControl.value?.displayName,\r\n email: this.externalUserFormControl.value?.email,\r\n mobile: this.externalUserFormControl.value?.mobile,\r\n password: this.externalUserFormControl.value?.password,\r\n isExternal: true,\r\n image: this.externalUserFormControl.value?.image?.fileName,\r\n };\r\n }\r\n\r\n this.facade.createUser(payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n updateFormFields() {\r\n if (!this.userForEdit()?.userName) {\r\n this.externalUserFormConfig().sections[0].fields.push(\r\n {\r\n key: 'userName',\r\n label: this.translocoService.translate('users-groups.user-name'),\r\n placeholder: this.translocoService.translate(\r\n 'users-groups.user-name',\r\n ),\r\n validators: [\r\n ValidatorConfig.required(),\r\n ValidatorConfig.pattern('^[a-zA-Z0-9]+$'),\r\n ],\r\n colSpan: 6,\r\n order: 3,\r\n hidden: !!this.userForEdit()?.userName,\r\n },\r\n {\r\n key: 'password',\r\n label: this.translocoService.translate('users-groups.password'),\r\n placeholder: this.translocoService.translate('users-groups.password'),\r\n validators: [ValidatorConfig.required()],\r\n inputType: 'password',\r\n colSpan: 6,\r\n order: 6,\r\n hidden: !!this.userForEdit()?.userName,\r\n },\r\n {\r\n key: 'confirmPassword',\r\n label: this.translocoService.translate(\r\n 'users-groups.confirm-password',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'users-groups.confirm-password',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n inputType: 'password',\r\n colSpan: 6,\r\n order: 6,\r\n hidden: !!this.userForEdit()?.userName,\r\n },\r\n );\r\n }\r\n }\r\n}\r\n\r\nexport function passwordMatchValidator(\r\n passwordControlName: string,\r\n confirmPasswordControlName: string,\r\n): ValidatorFn {\r\n return (group: AbstractControl): ValidationErrors | null => {\r\n // 1. Get the controls from the group\r\n const passwordControl = group.get(passwordControlName);\r\n const confirmPasswordControl = group.get(confirmPasswordControlName);\r\n\r\n // 2. Basic checks (if controls don't exist, or if one is null, it's not a mismatch error)\r\n if (!passwordControl || !confirmPasswordControl) {\r\n return null;\r\n }\r\n\r\n // 3. Check for value mismatch\r\n if (passwordControl.value !== confirmPasswordControl.value) {\r\n // 4. Set the error on the 'confirm password' control for clearer user feedback\r\n confirmPasswordControl.setErrors({ mismatch: true });\r\n return { mismatch: true }; // The group itself has a mismatch error\r\n } else {\r\n // 5. If they match, clear any previous mismatch error on the 'confirm password' control\r\n if (confirmPasswordControl.hasError('mismatch')) {\r\n const errors = confirmPasswordControl.errors;\r\n if (errors) {\r\n delete errors['mismatch'];\r\n confirmPasswordControl.setErrors(\r\n Object.keys(errors).length > 0 ? errors : null,\r\n );\r\n }\r\n }\r\n return null; // No mismatch error\r\n }\r\n };\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div [class]=\"'flex flex-col gap-1 p-4 ' + modal.contentClass\">\r\n @if (!getUserFormLoading()) {\r\n <div class=\"flex justify-center\">\r\n <div class=\"w-60\">\r\n <mt-tabs\r\n [(active)]=\"selectedTab\"\r\n [options]=\"tabsList\"\r\n fluid\r\n size=\"small\"\r\n [disabled]=\"!!this.userForEdit()?.userName\"\r\n ></mt-tabs>\r\n </div>\r\n </div>\r\n\r\n <form class=\"col-span-1\">\r\n @if (selectedTab() === \"internal\") {\r\n <mt-dynamic-form\r\n [formConfig]=\"internalUserFormConfig()\"\r\n [formControl]=\"internalUserFormControl\"\r\n />\r\n } @else {\r\n <mt-dynamic-form\r\n [formConfig]=\"externalUserFormConfig()\"\r\n [formControl]=\"externalUserFormControl\"\r\n />\r\n }\r\n </form>\r\n } @else {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"selectedUser() ? ('save' | transloco) : ('add' | transloco)\"\r\n (click)=\"onSubmit()\"\r\n [loading]=\"createUpdateUserLoading()\"\r\n [disabled]=\"\r\n selectedTab() === 'internal'\r\n ? !this.internalUserFormControl.valid\r\n : !this.externalUserFormControl.valid\r\n \"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n computed,\r\n inject,\r\n linkedSignal,\r\n OnInit,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ColumnDef, Table, TableAction } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { UsersGroupsFacade } from '../../../../store/users-groups';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport UserForm from './user-form/user-form';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-users',\r\n styleUrl: './users.css',\r\n templateUrl: './users.html',\r\n standalone: true,\r\n imports: [CommonModule, SkeletonModule, Table, Avatar, TranslocoDirective],\r\n})\r\nexport default class Users implements OnInit {\r\n typeCol = viewChild.required<TemplateRef<any>>('typeCol');\r\n userCol = viewChild.required<TemplateRef<any>>('userCol');\r\n\r\n private readonly facade = inject(UsersGroupsFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n users = computed(() => {\r\n const tab = this.activeTab();\r\n const all = this.allUsers();\r\n\r\n switch (tab) {\r\n case 'internal':\r\n return all.filter((user) => !user.isExternal);\r\n case 'external':\r\n return all.filter((user) => user.isExternal);\r\n case 'all':\r\n default:\r\n return all;\r\n }\r\n });\r\n\r\n tabs = signal([\r\n {\r\n label: this.translocoService.translate('users-groups.all'),\r\n value: 'all',\r\n },\r\n {\r\n label: this.translocoService.translate('users-groups.internal'),\r\n value: 'internal',\r\n },\r\n {\r\n label: this.translocoService.translate('users-groups.external'),\r\n value: 'external',\r\n },\r\n ]);\r\n activeTab = signal<string>('all');\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('users-groups.add-user'),\r\n color: 'primary',\r\n action: () => {\r\n this.addUserDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: any) => {\r\n this.addUserDialog(row);\r\n },\r\n hidden: (row: any) => !row.isExternal,\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: any) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.userName]);\r\n this.facade\r\n .deleteUser(row.userName)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.userName),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: any) => this.deletingRowIds().includes(row.userName),\r\n },\r\n ]);\r\n\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'displayName',\r\n label: this.translocoService.translate('users-groups.user'),\r\n type: 'custom',\r\n customCellTpl: this.userCol(),\r\n filterConfig: {\r\n type: 'text',\r\n label: this.translocoService.translate('users-groups.user'),\r\n },\r\n },\r\n {\r\n key: 'isExternal',\r\n label: this.translocoService.translate('users-groups.type'),\r\n type: 'custom',\r\n customCellTpl: this.typeCol(),\r\n },\r\n {\r\n key: 'email',\r\n label: this.translocoService.translate('users-groups.email'),\r\n filterConfig: {\r\n type: 'text',\r\n label: this.translocoService.translate('users-groups.email'),\r\n },\r\n },\r\n {\r\n key: 'lastLoginTime.displayValue',\r\n label: this.translocoService.translate('users-groups.last-seen'),\r\n },\r\n ]);\r\n\r\n loading = this.facade.isLoadingUsers;\r\n private allUsers = this.facade.users;\r\n\r\n ngOnInit(): void {\r\n this.facade.getUsers();\r\n }\r\n\r\n addUserDialog(user: any | null = null) {\r\n const modalType: 'drawer' | 'dialog' = user ? 'drawer' : 'dialog';\r\n this.modal.openModal(UserForm, modalType, {\r\n header: user\r\n ? this.translocoService.translate('users-groups.edit-user')\r\n : this.translocoService.translate('users-groups.add-user'),\r\n styleClass:\r\n modalType === 'drawer'\r\n ? '!w-[30rem] !absolute !shadow-none'\r\n : '!w-[50rem]',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n userForEdit: user,\r\n },\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <ng-template #typeCol let-row>\r\n <div>{{ row.isExternal ? t(\"external\") : t(\"internal\") }}</div>\r\n </ng-template>\r\n <ng-template #userCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-avatar [icon]=\"'custom.user-pp'\"> </mt-avatar> {{ row.displayName }}\r\n </div>\r\n </ng-template>\r\n\r\n <mt-table\r\n [tabs]=\"tabs()\"\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"users()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","import {\r\n Component,\r\n inject,\r\n OnInit,\r\n signal,\r\n input,\r\n TemplateRef,\r\n viewChild,\r\n linkedSignal,\r\n} from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { FormControl, ReactiveFormsModule } from '@angular/forms';\r\nimport { DynamicForm } from '@masterteam/forms/dynamic-form';\r\nimport { Button } from '@masterteam/components/button';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport { DialogService, ModalRef } from '@masterteam/components/dialog';\r\nimport {\r\n DynamicFormConfig,\r\n TextareaFieldConfig,\r\n UserSearchFieldConfig,\r\n ValidatorConfig,\r\n} from '@masterteam/components';\r\nimport { Group, UsersGroupsFacade } from '../../../../../store/users-groups';\r\nimport {\r\n TranslocoDirective,\r\n TranslocoPipe,\r\n TranslocoService,\r\n} from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { REQUEST_CONTEXT } from '@masterteam/components';\r\nimport { HttpContext } from '@angular/common/http';\r\nimport { Avatar } from '@masterteam/components/avatar';\r\nimport { ColumnDef, Table, TableAction } from '@masterteam/components/table';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-group-form',\r\n templateUrl: './group-form.html',\r\n styleUrls: ['./group-form.css'],\r\n standalone: true,\r\n imports: [\r\n CommonModule,\r\n Button,\r\n TranslocoDirective,\r\n SkeletonModule,\r\n DynamicForm,\r\n ReactiveFormsModule,\r\n TranslocoPipe,\r\n Avatar,\r\n Table,\r\n ],\r\n providers: [DialogService],\r\n})\r\nexport default class GroupForm implements OnInit {\r\n modal = inject(ModalService);\r\n ref: ModalRef = inject(ModalRef);\r\n groupForEdit = input<Group | null>(null);\r\n private readonly translocoService = inject(TranslocoService);\r\n private readonly facade = inject(UsersGroupsFacade);\r\n selectedGroup = this.facade.selectedGroup;\r\n groupFormControl = new FormControl();\r\n getGroupFormLoading = this.facade.isLoadingGroup;\r\n createUpdateGroupLoading = this.facade.isSavingGroup;\r\n addUserToGroupLoading = this.facade.isAddingUserToGroup;\r\n deleteUserFromGroupLoading = this.facade.isDeletingUserFromGroup;\r\n internalUserFormControl = new FormControl();\r\n userCol = viewChild.required<TemplateRef<any>>('userCol');\r\n isUserExistInMembers = signal<boolean>(false);\r\n context = new HttpContext().set(REQUEST_CONTEXT, {\r\n useBaseUrl: true,\r\n });\r\n groupFormConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'groupFormConfig',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n {\r\n key: 'name.en',\r\n label: this.translocoService.translate(\r\n 'users-groups.group-name-en',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'users-groups.group-name-en',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n },\r\n {\r\n key: 'name.ar',\r\n label: this.translocoService.translate(\r\n 'users-groups.group-name-ar',\r\n ),\r\n placeholder: this.translocoService.translate(\r\n 'users-groups.group-name-ar',\r\n ),\r\n validators: [ValidatorConfig.required()],\r\n order: 1,\r\n },\r\n\r\n new TextareaFieldConfig({\r\n key: 'description',\r\n label: this.translocoService.translate('users-groups.description'),\r\n placeholder: this.translocoService.translate(\r\n 'users-groups.description',\r\n ),\r\n order: 3,\r\n }),\r\n ],\r\n },\r\n ],\r\n });\r\n\r\n usersLoading = signal<boolean>(false);\r\n internalUserFormConfig = signal<DynamicFormConfig>({\r\n sections: [\r\n {\r\n key: 'internalUserFormConfig',\r\n type: 'header',\r\n order: 1,\r\n fields: [\r\n new UserSearchFieldConfig({\r\n key: 'userField',\r\n label: this.translocoService.translate('users-groups.user-name'),\r\n apiUrl: 'identity/users',\r\n context: this.context,\r\n order: 1,\r\n }),\r\n ],\r\n },\r\n ],\r\n });\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'displayName',\r\n label: this.translocoService.translate('users-groups.user'),\r\n type: 'custom',\r\n customCellTpl: this.userCol(),\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: any) => {\r\n this.deletingRowIds.update((ids) => [...ids, row?.user?.userName]);\r\n this.facade\r\n .deleteUserFromGroup({\r\n userName: row?.user?.userName,\r\n groupId: this.groupForEdit()?.id as string,\r\n })\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row?.user?.userName),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: any) =>\r\n this.deletingRowIds().includes(row?.user?.userName),\r\n },\r\n ]);\r\n constructor() {\r\n // effect(() => {\r\n // const groupId = this.groupForEdit()?.id;\r\n // if (this.selectedGroup() && groupId) {\r\n // this.groupFormControl.patchValue(this.selectedGroup());\r\n // }\r\n // });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.groupForEdit()?.id) {\r\n this.facade.getGroup(this.groupForEdit()?.id || null).subscribe((_) => {\r\n if (this.selectedGroup()) {\r\n this.groupFormControl.patchValue(this.selectedGroup());\r\n }\r\n });\r\n }\r\n\r\n this.internalUserFormControl.valueChanges.subscribe((value) => {\r\n const isUserExistInMembers = this.selectedGroup()?.members?.find(\r\n (member) => member?.user?.userId === value?.userField?.userId,\r\n );\r\n this.isUserExistInMembers.set(isUserExistInMembers);\r\n });\r\n }\r\n\r\n onSubmit() {\r\n if (this.groupForEdit()?.id) {\r\n const payload = {\r\n name: this.groupFormControl.value?.name,\r\n workspace: this.groupFormControl.value?.workspace,\r\n description: this.groupFormControl.value?.description,\r\n };\r\n this.facade.updateGroup(this.groupForEdit()?.id, payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n } else {\r\n const payload: Partial<Group> = {\r\n name: this.groupFormControl.value?.name,\r\n workspace: this.groupFormControl.value?.workspace,\r\n description: this.groupFormControl.value?.description,\r\n };\r\n\r\n this.facade.createGroup(payload).subscribe({\r\n next: () => {\r\n this.ref.close(true);\r\n },\r\n error: () => {},\r\n });\r\n }\r\n }\r\n\r\n onAddUser() {\r\n if (\r\n this.internalUserFormControl.value.userField.userId &&\r\n !this.isUserExistInMembers()\r\n ) {\r\n this.facade\r\n .addUserToGroup(\r\n this.internalUserFormControl.value.userField.userName,\r\n this.groupForEdit()?.id as string,\r\n )\r\n .subscribe((_) => {\r\n this.internalUserFormControl.setValue({ userField: null });\r\n });\r\n }\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div [class]=\"'flex flex-col gap-1 p-4 ' + modal.contentClass\">\r\n @if (!getGroupFormLoading()) {\r\n <form class=\"col-span-1\">\r\n <mt-dynamic-form\r\n [formConfig]=\"groupFormConfig()\"\r\n [formControl]=\"groupFormControl\"\r\n />\r\n </form>\r\n\r\n @if (groupForEdit()) {\r\n <div class=\"flex gap-3 items-end mt-6 pt-4 border-t-1 border-surface\">\r\n <mt-dynamic-form\r\n class=\"flex-1\"\r\n [formConfig]=\"internalUserFormConfig()\"\r\n [formControl]=\"internalUserFormControl\"\r\n />\r\n <mt-button\r\n icon=\"general.plus\"\r\n class=\"mb-0\"\r\n variant=\"outlined\"\r\n (click)=\"onAddUser()\"\r\n [disabled]=\"\r\n addUserToGroupLoading() ||\r\n isUserExistInMembers() ||\r\n !internalUserFormControl.value?.userField\r\n \"\r\n />\r\n </div>\r\n\r\n <mt-table\r\n [data]=\"selectedGroup()?.members || []\"\r\n [columns]=\"tableColumns()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"false\"\r\n [showFilters]=\"false\"\r\n [loading]=\"addUserToGroupLoading()\"\r\n >\r\n </mt-table>\r\n <ng-template #userCol let-row>\r\n <div class=\"flex items-center gap-2\">\r\n <mt-avatar [icon]=\"'custom.user-pp'\"> </mt-avatar>\r\n {{ row?.user?.displayName }}\r\n </div>\r\n </ng-template>\r\n }\r\n } @else {\r\n <p-skeleton class=\"my-4 mt-7\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n <p-skeleton class=\"my-4\" height=\"3rem\" />\r\n }\r\n </div>\r\n\r\n <div [class]=\"modal.footerClass\">\r\n <mt-button\r\n [label]=\"selectedGroup() ? ('save' | transloco) : ('add' | transloco)\"\r\n (click)=\"onSubmit()\"\r\n [loading]=\"createUpdateGroupLoading()\"\r\n [disabled]=\"!this.groupFormControl.valid\"\r\n />\r\n </div>\r\n</ng-container>\r\n","import { CommonModule } from '@angular/common';\r\nimport {\r\n Component,\r\n inject,\r\n linkedSignal,\r\n OnInit,\r\n signal,\r\n TemplateRef,\r\n viewChild,\r\n} from '@angular/core';\r\nimport { ColumnDef, Table, TableAction } from '@masterteam/components/table';\r\nimport { SkeletonModule } from 'primeng/skeleton';\r\nimport GroupForm from './group-form/group-form';\r\nimport { UsersGroupsFacade } from '../../../../store/users-groups';\r\nimport { TranslocoDirective, TranslocoService } from '@jsverse/transloco';\r\nimport { ModalService } from '@masterteam/components/modal';\r\nimport { finalize } from 'rxjs';\r\n\r\n@Component({\r\n selector: 'mt-groups',\r\n styleUrl: './groups.css',\r\n templateUrl: './groups.html',\r\n standalone: true,\r\n imports: [CommonModule, SkeletonModule, Table, TranslocoDirective],\r\n})\r\nexport default class Groups implements OnInit {\r\n workspaceCol = viewChild.required<TemplateRef<any>>('workspaceCol');\r\n groupCol = viewChild.required<TemplateRef<any>>('groupCol');\r\n\r\n private readonly facade = inject(UsersGroupsFacade);\r\n readonly modal: ModalService = inject(ModalService);\r\n private readonly translocoService = inject(TranslocoService);\r\n\r\n activeTab = signal<string>('all');\r\n tableActions = signal<TableAction[]>([\r\n {\r\n icon: 'general.plus',\r\n label: this.translocoService.translate('users-groups.add-group'),\r\n color: 'primary',\r\n action: () => {\r\n this.addGroupDialog();\r\n },\r\n },\r\n ]);\r\n\r\n deletingRowIds = signal<any[]>([]);\r\n rowActions = signal<TableAction[]>([\r\n {\r\n icon: 'custom.pencil',\r\n tooltip: this.translocoService.translate('edit'),\r\n color: 'primary',\r\n action: (row: any) => {\r\n this.facade.clearSelectedGroup();\r\n this.addGroupDialog(row);\r\n },\r\n },\r\n {\r\n icon: 'general.trash-01',\r\n tooltip: this.translocoService.translate('delete'),\r\n color: 'danger',\r\n variant: 'outlined',\r\n action: (row: any) => {\r\n this.deletingRowIds.update((ids) => [...ids, row.id]);\r\n this.facade\r\n .deleteGroup(row.id)\r\n .pipe(\r\n finalize(() => {\r\n this.deletingRowIds.update((ids) =>\r\n ids.filter((id) => id !== row.id),\r\n );\r\n }),\r\n )\r\n .subscribe();\r\n },\r\n confirmation: {\r\n type: 'popup',\r\n confirmationType: 'delete',\r\n },\r\n loading: (row: any) => this.deletingRowIds().includes(row.id),\r\n },\r\n ]);\r\n\r\n tableColumns = linkedSignal<ColumnDef[]>(() => [\r\n {\r\n key: 'name',\r\n label: this.translocoService.translate('users-groups.group'),\r\n type: 'custom',\r\n customCellTpl: this.groupCol(),\r\n filterConfig: {\r\n type: 'text',\r\n label: this.translocoService.translate('users-groups.group'),\r\n },\r\n },\r\n {\r\n key: 'membersCount',\r\n label: this.translocoService.translate('users-groups.users'),\r\n },\r\n ]);\r\n\r\n loading = this.facade.isLoadingGroups;\r\n allGroups = this.facade.groups;\r\n\r\n ngOnInit(): void {\r\n this.facade.getGroups();\r\n }\r\n\r\n addGroupDialog(group: any | null = null) {\r\n const modalType: 'drawer' | 'dialog' = group ? 'drawer' : 'dialog';\r\n this.modal.openModal(GroupForm, modalType, {\r\n header: group\r\n ? this.translocoService.translate('users-groups.edit-group')\r\n : this.translocoService.translate('users-groups.add-group'),\r\n styleClass: '!w-[35rem] !absolute !shadow-none',\r\n position: modalType === 'drawer' ? 'end' : '',\r\n appendTo: modalType === 'drawer' ? 'page-content' : 'body',\r\n dismissableMask: true,\r\n dismissible: true,\r\n inputValues: {\r\n groupForEdit: group,\r\n },\r\n });\r\n }\r\n}\r\n","<ng-container *transloco=\"let t; prefix: 'users-groups'\">\r\n <div class=\"mt-5\">\r\n <ng-template #workspaceCol let-row>\r\n <div>{{ row.workspace }}</div>\r\n </ng-template>\r\n <ng-template #groupCol let-row>\r\n <div class=\"flex items-center gap-2\">{{ row.name }}</div>\r\n </ng-template>\r\n\r\n <mt-table\r\n [(activeTab)]=\"activeTab\"\r\n [data]=\"allGroups()\"\r\n [columns]=\"tableColumns()\"\r\n [actions]=\"tableActions()\"\r\n [rowActions]=\"rowActions()\"\r\n [generalSearch]=\"true\"\r\n [showFilters]=\"true\"\r\n [loading]=\"loading()\"\r\n >\r\n </mt-table>\r\n </div>\r\n</ng-container>\r\n","// store/index.ts\r\nexport * from './users-groups';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,48 @@
1
+ {
2
+ "name": "@masterteam/users-groups",
3
+ "version": "0.0.1",
4
+ "publishConfig": {
5
+ "directory": "../../../dist/masterteam/users-groups",
6
+ "linkDirectory": false,
7
+ "access": "public"
8
+ },
9
+ "peerDependencies": {
10
+ "@angular/common": "^21.0.3",
11
+ "@angular/core": "^21.0.3",
12
+ "@angular/forms": "^21.0.3",
13
+ "@angular/cdk": "^21.0.2",
14
+ "@primeuix/themes": "^2.0.2",
15
+ "@tailwindcss/postcss": "^4.1.17",
16
+ "@jsverse/transloco": "^8.0.2",
17
+ "postcss": "^8.5.6",
18
+ "primeng": "21.0.1",
19
+ "rxjs": "^7.8.2",
20
+ "tailwindcss": "^4.1.17",
21
+ "tailwindcss-primeui": "^0.6.1",
22
+ "@ngxs/store": "^20.1.0",
23
+ "@masterteam/components": "^0.0.84",
24
+ "@masterteam/forms": "^0.0.35",
25
+ "@masterteam/icons": "^0.0.12"
26
+ },
27
+ "sideEffects": false,
28
+ "exports": {
29
+ "./assets/users-groups.css": {
30
+ "style": "./assets/users-groups.css"
31
+ },
32
+ "./assets/i18n/*.json": {
33
+ "default": "./assets/i18n/*.json"
34
+ },
35
+ "./package.json": {
36
+ "default": "./package.json"
37
+ },
38
+ ".": {
39
+ "types": "./types/masterteam-users-groups.d.ts",
40
+ "default": "./fesm2022/masterteam-users-groups.mjs"
41
+ }
42
+ },
43
+ "module": "fesm2022/masterteam-users-groups.mjs",
44
+ "typings": "types/masterteam-users-groups.d.ts",
45
+ "dependencies": {
46
+ "tslib": "^2.8.1"
47
+ }
48
+ }
@@ -0,0 +1,326 @@
1
+ import * as _angular_core from '@angular/core';
2
+ import { OnInit, TemplateRef } from '@angular/core';
3
+ import * as rxjs from 'rxjs';
4
+ import { TranslocoService } from '@jsverse/transloco';
5
+ import { PageHeaderTab } from '@masterteam/components/page-header';
6
+ import * as _masterteam_users_groups from '@masterteam/users-groups';
7
+ import { TableAction, ColumnDef } from '@masterteam/components/table';
8
+ import { ModalService } from '@masterteam/components/modal';
9
+ import { FormControl } from '@angular/forms';
10
+ import { ModalRef } from '@masterteam/components/dialog';
11
+ import * as _masterteam_components from '@masterteam/components';
12
+ import { CrudStateBase, DynamicFormConfig } from '@masterteam/components';
13
+ import { HttpContext } from '@angular/common/http';
14
+ import { StateContext } from '@ngxs/store';
15
+
16
+ interface LoadingStateShape<L extends string = string> {
17
+ loadingActive: L[];
18
+ errors: Partial<Record<L, string>>;
19
+ }
20
+
21
+ interface User {
22
+ displayName: string;
23
+ userId: string;
24
+ userName: string;
25
+ photo?: any;
26
+ password?: string;
27
+ image?: string;
28
+ department?: string | null;
29
+ stars?: number;
30
+ mobile?: string;
31
+ ext?: number;
32
+ isExternal?: boolean;
33
+ email?: string;
34
+ }
35
+ interface Group {
36
+ id?: string | number;
37
+ name?: any;
38
+ createdAt?: any;
39
+ workspace?: any;
40
+ description?: string;
41
+ members?: any[];
42
+ membersCount?: number;
43
+ }
44
+ declare enum UsersGroupsActionKey {
45
+ GetUsers = "getUsers",
46
+ GetUser = "getUser",
47
+ CreateUser = "createUser",
48
+ UpdateUser = "updateUser",
49
+ DeleteUser = "deleteUser",
50
+ AddUserToGroup = "addUserToGroup",
51
+ DeleteUserFromGroup = "deleteUserFromGroup",
52
+ GetGroups = "getGroups",
53
+ GetGroup = "getGroup",
54
+ CreateGroup = "createGroup",
55
+ UpdateGroup = "updateGroup",
56
+ DeleteGroup = "deleteGroup"
57
+ }
58
+ interface UsersGroupsStateModel extends LoadingStateShape<UsersGroupsActionKey> {
59
+ users: User[];
60
+ selectedUser: User | null;
61
+ groups: Group[];
62
+ selectedGroup: Group | null;
63
+ }
64
+
65
+ declare class GetUsers {
66
+ static readonly type = "[UsersGroups] Get Users";
67
+ }
68
+ declare class GetUser {
69
+ userName: string | null;
70
+ static readonly type = "[UsersGroups] Get One";
71
+ constructor(userName: string | null);
72
+ }
73
+ declare class CreateUser {
74
+ payload: Partial<User>;
75
+ static readonly type = "[UsersGroups] Create User";
76
+ constructor(payload: Partial<User>);
77
+ }
78
+ declare class AddUserToGroup {
79
+ payload: {
80
+ groupId: string;
81
+ userId: string;
82
+ };
83
+ static readonly type = "[UsersGroups] Add User To Group";
84
+ constructor(payload: {
85
+ groupId: string;
86
+ userId: string;
87
+ });
88
+ }
89
+ declare class UpdateUser {
90
+ userId: string | undefined;
91
+ changes: Partial<User>;
92
+ static readonly type = "[UsersGroups] Update User";
93
+ constructor(userId: string | undefined, changes: Partial<User>);
94
+ }
95
+ declare class DeleteUser {
96
+ userName: string | number;
97
+ static readonly type = "[UsersGroups] Delete User";
98
+ constructor(userName: string | number);
99
+ }
100
+ declare class DeleteUserFromGroup {
101
+ payload: any;
102
+ static readonly type = "[UsersGroups] Delete User From Group";
103
+ constructor(payload: any);
104
+ }
105
+ declare class GetGroups {
106
+ static readonly type = "[UsersGroups] Get Groups";
107
+ }
108
+ declare class ClearSelectedGroup {
109
+ static readonly type = "[UsersGroups] Clear Selected Group";
110
+ }
111
+ declare class GetGroup {
112
+ groupId: string | number | null;
113
+ static readonly type = "[UsersGroups] Get One Group";
114
+ constructor(groupId: string | number | null);
115
+ }
116
+ declare class CreateGroup {
117
+ payload: Partial<Group>;
118
+ static readonly type = "[UsersGroups] Create Group";
119
+ constructor(payload: Partial<Group>);
120
+ }
121
+ declare class UpdateGroup {
122
+ groupId: string | number | undefined;
123
+ changes: Partial<Group>;
124
+ static readonly type = "[UsersGroups] Update Group";
125
+ constructor(groupId: string | number | undefined, changes: Partial<Group>);
126
+ }
127
+ declare class DeleteGroup {
128
+ groupId: string | number;
129
+ static readonly type = "[UsersGroups] Delete Group";
130
+ constructor(groupId: string | number);
131
+ }
132
+
133
+ declare class UsersGroupsFacade {
134
+ private readonly store;
135
+ readonly users: _angular_core.Signal<User[]>;
136
+ readonly selectedUser: _angular_core.Signal<User | null>;
137
+ readonly groups: _angular_core.Signal<Group[]>;
138
+ readonly selectedGroup: _angular_core.Signal<Group | null>;
139
+ private readonly loadingActive;
140
+ readonly isLoadingUsers: _angular_core.Signal<boolean>;
141
+ readonly isLoadingUser: _angular_core.Signal<boolean>;
142
+ readonly isSavingUser: _angular_core.Signal<boolean>;
143
+ readonly isDeletingUser: _angular_core.Signal<boolean>;
144
+ readonly isLoadingGroups: _angular_core.Signal<boolean>;
145
+ readonly isLoadingGroup: _angular_core.Signal<boolean>;
146
+ readonly isSavingGroup: _angular_core.Signal<boolean>;
147
+ readonly isDeletingGroup: _angular_core.Signal<boolean>;
148
+ readonly isAddingUserToGroup: _angular_core.Signal<boolean>;
149
+ readonly isDeletingUserFromGroup: _angular_core.Signal<boolean>;
150
+ getUsers(): rxjs.Observable<void>;
151
+ getUser(id: string | null): rxjs.Observable<void>;
152
+ createUser(payload: Partial<User>): rxjs.Observable<void>;
153
+ addUserToGroup(userId: string, groupId: string): rxjs.Observable<void>;
154
+ deleteUserFromGroup(payload: any): rxjs.Observable<void>;
155
+ updateUser(id: string | undefined, changes: Partial<User>): rxjs.Observable<void>;
156
+ deleteUser(userName: string | number): rxjs.Observable<void>;
157
+ getGroups(): rxjs.Observable<void>;
158
+ getGroup(id: string | number | null): rxjs.Observable<void>;
159
+ createGroup(payload: Partial<Group>): rxjs.Observable<void>;
160
+ updateGroup(id: string | number | undefined, changes: Partial<Group>): rxjs.Observable<void>;
161
+ deleteGroup(groupId: string | number): rxjs.Observable<void>;
162
+ clearSelectedGroup(): void;
163
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UsersGroupsFacade, never>;
164
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<UsersGroupsFacade>;
165
+ }
166
+
167
+ interface Response<T> {
168
+ endpoint: string;
169
+ status: number;
170
+ code: number;
171
+ locale: string;
172
+ message?: string | null;
173
+ errors?: any | null;
174
+ data: T;
175
+ cacheSession?: string;
176
+ }
177
+
178
+ declare class UsersGroupsState extends CrudStateBase<any, UsersGroupsStateModel, UsersGroupsActionKey> {
179
+ private http;
180
+ context: HttpContext;
181
+ static getUsers(state: UsersGroupsStateModel): User[];
182
+ static getSelectedUser(state: UsersGroupsStateModel): User | null;
183
+ static getGroups(state: UsersGroupsStateModel): Group[];
184
+ static getSelectedGroup(state: UsersGroupsStateModel): Group | null;
185
+ static getLoadingActive(state: UsersGroupsStateModel): string[];
186
+ static getErrors(state: UsersGroupsStateModel): Record<string, string | null>;
187
+ getUsers(ctx: StateContext<UsersGroupsStateModel>): rxjs.Observable<Response<User[]>>;
188
+ getUser(ctx: StateContext<UsersGroupsStateModel>, { userName }: GetUser): rxjs.Observable<Response<User[]>>;
189
+ createUser(ctx: StateContext<UsersGroupsStateModel>, { payload }: CreateUser): rxjs.Observable<Response<User>>;
190
+ addUserToGroup(ctx: StateContext<UsersGroupsStateModel>, { payload }: AddUserToGroup): rxjs.Observable<Response<any>>;
191
+ updateUser(ctx: StateContext<UsersGroupsStateModel>, { changes, userId }: UpdateUser): rxjs.Observable<Response<User>>;
192
+ deleteUser(ctx: StateContext<UsersGroupsStateModel>, { userName }: DeleteUser): rxjs.Observable<_masterteam_components.Response<void>>;
193
+ deleteUserFromGroup(ctx: StateContext<UsersGroupsStateModel>, { payload }: DeleteUserFromGroup): rxjs.Observable<Response<void>>;
194
+ getGroups(ctx: StateContext<UsersGroupsStateModel>): rxjs.Observable<Response<Group[]>>;
195
+ getGroup(ctx: StateContext<UsersGroupsStateModel>, { groupId }: GetGroup): rxjs.Observable<Response<Group>>;
196
+ createGroup(ctx: StateContext<UsersGroupsStateModel>, { payload }: CreateGroup): rxjs.Observable<Response<any>>;
197
+ updateGroup(ctx: StateContext<UsersGroupsStateModel>, { changes, groupId }: UpdateGroup): rxjs.Observable<Response<Group>>;
198
+ deleteGroup(ctx: StateContext<UsersGroupsStateModel>, { groupId }: DeleteGroup): rxjs.Observable<_masterteam_components.Response<void>>;
199
+ clearSelectedGroup(ctx: StateContext<UsersGroupsStateModel>): void;
200
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UsersGroupsState, never>;
201
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<UsersGroupsState>;
202
+ }
203
+
204
+ declare class UsersGroups implements OnInit {
205
+ protected readonly facade: UsersGroupsFacade;
206
+ private readonly route;
207
+ private readonly router;
208
+ protected readonly translocoService: TranslocoService;
209
+ selectedTab: _angular_core.WritableSignal<string>;
210
+ tabsList: PageHeaderTab[];
211
+ breadcrumbItems: {
212
+ label?: string;
213
+ routerLink?: string;
214
+ icon?: string;
215
+ }[];
216
+ ngOnInit(): void;
217
+ goBack(): void;
218
+ onTabChange(event: any): void;
219
+ getUsers(): void;
220
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UsersGroups, never>;
221
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UsersGroups, "mt-users-groups", never, {}, {}, never, never, true, never>;
222
+ }
223
+
224
+ declare class Users implements OnInit {
225
+ typeCol: _angular_core.Signal<TemplateRef<any>>;
226
+ userCol: _angular_core.Signal<TemplateRef<any>>;
227
+ private readonly facade;
228
+ readonly modal: ModalService;
229
+ private readonly translocoService;
230
+ users: _angular_core.Signal<_masterteam_users_groups.User[]>;
231
+ tabs: _angular_core.WritableSignal<{
232
+ label: string;
233
+ value: string;
234
+ }[]>;
235
+ activeTab: _angular_core.WritableSignal<string>;
236
+ tableActions: _angular_core.WritableSignal<TableAction[]>;
237
+ deletingRowIds: _angular_core.WritableSignal<any[]>;
238
+ rowActions: _angular_core.WritableSignal<TableAction[]>;
239
+ tableColumns: _angular_core.WritableSignal<ColumnDef[]>;
240
+ loading: _angular_core.Signal<boolean>;
241
+ private allUsers;
242
+ ngOnInit(): void;
243
+ addUserDialog(user?: any | null): void;
244
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Users, never>;
245
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Users, "mt-users", never, {}, {}, never, never, true, never>;
246
+ }
247
+
248
+ declare class Groups implements OnInit {
249
+ workspaceCol: _angular_core.Signal<TemplateRef<any>>;
250
+ groupCol: _angular_core.Signal<TemplateRef<any>>;
251
+ private readonly facade;
252
+ readonly modal: ModalService;
253
+ private readonly translocoService;
254
+ activeTab: _angular_core.WritableSignal<string>;
255
+ tableActions: _angular_core.WritableSignal<TableAction[]>;
256
+ deletingRowIds: _angular_core.WritableSignal<any[]>;
257
+ rowActions: _angular_core.WritableSignal<TableAction[]>;
258
+ tableColumns: _angular_core.WritableSignal<ColumnDef[]>;
259
+ loading: _angular_core.Signal<boolean>;
260
+ allGroups: _angular_core.Signal<_masterteam_users_groups.Group[]>;
261
+ ngOnInit(): void;
262
+ addGroupDialog(group?: any | null): void;
263
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<Groups, never>;
264
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<Groups, "mt-groups", never, {}, {}, never, never, true, never>;
265
+ }
266
+
267
+ declare class UserForm implements OnInit {
268
+ modal: ModalService;
269
+ ref: ModalRef;
270
+ userForEdit: _angular_core.InputSignal<User | null>;
271
+ selectedTab: _angular_core.WritableSignal<string>;
272
+ private readonly translocoService;
273
+ tabsList: {
274
+ label: string;
275
+ value: string;
276
+ }[];
277
+ private readonly facade;
278
+ selectedUser: _angular_core.Signal<User | null>;
279
+ internalUserFormControl: FormControl<any>;
280
+ externalUserFormControl: FormControl<any>;
281
+ getUserFormLoading: _angular_core.Signal<boolean>;
282
+ createUpdateUserLoading: _angular_core.Signal<boolean>;
283
+ context: HttpContext;
284
+ internalUserFormConfig: _angular_core.WritableSignal<DynamicFormConfig>;
285
+ fieldColSpan: _angular_core.Signal<12 | 6>;
286
+ externalUserFormConfig: _angular_core.Signal<DynamicFormConfig>;
287
+ constructor();
288
+ ngOnInit(): void;
289
+ onSubmit(): void;
290
+ updateFormFields(): void;
291
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<UserForm, never>;
292
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<UserForm, "mt-user-form", never, { "userForEdit": { "alias": "userForEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
293
+ }
294
+
295
+ declare class GroupForm implements OnInit {
296
+ modal: ModalService;
297
+ ref: ModalRef;
298
+ groupForEdit: _angular_core.InputSignal<Group | null>;
299
+ private readonly translocoService;
300
+ private readonly facade;
301
+ selectedGroup: _angular_core.Signal<Group | null>;
302
+ groupFormControl: FormControl<any>;
303
+ getGroupFormLoading: _angular_core.Signal<boolean>;
304
+ createUpdateGroupLoading: _angular_core.Signal<boolean>;
305
+ addUserToGroupLoading: _angular_core.Signal<boolean>;
306
+ deleteUserFromGroupLoading: _angular_core.Signal<boolean>;
307
+ internalUserFormControl: FormControl<any>;
308
+ userCol: _angular_core.Signal<TemplateRef<any>>;
309
+ isUserExistInMembers: _angular_core.WritableSignal<boolean>;
310
+ context: HttpContext;
311
+ groupFormConfig: _angular_core.WritableSignal<DynamicFormConfig>;
312
+ usersLoading: _angular_core.WritableSignal<boolean>;
313
+ internalUserFormConfig: _angular_core.WritableSignal<DynamicFormConfig>;
314
+ tableColumns: _angular_core.WritableSignal<ColumnDef[]>;
315
+ deletingRowIds: _angular_core.WritableSignal<any[]>;
316
+ rowActions: _angular_core.WritableSignal<TableAction[]>;
317
+ constructor();
318
+ ngOnInit(): void;
319
+ onSubmit(): void;
320
+ onAddUser(): void;
321
+ static ɵfac: _angular_core.ɵɵFactoryDeclaration<GroupForm, never>;
322
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<GroupForm, "mt-group-form", never, { "groupForEdit": { "alias": "groupForEdit"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
323
+ }
324
+
325
+ export { AddUserToGroup, ClearSelectedGroup, CreateGroup, CreateUser, DeleteGroup, DeleteUser, DeleteUserFromGroup, GetGroup, GetGroups, GetUser, GetUsers, GroupForm, Groups, UpdateGroup, UpdateUser, UserForm, Users, UsersGroups, UsersGroupsActionKey, UsersGroupsFacade, UsersGroupsState };
326
+ export type { Group, User, UsersGroupsStateModel };