Skip to content
Snippets Groups Projects
Commit 8e1312e4 authored by OZGCloud's avatar OZGCloud
Browse files

OZG-7021 add info app, add tailwind typography

parent 99f6de34
No related branches found
No related tags found
No related merge requests found
Showing
with 447 additions and 0 deletions
{
"extends": ["plugin:cypress/recommended", "../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts", "*.tsx", "*.js", "*.jsx"],
"rules": {}
}
]
}
import { nxE2EPreset } from '@nx/cypress/plugins/cypress-preset';
import { defineConfig } from 'cypress';
export default defineConfig({
e2e: { ...nxE2EPreset(__filename, { cypressDir: 'src' }), baseUrl: 'http://localhost:4200' },
});
{
"name": "info-e2e",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"sourceRoot": "apps/info-e2e/src",
"tags": [],
"implicitDependencies": ["info"],
"targets": {
"e2e": {
"executor": "@nx/cypress:cypress",
"options": {
"cypressConfig": "apps/info-e2e/cypress.config.ts",
"testingType": "e2e",
"devServerTarget": "info:serve:development"
},
"configurations": {
"production": {
"devServerTarget": "info:serve:production"
},
"ci": {
"devServerTarget": "info:serve-static"
}
}
},
"lint": {
"executor": "@nx/eslint:lint"
}
}
}
import { getGreeting } from '../support/app.po';
describe('info-e2e', () => {
beforeEach(() => cy.visit('/'));
it('should display welcome message', () => {
// Custom command example, see `../support/commands.ts` file
cy.login('my-email@something.com', 'myPassword');
// Function helper example, see `../support/app.po.ts` file
getGreeting().contains(/Welcome/);
});
});
{
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
}
export const getGreeting = () => cy.get('h1');
/// <reference types="cypress" />
// ***********************************************
// This example commands.ts shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
// eslint-disable-next-line @typescript-eslint/no-namespace
declare namespace Cypress {
// eslint-disable-next-line @typescript-eslint/no-unused-vars
interface Chainable<Subject> {
login(email: string, password: string): void;
}
}
// -- This is a parent command --
Cypress.Commands.add('login', (email, password) => {
console.log('Custom command example: Login', email, password);
});
//
// -- This is a child command --
// Cypress.Commands.add("drag", { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add("dismiss", { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite("visit", (originalFn, url, options) => { ... })
// ***********************************************************
// This example support/e2e.ts is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.ts using ES2015 syntax:
import './commands';
{
"extends": "../../tsconfig.base.json",
"compilerOptions": {
"allowJs": true,
"outDir": "../../dist/out-tsc",
"module": "commonjs",
"types": ["cypress", "node"],
"sourceMap": false,
"forceConsistentCasingInFileNames": true,
"strict": true,
"noImplicitOverride": true,
"noPropertyAccessFromIndexSignature": true,
"noImplicitReturns": true,
"noFallthroughCasesInSwitch": true
},
"include": ["**/*.ts", "**/*.js", "cypress.config.ts", "**/*.cy.ts", "**/*.cy.js", "**/*.d.ts"]
}
{
"extends": ["../../.eslintrc.json"],
"ignorePatterns": ["!**/*"],
"overrides": [
{
"files": ["*.ts"],
"extends": ["plugin:@nx/angular", "plugin:@angular-eslint/template/process-inline-templates"],
"rules": {
"@angular-eslint/directive-selector": [
"error",
{
"type": "attribute",
"prefix": "app",
"style": "camelCase"
}
],
"@angular-eslint/component-selector": [
"error",
{
"type": "element",
"prefix": "app",
"style": "kebab-case"
}
]
}
},
{
"files": ["*.html"],
"extends": ["plugin:@nx/angular-template"],
"rules": {}
}
]
}
/* eslint-disable */
export default {
displayName: 'info',
preset: '../../jest.preset.js',
setupFilesAfterEnv: ['<rootDir>/src/test-setup.ts'],
coverageDirectory: '../../coverage/apps/info',
transform: {
'^.+\\.(ts|mjs|js|html)$': [
'jest-preset-angular',
{
tsconfig: '<rootDir>/tsconfig.spec.json',
stringifyContentPathRegex: '\\.(html|svg)$',
},
],
},
transformIgnorePatterns: ['node_modules/(?!.*\\.mjs$)'],
snapshotSerializers: [
'jest-preset-angular/build/serializers/no-ng-attributes',
'jest-preset-angular/build/serializers/ng-snapshot',
'jest-preset-angular/build/serializers/html-comment',
],
};
{
"name": "info",
"$schema": "../../node_modules/nx/schemas/project-schema.json",
"projectType": "application",
"prefix": "app",
"sourceRoot": "apps/info/src",
"tags": [],
"targets": {
"build": {
"executor": "@angular-devkit/build-angular:browser",
"outputs": ["{options.outputPath}"],
"options": {
"outputPath": "dist/apps/info",
"index": "apps/info/src/index.html",
"main": "apps/info/src/main.ts",
"polyfills": ["zone.js"],
"tsConfig": "apps/info/tsconfig.app.json",
"inlineStyleLanguage": "scss",
"assets": ["apps/info/src/favicon.ico", "apps/info/src/assets"],
"styles": ["apps/info/src/styles.scss"],
"scripts": [],
"stylePreprocessorOptions": {
"includePaths": [
"apps/alfa/src/styles/abstracts",
"node_modules/@angular",
"node_modules/include-media",
"node_modules/typeface-roboto"
]
}
},
"configurations": {
"production": {
"budgets": [
{
"type": "initial",
"maximumWarning": "500kb",
"maximumError": "1mb"
},
{
"type": "anyComponentStyle",
"maximumWarning": "2kb",
"maximumError": "4kb"
}
],
"outputHashing": "all"
},
"development": {
"buildOptimizer": false,
"optimization": false,
"vendorChunk": true,
"extractLicenses": false,
"sourceMap": true,
"namedChunks": true
}
},
"defaultConfiguration": "production"
},
"serve": {
"executor": "@angular-devkit/build-angular:dev-server",
"configurations": {
"production": {
"buildTarget": "info:build:production"
},
"development": {
"buildTarget": "info:build:development"
}
},
"defaultConfiguration": "development"
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
"options": {
"buildTarget": "info:build"
}
},
"lint": {
"executor": "@nx/eslint:lint"
},
"test": {
"executor": "@nx/jest:jest",
"outputs": ["{workspaceRoot}/coverage/{projectRoot}"],
"options": {
"jestConfig": "apps/info/jest.config.ts"
}
},
"serve-static": {
"executor": "@nx/web:file-server",
"options": {
"buildTarget": "info:build",
"port": 4200,
"spa": true
}
}
}
}
<header
class="flex h-16 items-center justify-between border-b border-b-ozggray-300 bg-white px-9 py-2"
data-test-id="admin-header"
>
<a
class="rounded border-2 border-transparent p-1 outline-2 outline-offset-2 hover:border-primary focus-visible:border-gray-200 focus-visible:outline-focus"
aria-label="OZG-Cloud Administration"
routerLink="/"
data-test-id="logo-link"
>
LOGO
</a>
</header>
<div class="relative flex w-full flex-auto justify-center">
<main class="flex-auto bg-background-50 p-6">
<div class="ozg-prose prose">
<h1>Erklärung zur Barrierefreiheit</h1>
<p>
Die Staatskanzlei des Ministerpräsidenten ist bemüht, ihre Anwendung im Einklang mit § 11 Absatz 1
Landesbehindertengleichstellungsgesetz (LBGG) sowie den Anforderungen der Barrierefreiheit gemäß § 13 Absatz 3 LBGG
barrierefrei zugänglich zu machen.
</p>
<p>Diese Erklärung zur Barrierefreiheit gilt für:</p>
<ul>
<li>
<a href="https://se.kop.schleswig-holstein.de" target="_blank">https://se.kop.schleswig-holstein.de</a>
</li>
<li>
<a href="https://luebeck.kop.schleswig-holstein.de" target="_blank">https://luebeck.kop.schleswig-holstein.de</a>
</li>
<li>
<a href="https://kiel.kop.schleswig-holstein.de" target="_blank">https://kiel.kop.schleswig-holstein.de</a>
</li>
</ul>
<h2>Stand der Vereinbarkeit mit den Anforderungen</h2>
<p>Diese Website/mobile Anwendung ist teilweise mit § 13 Absatz 3 LBGG vereinbar.</p>
<h2>Nicht barrierefreie Inhalte</h2>
<p>Die nachstehend aufgeführten Inhalte sind unvereinbar mit § 13 Absatz 3 LBGG und somit nicht barrierefrei:</p>
<ul>
<li>Erläuterungen zu den Inhalten und der Navigation dieser Anwendung in leichter Sprache sind nicht vorhanden.</li>
<li>
Responsive Darstellung ist nicht vorhanden, weshalb Inhalte nur bedingt verlustfrei vergrößerbar sind oder umbrechen.
</li>
<li>Gliedernde Überschriften und Bereiche sind nicht umfassend vorhanden.</li>
<li>Benutzerdefinierte Einstellungen (Farbauswahl und Schriftgröße) werden nicht umfänglich angewendet.</li>
<li>Die Einstellungsmöglichkeiten im oberen Navigationsmenü können nicht per Tastatursteuerung erreicht werden.</li>
<li>Die Vorschläge der Vorgangssuche sind nicht per Screenreader wahrnehmbar.</li>
<li>Vereinzelt treten Texte mit zu geringem Kontrast zum Hintergrund auf.</li>
<li>Vereinzelt ist der Tastaturfokus nur schwer wahrnehmbar. Bei Datumspickern ist keine Fokushervorhebung vorhanden.</li>
<li>
Es fehlen Statusmeldungen, die Screenreader-Nutzende über Änderungen der Suchergebnisse oder über Änderungen von
Anträgen informieren.
</li>
<li>
Der als PDF zur Verfügung gestellte Benutzerleitfaden, sowie die als PDF abgespeicherten Nachrichten der Anwendung
entsprechen nicht dem PDF/UA-Standard.
</li>
</ul>
<p>
Die Anwendung befindet sich derzeit noch in der Entwicklung. An bestehenden und bekannten Barrieren wird gearbeitet, um
eine Barrierefreiheit gemäß § 13 Absatz 3 LBGG gewährleisten zu können.
</p>
<h2>Erstellung dieser Erklärung zur Barrierefreiheit</h2>
<p>Diese Erklärung wurde am 15.07.2024 erstellt.</p>
<p>
Die Aussagen bezüglich der Vereinbarkeit mit den Barrierefreiheitsanforderungen in dieser Erklärung beruhen auf einem
Prüfbericht von Dataport vom 08.04.2024 und einer Selbstbewertung.
</p>
<p>Die Erklärung wurde zuletzt am 15.07.2024 aktualisiert.</p>
<h2>Feedback und Kontaktangaben</h2>
<p>
Sie möchten uns bestehende Barrieren mitteilen oder Informationen zur Umsetzung der Barrierefreiheit erfragen? Für Ihr
Feedback sowie alle weiteren Informationen sprechen Sie unsere Verantwortlichen Kontaktpersonen unter
<a href="mailto:digitalisierung@stk.landsh.de">digitalisierung&commat;stk.landsh.de</a> an.
</p>
<h2>Beschwerdeverfahren</h2>
<p>
Wenn auch nach Ihrem Feedback an den oben genannten Kontakt keine zufriedenstellende Lösung gefunden wurde, können Sie
sich an die Beschwerdestelle des Landes Schleswig-Holstein gemäß Landesbehindertengleichstellungsgesetz (LBGG) wenden. Die
Beschwerdestelle hat die Aufgabe, Konflikte zum Thema Barrierefreiheit zwischen Menschen mit Behinderungen und
öffentlichen Stellen in Schleswig-Holstein zu lösen. Dabei geht es nicht darum, Gewinner oder Verlierer zu finden.
Vielmehr ist es das Ziel, mit Hilfe der Beschwerdestelle gemeinsam und außergerichtlich eine Lösung für ein Problem zu
finden. Das Beschwerdeverfahren ist kostenlos. Es muss kein Rechtsbeistand eingeschaltet werden.
</p>
<p>
Auf der
<a href="https://www.landtag.ltsh.de/beauftragte/beschwerdestelle-fuer-barrieren/" target="_blank"
>Internetseite der Beschwerdestelle</a
>
finden Sie alle Informationen zum Beschwerdeverfahren. Dort können Sie nachlesen, wie ein Beschwerdeverfahren abläuft.
</p>
<p>Sie erreichen die Beschwerdestelle unter folgender Adresse:</p>
<p>Beschwerdestelle nach dem Behindertengleichstellungsgesetz bei der Landesbeauftragten für Menschen mit Behinderung</p>
<p>Büroanschrift: Karolinenweg 1 24105 Kiel</p>
<p>Postanschrift: Postfach 7121 24171 Kiel</p>
<p>Telefon: +49 431 988 1620</p>
<p>
E-Mail:
<a href="mailto:bbit@landtag.ltsh.de">bbit&commat;landtag.ltsh.de</a>
</p>
</div>
<footer class="ozg-prose">
<nav>
<ul class="flex flex-row flex-wrap justify-center gap-9 pt-14">
<li><a routerLink="/barrierefreiheit">Barrierefreiheit</a></li>
<li><a routerLink="/datenschutzerklarrung">Datenschutzerklärung</a></li>
<li><a routerLink="/impressum">Impressum</a></li>
</ul>
</nav>
</footer>
<router-outlet></router-outlet>
</main>
</div>
import { TestBed } from '@angular/core/testing';
import { RouterTestingModule } from '@angular/router/testing';
import { AppComponent } from './app.component';
import { NxWelcomeComponent } from './nx-welcome.component';
describe('AppComponent', () => {
beforeEach(async () => {
await TestBed.configureTestingModule({
imports: [AppComponent, NxWelcomeComponent, RouterTestingModule],
}).compileComponents();
});
it('should render title', () => {
const fixture = TestBed.createComponent(AppComponent);
fixture.detectChanges();
const compiled = fixture.nativeElement as HTMLElement;
expect(compiled.querySelector('h1')?.textContent).toContain('Welcome info');
});
it(`should have as title 'info'`, () => {
const fixture = TestBed.createComponent(AppComponent);
const app = fixture.componentInstance;
expect(app.title).toEqual('info');
});
});
import { Component } from '@angular/core';
import { RouterModule } from '@angular/router';
@Component({
standalone: true,
imports: [RouterModule],
selector: 'app-root',
templateUrl: './app.component.html',
styleUrl: './app.component.scss',
})
export class AppComponent {
title = 'info';
}
import { ApplicationConfig } from '@angular/core';
import { provideRouter } from '@angular/router';
import { appRoutes } from './app.routes';
export const appConfig: ApplicationConfig = {
providers: [provideRouter(appRoutes)],
};
import { Route } from '@angular/router';
export const appRoutes: Route[] = [];
alfa-client/apps/info/src/favicon.ico

14.7 KiB

0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment