feature(ui-library): Added own library of UI components to replace digi-ng. Skeleton is first component moved (TV-850)

Squashed commit of the following:

commit d76e32cd99e2e823142f4410e66c66df5e096041
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Oct 28 10:28:02 2021 +0200

    Move styles to own library

commit 85f0a5788ebdd7309499b1b623f4ac1046f45811
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Thu Oct 28 10:09:23 2021 +0200

    double quotes in html

commit eeb600cd631e3478c136795a8109e8927546b14b
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Wed Oct 27 16:42:48 2021 +0200

    UI library with copy of digi-ng's skeleton

commit 11a24c0eef173e6b2f087eca5e96063036e6394b
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Wed Oct 27 16:06:43 2021 +0200

    Update .eslintrc.json

commit 3c4b2e4823dbd8e9ca8dd332966bd10ac0fc098f
Author: Daniel Appelgren <daniel.appelgren@arbetsformedlingen.se>
Date:   Wed Oct 27 15:08:32 2021 +0200

    add nx library
This commit is contained in:
Daniel Appelgren
2021-10-28 10:34:28 +02:00
parent a0f61c796d
commit d3c61a4c56
89 changed files with 2229 additions and 1574 deletions

View File

@@ -51,7 +51,7 @@
"assets": ["apps/mina-sidor-fa/src/assets"], "assets": ["apps/mina-sidor-fa/src/assets"],
"styles": ["apps/mina-sidor-fa/src/styles/styles.scss"], "styles": ["apps/mina-sidor-fa/src/styles/styles.scss"],
"stylePreprocessorOptions": { "stylePreprocessorOptions": {
"includePaths": ["apps/mina-sidor-fa/src/styles"] "includePaths": ["libs/styles/src"]
}, },
"scripts": ["node_modules/marked/lib/marked.js"], "scripts": ["node_modules/marked/lib/marked.js"],
"allowedCommonJsDependencies": ["opentracing/lib/span", "opentracing/lib/tracer", "error-stack-parser"] "allowedCommonJsDependencies": ["opentracing/lib/span", "opentracing/lib/tracer", "error-stack-parser"]
@@ -188,6 +188,62 @@
} }
} }
} }
},
"ui": {
"projectType": "library",
"root": "libs/ui",
"sourceRoot": "libs/ui/src",
"prefix": "mina-sidor-fa-web",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/apps/mina-sidor-fa",
"index": "apps/mina-sidor-fa/src/index.html",
"main": "apps/mina-sidor-fa/src/main.ts",
"tsConfig": "apps/mina-sidor-fa/tsconfig.app.json",
"stylePreprocessorOptions": {
"includePaths": ["libs/styles/src"]
}
}
},
"lint": {
"builder": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": ["libs/ui/src/**/*.ts", "libs/ui/src/**/*.html"]
}
},
"test": {
"builder": "@nrwl/jest:jest",
"outputs": ["coverage/libs/ui"],
"options": {
"jestConfig": "libs/ui/jest.config.js",
"passWithNoTests": true
}
}
}
},
"styles": {
"projectType": "library",
"root": "libs/styles",
"sourceRoot": "libs/styles/src",
"prefix": "mina-sidor-fa-web",
"architect": {
"lint": {
"builder": "@nrwl/linter:eslint",
"options": {
"lintFilePatterns": ["libs/styles/src/**/*.ts", "libs/styles/src/**/*.html"]
}
},
"test": {
"builder": "@nrwl/jest:jest",
"outputs": ["coverage/libs/styles"],
"options": {
"jestConfig": "libs/styles/jest.config.js",
"passWithNoTests": true
}
}
}
} }
} }
} }

View File

@@ -137,7 +137,7 @@
</footer> </footer>
</section> </section>
<ng-template #loadingRef> <ng-template #loadingRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar personalkonto"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar personalkonto"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #emptyDD class="employee-card__list"> <ng-template #emptyDD class="employee-card__list">
<dd> <dd>

View File

@@ -1,5 +1,5 @@
import { DigiNgLayoutExpansionPanelModule } from '@af/digi-ng/_layout/layout-expansion-panel'; import { DigiNgLayoutExpansionPanelModule } from '@af/digi-ng/_layout/layout-expansion-panel';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -17,7 +17,7 @@ import { EmployeeCardComponent } from './employee-card.component';
CommonModule, CommonModule,
RouterModule.forChild([{ path: '', component: EmployeeCardComponent }]), RouterModule.forChild([{ path: '', component: EmployeeCardComponent }]),
LayoutModule, LayoutModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgLayoutExpansionPanelModule, DigiNgLayoutExpansionPanelModule,
LocalDatePipeModule, LocalDatePipeModule,
HideTextModule, HideTextModule,

View File

@@ -51,7 +51,7 @@
</div> </div>
</ng-container> </ng-container>
<ng-template #isLoadingEmployeeTemplate> <ng-template #isLoadingEmployeeTemplate>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar personalkonto..."></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar personalkonto..."></ui-skeleton>
</ng-template> </ng-template>
</section> </section>
</digi-typography> </digi-typography>

View File

@@ -19,7 +19,7 @@ import { LocalDatePipeModule } from '@msfa-shared/pipes/local-date/local-date.mo
import { EmployeeDeleteModule } from '../../components/employee-delete/employee-delete.module'; import { EmployeeDeleteModule } from '../../components/employee-delete/employee-delete.module';
import { EditEmployeeFormComponent } from './edit-employee-form/edit-employee-form.component'; import { EditEmployeeFormComponent } from './edit-employee-form/edit-employee-form.component';
import { EmployeeFormComponent } from './employee-form.component'; import { EmployeeFormComponent } from './employee-form.component';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { ErrorListModule } from '@msfa-shared/components/error-list/error-list.module'; import { ErrorListModule } from '@msfa-shared/components/error-list/error-list.module';
@NgModule({ @NgModule({
@@ -38,7 +38,7 @@ import { ErrorListModule } from '@msfa-shared/components/error-list/error-list.m
DigiNgFormCheckboxModule, DigiNgFormCheckboxModule,
DigiNgButtonModule, DigiNgButtonModule,
DigiNgLoaderSpinnerModule, DigiNgLoaderSpinnerModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
LayoutModule, LayoutModule,
EmployeeDeleteModule, EmployeeDeleteModule,
DigiNgDialogModule, DigiNgDialogModule,

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { HttpClientTestingModule } from '@angular/common/http/testing'; import { HttpClientTestingModule } from '@angular/common/http/testing';
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { ComponentFixture, TestBed } from '@angular/core/testing';
@@ -17,7 +17,7 @@ describe('EmployeesListComponent', () => {
await TestBed.configureTestingModule({ await TestBed.configureTestingModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA], schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [EmployeesListComponent, LayoutComponent], declarations: [EmployeesListComponent, LayoutComponent],
imports: [RouterTestingModule, DigiNgSkeletonBaseModule, HttpClientTestingModule], imports: [RouterTestingModule, UiSkeletonModule, HttpClientTestingModule],
}).compileComponents(); }).compileComponents();
fixture = TestBed.createComponent(EmployeesListComponent); fixture = TestBed.createComponent(EmployeesListComponent);

View File

@@ -48,7 +48,7 @@
</digi-typography> </digi-typography>
<ng-template #loadingRef> <ng-template #loadingRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar personal"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar personal"></ui-skeleton>
</ng-template> </ng-template>
</section> </section>
</msfa-layout> </msfa-layout>

View File

@@ -1,6 +1,6 @@
import { DigiNgLinkButtonModule } from '@af/digi-ng/_link/link-button'; import { DigiNgLinkButtonModule } from '@af/digi-ng/_link/link-button';
import { DigiNgLinkInternalModule } from '@af/digi-ng/_link/link-internal'; import { DigiNgLinkInternalModule } from '@af/digi-ng/_link/link-internal';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
@@ -18,7 +18,7 @@ import { EmployeesComponent } from './employees.component';
RouterModule.forChild([{ path: '', component: EmployeesComponent }]), RouterModule.forChild([{ path: '', component: EmployeesComponent }]),
LayoutModule, LayoutModule,
DigiNgLinkInternalModule, DigiNgLinkInternalModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
EmployeesListModule, EmployeesListModule,
EmployeeDeleteModule, EmployeeDeleteModule,
DigiNgLinkButtonModule, DigiNgLinkButtonModule,

View File

@@ -131,7 +131,7 @@
</ng-template> </ng-template>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar nya deltagare"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar nya deltagare"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #noAvailabeHandledare> <ng-template #noAvailabeHandledare>

View File

@@ -1,5 +1,5 @@
import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar'; import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -21,7 +21,7 @@ import { AvropListModule } from './components/avrop-list/avrop-list.module';
AvropListModule, AvropListModule,
AvropFiltersModule, AvropFiltersModule,
DigiNgProgressProgressbarModule, DigiNgProgressProgressbarModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
LoaderModule, LoaderModule,
HandledarePickerFormModule, HandledarePickerFormModule,
UnauthorizedAlertModule, UnauthorizedAlertModule,

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { LoaderModule } from '@msfa-shared/components/loader/loader.module'; import { LoaderModule } from '@msfa-shared/components/loader/loader.module';
@@ -8,7 +8,7 @@ import { AvropListComponent } from './avrop-list.component';
@NgModule({ @NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA], schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [AvropListComponent], declarations: [AvropListComponent],
imports: [CommonModule, AvropRowModule, LoaderModule, DigiNgSkeletonBaseModule], imports: [CommonModule, AvropRowModule, LoaderModule, UiSkeletonModule],
exports: [AvropListComponent], exports: [AvropListComponent],
}) })
export class AvropListModule {} export class AvropListModule {}

View File

@@ -1,4 +1,4 @@
@import 'apps/mina-sidor-fa/src/styles/mixins/list'; @import 'mixins/list';
.deltagare-tab-experiences { .deltagare-tab-experiences {
display: contents; display: contents;

View File

@@ -1,4 +1,4 @@
@import 'apps/mina-sidor-fa/src/styles/variables/gutters'; @import 'variables/gutters';
.reports-list { .reports-list {
&__pagination { &__pagination {

View File

@@ -1,4 +1,4 @@
@import 'apps/mina-sidor-fa/src/styles/variables/z-index'; @import 'variables/z-index';
.deltagare-tab-sensitive-information { .deltagare-tab-sensitive-information {
display: contents; display: contents;

View File

@@ -83,7 +83,7 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar deltagarinformation"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar deltagarinformation"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -1,4 +1,4 @@
@import 'apps/mina-sidor-fa/src/styles/variables/gutters'; @import 'variables/gutters';
.deltagare-card { .deltagare-card {
&__tab-contents { &__tab-contents {

View File

@@ -2,7 +2,7 @@ import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgLayoutExpansionPanelModule } from '@af/digi-ng/_layout/layout-expansion-panel'; import { DigiNgLayoutExpansionPanelModule } from '@af/digi-ng/_layout/layout-expansion-panel';
import { DigiNgLinkButtonModule } from '@af/digi-ng/_link/link-button'; import { DigiNgLinkButtonModule } from '@af/digi-ng/_link/link-button';
import { DigiNgPopoverModule } from '@af/digi-ng/_popover/popover'; import { DigiNgPopoverModule } from '@af/digi-ng/_popover/popover';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -43,7 +43,7 @@ import { DeltagareCardService } from './deltagare-card.service';
DigiNgPopoverModule, DigiNgPopoverModule,
DigiNgLinkButtonModule, DigiNgLinkButtonModule,
DigiNgFormSelectModule, DigiNgFormSelectModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
], ],
providers: [DeltagareCardService], providers: [DeltagareCardService],
exports: [DeltagareCardComponent], exports: [DeltagareCardComponent],

View File

@@ -133,10 +133,10 @@
</msfa-report-layout> </msfa-report-layout>
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base <ui-skeleton
[afCount]="3" [uiCount]="3"
afText="Laddar data för att kunna skapa Avvikelserapport (avvikelse)" uiText="Laddar data för att kunna skapa Avvikelserapport (avvikelse)"
></digi-ng-skeleton-base> ></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>
<msfa-loader type="padded"></msfa-loader> <msfa-loader type="padded"></msfa-loader>

View File

@@ -5,7 +5,7 @@ import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobu
import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select'; import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea'; import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea';
import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar'; import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -34,7 +34,7 @@ import { AvvikelseReportFormService } from './avvikelse-report-form.service';
ReportLayoutModule, ReportLayoutModule,
ConfirmDialogModule, ConfirmDialogModule,
BackLinkModule, BackLinkModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgFormSelectModule, DigiNgFormSelectModule,
LoaderModule, LoaderModule,
ReportDescriptionListModule, ReportDescriptionListModule,

View File

@@ -316,10 +316,10 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base <ui-skeleton
[afCount]="3" [uiCount]="3"
afText="Laddar data för att kunna skapa Avvikelserapport (frånvaro)" uiText="Laddar data för att kunna skapa Avvikelserapport (frånvaro)"
></digi-ng-skeleton-base> ></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -5,7 +5,7 @@ import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobu
import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select'; import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea'; import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea';
import { DigiNgFormValidationMessageModule } from '@af/digi-ng/_form/form-validation-message'; import { DigiNgFormValidationMessageModule } from '@af/digi-ng/_form/form-validation-message';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -33,7 +33,7 @@ import { FranvaroReportFormService } from './franvaro-report-form.service';
DigiNgFormSelectModule, DigiNgFormSelectModule,
DigiNgFormDatepickerModule, DigiNgFormDatepickerModule,
DigiNgFormRadiobuttonGroupModule, DigiNgFormRadiobuttonGroupModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgFormTextareaModule, DigiNgFormTextareaModule,
DigiNgFormInputModule, DigiNgFormInputModule,
DigiNgFormValidationMessageModule, DigiNgFormValidationMessageModule,

View File

@@ -136,10 +136,10 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base <ui-skeleton
[afCount]="3" [uiCount]="3"
afText="Laddar data för att kunna skapa Gemensam planering" uiText="Laddar data för att kunna skapa Gemensam planering"
></digi-ng-skeleton-base> ></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -2,7 +2,7 @@ import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog';
import { DigiNgFormCheckboxModule } from '@af/digi-ng/_form/form-checkbox'; import { DigiNgFormCheckboxModule } from '@af/digi-ng/_form/form-checkbox';
import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group'; import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group';
import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar'; import { DigiNgProgressProgressbarModule } from '@af/digi-ng/_progress/progressbar';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -29,7 +29,7 @@ import { GemensamPlaneringFormService } from './gemensam-planering-form.service'
BackLinkModule, BackLinkModule,
LoaderModule, LoaderModule,
ReportDescriptionListModule, ReportDescriptionListModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgFormCheckboxModule, DigiNgFormCheckboxModule,
DigiNgDialogModule, DigiNgDialogModule,
], ],

View File

@@ -152,10 +152,10 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base <ui-skeleton
[afCount]="3" [uiCount]="3"
afText="Laddar data för att kunna skapa Informativ rapport" uiText="Laddar data för att kunna skapa Informativ rapport"
></digi-ng-skeleton-base> ></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -1,7 +1,7 @@
import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog'; import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog';
import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select'; import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea'; import { DigiNgFormTextareaModule } from '@af/digi-ng/_form/form-textarea';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -26,7 +26,7 @@ import { InformativRapportFormService } from './informativ-rapport-form.service'
ConfirmDialogModule, ConfirmDialogModule,
ReportDescriptionListModule, ReportDescriptionListModule,
BackLinkModule, BackLinkModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgDialogModule, DigiNgDialogModule,
DigiNgFormSelectModule, DigiNgFormSelectModule,
DigiNgFormTextareaModule, DigiNgFormTextareaModule,

View File

@@ -280,10 +280,10 @@
</ng-template> </ng-template>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base <ui-skeleton
[afCount]="3" [uiCount]="3"
afText="Laddar data för att kunna skapa Periodisk redovisning" uiText="Laddar data för att kunna skapa Periodisk redovisning"
></digi-ng-skeleton-base> ></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -2,7 +2,7 @@ import { DigiNgDialogModule } from '@af/digi-ng/_dialog/dialog';
import { DigiNgFormCheckboxModule } from '@af/digi-ng/_form/form-checkbox'; import { DigiNgFormCheckboxModule } from '@af/digi-ng/_form/form-checkbox';
import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group'; import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobutton-group';
import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select'; import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -27,7 +27,7 @@ import { PeriodiskRedovisningFormService } from './periodisk-redovisning-form.se
ReportDescriptionListModule, ReportDescriptionListModule,
BackLinkModule, BackLinkModule,
LoaderModule, LoaderModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgDialogModule, DigiNgDialogModule,
DigiNgFormSelectModule, DigiNgFormSelectModule,
DigiNgFormRadiobuttonGroupModule, DigiNgFormRadiobuttonGroupModule,

View File

@@ -152,8 +152,8 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base <ui-skeleton
[afCount]="3" [uiCount]="3"
afText="Laddar data för att kunna skapa Signal om arbete eller studier" uiText="Laddar data för att kunna skapa Signal om arbete eller studier"
></digi-ng-skeleton-base> ></ui-skeleton>
</ng-template> </ng-template>

View File

@@ -4,7 +4,7 @@ import { DigiNgFormRadiobuttonGroupModule } from '@af/digi-ng/_form/form-radiobu
import { DigiNgFormRangeModule } from '@af/digi-ng/_form/form-range'; import { DigiNgFormRangeModule } from '@af/digi-ng/_form/form-range';
import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select'; import { DigiNgFormSelectModule } from '@af/digi-ng/_form/form-select';
import { DigiNgFormValidationMessageModule } from '@af/digi-ng/_form/form-validation-message'; import { DigiNgFormValidationMessageModule } from '@af/digi-ng/_form/form-validation-message';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { ReactiveFormsModule } from '@angular/forms'; import { ReactiveFormsModule } from '@angular/forms';
@@ -29,7 +29,7 @@ import { SignalFormService } from './signal-form.service';
BackLinkModule, BackLinkModule,
DigiNgFormRadiobuttonGroupModule, DigiNgFormRadiobuttonGroupModule,
DigiNgFormDatepickerModule, DigiNgFormDatepickerModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
DigiNgDialogModule, DigiNgDialogModule,
DigiNgFormRangeModule, DigiNgFormRangeModule,
DigiNgFormValidationMessageModule, DigiNgFormValidationMessageModule,

View File

@@ -23,7 +23,7 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar Avvikelserapport (avvikelse)"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar Avvikelserapport (avvikelse)"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -19,7 +19,7 @@ import { AvvikelseReportViewService } from './avvikelse-report-view.service';
ReportLayoutModule, ReportLayoutModule,
BackLinkModule, BackLinkModule,
LoaderModule, LoaderModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
], ],
providers: [AvvikelseReportViewService], providers: [AvvikelseReportViewService],
exports: [AvvikelseReportViewComponent], exports: [AvvikelseReportViewComponent],

View File

@@ -39,7 +39,7 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar Avvikelserapport (frånvaro)"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar Avvikelserapport (frånvaro)"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -19,7 +19,7 @@ import { FranvaroReportViewService } from './franvaro-report-view.service';
ReportLayoutModule, ReportLayoutModule,
BackLinkModule, BackLinkModule,
LoaderModule, LoaderModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
], ],
providers: [FranvaroReportViewService], providers: [FranvaroReportViewService],
exports: [FranvaroReportViewComponent], exports: [FranvaroReportViewComponent],

View File

@@ -29,7 +29,7 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar Gemensam planering"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar Gemensam planering"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -19,7 +19,7 @@ import { GemensamPlaneringViewService } from './gemensam-planering-view.service'
ReportLayoutModule, ReportLayoutModule,
BackLinkModule, BackLinkModule,
LoaderModule, LoaderModule,
DigiNgSkeletonBaseModule, UiSkeletonModule
], ],
providers: [GemensamPlaneringViewService], providers: [GemensamPlaneringViewService],
exports: [GemensamPlaneringViewComponent], exports: [GemensamPlaneringViewComponent],

View File

@@ -34,7 +34,7 @@
</msfa-layout> </msfa-layout>
<ng-template #skeletonRef> <ng-template #skeletonRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar Gemensam planering"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar Gemensam planering"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #loadingRef> <ng-template #loadingRef>

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -21,7 +21,7 @@ import { PeriodiskRedovisningViewService } from './periodisk-redovisning-view.se
BackLinkModule, BackLinkModule,
LoaderModule, LoaderModule,
HideTextModule, HideTextModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
], ],
providers: [PeriodiskRedovisningViewService], providers: [PeriodiskRedovisningViewService],
exports: [PeriodiskRedovisningViewComponent], exports: [PeriodiskRedovisningViewComponent],

View File

@@ -1,5 +1,5 @@
@import 'apps/mina-sidor-fa/src/styles/variables/gutters'; @import 'variables/gutters';
@import 'apps/mina-sidor-fa/src/styles/variables/z-index'; @import 'variables/z-index';
.deltagare-list { .deltagare-list {
position: relative; position: relative;

View File

@@ -32,7 +32,7 @@
</msfa-layout> </msfa-layout>
<ng-template #loadingRef> <ng-template #loadingRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar deltagarlista"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar deltagarlista"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #noDeltagare> <ng-template #noDeltagare>

View File

@@ -1,4 +1,4 @@
@import 'apps/mina-sidor-fa/src/styles/variables/gutters'; @import 'variables/gutters';
.deltagare { .deltagare {
&__header { &__header {

View File

@@ -4,7 +4,7 @@ import { RouterModule } from '@angular/router';
import { DeltagareListComponent } from './deltagare-list.component'; import { DeltagareListComponent } from './deltagare-list.component';
import { LayoutModule } from '@msfa-shared/components/layout/layout.module'; import { LayoutModule } from '@msfa-shared/components/layout/layout.module';
import { DeltagareListTableModule } from './components/deltagare-list-table/deltagare-list-table.module'; import { DeltagareListTableModule } from './components/deltagare-list-table/deltagare-list-table.module';
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { UnauthorizedAlertModule } from '@msfa-shared/components/unauthorized-alert/unauthorized-alert.module'; import { UnauthorizedAlertModule } from '@msfa-shared/components/unauthorized-alert/unauthorized-alert.module';
@NgModule({ @NgModule({
@@ -20,7 +20,7 @@ import { UnauthorizedAlertModule } from '@msfa-shared/components/unauthorized-al
]), ]),
LayoutModule, LayoutModule,
DeltagareListTableModule, DeltagareListTableModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
UnauthorizedAlertModule, UnauthorizedAlertModule,
], ],
}) })

View File

@@ -90,7 +90,7 @@
</msfa-layout> </msfa-layout>
<ng-template #loadingRef> <ng-template #loadingRef>
<digi-ng-skeleton-base [afCount]="3" afText="Laddar kontoinformation"></digi-ng-skeleton-base> <ui-skeleton [uiCount]="3" uiText="Laddar kontoinformation"></ui-skeleton>
</ng-template> </ng-template>
<ng-template #emptyText> <ng-template #emptyText>

View File

@@ -1,4 +1,4 @@
import { DigiNgSkeletonBaseModule } from '@af/digi-ng/_skeleton/skeleton-base'; import { UiSkeletonModule } from '@ui/skeleton/skeleton.module';
import { CommonModule } from '@angular/common'; import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { RouterModule } from '@angular/router'; import { RouterModule } from '@angular/router';
@@ -17,7 +17,7 @@ import { MyAccountComponent } from './my-account.component';
RouterModule.forChild([{ path: '', component: MyAccountComponent }]), RouterModule.forChild([{ path: '', component: MyAccountComponent }]),
LayoutModule, LayoutModule,
IconModule, IconModule,
DigiNgSkeletonBaseModule, UiSkeletonModule,
OrganizationPickerFormModule, OrganizationPickerFormModule,
RolesDialogModule, RolesDialogModule,
HideTextModule, HideTextModule,

View File

@@ -1,3 +1,3 @@
module.exports = { module.exports = {
projects: ['<rootDir>/apps/mina-sidor-fa'], projects: ['<rootDir>/apps/mina-sidor-fa', '<rootDir>/libs/ui', '<rootDir>/libs/styles'],
}; };

View File

@@ -0,0 +1,22 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"parserOptions": { "project": ["libs/styles/tsconfig.*?.json"] },
"rules": {
"@angular-eslint/directive-selector": [
"error",
{ "type": "attribute", "prefix": "mina-sidor-fa-web", "style": "camelCase" }
],
"@angular-eslint/component-selector": [
"error",
{ "type": "element", "prefix": "mina-sidor-fa-web", "style": "kebab-case" }
]
}
},
{ "files": ["*.html"], "extends": ["plugin:@nrwl/nx/angular-template"], "rules": {} }
]
}

7
libs/styles/README.md Normal file
View File

@@ -0,0 +1,7 @@
# styles
This library was generated with [Nx](https://nx.dev).
## Running unit tests
Run `nx test styles` to execute the unit tests.

View File

@@ -0,0 +1,23 @@
module.exports = {
displayName: 'styles',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
globals: {
'ts-jest': {
tsConfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
astTransformers: {
before: [
'jest-preset-angular/build/InlineFilesTransformer',
'jest-preset-angular/build/StripStylesTransformer',
],
},
},
},
coverageDirectory: '../../coverage/libs/styles',
snapshotSerializers: [
'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js',
'jest-preset-angular/build/AngularSnapshotSerializer.js',
'jest-preset-angular/build/HTMLCommentSerializer.js',
],
};

View File

@@ -1,4 +1,4 @@
@import 'variables/z-index'; @import '../variables/z-index';
@mixin msfa__backdrop($zIndex: $msfa__z-index-default, $fullScreen: true, $opaqueBackground: false) { @mixin msfa__backdrop($zIndex: $msfa__z-index-default, $fullScreen: true, $opaqueBackground: false) {
top: 0; top: 0;

View File

@@ -1,5 +1,5 @@
@import 'variables/colors'; @import '../variables/colors';
@import 'variables/gutters'; @import '../variables/gutters';
@mixin msfa__fieldset($legendAsHeading: true) { @mixin msfa__fieldset($legendAsHeading: true) {

107
libs/styles/src/styles.scss Normal file
View File

@@ -0,0 +1,107 @@
@import '@digi/core/dist/digi/digi.css';
@import '~@angular/cdk/overlay-prebuilt.css';
@import 'mixins/a11y';
@import 'mixins/backdrop';
@import 'mixins/icon';
@import 'mixins/link';
@import 'variables/z-index';
* {
font-family: var(--digi--typography--font-family);
box-sizing: border-box;
::before,
::after {
box-sizing: border-box;
}
}
body {
margin: 0;
font-weight: var(--digi--typography--font-weight);
}
button {
font-family: var(--digi--typography--font-family);
cursor: pointer;
}
strong {
font-weight: var(--digi--typography--font-weight--semibold);
}
address {
font-style: normal;
}
dl {
dt {
font-weight: var(--digi--typography--font-weight--semibold);
}
dd {
margin-left: 0;
margin-bottom: 0.5rem;
}
}
// Make all digi icons display inline-flex to make them get the correct height.
[class^='sc-digi-icon'],
.digi-button__icon {
display: inline-flex;
}
// Fix issue with too long modal-content. This makes it scrollable.
.digi-ng-dialog-base__content {
max-height: 90vh;
overflow-x: auto;
}
.digi-ng-dialog {
position: fixed;
z-index: $msfa__z-index-backdrop;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
// Removing margins from digi fieldset component.
.digi-form-fieldset {
margin: 0;
&__legend {
margin-bottom: var(--digi--layout--gutter--s);
padding: 0;
}
}
.msfa {
&__a11y-sr-only {
@include msfa__a11y-sr-only;
}
&__small-text {
font-size: 0.875em !important;
}
&__backdrop {
@include msfa__backdrop($msfa__z-index-default, false);
&--full-screen {
@include msfa__backdrop($msfa__z-index-backdrop);
}
}
&__digi-icon {
display: inline-flex;
}
&__link {
@include msfa__link(false, 'light');
&--ignore-visited:visited {
@include msfa__link(true, 'light');
}
}
}

View File

@@ -1,5 +1,5 @@
@import '~@digi/styles/src/layout/variables/layout__variables'; @import '~@digi/styles/src/layout/variables/layout__variables';
@import 'functions/rem'; @import '../functions/rem';
// AF DIGI Variables // AF DIGI Variables
$digi--layout--gutter--xs: var(--digi--layout--gutter--xs); $digi--layout--gutter--xs: var(--digi--layout--gutter--xs);

13
libs/styles/tsconfig.json Normal file
View File

@@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}

View File

@@ -0,0 +1,19 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"target": "es2015",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [],
"lib": ["dom", "es2018"]
},
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"enableResourceInlining": true
},
"exclude": ["src/test-setup.ts", "**/*.spec.ts"],
"include": ["**/*.ts"]
}

View File

@@ -0,0 +1,10 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"files": ["src/test-setup.ts"],
"include": ["**/*.spec.ts", "**/*.d.ts"]
}

21
libs/ui/.eslintrc.json Normal file
View File

@@ -0,0 +1,21 @@
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": ["plugin:@nrwl/nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{ "type": "attribute", "prefix": "mina-sidor-fa-web", "style": "camelCase" }
],
"@angular-eslint/component-selector": [
"error",
{ "type": "element", "prefix": "mina-sidor-fa-web", "style": "kebab-case" }
]
}
},
{ "files": ["*.html"], "extends": ["plugin:@nrwl/nx/angular-template"], "rules": {} }
]
}

7
libs/ui/README.md Normal file
View File

@@ -0,0 +1,7 @@
# ui
This library was generated with [Nx](https://nx.dev).
## Running unit tests
Run `nx test ui` to execute the unit tests.

23
libs/ui/jest.config.js Normal file
View File

@@ -0,0 +1,23 @@
module.exports = {
displayName: 'ui',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
globals: {
'ts-jest': {
tsConfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
astTransformers: {
before: [
'jest-preset-angular/build/InlineFilesTransformer',
'jest-preset-angular/build/StripStylesTransformer',
],
},
},
},
coverageDirectory: '../../coverage/libs/ui',
snapshotSerializers: [
'jest-preset-angular/build/AngularNoNgAttributesSnapshotSerializer.js',
'jest-preset-angular/build/AngularSnapshotSerializer.js',
'jest-preset-angular/build/HTMLCommentSerializer.js',
],
};

View File

@@ -0,0 +1,6 @@
export enum UiLoaderType {
FULL_SCREEN = 'fullscreen',
FULL_BLANK_SCREEN = 'full-blank-screen',
ABSOLUTE = 'absolute',
PADDED = 'padded',
}

View File

@@ -0,0 +1,4 @@
<div [ngClass]="loaderClass">
asdf
<digi-icon-spinner [ngClass]="spinnerClass"></digi-icon-spinner>
</div>

View File

@@ -0,0 +1,40 @@
@import 'mixins/backdrop';
@import 'variables/gutters';
@import 'variables/z-index';
@keyframes spinning {
to {
transform: rotate(360deg);
}
}
.ui-loader {
display: flex;
align-items: center;
justify-content: center;
&--padded {
padding: $digi--layout--gutter--l;
}
&--absolute {
@include msfa__backdrop($msfa__z-index-backdrop, false);
}
&--full-screen {
@include msfa__backdrop($msfa__z-index-backdrop);
}
&--full-blank-screen {
@include msfa__backdrop($msfa__z-index-backdrop, true, true);
}
&__spinner {
display: inline-flex;
animation: spinning 1s linear infinite;
&--s {
width: 2.5rem;
}
}
}

View File

@@ -0,0 +1,26 @@
/* tslint:disable:no-unused-variable */
import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { LoaderComponent } from './loader.component';
describe('LoaderComponent', () => {
let component: LoaderComponent;
let fixture: ComponentFixture<LoaderComponent>;
beforeEach(async () => {
await TestBed.configureTestingModule({
declarations: [LoaderComponent],
schemas: [CUSTOM_ELEMENTS_SCHEMA],
}).compileComponents();
});
beforeEach(() => {
fixture = TestBed.createComponent(LoaderComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it('should create', () => {
expect(component).toBeTruthy();
});
});

View File

@@ -0,0 +1,15 @@
import { LoaderComponent } from './loader.component';
import { UiLoaderModule } from './loader.module';
export default { title: 'Loader', component: LoaderComponent };
const componentModule = {
moduleMetadata: {
imports: [UiLoaderModule],
},
};
export const standard = () => ({
...componentModule,
template: '<ui-loader></ui-loader>',
});

View File

@@ -0,0 +1,25 @@
import { ChangeDetectionStrategy, Component, Input } from '@angular/core';
import { UiLoaderType } from './loader-type.enum';
@Component({
selector: 'ui-loader',
templateUrl: './loader.component.html',
styleUrls: ['./loader.component.scss'],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class LoaderComponent {
private readonly _defaultClass = 'ui-loader';
@Input() uiType: UiLoaderType = UiLoaderType.PADDED;
@Input() uiSize: 's' | 'm' = 'm';
get loaderClass(): string {
if (this.uiType) {
return `${this._defaultClass} ${this._defaultClass}--${this.uiType as string}`;
}
return this._defaultClass;
}
get spinnerClass(): string {
return `${this._defaultClass}__spinner ${this._defaultClass}__spinner--${this.uiSize}`;
}
}

View File

@@ -0,0 +1,11 @@
import { CommonModule } from '@angular/common';
import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core';
import { LoaderComponent } from './loader.component';
@NgModule({
schemas: [CUSTOM_ELEMENTS_SCHEMA],
declarations: [LoaderComponent],
imports: [CommonModule],
exports: [LoaderComponent],
})
export class UiLoaderModule {}

View File

@@ -0,0 +1,11 @@
<div class="ui-skeleton" data-digi-ng-component>
<div *ngIf="uiText" class="ui-skeleton__top"></div>
<p *ngIf="uiText" class="ui-skeleton__text">{{ uiText }}</p>
<div class="ui-skeleton__header"></div>
<div *ngFor="let stub of stubs" class="ui-skeleton__lines">
<div class="ui-skeleton__line"></div>
<div class="ui-skeleton__line"></div>
<div class="ui-skeleton__line"></div>
<div class="ui-skeleton__line ui-skeleton__line--last"></div>
</div>
</div>

View File

@@ -0,0 +1,91 @@
@import 'variables/gutters';
@import 'variables/breakpoints';
$typography__margin--text: u(6);
$animation__duration--sweep: 4s;
$ui__color--gray-10: #f5f5f5;
$ui__color--gray-20: #efefef;
$ui__color--gray-30: #d1d1d1;
$ui__color--skeleton-text: linear-gradient(
to left,
$ui__color--gray-20,
$ui__color--gray-20 40%,
$ui__color--gray-10 50%,
$ui__color--gray-20 60%,
$ui__color--gray-20
);
$ui__color--skeleton-head: linear-gradient(
to left,
$ui__color--gray-30,
$ui__color--gray-30 40%,
$ui__color--gray-20 50%,
$ui__color--gray-30 60%,
$ui__color--gray-30
);
$skeleton__top--height: 2.5rem;
$skeleton__top--height-desktop: 4.5rem;
$skeleton__header--height: 1rem + 0.46875rem;
$skeleton__header--height-desktop: 2rem + 0.3125rem;
:host {
.ui-skeleton__top {
animation: ui-skeleton__animation $animation__duration--sweep infinite;
height: $skeleton__top--height;
background: $ui__color--skeleton-text;
background-size: 400%;
width: 25%;
margin-bottom: var(--digi--layout--gutter--m);
@media (min-width: $digi--layout--breakpoint--l) {
height: $skeleton__top--height-desktop;
width: 20%;
margin-bottom: $digi--layout--gutter--l;
}
}
.ui-skeleton__header {
animation: ui-skeleton__animation $animation__duration--sweep infinite;
background: $ui__color--skeleton-head;
background-size: 400%;
width: 33%;
height: $skeleton__header--height;
margin-bottom: var(----digi--layout--gutter--s);
@media (min-width: $digi--layout--breakpoint--l) {
height: $skeleton__header--height-desktop;
margin-bottom: $digi--layout--gutter--l;
width: 90%;
}
}
.ui-skeleton__line {
animation: ui-skeleton__animation $animation__duration--sweep 0.5s infinite;
background: $ui__color--skeleton-text;
background-size: 400%;
margin-bottom: var(--digi--layout--gutter--xs);
height: var(--digi--typography--font-size);
}
.ui-skeleton__line--last {
width: 75%;
margin-bottom: var(--digi--layout--gutter);
}
.ui-skeleton__text {
font-weight: var(--digi--typography--font-weight--semibold);
margin-bottom: $typography__margin--text / 2;
}
}
@keyframes ui-skeleton__animation {
0% {
background-position-x: 100%;
}
100% {
background-position-x: 0%;
}
}

View File

@@ -0,0 +1,40 @@
import { SkeletonComponent } from './skeleton.component';
import { UiSkeletonModule } from './skeleton.module';
export default { title: 'Skeleton', component: SkeletonComponent };
const componentModule = {
moduleMetadata: {
imports: [UiSkeletonModule],
},
};
export const standard = () => ({
...componentModule,
template: '<ui-skeleton></ui-skeleton>',
});
export const limitedMultiLine = () => ({
...componentModule,
template: '<ui-skeleton [uiCount]="2"></ui-skeleton>',
});
export const extensiveMultiLine = () => ({
...componentModule,
template: '<ui-skeleton [uiCount]="5"></ui-skeleton>',
});
export const paragraphless = () => ({
...componentModule,
template: '<ui-skeleton [uiCount]="0"></ui-skeleton>',
});
export const customText = () => ({
...componentModule,
template: '<ui-skeleton uiText="I am a custom text..."></ui-skeleton>',
});
export const noText = () => ({
...componentModule,
template: '<ui-skeleton uiText=""></ui-skeleton>',
});

View File

@@ -0,0 +1,25 @@
import { Component, Input } from '@angular/core';
/**
* Placeholder for content being loaded
*
* ##Usage
* ``import {SkeletonModule} from '@ui/skeleton';``
*/
@Component({
selector: 'ui-skeleton',
templateUrl: './skeleton.component.html',
styleUrls: ['./skeleton.component.scss'],
})
export class SkeletonComponent {
/**
* The amount of skeleton sections
*/
@Input() uiCount: number | undefined;
@Input() uiText = 'Laddar sidan';
get stubs(): string[] {
return Array(this.uiCount);
}
}

View File

@@ -0,0 +1,10 @@
import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { SkeletonComponent } from './skeleton.component';
@NgModule({
imports: [CommonModule],
declarations: [SkeletonComponent],
exports: [SkeletonComponent],
})
export class UiSkeletonModule {}

13
libs/ui/tsconfig.json Normal file
View File

@@ -0,0 +1,13 @@
{
"extends": "../../tsconfig.base.json",
"files": [],
"include": [],
"references": [
{
"path": "./tsconfig.lib.json"
},
{
"path": "./tsconfig.spec.json"
}
]
}

19
libs/ui/tsconfig.lib.json Normal file
View File

@@ -0,0 +1,19 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"target": "es2015",
"declaration": true,
"declarationMap": true,
"inlineSources": true,
"types": [],
"lib": ["dom", "es2018"]
},
"angularCompilerOptions": {
"skipTemplateCodegen": true,
"strictMetadataEmit": true,
"enableResourceInlining": true
},
"exclude": ["src/test-setup.ts", "**/*.spec.ts"],
"include": ["**/*.ts"]
}

View File

@@ -0,0 +1,10 @@
{
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["jest", "node"]
},
"files": ["src/test-setup.ts"],
"include": ["**/*.spec.ts", "**/*.d.ts"]
}

View File

@@ -17,6 +17,8 @@
}, },
"projects": { "projects": {
"mina-sidor-fa": { "tags": [] }, "mina-sidor-fa": { "tags": [] },
"mina-sidor-fa-e2e": { "tags": [], "implicitDependencies": ["mina-sidor-fa"] } "mina-sidor-fa-e2e": { "tags": [], "implicitDependencies": ["mina-sidor-fa"] },
"ui": { "tags": [] },
"styles": { "tags": [] }
} }
} }

2954
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -70,6 +70,7 @@
}, },
"devDependencies": { "devDependencies": {
"@angular-devkit/build-angular": "~0.1102.0", "@angular-devkit/build-angular": "~0.1102.0",
"@angular-devkit/schematics": "^12.2.11",
"@angular-eslint/eslint-plugin": "~1.0.0", "@angular-eslint/eslint-plugin": "~1.0.0",
"@angular-eslint/eslint-plugin-template": "~1.0.0", "@angular-eslint/eslint-plugin-template": "~1.0.0",
"@angular-eslint/template-parser": "~1.0.0", "@angular-eslint/template-parser": "~1.0.0",

View File

@@ -15,18 +15,23 @@
"skipDefaultLibCheck": true, "skipDefaultLibCheck": true,
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@app-api-models/*": ["libs/data/models/*"],
"@mina-sidor-fa-web/models": ["libs/models/src/index.ts"],
"@mina-sidor-fa-web/ui": ["libs/ui/src/index.ts"],
"@msfa-assets/*": ["apps/mina-sidor-fa/src/assets/*"], "@msfa-assets/*": ["apps/mina-sidor-fa/src/assets/*"],
"@msfa-models/*": ["apps/mina-sidor-fa/src/app/shared/models/*"],
"@msfa-guards/*": ["apps/mina-sidor-fa/src/app/shared/guards/*"],
"@msfa-constants/*": ["apps/mina-sidor-fa/src/app/shared/constants/*"], "@msfa-constants/*": ["apps/mina-sidor-fa/src/app/shared/constants/*"],
"@msfa-directives/*": ["apps/mina-sidor-fa/src/app/shared/directives/*"], "@msfa-directives/*": ["apps/mina-sidor-fa/src/app/shared/directives/*"],
"@msfa-enums/*": ["apps/mina-sidor-fa/src/app/shared/enums/*"], "@msfa-enums/*": ["apps/mina-sidor-fa/src/app/shared/enums/*"],
"@msfa-services/*": ["apps/mina-sidor-fa/src/app/shared/services/*"], "@msfa-environment": ["apps/mina-sidor-fa/src/environments/environment"],
"@msfa-guards/*": ["apps/mina-sidor-fa/src/app/shared/guards/*"],
"@msfa-interceptors/*": ["apps/mina-sidor-fa/src/app/shared/interceptors/*"], "@msfa-interceptors/*": ["apps/mina-sidor-fa/src/app/shared/interceptors/*"],
"@msfa-models/*": ["apps/mina-sidor-fa/src/app/shared/models/*"],
"@msfa-services/*": ["apps/mina-sidor-fa/src/app/shared/services/*"],
"@msfa-shared/*": ["apps/mina-sidor-fa/src/app/shared/*"],
"@msfa-utils/*": ["apps/mina-sidor-fa/src/app/shared/utils/*"], "@msfa-utils/*": ["apps/mina-sidor-fa/src/app/shared/utils/*"],
"@msfa-validators/*": ["apps/mina-sidor-fa/src/app/shared/utils/validators/*"], "@msfa-validators/*": ["apps/mina-sidor-fa/src/app/shared/utils/validators/*"],
"@msfa-environment": ["apps/mina-sidor-fa/src/environments/environment"], "@ui/*": ["libs/ui/*"],
"@msfa-shared/*": ["apps/mina-sidor-fa/src/app/shared/*"] "@mina-sidor-fa-web/styles": ["libs/styles/src/index.ts"]
} }
}, },
"angularCompilerOptions": { "angularCompilerOptions": {

View File

@@ -1,3 +0,0 @@
{
"extends": "./tsconfig.base.json"
}