([]);
- public selectable = this.selectableSubject.asObservable();
+ public found = this.foundSubject.asObservable();
public inputControl = new FormControl('');
public ngOnInit(): void {
@@ -49,7 +48,7 @@ export class ValuesPickerComponent implements OnInit, OnChanges {
}
public ngOnChanges(): void {
- this.updateSelectable()
+ this.updateSelectable();
}
public isDisabled(value: string): boolean {
@@ -69,7 +68,7 @@ export class ValuesPickerComponent implements OnInit, OnChanges {
}
public addItemSelect(event: MatAutocompleteSelectedEvent): void {
- this.addItem(event.option.viewValue);
+ this.addItem(event.option.value);
}
private addItem(value: string) {
@@ -89,14 +88,20 @@ export class ValuesPickerComponent implements OnInit, OnChanges {
(s) => !this.isDisabled(s) && !selected.includes(s)
);
+ this.selectableSubject.next(available);
+
const searchValue = this.inputControl.value;
if (searchValue && available.length > 0) {
- const fuse = new Fuse(available);
- const result = fuse.search(searchValue).map((r) => r.item);
+ const fuse = new Fuse(available.map(this.valueMapper));
+ const result = fuse
+ .search(searchValue, {
+ limit: 10,
+ })
+ .map((r) => available[r.refIndex]);
- this.selectableSubject.next(result);
+ this.foundSubject.next(result);
} else {
- this.selectableSubject.next(available);
+ this.foundSubject.next(available);
}
}
diff --git a/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.html b/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.html
index c42ec99..c811601 100644
--- a/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.html
+++ b/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.html
@@ -30,6 +30,7 @@
diff --git a/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts b/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts
index 278e158..9fac206 100644
--- a/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts
+++ b/frontend/src/app/routes/settings/roles/settings-roles-edit/settings-roles-edit.component.ts
@@ -1,6 +1,8 @@
import { Component, OnInit } from '@angular/core';
import { ActivatedRoute, Router } from '@angular/router';
+import { Permission } from 'picsur-shared/dist/dto/permissions.dto';
import { HasFailed } from 'picsur-shared/dist/types';
+import { UIFriendlyPermissions } from 'src/app/i18n/permissions.i18n';
import { SnackBarType } from 'src/app/models/dto/snack-bar-type.dto';
import { UpdateRoleControl } from 'src/app/models/forms/updaterole.control';
import { RolesService } from 'src/app/services/api/roles.service';
@@ -41,7 +43,9 @@ export class SettingsRolesEditComponent implements OnInit {
) {}
ngOnInit() {
- Promise.all([this.initRole(), this.initPermissions()]).catch(this.logger.error);
+ Promise.all([this.initRole(), this.initPermissions()]).catch(
+ this.logger.error
+ );
}
private async initRole() {
@@ -104,4 +108,8 @@ export class SettingsRolesEditComponent implements OnInit {
cancel() {
this.router.navigate(['/settings/roles']);
}
+
+ public UIFriendlyPermission(name: string) {
+ return UIFriendlyPermissions[name as Permission] ?? name;
+ }
}