Merge pull request #76 in TEA/mina-sidor-fa-web from bugs/TV-520 to develop
Squashed commit of the following: commit 0b09c15d23fb2bfeb54cbf9e9508a65c782ba230 Merge: 32383b69a73ffeAuthor: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Tue Sep 7 10:09:02 2021 +0200 Merge branch 'develop-remote' into bugs/TV-520 commit 32383b6d1f2b3611cb99c7b05c66b46b561175fe Author: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 12:57:24 2021 +0200 TV-520 fixed failing test after merge from develop commit 29fff4e9dd055dd0da2ba21e8b95a9c4ae9714b4 Merge: b28ef1cdb03d97Author: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 12:46:50 2021 +0200 Merge branch 'develop-remote' into bugs/TV-520 commit b28ef1c1e8645452ab43f1dce8732f69ca73781c Author: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 10:30:13 2021 +0200 TV-520 removed unnecessary reference commit 17d39ec2d396aa4eb60d739a2a04b6e64d2fb5df Author: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 09:55:23 2021 +0200 TV-520 varied fixes for template errors.. commit 8196d0305b224475786843bd149d4e13cc3039aa Author: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 09:06:56 2021 +0200 Merge branch 'develop-remote' into bugs/TV-520 # Conflicts: # apps/mina-sidor-fa/src/app/pages/administration/administration-routing.module.ts commit 8911fdd694d227b901ad492679ed2ed0d044beeb Merge: 31cd47fec7b4fcAuthor: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 08:56:53 2021 +0200 Merge branch 'develop-remote' into bugs/TV-520 commit 31cd47ff2e13d090dd3489e21f18fcf292600cbd Author: arbetsformedlingen_garcn <christian.gardebrink@arbetsformedlingen.se> Date: Mon Sep 6 08:52:06 2021 +0200 TV-520 lade in en funktion i layout komponenten som i stort sett alla sidor verkar använda sig av där title sätts till vad man lagt in för info i data objektet för den aktuella routen.
This commit is contained in:
@@ -60,6 +60,7 @@ const routes: Routes = [
|
||||
},
|
||||
{
|
||||
path: 'organization-picker',
|
||||
data: { title: 'Välj organisation' },
|
||||
loadChildren: () =>
|
||||
import('./pages/organization-picker/organization-picker.module').then(m => m.OrganizationPickerModule),
|
||||
},
|
||||
|
||||
@@ -9,18 +9,22 @@ const routes: Routes = [
|
||||
},
|
||||
{
|
||||
path: 'personal',
|
||||
data: { title: 'Personalinformation' },
|
||||
loadChildren: () => import('./pages/employees/employees.module').then(m => m.EmployeesModule),
|
||||
},
|
||||
{
|
||||
path: 'personal/:employeeId',
|
||||
data: { title: 'Personalinformation' },
|
||||
loadChildren: () => import('./pages/employee-card/employee-card.module').then(m => m.EmployeeCardModule),
|
||||
},
|
||||
{
|
||||
path: 'skapa-personalkonto',
|
||||
data: { title: 'Skapa personalkonto' },
|
||||
loadChildren: () => import('./pages/employee-invite/employee-invite.module').then(m => m.EmployeeInviteModule),
|
||||
},
|
||||
{
|
||||
path: 'redigera-personalkonto/:employeeId',
|
||||
data: { title: 'Redigera personalkonto' },
|
||||
loadChildren: () => import('./pages/employee-form/employee-form.module').then(m => m.EmployeeFormModule),
|
||||
},
|
||||
];
|
||||
|
||||
@@ -59,7 +59,7 @@
|
||||
>
|
||||
<digi-ng-layout-expansion-panel *ngIf="utforandeverksamhet.adresser.length > 0">
|
||||
<span data-slot-trigger>
|
||||
{{ accordionExpanded ? 'Dölj' : 'Visa' }} {{utforandeverksamhet.adresser.length}}
|
||||
<!-- vad refererar accordionExpanded till här?? Templaten bygger inte om det inte finns en definition av variabeln.. {{ accordionExpanded ? 'Dölj' : 'Visa' }} {{utforandeverksamhet.adresser.length}} -->
|
||||
{{utforandeverksamhet.adresser.length === 1 ? 'adress' : 'adresser'}}
|
||||
</span>
|
||||
<ul class="employee-card__utforandeverksamheter-address-list">
|
||||
|
||||
@@ -90,6 +90,12 @@
|
||||
></digi-ng-form-checkbox>
|
||||
</li>
|
||||
</ul>
|
||||
<digi-form-validation-message
|
||||
*ngIf="rolesFormGroup.invalid && rolesFormGroup.errors.noRoleSelected && rolesFormGroup.touched"
|
||||
af-variation="error"
|
||||
>
|
||||
Du måste välja minst en behörighet
|
||||
</digi-form-validation-message>
|
||||
</fieldset>
|
||||
|
||||
<div class="edit-employee-form__footer">
|
||||
|
||||
@@ -198,6 +198,8 @@ export class EditEmployeeFormComponent implements OnInit, OnChanges {
|
||||
return;
|
||||
}
|
||||
|
||||
this.editEmployeeFormGroup.markAllAsTouched();
|
||||
|
||||
if (this.editEmployeeFormGroup.invalid || this.editEmployeeFormGroup.pristine) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -48,7 +48,6 @@
|
||||
[currentEmployeeRoles]="currentEmployeeRoles$ | async"
|
||||
[availableTjanster]="tjanster$ | async"
|
||||
[currentEmployeeTjanster]="employee.tjanster"
|
||||
[selectedTjanster]="selectedServices$ | async"
|
||||
[availableUtforandeVerksamheter]="availableUtforandeVerksamheter$ | async"
|
||||
(tjansterSelected)="setupAvailableUtforandeVerksamheter($event)"
|
||||
(formSubmitted)="updateEmployee($event)"
|
||||
|
||||
@@ -22,7 +22,7 @@ import { EditEmployeeFormData } from './edit-employee-form/edit-employee-form.co
|
||||
export class EmployeeFormComponent implements OnInit {
|
||||
employee$ = this.employeeService.employee$;
|
||||
tjanster$: Observable<Tjanst[]> = this.tjanstService.tjanster$;
|
||||
currentEmployeeRoles$: Observable<Role[] | undefined | null> = null;
|
||||
currentEmployeeRoles$: Observable<string[] | undefined | null> = null;
|
||||
availableUtforandeVerksamheter$: Observable<Array<UtforandeVerksamhet>> | null = null;
|
||||
|
||||
selectableRoles: Role[] = this.employeeService.allRoles;
|
||||
@@ -38,7 +38,7 @@ export class EmployeeFormComponent implements OnInit {
|
||||
this.employeeService.setCurrentEmployeeId(this.activatedRoute.snapshot.params['employeeId']);
|
||||
|
||||
this.currentEmployeeRoles$ = this.employee$.pipe(
|
||||
map(employee => employee?.roles?.map(role => mapRoleResponseToRoleObject(role)))
|
||||
map(employee => employee?.roles?.map(role => mapRoleResponseToRoleObject(role)?.type))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ import { FormControl, FormGroup } from '@angular/forms';
|
||||
import { RoleEnum } from '@msfa-enums/role.enum';
|
||||
import { Role } from '@msfa-models/role.model';
|
||||
import { Tjanst } from '@msfa-models/tjanst.model';
|
||||
import { EmployeeValidator } from '@msfa-utils/validators/employee.validator';
|
||||
|
||||
@Injectable({
|
||||
providedIn: 'root',
|
||||
@@ -47,7 +48,10 @@ export class EmployeeFormService {
|
||||
this.getFormControlName(role),
|
||||
new FormControl(this.isSelectedRole(role, selectedRoles), []),
|
||||
])
|
||||
)
|
||||
),
|
||||
{
|
||||
validators: [EmployeeValidator.HasSelectedAtLeastOneRole(roles.map(role => this.getFormControlName(role)))],
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import { DigiNgFormInputModule } from '@af/digi-ng/_form/form-input';
|
||||
import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea';
|
||||
import { HttpClientTestingModule } from '@angular/common/http/testing';
|
||||
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||
@@ -14,7 +15,7 @@ describe('EmployeeInviteComponent', () => {
|
||||
await TestBed.configureTestingModule({
|
||||
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
||||
declarations: [EmployeeInviteComponent],
|
||||
imports: [ReactiveFormsModule, DigiNgFormInputModule, HttpClientTestingModule],
|
||||
imports: [ReactiveFormsModule, DigiNgFormInputModule, DigiNgFormTextareaModule, HttpClientTestingModule],
|
||||
}).compileComponents();
|
||||
});
|
||||
|
||||
|
||||
@@ -40,7 +40,6 @@
|
||||
[employees]="employeesData.data"
|
||||
[paginationMeta]="employeesData.meta"
|
||||
[sort]="sort$ | async"
|
||||
[order]="order$ | async"
|
||||
(sorted)="handleEmployeesSort($event)"
|
||||
(paginated)="setNewPage($event)"
|
||||
(deleteEmployee)="setEmployeeToDelete($event)"
|
||||
|
||||
@@ -117,4 +117,7 @@
|
||||
<ng-template #loadingRef>
|
||||
<digi-icon-spinner class="msfa__spinner" af-title="Laddar innehåll"></digi-icon-spinner>
|
||||
</ng-template>
|
||||
<ng-template #noAvailabeHandledare>
|
||||
<!-- lägg in lämpligt innehåll -->
|
||||
</ng-template>
|
||||
</msfa-layout>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||
import { Router } from '@angular/router';
|
||||
import { Title } from '@angular/platform-browser';
|
||||
import { ActivatedRoute, Router } from '@angular/router';
|
||||
import { UnsubscribeDirective } from '@msfa-directives/unsubscribe.directive';
|
||||
import { Organization } from '@msfa-models/organization.model';
|
||||
import { UserService } from '@msfa-services/api/user.service';
|
||||
@@ -18,7 +19,12 @@ export class OrganizationPickerComponent extends UnsubscribeDirective {
|
||||
map(({ organizations }) => organizations)
|
||||
);
|
||||
|
||||
constructor(private userService: UserService, private router: Router) {
|
||||
constructor(
|
||||
private userService: UserService,
|
||||
private router: Router,
|
||||
private titleService: Title,
|
||||
private activatedRoute: ActivatedRoute
|
||||
) {
|
||||
super();
|
||||
super.unsubscribeOnDestroy(
|
||||
this.organizations$.subscribe(organizations => {
|
||||
@@ -27,6 +33,10 @@ export class OrganizationPickerComponent extends UnsubscribeDirective {
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
const pageTitle = this.activatedRoute?.snapshot?.data?.title as string;
|
||||
|
||||
this.titleService.setTitle(`Mina sidor FA${pageTitle ? ` - ${pageTitle}` : ''}`);
|
||||
}
|
||||
|
||||
loginWithOrganization(organization: Organization): void {
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
import { NavigationBreadcrumbsItem } from '@af/digi-ng/_navigation/navigation-breadcrumbs';
|
||||
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
||||
import { Title } from '@angular/platform-browser';
|
||||
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
|
||||
import { UnsubscribeDirective } from '@msfa-directives/unsubscribe.directive';
|
||||
import { User } from '@msfa-models/user.model';
|
||||
@@ -35,12 +36,17 @@ export class LayoutComponent extends UnsubscribeDirective {
|
||||
private router: Router,
|
||||
private activatedRoute: ActivatedRoute,
|
||||
private authenticationService: AuthenticationService,
|
||||
private userService: UserService
|
||||
private userService: UserService,
|
||||
private titleService: Title
|
||||
) {
|
||||
super();
|
||||
super.unsubscribeOnDestroy(
|
||||
this.router.events.pipe(filter(event => event instanceof NavigationEnd)).subscribe(() => {
|
||||
const pageTitle = this.activatedRoute?.snapshot?.data?.title as string;
|
||||
const urlTree = this.router.parseUrl(this.router.url);
|
||||
|
||||
this.titleService.setTitle(`Mina sidor FA${pageTitle ? ` - ${pageTitle}` : ''}`);
|
||||
|
||||
if (urlTree.queryParams.code) {
|
||||
void this.router.navigate([], {
|
||||
relativeTo: this.activatedRoute,
|
||||
@@ -49,7 +55,9 @@ export class LayoutComponent extends UnsubscribeDirective {
|
||||
replaceUrl: true,
|
||||
});
|
||||
}
|
||||
|
||||
urlTree.queryParams = {};
|
||||
|
||||
const paths = urlTree
|
||||
.toString()
|
||||
.split('/')
|
||||
|
||||
@@ -13,10 +13,10 @@
|
||||
>
|
||||
<digi-form-input-search
|
||||
[attr.af-variation]="FormInputSearchVariation.S"
|
||||
[attr.af-button-text]="getFilterButtonAriaLabelText()"
|
||||
[attr.af-button-text]="getFilterButtonAriaLabelText(treeNodeModel)"
|
||||
[attr.af-button-type]="ButtonType.BUTTON"
|
||||
[attr.af-label]="' '"
|
||||
[attr.af-aria-labelledby]="filterDescriptionId"
|
||||
[attr.af-aria-labelledby]="getFilterDescriptionId(treeNodeModel)"
|
||||
(afOnFocusOutside)="onFocusOutsideFilter($event)"
|
||||
(afOnChange)="onFilterTextChanged($event, treeNodeModel)"
|
||||
(afOnKeyup)="onFilterTextChanged($event, treeNodeModel)"
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
import { FormGroup, ValidatorFn } from '@angular/forms';
|
||||
|
||||
export class EmployeeValidator {
|
||||
static HasSelectedAtLeastOneRole(roleFormControlNames: Array<string>): ValidatorFn {
|
||||
return (fg: FormGroup): { [key: string]: unknown } => {
|
||||
if (!roleFormControlNames || roleFormControlNames.length === 0) {
|
||||
return { noRoleSelected: true };
|
||||
}
|
||||
|
||||
return roleFormControlNames.some(roleFormControlName => fg?.controls[roleFormControlName]?.value)
|
||||
? null
|
||||
: { noRoleSelected: true };
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -29,5 +29,9 @@
|
||||
"@msfa-shared/*": ["apps/mina-sidor-fa/src/app/shared/*"]
|
||||
}
|
||||
},
|
||||
"angularCompilerOptions": {
|
||||
"fullTemplateTypeCheck": true,
|
||||
"strictInjectionParameters": true
|
||||
},
|
||||
"exclude": ["node_modules", "tmp"]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user