@eui/cli 21.0.0-next.3 → 21.0.0-next.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app-utils/build.js +3 -5
- package/lib/skeletons/_angular/base/angular.json +16 -0
- package/lib/skeletons/_angular/base/eslint.config.js +43 -0
- package/lib/skeletons/_angular/base/package.json +9 -4
- package/lib/skeletons/_angular/base/src/app/app-starter.service.spec.ts +8 -6
- package/lib/skeletons/_angular/base/src/app/app.component.html +3 -3
- package/lib/skeletons/_angular/base/src/app/app.component.spec.ts +13 -11
- package/lib/skeletons/_angular/base/src/app/features/home/home.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/home/home.component.ts +5 -3
- package/lib/skeletons/_angular/base/src/app/features/module1/components/page1/page1.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/module1/components/page2/page2.component.html +1 -1
- package/lib/skeletons/_angular/base/src/app/features/module1/module1.component.html +2 -4
- package/lib/skeletons/_angular/base/src/app/features/module2/module2.component.html +1 -1
- package/lib/skeletons/_angular/base/src/dummy.spec.ts +2 -0
- package/lib/skeletons/_angular/base/src/tsconfig.app.json +3 -0
- package/lib/skeletons/_angular/base/tsconfig.json +28 -24
- package/lib/skeletons/_angular/base-mobile/package.json +3 -3
- package/lib/skeletons/_angular/options/ecl-ec/src/app/app.component.html +101 -155
- package/lib/skeletons/_angular/options/ecl-ec/src/app/app.component.ts +2 -0
- package/lib/skeletons/_angular/options/ecl-eu/src/app/app.component.html +43 -68
- package/lib/skeletons/_angular/options/pnpm/package.json +26 -26
- package/package.json +1 -1
- package/lib/skeletons/_angular/base/src/.eslintrc.json +0 -121
package/lib/app-utils/build.js
CHANGED
|
@@ -39,7 +39,7 @@ module.exports.run = () => {
|
|
|
39
39
|
|
|
40
40
|
utils.logTitle(`Building application : ${prjName}...`);
|
|
41
41
|
|
|
42
|
-
const ng = path.resolve(process.cwd(), '@angular', 'cli', 'bin', 'ng');
|
|
42
|
+
const ng = path.resolve(process.cwd(), 'node_modules', '@angular', 'cli', 'bin', 'ng');
|
|
43
43
|
|
|
44
44
|
return Promise.resolve()
|
|
45
45
|
// .then(() => {
|
|
@@ -80,14 +80,12 @@ module.exports.run = () => {
|
|
|
80
80
|
args.push(`--watch=false`);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
args.push('--code-coverage');
|
|
84
|
-
|
|
85
83
|
utils.logInfo(`ng test : watching = ${watch || false}`);
|
|
86
84
|
|
|
87
85
|
utils.logInfo(`running Angular TEST with args: ${args} on :`);
|
|
88
86
|
|
|
89
87
|
if (!dryRun) {
|
|
90
|
-
execSync(`node ${args.join(' ')}`, { cwd:
|
|
88
|
+
execSync(`node ${args.join(' ')}`, { cwd: process.cwd(), stdio: 'inherit' });
|
|
91
89
|
}
|
|
92
90
|
}
|
|
93
91
|
})
|
|
@@ -139,7 +137,7 @@ module.exports.run = () => {
|
|
|
139
137
|
utils.logInfo(`running Angular BUILD with args: ${args}`);
|
|
140
138
|
|
|
141
139
|
if (!dryRun && !skipCompile) {
|
|
142
|
-
execSync(`node ${args.join(' ')}`, { cwd:
|
|
140
|
+
execSync(`node ${args.join(' ')}`, { cwd: process.cwd(), stdio: 'inherit' });
|
|
143
141
|
}
|
|
144
142
|
})
|
|
145
143
|
|
|
@@ -122,6 +122,22 @@
|
|
|
122
122
|
}
|
|
123
123
|
},
|
|
124
124
|
"defaultConfiguration": "development"
|
|
125
|
+
},
|
|
126
|
+
"test": {
|
|
127
|
+
"builder": "@angular/build:unit-test",
|
|
128
|
+
"options": {
|
|
129
|
+
"tsConfig": "src/tsconfig.spec.json"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
"lint": {
|
|
133
|
+
"builder": "@angular-eslint/builder:lint",
|
|
134
|
+
"options": {
|
|
135
|
+
"lintFilePatterns": [
|
|
136
|
+
"src/**/*.ts",
|
|
137
|
+
"src/**/*.html"
|
|
138
|
+
],
|
|
139
|
+
"eslintConfig": "eslint.config.js"
|
|
140
|
+
}
|
|
125
141
|
}
|
|
126
142
|
}
|
|
127
143
|
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
// @ts-check
|
|
2
|
+
const eslint = require("@eslint/js");
|
|
3
|
+
const tseslint = require("typescript-eslint");
|
|
4
|
+
const angular = require("angular-eslint");
|
|
5
|
+
|
|
6
|
+
module.exports = tseslint.config(
|
|
7
|
+
{
|
|
8
|
+
files: ["**/*.ts"],
|
|
9
|
+
extends: [
|
|
10
|
+
eslint.configs.recommended,
|
|
11
|
+
...tseslint.configs.recommended,
|
|
12
|
+
...tseslint.configs.stylistic,
|
|
13
|
+
...angular.configs.tsRecommended,
|
|
14
|
+
],
|
|
15
|
+
processor: angular.processInlineTemplates,
|
|
16
|
+
rules: {
|
|
17
|
+
"@angular-eslint/directive-selector": [
|
|
18
|
+
"error",
|
|
19
|
+
{
|
|
20
|
+
type: "attribute",
|
|
21
|
+
prefix: "app",
|
|
22
|
+
style: "camelCase",
|
|
23
|
+
},
|
|
24
|
+
],
|
|
25
|
+
"@angular-eslint/component-selector": [
|
|
26
|
+
"error",
|
|
27
|
+
{
|
|
28
|
+
type: "element",
|
|
29
|
+
prefix: "app",
|
|
30
|
+
style: "kebab-case",
|
|
31
|
+
},
|
|
32
|
+
],
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
files: ["**/*.html"],
|
|
37
|
+
extends: [
|
|
38
|
+
...angular.configs.templateRecommended,
|
|
39
|
+
...angular.configs.templateAccessibility,
|
|
40
|
+
],
|
|
41
|
+
rules: {},
|
|
42
|
+
},
|
|
43
|
+
);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.30",
|
|
4
4
|
"license": "EUPL-1.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"ng": "ng",
|
|
@@ -21,15 +21,20 @@
|
|
|
21
21
|
},
|
|
22
22
|
"private": true,
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"@eui/deps-base": "21.0.0-next.
|
|
24
|
+
"@eui/deps-base": "21.0.0-next.30"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"npm-run-all": "4.1.5",
|
|
28
28
|
"json-server": "1.0.0-beta.3",
|
|
29
|
-
"nodemon": "
|
|
29
|
+
"nodemon": "3.1.11",
|
|
30
30
|
"lowdb": "1.0.0",
|
|
31
31
|
"body-parser": "1.20.3",
|
|
32
|
-
"express": "4.21.2"
|
|
32
|
+
"express": "4.21.2",
|
|
33
|
+
"typescript-eslint": "8.46.3",
|
|
34
|
+
"angular-eslint": "20.6.0",
|
|
35
|
+
"eslint": "^9.39.0",
|
|
36
|
+
"vitest": "^4.0.0",
|
|
37
|
+
"jsdom": "^27.2.0"
|
|
33
38
|
},
|
|
34
39
|
"resolutions": {
|
|
35
40
|
"semver": ">=7.5.2",
|
|
@@ -4,9 +4,11 @@ import {CONFIG_TOKEN, I18nService, UserService} from '@eui/core';
|
|
|
4
4
|
import {EuiAppConfig} from '@eui/core';
|
|
5
5
|
import {of} from 'rxjs';
|
|
6
6
|
import {AppStarterService} from './app-starter.service';
|
|
7
|
-
import SpyObj = jasmine.SpyObj;
|
|
8
7
|
import { EuiServiceStatus } from '@eui/base';
|
|
9
8
|
import { provideHttpClient, withInterceptorsFromDi } from "@angular/common/http";
|
|
9
|
+
import { describe, it, beforeEach, expect, vi } from 'vitest';
|
|
10
|
+
|
|
11
|
+
type SpyObj<T> = { [K in keyof T]: T[K] extends (...args: any[]) => any ? ReturnType<typeof vi.fn> : T[K] };
|
|
10
12
|
|
|
11
13
|
describe('AppStarterService', () => {
|
|
12
14
|
let service: AppStarterService;
|
|
@@ -16,8 +18,8 @@ describe('AppStarterService', () => {
|
|
|
16
18
|
let configMock: EuiAppConfig;
|
|
17
19
|
|
|
18
20
|
beforeEach(() => {
|
|
19
|
-
userServiceMock =
|
|
20
|
-
i18nServiceMock =
|
|
21
|
+
userServiceMock = { init: vi.fn() } as SpyObj<UserService>;
|
|
22
|
+
i18nServiceMock = { init: vi.fn() } as SpyObj<I18nService>;
|
|
21
23
|
configMock = {global: {}, modules: {core: {base: 'localhost:3000', userDetails: 'dummy'}}};
|
|
22
24
|
|
|
23
25
|
TestBed.configureTestingModule({
|
|
@@ -40,8 +42,8 @@ describe('AppStarterService', () => {
|
|
|
40
42
|
});
|
|
41
43
|
|
|
42
44
|
it('should call start method', () => {
|
|
43
|
-
userServiceMock.init.
|
|
44
|
-
i18nServiceMock.init.
|
|
45
|
+
vi.mocked(userServiceMock.init).mockReturnValue(of({ } as EuiServiceStatus));
|
|
46
|
+
vi.mocked(i18nServiceMock.init).mockReturnValue(of({ } as EuiServiceStatus));
|
|
45
47
|
service.start().subscribe(() => {
|
|
46
48
|
expect(userServiceMock.init).toHaveBeenCalled();
|
|
47
49
|
expect(i18nServiceMock.init).toHaveBeenCalled();
|
|
@@ -49,7 +51,7 @@ describe('AppStarterService', () => {
|
|
|
49
51
|
});
|
|
50
52
|
|
|
51
53
|
it('should call initUserService method', () => {
|
|
52
|
-
userServiceMock.init.
|
|
54
|
+
vi.mocked(userServiceMock.init).mockReturnValue(of({ } as EuiServiceStatus));
|
|
53
55
|
service.initUserService().subscribe(() => {
|
|
54
56
|
expect(userServiceMock.init).toHaveBeenCalled();
|
|
55
57
|
});
|
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
<eui-user-profile isShowAvatarInitials>
|
|
11
11
|
<eui-user-profile-menu>
|
|
12
12
|
<eui-user-profile-menu-item>
|
|
13
|
-
<eui-icon-svg icon="
|
|
13
|
+
<eui-icon-svg icon="user:regular"/>{{ 'eui.my-profile-informations' | translate }}
|
|
14
14
|
</eui-user-profile-menu-item>
|
|
15
15
|
<eui-user-profile-menu-item>
|
|
16
|
-
<eui-icon-svg icon="
|
|
16
|
+
<eui-icon-svg icon="sign-out:regular"/>{{ 'eui.sign-out' | translate }}
|
|
17
17
|
</eui-user-profile-menu-item>
|
|
18
18
|
</eui-user-profile-menu>
|
|
19
19
|
</eui-user-profile>
|
|
20
20
|
</eui-toolbar-item>
|
|
21
21
|
|
|
22
22
|
<eui-toolbar-item>
|
|
23
|
-
<eui-notifications [count]="notificationItems
|
|
23
|
+
<eui-notifications [count]="notificationItems.length" [items]="notificationItems" />
|
|
24
24
|
</eui-toolbar-item>
|
|
25
25
|
</eui-toolbar-items>
|
|
26
26
|
|
|
@@ -10,7 +10,9 @@ import { CONFIG_TOKEN, I18nService, I18nState, UserService} from '@eui/core';
|
|
|
10
10
|
import { EuiAppConfig } from '@eui/core';
|
|
11
11
|
import { Observable, of } from 'rxjs';
|
|
12
12
|
import { TranslateModule } from '@ngx-translate/core';
|
|
13
|
-
import
|
|
13
|
+
import { describe, it, beforeEach, expect, vi } from 'vitest';
|
|
14
|
+
|
|
15
|
+
type SpyObj<T> = { [K in keyof T]: T[K] extends (...args: any[]) => any ? ReturnType<typeof vi.fn> : T[K] };
|
|
14
16
|
|
|
15
17
|
describe('AppComponent', () => {
|
|
16
18
|
let component: AppComponent;
|
|
@@ -20,18 +22,18 @@ describe('AppComponent', () => {
|
|
|
20
22
|
let configMock: EuiAppConfig;
|
|
21
23
|
|
|
22
24
|
beforeEach(async () => {
|
|
23
|
-
|
|
24
|
-
// Handle the overloaded getState method
|
|
25
25
|
type GetStateReturnType<T> = T extends keyof I18nState ? Observable<I18nState[T]> : Observable<I18nState>;
|
|
26
26
|
|
|
27
|
-
userServiceMock =
|
|
28
|
-
i18nServiceMock =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
27
|
+
userServiceMock = { init: vi.fn() } as SpyObj<UserService>;
|
|
28
|
+
i18nServiceMock = {
|
|
29
|
+
init: vi.fn(),
|
|
30
|
+
getState: vi.fn(<K extends keyof I18nState>(key?: K): GetStateReturnType<K> => {
|
|
31
|
+
if (typeof key === 'string') {
|
|
32
|
+
return of({ activeLang: 'en' }[key]) as GetStateReturnType<K>;
|
|
33
|
+
}
|
|
34
|
+
return of({ activeLang: 'en' }) as GetStateReturnType<K>;
|
|
35
|
+
})
|
|
36
|
+
} as SpyObj<I18nService>;
|
|
35
37
|
configMock = {global: {}, modules: {core: {base: 'localhost:3000', userDetails: 'dummy'}}};
|
|
36
38
|
|
|
37
39
|
await TestBed.configureTestingModule({
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Component,
|
|
1
|
+
import { Component, inject } from '@angular/core';
|
|
2
2
|
import { CONFIG_TOKEN, EuiAppConfig } from '@eui/core';
|
|
3
3
|
import { EUI_PAGE } from '@eui/components/eui-page';
|
|
4
4
|
import { TranslateModule } from '@ngx-translate/core';
|
|
@@ -11,7 +11,9 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
11
11
|
],
|
|
12
12
|
})
|
|
13
13
|
export class HomeComponent {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
protected config: EuiAppConfig = inject(CONFIG_TOKEN);
|
|
15
|
+
|
|
16
|
+
constructor() {
|
|
17
|
+
console.log(this.config);
|
|
16
18
|
}
|
|
17
19
|
}
|
|
@@ -1,27 +1,31 @@
|
|
|
1
|
+
/* To learn more about Typescript configuration file: https://www.typescriptlang.org/docs/handbook/tsconfig-json.html. */
|
|
2
|
+
/* To learn more about Angular compiler options: https://angular.dev/reference/configs/angular-compiler-options. */
|
|
1
3
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
4
|
+
"compileOnSave": false,
|
|
5
|
+
"compilerOptions": {
|
|
6
|
+
"baseUrl": "./",
|
|
7
|
+
"outDir": "./dist/out-tsc",
|
|
8
|
+
"target": "ES2022",
|
|
9
|
+
"module": "ES2022",
|
|
10
|
+
"useDefineForClassFields": false,
|
|
11
|
+
"lib": [
|
|
12
|
+
"ES2022",
|
|
13
|
+
"dom"
|
|
14
|
+
],
|
|
15
|
+
"sourceMap": true,
|
|
16
|
+
"declaration": false,
|
|
17
|
+
"moduleResolution": "bundler",
|
|
18
|
+
"emitDecoratorMetadata": false,
|
|
19
|
+
"experimentalDecorators": true,
|
|
20
|
+
"allowSyntheticDefaultImports": true,
|
|
21
|
+
"importHelpers": true,
|
|
22
|
+
"typeRoots": [
|
|
23
|
+
"node_modules/@types"
|
|
24
|
+
],
|
|
25
|
+
"paths": {
|
|
26
|
+
"@shared/*": [
|
|
27
|
+
"src/app/shared/*"
|
|
28
|
+
]
|
|
29
|
+
}
|
|
25
30
|
}
|
|
26
|
-
}
|
|
27
31
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.30",
|
|
4
4
|
"license": "EUPL-1.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"ng": "ng",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"private": true,
|
|
22
22
|
"dependencies": {
|
|
23
23
|
"@eui/deps-base": "18.2.20",
|
|
24
|
-
"@eui/mobile-core": "18.1.
|
|
25
|
-
"@eui/mobile-styles": "18.1.
|
|
24
|
+
"@eui/mobile-core": "18.1.4",
|
|
25
|
+
"@eui/mobile-styles": "18.1.4"
|
|
26
26
|
}
|
|
27
27
|
}
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
<div eclSiteHeaderEnvironment>Environment</div>
|
|
5
5
|
|
|
6
6
|
<ecl-site-header-action>
|
|
7
|
-
<ecl-site-header-login
|
|
8
|
-
[isLoggedIn]="isLoggedIn"
|
|
9
|
-
(login)="onLogin($event)">
|
|
7
|
+
<ecl-site-header-login [isLoggedIn]="isLoggedIn" (login)="onLogin($event)">
|
|
10
8
|
<p eclSiteHeaderLoginDescription>
|
|
11
9
|
{{ 'ecl.site-header.LOGGED-IN-AS' | translate }} {{ userInfos?.fullName }}
|
|
12
10
|
</p>
|
|
@@ -18,7 +16,7 @@
|
|
|
18
16
|
|
|
19
17
|
<ecl-site-header-language></ecl-site-header-language>
|
|
20
18
|
|
|
21
|
-
<ecl-site-header-search (
|
|
19
|
+
<ecl-site-header-search (searchEvent)="onSearch($event)"></ecl-site-header-search>
|
|
22
20
|
</ecl-site-header-action>
|
|
23
21
|
|
|
24
22
|
<ecl-menu (menuItemSelect)="onMenuItemSelected($event)" aria-label="Main navigation">
|
|
@@ -52,9 +50,11 @@
|
|
|
52
50
|
|
|
53
51
|
<ecl-page-header>
|
|
54
52
|
<ecl-breadcrumb>
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
<ol eclBreadcrumbContainer>
|
|
54
|
+
<li eclBreadcrumbSegment>Home</li>
|
|
55
|
+
<li eclBreadcrumbSegment>European Commission</li>
|
|
56
|
+
<li eclBreadcrumbSegment [isCurrentPage]="true">ECL</li>
|
|
57
|
+
</ol>
|
|
58
58
|
</ecl-breadcrumb>
|
|
59
59
|
|
|
60
60
|
<div eclPageHeaderInfo>
|
|
@@ -67,7 +67,8 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
<div eclPageHeaderDescriptionContainer>
|
|
69
69
|
<p eclPageHeaderDescription>
|
|
70
|
-
The Europa Component Library (ECL) is a comprehensive style guide containing the design elements and
|
|
70
|
+
The Europa Component Library (ECL) is a comprehensive style guide containing the design elements and
|
|
71
|
+
visual standards that make up all Europa websites and applications.
|
|
71
72
|
</p>
|
|
72
73
|
</div>
|
|
73
74
|
</ecl-page-header>
|
|
@@ -76,162 +77,107 @@
|
|
|
76
77
|
<router-outlet></router-outlet>
|
|
77
78
|
</div>
|
|
78
79
|
|
|
79
|
-
<
|
|
80
|
+
<footer eclSiteFooter>
|
|
80
81
|
<div eclSiteFooterRow>
|
|
81
|
-
<div
|
|
82
|
-
<div
|
|
83
|
-
<
|
|
84
|
-
<
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
</div>
|
|
82
|
+
<div eclSiteFooterSection variant="site-info">
|
|
83
|
+
<div eclSiteFooterTitle>
|
|
84
|
+
<a eclLink variant="standalone" isInverted eclSiteFooterTitleLink routerLink="/">
|
|
85
|
+
<span eclLinkLabel>Site name</span>
|
|
86
|
+
<ecl-icon icon="arrow-left" size="xs" transform="flip-horizontal" color="inverted"
|
|
87
|
+
ariaHidden="false" role="img">
|
|
88
|
+
</ecl-icon>
|
|
89
|
+
</a>
|
|
90
|
+
</div>
|
|
91
|
+
<div eclSiteFooterDescription>This site is managed by:
|
|
92
|
+
<span eclSiteFooterDescriptionName>[name of the manager of the site]</span>
|
|
93
93
|
</div>
|
|
94
|
+
<ecl-social-media-follow eclSiteFooterSocialMedia>
|
|
95
|
+
<ecl-social-media-follow-item icon="facebook" href="https://www.facebook.com/dg"
|
|
96
|
+
isInverted></ecl-social-media-follow-item>
|
|
97
|
+
<ecl-social-media-follow-item icon="instagram" href="https://www.instagram.com/dg/"
|
|
98
|
+
isInverted></ecl-social-media-follow-item>
|
|
99
|
+
<ecl-social-media-follow-item icon="twitter" href="https://x.com/dg"
|
|
100
|
+
isInverted></ecl-social-media-follow-item>
|
|
101
|
+
<ecl-social-media-follow-item icon="linkedin" href="https://www.linkedin.com/dg"
|
|
102
|
+
isInverted></ecl-social-media-follow-item>
|
|
103
|
+
<ecl-social-media-follow-item icon="chain" href="https://more_chanels/dg"
|
|
104
|
+
isInverted></ecl-social-media-follow-item>
|
|
105
|
+
</ecl-social-media-follow>
|
|
94
106
|
</div>
|
|
95
|
-
<div
|
|
96
|
-
<div
|
|
97
|
-
<div
|
|
98
|
-
|
|
99
|
-
|
|
107
|
+
<div eclSiteFooterSection variant="links">
|
|
108
|
+
<div eclSiteFooterRow>
|
|
109
|
+
<div eclSiteFooterSection variant="contact">
|
|
110
|
+
<div eclSiteFooterTitle>
|
|
111
|
+
Contact us </div>
|
|
112
|
+
<ul eclSiteFooterList>
|
|
113
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
114
|
+
eclSiteFooterLink>Contact
|
|
115
|
+
information of the DG</a></li>
|
|
116
|
+
</ul>
|
|
100
117
|
</div>
|
|
101
|
-
<
|
|
102
|
-
<
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
</div>
|
|
113
|
-
<div eclSiteFooterSection>
|
|
114
|
-
<div eclSiteFooterTitle
|
|
115
|
-
[isSeparator]="true">
|
|
116
|
-
Follow us on
|
|
118
|
+
<div eclSiteFooterSection variant="about">
|
|
119
|
+
<div eclSiteFooterTitle>
|
|
120
|
+
About us </div>
|
|
121
|
+
<ul eclSiteFooterList>
|
|
122
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
123
|
+
eclSiteFooterLink>Information
|
|
124
|
+
about the DG</a></li>
|
|
125
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
126
|
+
eclSiteFooterLink>Information
|
|
127
|
+
about the DG</a></li>
|
|
128
|
+
</ul>
|
|
117
129
|
</div>
|
|
118
|
-
<ul eclSiteFooterList
|
|
119
|
-
[isInline]="true">
|
|
120
|
-
<li eclSiteFooterListItem>
|
|
121
|
-
<a eclLink
|
|
122
|
-
isInverted
|
|
123
|
-
eclSiteFooterLink
|
|
124
|
-
variant="standalone"
|
|
125
|
-
routerLink="/">
|
|
126
|
-
<ecl-icon iconSet="social-media"
|
|
127
|
-
icon="facebook-negative"
|
|
128
|
-
size="xs">
|
|
129
|
-
</ecl-icon>
|
|
130
|
-
<span eclLinkLabel>Facebook</span>
|
|
131
|
-
</a>
|
|
132
|
-
</li>
|
|
133
|
-
<li eclSiteFooterListItem>
|
|
134
|
-
<a eclLink
|
|
135
|
-
isInverted
|
|
136
|
-
eclSiteFooterLink
|
|
137
|
-
variant="standalone"
|
|
138
|
-
routerLink="/">
|
|
139
|
-
<ecl-icon iconSet="social-media"
|
|
140
|
-
icon="twitter-negative"
|
|
141
|
-
size="xs">
|
|
142
|
-
</ecl-icon>
|
|
143
|
-
<span eclLinkLabel>X</span>
|
|
144
|
-
</a>
|
|
145
|
-
</li>
|
|
146
|
-
<li eclSiteFooterListItem>
|
|
147
|
-
<a eclLink
|
|
148
|
-
isInverted
|
|
149
|
-
eclSiteFooterLink
|
|
150
|
-
variant="standalone"
|
|
151
|
-
routerLink="/">
|
|
152
|
-
<ecl-icon iconSet="social-media"
|
|
153
|
-
icon="linkedin-negative"
|
|
154
|
-
size="xs">
|
|
155
|
-
</ecl-icon>
|
|
156
|
-
<span eclLinkLabel>Linkedin</span>
|
|
157
|
-
</a>
|
|
158
|
-
</li>
|
|
159
|
-
</ul>
|
|
160
130
|
</div>
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
131
|
+
<div eclSiteFooterRow>
|
|
132
|
+
<div eclSiteFooterSection variant="more">
|
|
133
|
+
<div eclSiteFooterTitle>
|
|
134
|
+
More information on </div>
|
|
135
|
+
<ul eclSiteFooterList>
|
|
136
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
137
|
+
eclSiteFooterLink>Class
|
|
138
|
+
name 1</a></li>
|
|
139
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
140
|
+
eclSiteFooterLink>Class
|
|
141
|
+
name 2</a></li>
|
|
142
|
+
</ul>
|
|
167
143
|
</div>
|
|
168
|
-
<
|
|
169
|
-
<
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
[isSeparator]="true">
|
|
183
|
-
{{ 'ecl.footer.RELATED-SITES' | translate }}
|
|
144
|
+
<div eclSiteFooterSection variant="related">
|
|
145
|
+
<div eclSiteFooterTitle>
|
|
146
|
+
Related links </div>
|
|
147
|
+
<ul eclSiteFooterList>
|
|
148
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
149
|
+
eclSiteFooterLink>Related
|
|
150
|
+
link 1</a></li>
|
|
151
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
152
|
+
eclSiteFooterLink>Related
|
|
153
|
+
link 2</a></li>
|
|
154
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
155
|
+
eclSiteFooterLink>Related
|
|
156
|
+
link 3</a></li>
|
|
157
|
+
</ul>
|
|
184
158
|
</div>
|
|
185
|
-
<ul eclSiteFooterList>
|
|
186
|
-
<li eclSiteFooterListItem>
|
|
187
|
-
<a eclLink
|
|
188
|
-
isInverted
|
|
189
|
-
eclSiteFooterLink
|
|
190
|
-
variant="standalone"
|
|
191
|
-
routerLink="/">
|
|
192
|
-
Related link 1
|
|
193
|
-
</a>
|
|
194
|
-
</li>
|
|
195
|
-
<li eclSiteFooterListItem>
|
|
196
|
-
<a eclLink
|
|
197
|
-
isInverted
|
|
198
|
-
eclSiteFooterLink
|
|
199
|
-
variant="standalone"
|
|
200
|
-
routerLink="/">
|
|
201
|
-
Related link 2
|
|
202
|
-
</a>
|
|
203
|
-
</li>
|
|
204
|
-
</ul>
|
|
205
159
|
</div>
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
isInverted
|
|
226
|
-
eclSiteFooterLink
|
|
227
|
-
variant="standalone"
|
|
228
|
-
routerLink="/">
|
|
229
|
-
Class name 2
|
|
230
|
-
</a>
|
|
231
|
-
</li>
|
|
232
|
-
</ul>
|
|
160
|
+
<div eclSiteFooterRow>
|
|
161
|
+
<div eclSiteFooterSection variant="custom-1">
|
|
162
|
+
<div eclSiteFooterTitle>Custom links</div>
|
|
163
|
+
<ul eclSiteFooterList>
|
|
164
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
165
|
+
eclSiteFooterLink>Custom link</a></li>
|
|
166
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
167
|
+
eclSiteFooterLink>Custom link</a></li>
|
|
168
|
+
</ul>
|
|
169
|
+
</div>
|
|
170
|
+
<div eclSiteFooterSection variant="custom-2">
|
|
171
|
+
<div eclSiteFooterTitle>Custom links</div>
|
|
172
|
+
<ul eclSiteFooterList>
|
|
173
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
174
|
+
eclSiteFooterLink>Custom link</a></li>
|
|
175
|
+
<li eclSiteFooterListItem><a routerLink="/" eclLink variant="standalone" isInverted
|
|
176
|
+
eclSiteFooterLink>Custom link</a></li>
|
|
177
|
+
</ul>
|
|
178
|
+
</div>
|
|
233
179
|
</div>
|
|
234
180
|
</div>
|
|
235
181
|
</div>
|
|
236
|
-
</
|
|
237
|
-
</ecl-app>
|
|
182
|
+
</footer>
|
|
183
|
+
</ecl-app>
|
|
@@ -10,6 +10,7 @@ import { EUI_ECL_ICON } from '@eui/ecl/components/ecl-icon';
|
|
|
10
10
|
import { EUI_ECL_LINK } from '@eui/ecl/components/ecl-link';
|
|
11
11
|
import { EclMenuItemSelectEvent, EUI_ECL_MENU } from '@eui/ecl/components/ecl-menu';
|
|
12
12
|
import { EUI_ECL_PAGE_HEADER } from '@eui/ecl/components/ecl-page-header';
|
|
13
|
+
import { EUI_ECL_SOCIAL_MEDIA_FOLLOW } from '@eui/ecl/components/ecl-social-media-follow';
|
|
13
14
|
import { EUI_ECL_SITE_FOOTER } from '@eui/ecl/components/ecl-site-footer';
|
|
14
15
|
import { EclSiteHeaderLoginEvent, EclSiteHeaderSearchEvent, EUI_ECL_SITE_HEADER } from '@eui/ecl/components/ecl-site-header';
|
|
15
16
|
import { TranslateModule } from '@ngx-translate/core';
|
|
@@ -27,6 +28,7 @@ import { TranslateModule } from '@ngx-translate/core';
|
|
|
27
28
|
...EUI_ECL_PAGE_HEADER,
|
|
28
29
|
...EUI_ECL_SITE_HEADER,
|
|
29
30
|
...EUI_ECL_SITE_FOOTER,
|
|
31
|
+
...EUI_ECL_SOCIAL_MEDIA_FOLLOW,
|
|
30
32
|
RouterOutlet,
|
|
31
33
|
TranslateModule,
|
|
32
34
|
]
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
<div eclSiteHeaderEnvironment>Environment</div>
|
|
5
5
|
|
|
6
6
|
<ecl-site-header-action>
|
|
7
|
-
<ecl-site-header-login
|
|
8
|
-
[isLoggedIn]="isLoggedIn"
|
|
9
|
-
(login)="onLogin($event)">
|
|
7
|
+
<ecl-site-header-login [isLoggedIn]="isLoggedIn" (login)="onLogin($event)">
|
|
10
8
|
<p eclSiteHeaderLoginDescription>
|
|
11
9
|
{{ 'ecl.site-header.LOGGED-IN-AS' | translate }} {{ userInfos?.fullName }}
|
|
12
10
|
</p>
|
|
@@ -18,7 +16,7 @@
|
|
|
18
16
|
|
|
19
17
|
<ecl-site-header-language></ecl-site-header-language>
|
|
20
18
|
|
|
21
|
-
<ecl-site-header-search (
|
|
19
|
+
<ecl-site-header-search (searchEvent)="onSearch($event)"></ecl-site-header-search>
|
|
22
20
|
</ecl-site-header-action>
|
|
23
21
|
|
|
24
22
|
<ecl-menu (menuItemSelect)="onMenuItemSelected($event)" aria-label="Main navigation">
|
|
@@ -52,9 +50,11 @@
|
|
|
52
50
|
|
|
53
51
|
<ecl-page-header>
|
|
54
52
|
<ecl-breadcrumb>
|
|
55
|
-
<
|
|
56
|
-
|
|
57
|
-
|
|
53
|
+
<ol eclBreadcrumbContainer>
|
|
54
|
+
<li eclBreadcrumbSegment>Home</li>
|
|
55
|
+
<li eclBreadcrumbSegment>European Commission</li>
|
|
56
|
+
<li eclBreadcrumbSegment [isCurrentPage]="true">ECL</li>
|
|
57
|
+
</ol>
|
|
58
58
|
</ecl-breadcrumb>
|
|
59
59
|
|
|
60
60
|
<div eclPageHeaderInfo>
|
|
@@ -67,7 +67,8 @@
|
|
|
67
67
|
</div>
|
|
68
68
|
<div eclPageHeaderDescriptionContainer>
|
|
69
69
|
<p eclPageHeaderDescription>
|
|
70
|
-
The Europa Component Library (ECL) is a comprehensive style guide containing the design elements and
|
|
70
|
+
The Europa Component Library (ECL) is a comprehensive style guide containing the design elements and
|
|
71
|
+
visual standards that make up all Europa websites and applications.
|
|
71
72
|
</p>
|
|
72
73
|
</div>
|
|
73
74
|
</ecl-page-header>
|
|
@@ -76,79 +77,66 @@
|
|
|
76
77
|
<router-outlet></router-outlet>
|
|
77
78
|
</div>
|
|
78
79
|
|
|
79
|
-
<
|
|
80
|
+
<footer eclSiteFooter>
|
|
80
81
|
<div eclSiteFooterRow>
|
|
81
82
|
<div eclSiteFooterColumn>
|
|
82
|
-
<div eclSiteFooterSection
|
|
83
|
+
<div eclSiteFooterSection variant="site-info">
|
|
83
84
|
<div eclSiteFooterTitle>
|
|
84
|
-
<a eclLink
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
85
|
+
<a eclLink variant="standalone" eclSiteFooterTitleLink routerLink="/">
|
|
86
|
+
<span eclLinkLabel>Site name</span>
|
|
87
|
+
<ecl-icon icon="arrow-left" size="s" transform="flip-horizontal">
|
|
88
|
+
</ecl-icon>
|
|
88
89
|
</a>
|
|
89
90
|
</div>
|
|
90
91
|
<div eclSiteFooterDescription>
|
|
91
|
-
This site is managed by
|
|
92
|
-
and is an official website of the European Union
|
|
92
|
+
This site is managed by: [name of the manager of the site]
|
|
93
93
|
</div>
|
|
94
|
+
<ul eclSiteFooterList>
|
|
95
|
+
<li eclSiteFooterListItem>
|
|
96
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
97
|
+
{{ 'ecl.footer.ACCESSIBILITY-STATEMENT' | translate }}
|
|
98
|
+
</a>
|
|
99
|
+
</li>
|
|
100
|
+
</ul>
|
|
94
101
|
</div>
|
|
95
102
|
</div>
|
|
96
103
|
<div eclSiteFooterColumn>
|
|
97
104
|
<div eclSiteFooterSection>
|
|
98
|
-
<div eclSiteFooterTitle
|
|
99
|
-
[isSeparator]="true">
|
|
105
|
+
<div eclSiteFooterTitle isSeparator>
|
|
100
106
|
Contact site name
|
|
101
107
|
</div>
|
|
102
108
|
<ul eclSiteFooterList>
|
|
103
109
|
<li eclSiteFooterListItem>
|
|
104
|
-
<a eclLink
|
|
105
|
-
eclSiteFooterLink
|
|
106
|
-
variant="standalone"
|
|
107
|
-
routerLink="/">
|
|
110
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
108
111
|
Link
|
|
109
112
|
</a>
|
|
110
113
|
</li>
|
|
111
114
|
</ul>
|
|
112
115
|
</div>
|
|
113
116
|
<div eclSiteFooterSection>
|
|
114
|
-
<div eclSiteFooterTitle
|
|
115
|
-
[isSeparator]="true">
|
|
117
|
+
<div eclSiteFooterTitle isSeparator>
|
|
116
118
|
Follow us
|
|
117
119
|
</div>
|
|
118
|
-
<ul eclSiteFooterList
|
|
119
|
-
[isInline]="true">
|
|
120
|
+
<ul eclSiteFooterList isInline>
|
|
120
121
|
<li eclSiteFooterListItem>
|
|
121
|
-
<a eclLink
|
|
122
|
-
|
|
123
|
-
variant="standalone"
|
|
124
|
-
routerLink="/">
|
|
125
|
-
<ecl-icon iconSet="social-media"
|
|
126
|
-
icon="facebook"
|
|
127
|
-
size="xs">
|
|
122
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
123
|
+
<ecl-icon iconSet="social-media" icon="facebook" size="xs">
|
|
128
124
|
</ecl-icon>
|
|
129
125
|
<span eclLinkLabel>Social 1</span>
|
|
130
126
|
</a>
|
|
131
127
|
</li>
|
|
128
|
+
|
|
129
|
+
|
|
132
130
|
<li eclSiteFooterListItem>
|
|
133
|
-
<a eclLink
|
|
134
|
-
|
|
135
|
-
variant="standalone"
|
|
136
|
-
routerLink="/">
|
|
137
|
-
<ecl-icon iconSet="social-media"
|
|
138
|
-
icon="twitter"
|
|
139
|
-
size="xs">
|
|
131
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
132
|
+
<ecl-icon iconSet="social-media" icon="twitter" size="xs">
|
|
140
133
|
</ecl-icon>
|
|
141
134
|
<span eclLinkLabel>Social 2</span>
|
|
142
135
|
</a>
|
|
143
136
|
</li>
|
|
144
137
|
<li eclSiteFooterListItem>
|
|
145
|
-
<a eclLink
|
|
146
|
-
|
|
147
|
-
variant="standalone"
|
|
148
|
-
routerLink="/">
|
|
149
|
-
<ecl-icon iconSet="social-media"
|
|
150
|
-
icon="mastodon"
|
|
151
|
-
size="xs">
|
|
138
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
139
|
+
<ecl-icon iconSet="social-media" icon="mastodon" size="xs">
|
|
152
140
|
</ecl-icon>
|
|
153
141
|
<span eclLinkLabel>Social 3</span>
|
|
154
142
|
</a>
|
|
@@ -158,40 +146,27 @@
|
|
|
158
146
|
</div>
|
|
159
147
|
<div eclSiteFooterColumn>
|
|
160
148
|
<div eclSiteFooterSection>
|
|
161
|
-
<div eclSiteFooterTitle
|
|
162
|
-
[isSeparator]="true">
|
|
149
|
+
<div eclSiteFooterTitle isSeparator>
|
|
163
150
|
Optional links
|
|
164
151
|
</div>
|
|
165
152
|
<ul eclSiteFooterList>
|
|
166
153
|
<li eclSiteFooterListItem>
|
|
167
|
-
<a eclLink
|
|
168
|
-
|
|
169
|
-
variant="standalone"
|
|
170
|
-
routerLink="/">
|
|
171
|
-
{{ 'ecl.footer.ACCESSIBILITY' | translate }}
|
|
154
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
155
|
+
Link 1
|
|
172
156
|
</a>
|
|
173
157
|
</li>
|
|
174
158
|
<li eclSiteFooterListItem>
|
|
175
|
-
<a eclLink
|
|
176
|
-
eclSiteFooterLink
|
|
177
|
-
variant="standalone"
|
|
178
|
-
routerLink="/">
|
|
159
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
179
160
|
Link 2
|
|
180
161
|
</a>
|
|
181
162
|
</li>
|
|
182
163
|
<li eclSiteFooterListItem>
|
|
183
|
-
<a eclLink
|
|
184
|
-
eclSiteFooterLink
|
|
185
|
-
variant="standalone"
|
|
186
|
-
routerLink="/">
|
|
164
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
187
165
|
Link 3
|
|
188
166
|
</a>
|
|
189
167
|
</li>
|
|
190
168
|
<li eclSiteFooterListItem>
|
|
191
|
-
<a eclLink
|
|
192
|
-
eclSiteFooterLink
|
|
193
|
-
variant="standalone"
|
|
194
|
-
routerLink="/">
|
|
169
|
+
<a eclLink eclSiteFooterLink variant="standalone" routerLink="/">
|
|
195
170
|
Link 4
|
|
196
171
|
</a>
|
|
197
172
|
</li>
|
|
@@ -199,5 +174,5 @@
|
|
|
199
174
|
</div>
|
|
200
175
|
</div>
|
|
201
176
|
</div>
|
|
202
|
-
</
|
|
203
|
-
</ecl-app>
|
|
177
|
+
</footer>
|
|
178
|
+
</ecl-app>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "eui-angular-app",
|
|
3
|
-
"version": "21.0.0-next.
|
|
3
|
+
"version": "21.0.0-next.30",
|
|
4
4
|
"license": "EUPL-1.1",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"ng": "ng",
|
|
@@ -18,21 +18,21 @@
|
|
|
18
18
|
},
|
|
19
19
|
"private": true,
|
|
20
20
|
"dependencies": {
|
|
21
|
-
"@angular/animations": "21.0.0
|
|
22
|
-
"@angular/common": "21.0.0
|
|
23
|
-
"@angular/compiler": "21.0.0
|
|
24
|
-
"@angular/core": "21.0.0
|
|
25
|
-
"@angular/forms": "21.0.0
|
|
26
|
-
"@angular/platform-browser": "21.0.0
|
|
27
|
-
"@angular/platform-browser-dynamic": "21.0.0
|
|
28
|
-
"@angular/router": "21.0.0
|
|
29
|
-
"@angular/elements": "21.0.0
|
|
30
|
-
"@angular/language-service": "21.0.0
|
|
31
|
-
"@angular/service-worker": "21.0.0
|
|
32
|
-
"@angular/cdk": "21.0.0
|
|
33
|
-
"@angular/material": "21.0.0
|
|
34
|
-
"@angular/material-moment-adapter": "21.0.0
|
|
35
|
-
"@angular-devkit/build-angular": "21.0.0
|
|
21
|
+
"@angular/animations": "21.0.0",
|
|
22
|
+
"@angular/common": "21.0.0",
|
|
23
|
+
"@angular/compiler": "21.0.0",
|
|
24
|
+
"@angular/core": "21.0.0",
|
|
25
|
+
"@angular/forms": "21.0.0",
|
|
26
|
+
"@angular/platform-browser": "21.0.0",
|
|
27
|
+
"@angular/platform-browser-dynamic": "21.0.0",
|
|
28
|
+
"@angular/router": "21.0.0",
|
|
29
|
+
"@angular/elements": "21.0.0",
|
|
30
|
+
"@angular/language-service": "21.0.0",
|
|
31
|
+
"@angular/service-worker": "21.0.0",
|
|
32
|
+
"@angular/cdk": "21.0.0",
|
|
33
|
+
"@angular/material": "21.0.0",
|
|
34
|
+
"@angular/material-moment-adapter": "21.0.0",
|
|
35
|
+
"@angular-devkit/build-angular": "21.0.0",
|
|
36
36
|
"rxjs": "7.8.2",
|
|
37
37
|
"tslib": "2.8.1",
|
|
38
38
|
"zone.js": "0.15.1",
|
|
@@ -48,18 +48,18 @@
|
|
|
48
48
|
"pikaday": "1.8.2",
|
|
49
49
|
"lodash-es": "4.17.21",
|
|
50
50
|
"localforage": "1.10.0",
|
|
51
|
-
"@eui/base": "21.0.0-next.
|
|
52
|
-
"@eui/core": "21.0.0-next.
|
|
53
|
-
"@eui/styles": "21.0.0-next.
|
|
54
|
-
"@eui/components": "21.0.0-next.
|
|
55
|
-
"@eui/ecl": "21.0.0-next.
|
|
51
|
+
"@eui/base": "21.0.0-next.30",
|
|
52
|
+
"@eui/core": "21.0.0-next.30",
|
|
53
|
+
"@eui/styles": "21.0.0-next.30",
|
|
54
|
+
"@eui/components": "21.0.0-next.30",
|
|
55
|
+
"@eui/ecl": "21.0.0-next.30"
|
|
56
56
|
},
|
|
57
57
|
"devDependencies": {
|
|
58
|
-
"@angular/build": "21.0.0
|
|
59
|
-
"@angular/compiler-cli": "21.0.0
|
|
60
|
-
"@angular/cli": "21.0.0
|
|
61
|
-
"@eui/cli": "21.0.0-next.
|
|
62
|
-
"ng-packagr": "21.0.0
|
|
58
|
+
"@angular/build": "21.0.0",
|
|
59
|
+
"@angular/compiler-cli": "21.0.0",
|
|
60
|
+
"@angular/cli": "21.0.0",
|
|
61
|
+
"@eui/cli": "21.0.0-next.30",
|
|
62
|
+
"ng-packagr": "21.0.0",
|
|
63
63
|
"typescript": "5.9.2",
|
|
64
64
|
"npm-run-all": "4.1.5",
|
|
65
65
|
"json-server": "1.0.0-beta.3",
|
package/package.json
CHANGED
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"root": true,
|
|
3
|
-
"ignorePatterns": [
|
|
4
|
-
"**/node_modules/**",
|
|
5
|
-
"**/dist/**",
|
|
6
|
-
"**/coverage/**",
|
|
7
|
-
"**/e2e/**",
|
|
8
|
-
"**/test/**",
|
|
9
|
-
"**/testing/**"
|
|
10
|
-
],
|
|
11
|
-
"overrides": [
|
|
12
|
-
{
|
|
13
|
-
"files": [
|
|
14
|
-
"*.ts"
|
|
15
|
-
],
|
|
16
|
-
"parserOptions": {
|
|
17
|
-
"project": [
|
|
18
|
-
"tsconfig.json",
|
|
19
|
-
"e2e/tsconfig.json"
|
|
20
|
-
],
|
|
21
|
-
"createDefaultProgram": true
|
|
22
|
-
},
|
|
23
|
-
"extends": [
|
|
24
|
-
"eslint:recommended",
|
|
25
|
-
"plugin:@typescript-eslint/recommended",
|
|
26
|
-
"plugin:@angular-eslint/recommended",
|
|
27
|
-
"plugin:@angular-eslint/template/process-inline-templates"
|
|
28
|
-
],
|
|
29
|
-
"rules": {
|
|
30
|
-
"@angular-eslint/component-selector": [
|
|
31
|
-
"error",
|
|
32
|
-
{
|
|
33
|
-
"type": "element",
|
|
34
|
-
"prefix": ["app", "app"],
|
|
35
|
-
"style": "kebab-case"
|
|
36
|
-
}
|
|
37
|
-
],
|
|
38
|
-
"@angular-eslint/directive-selector": [
|
|
39
|
-
"error",
|
|
40
|
-
{
|
|
41
|
-
"type": "attribute",
|
|
42
|
-
"prefix": ["app", "eui"],
|
|
43
|
-
"style": "camelCase"
|
|
44
|
-
}
|
|
45
|
-
],
|
|
46
|
-
"@typescript-eslint/ban-ts-comment": "off",
|
|
47
|
-
"@typescript-eslint/no-empty-object-type": "error",
|
|
48
|
-
"@typescript-eslint/no-unsafe-function-type": "error",
|
|
49
|
-
"@typescript-eslint/consistent-type-definitions": "off",
|
|
50
|
-
"@typescript-eslint/dot-notation": "off",
|
|
51
|
-
"@typescript-eslint/explicit-member-accessibility": [
|
|
52
|
-
"off",
|
|
53
|
-
{
|
|
54
|
-
"accessibility": "explicit"
|
|
55
|
-
}
|
|
56
|
-
],
|
|
57
|
-
"@typescript-eslint/no-require-imports": "error",
|
|
58
|
-
"@typescript-eslint/no-unused-vars": "off",
|
|
59
|
-
"@typescript-eslint/no-var-requires": "error",
|
|
60
|
-
"@typescript-eslint/require-await": "error",
|
|
61
|
-
"brace-style": [
|
|
62
|
-
"error",
|
|
63
|
-
"1tbs"
|
|
64
|
-
],
|
|
65
|
-
"id-blacklist": "off",
|
|
66
|
-
"id-match": "off",
|
|
67
|
-
"no-duplicate-case": "error",
|
|
68
|
-
"no-duplicate-imports": "off",
|
|
69
|
-
"no-invalid-this": "error",
|
|
70
|
-
"no-multiple-empty-lines": [
|
|
71
|
-
"error",
|
|
72
|
-
{
|
|
73
|
-
"max": 1
|
|
74
|
-
}
|
|
75
|
-
],
|
|
76
|
-
"no-new-func": "error",
|
|
77
|
-
"no-redeclare": "off",
|
|
78
|
-
"@typescript-eslint/no-redeclare": [
|
|
79
|
-
"error"
|
|
80
|
-
],
|
|
81
|
-
"no-template-curly-in-string": "error",
|
|
82
|
-
"no-underscore-dangle": "off",
|
|
83
|
-
"@typescript-eslint/naming-convention": [
|
|
84
|
-
"error",
|
|
85
|
-
{
|
|
86
|
-
"selector": "enum",
|
|
87
|
-
"format": [
|
|
88
|
-
"PascalCase",
|
|
89
|
-
"UPPER_CASE"
|
|
90
|
-
]
|
|
91
|
-
}
|
|
92
|
-
],
|
|
93
|
-
"@typescript-eslint/member-ordering": [
|
|
94
|
-
"error",
|
|
95
|
-
{
|
|
96
|
-
"default": [
|
|
97
|
-
"public-static-field",
|
|
98
|
-
"public-instance-field",
|
|
99
|
-
"private-static-field",
|
|
100
|
-
"private-instance-field",
|
|
101
|
-
"public-constructor",
|
|
102
|
-
"private-constructor",
|
|
103
|
-
"public-instance-method",
|
|
104
|
-
"protected-instance-method",
|
|
105
|
-
"private-instance-method"
|
|
106
|
-
]
|
|
107
|
-
}
|
|
108
|
-
]
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
{
|
|
112
|
-
"files": [
|
|
113
|
-
"*.html"
|
|
114
|
-
],
|
|
115
|
-
"extends": [
|
|
116
|
-
"plugin:@angular-eslint/template/recommended"
|
|
117
|
-
],
|
|
118
|
-
"rules": {}
|
|
119
|
-
}
|
|
120
|
-
]
|
|
121
|
-
}
|