mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-07 18:25:09 +00:00
filter the preselectuser in multiselection mode (#4173)
This commit is contained in:
parent
b7284051ab
commit
6bf2558877
@ -75,10 +75,9 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
@ViewChild('userInput')
|
@ViewChild('userInput')
|
||||||
private userInput: ElementRef<HTMLInputElement>;
|
private userInput: ElementRef<HTMLInputElement>;
|
||||||
|
|
||||||
private _selectedUsers: IdentityUserModel[] = [];
|
|
||||||
private _searchUsers: IdentityUserModel[] = [];
|
private _searchUsers: IdentityUserModel[] = [];
|
||||||
private selectedUsers: BehaviorSubject<IdentityUserModel[]>;
|
private selectedUsersSubject: BehaviorSubject<IdentityUserModel[]>;
|
||||||
private searchUsers: BehaviorSubject<IdentityUserModel[]>;
|
private searchUsersSubject: BehaviorSubject<IdentityUserModel[]>;
|
||||||
selectedUsers$: Observable<IdentityUserModel[]>;
|
selectedUsers$: Observable<IdentityUserModel[]>;
|
||||||
searchUsers$: Observable<IdentityUserModel[]>;
|
searchUsers$: Observable<IdentityUserModel[]>;
|
||||||
|
|
||||||
@ -91,13 +90,14 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
isFocused: boolean;
|
isFocused: boolean;
|
||||||
|
|
||||||
constructor(private identityUserService: IdentityUserService) {
|
constructor(private identityUserService: IdentityUserService) {
|
||||||
this.selectedUsers = new BehaviorSubject<IdentityUserModel[]>(this._selectedUsers);
|
this.searchUsersSubject = new BehaviorSubject<IdentityUserModel[]>(this._searchUsers);
|
||||||
this.searchUsers = new BehaviorSubject<IdentityUserModel[]>(this._searchUsers);
|
this.searchUsers$ = this.searchUsersSubject.asObservable();
|
||||||
this.selectedUsers$ = this.selectedUsers.asObservable();
|
|
||||||
this.searchUsers$ = this.searchUsers.asObservable();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
this.selectedUsersSubject = new BehaviorSubject<IdentityUserModel[]>(this.preSelectUsers);
|
||||||
|
this.selectedUsers$ = this.selectedUsersSubject.asObservable();
|
||||||
|
|
||||||
if (this.hasPreSelectUsers()) {
|
if (this.hasPreSelectUsers()) {
|
||||||
this.loadPreSelectUsers();
|
this.loadPreSelectUsers();
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
})
|
})
|
||||||
).subscribe((user) => {
|
).subscribe((user) => {
|
||||||
this._searchUsers.push(user);
|
this._searchUsers.push(user);
|
||||||
this.searchUsers.next(this._searchUsers);
|
this.searchUsersSubject.next(this._searchUsers);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -164,9 +164,9 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private isUserAlreadySelected(user: IdentityUserModel): boolean {
|
private isUserAlreadySelected(user: IdentityUserModel): boolean {
|
||||||
if (this._selectedUsers && this._selectedUsers.length > 0) {
|
if (this.preSelectUsers && this.preSelectUsers.length > 0) {
|
||||||
const result = this._selectedUsers.find((selectedUser) => {
|
const result = this.preSelectUsers.find((selectedUser) => {
|
||||||
return selectedUser.id === user.id;
|
return selectedUser.id === user.id || selectedUser.email === user.email;
|
||||||
});
|
});
|
||||||
|
|
||||||
return !!result;
|
return !!result;
|
||||||
@ -175,12 +175,7 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private loadPreSelectUsers() {
|
private loadPreSelectUsers() {
|
||||||
if (this.isMultipleMode()) {
|
if (!this.isMultipleMode()) {
|
||||||
if (this.preSelectUsers && this.preSelectUsers.length > 0) {
|
|
||||||
this.selectedUsers.next(this.preSelectUsers);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
this.selectedUsers.next(this.preSelectUsers);
|
|
||||||
this.searchUserCtrl.setValue(this.preSelectUsers[0]);
|
this.searchUserCtrl.setValue(this.preSelectUsers[0]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -197,8 +192,8 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
if (this.isMultipleMode()) {
|
if (this.isMultipleMode()) {
|
||||||
|
|
||||||
if (!this.isUserAlreadySelected(user)) {
|
if (!this.isUserAlreadySelected(user)) {
|
||||||
this._selectedUsers.push(user);
|
this.preSelectUsers.push(user);
|
||||||
this.selectedUsers.next(this._selectedUsers);
|
this.selectedUsersSubject.next(this.preSelectUsers);
|
||||||
this.selectUser.emit(user);
|
this.selectUser.emit(user);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -214,9 +209,9 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
|
|
||||||
onRemove(user: IdentityUserModel) {
|
onRemove(user: IdentityUserModel) {
|
||||||
this.removeUser.emit(user);
|
this.removeUser.emit(user);
|
||||||
const indexToRemove = this._selectedUsers.findIndex((selectedUser) => { return selectedUser.id === user.id; });
|
const indexToRemove = this.preSelectUsers.findIndex((selectedUser) => { return selectedUser.id === user.id; });
|
||||||
this._selectedUsers.splice(indexToRemove, 1);
|
this.preSelectUsers.splice(indexToRemove, 1);
|
||||||
this.selectedUsers.next(this._selectedUsers);
|
this.selectedUsersSubject.next(this.preSelectUsers);
|
||||||
}
|
}
|
||||||
|
|
||||||
getDisplayName(user): string {
|
getDisplayName(user): string {
|
||||||
@ -233,7 +228,7 @@ export class PeopleCloudComponent implements OnInit {
|
|||||||
|
|
||||||
private resetSearchUsers() {
|
private resetSearchUsers() {
|
||||||
this._searchUsers = [];
|
this._searchUsers = [];
|
||||||
this.searchUsers.next(this._searchUsers);
|
this.searchUsersSubject.next(this._searchUsers);
|
||||||
}
|
}
|
||||||
|
|
||||||
private setError() {
|
private setError() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user