├── .editorconfig
├── .gitignore
├── .vscode
└── settings.json
├── README.md
├── angular.json
├── browserslist
├── deploy.js
├── e2e
├── protractor.conf.js
├── src
│ ├── app.e2e-spec.ts
│ └── app.po.ts
└── tsconfig.e2e.json
├── package-lock.json
├── package.json
├── projects
├── client-a
│ ├── browserslist
│ ├── karma.conf.js
│ ├── src
│ │ ├── app
│ │ │ ├── app.component.css
│ │ │ ├── app.component.ts
│ │ │ ├── app.module.ts
│ │ │ ├── client-a-widget
│ │ │ │ └── client-a-widget.component.ts
│ │ │ ├── error
│ │ │ │ ├── error.component.css
│ │ │ │ ├── error.component.html
│ │ │ │ ├── error.component.spec.ts
│ │ │ │ └── error.component.ts
│ │ │ ├── page1
│ │ │ │ └── page1.component.ts
│ │ │ ├── page2
│ │ │ │ └── page2.component.ts
│ │ │ └── sys-event.ts
│ │ ├── environments
│ │ │ ├── environment.prod.ts
│ │ │ └── environment.ts
│ │ ├── favicon.ico
│ │ ├── index.html
│ │ ├── main.ts
│ │ ├── polyfills.ts
│ │ ├── polyfills.ts.bak
│ │ ├── styles.css
│ │ └── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ └── webpack.externals.js
└── client-b
│ ├── browserslist
│ ├── karma.conf.js
│ ├── src
│ ├── app
│ │ ├── app.component.ts
│ │ ├── app.module.ts
│ │ ├── empty
│ │ │ └── empty.component.ts
│ │ ├── page1
│ │ │ └── page1.component.ts
│ │ ├── page2
│ │ │ └── page2.component.ts
│ │ └── sys-event.ts
│ ├── environments
│ │ ├── environment.prod.ts
│ │ ├── environment.standalone.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── polyfills.ts.bak
│ ├── styles.css
│ └── test.ts
│ ├── tsconfig.app.json
│ ├── tsconfig.spec.json
│ ├── tslint.json
│ └── webpack.externals.js
├── src
├── app
│ ├── app.component.css
│ ├── app.component.html
│ ├── app.component.ts
│ ├── app.module.ts
│ ├── empty
│ │ ├── empty.component.css
│ │ ├── empty.component.html
│ │ ├── empty.component.spec.ts
│ │ └── empty.component.ts
│ ├── navbar
│ │ ├── navbar.component.html
│ │ └── navbar.component.ts
│ ├── shell
│ │ ├── advanced.shell.service.ts
│ │ ├── config.ts
│ │ ├── simple.shell.service.ts
│ │ └── sys-event.ts
│ ├── sidebar
│ │ ├── sidebar.component.html
│ │ └── sidebar.component.ts
│ └── state.service.ts
├── assets
│ ├── css
│ │ ├── bootstrap.min.css
│ │ ├── demo.css
│ │ ├── paper-dashboard.css
│ │ ├── paper-dashboard.css.map
│ │ └── themify-icons.css
│ ├── fonts
│ │ ├── themify.eot
│ │ ├── themify.svg
│ │ ├── themify.ttf
│ │ └── themify.woff
│ ├── img
│ │ ├── angular.png
│ │ ├── angular2-logo-white.png
│ │ ├── angular2-logo.png
│ │ ├── angularjs.png
│ │ ├── apple-icon.png
│ │ ├── background.jpg
│ │ ├── faces
│ │ │ ├── face-0.jpg
│ │ │ ├── face-1.jpg
│ │ │ ├── face-2.jpg
│ │ │ └── face-3.jpg
│ │ ├── favicon.png
│ │ ├── new_logo.png
│ │ └── tim_80x80.png
│ └── micro-frontends
│ │ ├── client-a
│ │ └── main.js
│ │ └── client-b
│ │ └── main.js
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── favicon.ico
├── img
│ └── logo.82b9c7a5.png
├── index.html
├── karma.conf.js
├── main.ts
├── polyfills.ts
├── styles.css
├── test.ts
├── tsconfig.app.json
├── tsconfig.spec.json
└── tslint.json
├── tsconfig.json
├── tslint.json
└── webpack.externals.js
/.editorconfig:
--------------------------------------------------------------------------------
1 | # Editor configuration, see http://editorconfig.org
2 | root = true
3 |
4 | [*]
5 | charset = utf-8
6 | indent_style = space
7 | indent_size = 2
8 | insert_final_newline = true
9 | trim_trailing_whitespace = true
10 |
11 | [*.md]
12 | max_line_length = off
13 | trim_trailing_whitespace = false
14 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # See http://help.github.com/ignore-files/ for more about ignoring files.
2 |
3 | # compiled output
4 | /dist
5 | /tmp
6 | /out-tsc
7 |
8 | # dependencies
9 | /node_modules
10 |
11 | # IDEs and editors
12 | /.idea
13 | .project
14 | .classpath
15 | .c9/
16 | *.launch
17 | .settings/
18 | *.sublime-workspace
19 |
20 | # IDE - VSCode
21 | .vscode/*
22 | !.vscode/settings.json
23 | !.vscode/tasks.json
24 | !.vscode/launch.json
25 | !.vscode/extensions.json
26 |
27 | # misc
28 | /.sass-cache
29 | /connect.lock
30 | /coverage
31 | /libpeerconnection.log
32 | npm-debug.log
33 | yarn-error.log
34 | testem.log
35 | /typings
36 |
37 | # System Files
38 | .DS_Store
39 | Thumbs.db
40 |
--------------------------------------------------------------------------------
/.vscode/settings.json:
--------------------------------------------------------------------------------
1 | {
2 | "spellright.language": "en",
3 | "spellright.documentTypes": [
4 | "markdown",
5 | "latex",
6 | "plaintext"
7 | ]
8 | }
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Micro Apps with Web Components and Angular Elements
2 |
3 | This example consists of three Angular projects that demonstrate how to use Web Components/ Angular Elements to implement a shell that loads micro apps:
4 |
5 | - **shell (/src):** Shell loading micro apps
6 | - **client-a (/projects/client-a)**: Demo micro app
7 | - **client-b (/projects/client-b)**: Another demo micro app
8 |
9 | ## Install Dependencies
10 |
11 | ```
12 | npm install
13 | ```
14 |
15 | ## Standalone
16 |
17 | For debugging and testing, you can start each of those projects individually. Please note that the shell will throw some exceptions when doing so because it does not find the micro apps that are expected in an sub folder for the sake of simplicity.
18 |
19 | Use one of the following commands for this:
20 |
21 | ```
22 | ng serve --project shell --open
23 | ng serve --project client-a --open
24 | ng serve --project client-b --open
25 | ```
26 |
27 | ## Everything together
28 |
29 | For using everything together, you have to build the example and run it:
30 |
31 | ```
32 | npm run build
33 | npm start
34 | ```
35 |
--------------------------------------------------------------------------------
/angular.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
3 | "version": 1,
4 | "newProjectRoot": "projects",
5 | "projects": {
6 | "shell": {
7 | "root": "",
8 | "projectType": "application",
9 | "prefix": "app",
10 | "architect": {
11 | "build": {
12 | "builder": "ngx-build-plus:browser",
13 | "options": {
14 | "outputPath": "dist/shell",
15 | "index": "src/index.html",
16 | "main": "src/main.ts",
17 | "polyfills": "src/polyfills.ts",
18 | "tsConfig": "src/tsconfig.app.json",
19 | "assets": [
20 | {
21 | "glob": "favicon.ico",
22 | "input": "src",
23 | "output": "/"
24 | },
25 | {
26 | "glob": "**/*",
27 | "input": "src/assets",
28 | "output": "/assets"
29 | },
30 | {
31 | "glob": "**/*",
32 | "input": "src/img",
33 | "output": "/img"
34 | }
35 | ],
36 | "styles": [
37 | "src/styles.css",
38 | "src/assets/css/bootstrap.min.css",
39 | "src/assets/css/paper-dashboard.css",
40 | "src/assets/css/demo.css",
41 | "src/assets/css/themify-icons.css"
42 | ],
43 | "scripts": [
44 | {
45 | "bundleName": "polyfill-webcomp-es5",
46 | "input": "node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"
47 | },
48 | {
49 | "bundleName": "polyfill-webcomp",
50 | "input": "node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js"
51 | },
52 | "node_modules/rxjs/bundles/rxjs.umd.js",
53 | "node_modules/@angular/core/bundles/core.umd.js",
54 | "node_modules/@angular/common/bundles/common.umd.js",
55 | "node_modules/@angular/common/bundles/common-http.umd.js",
56 | "node_modules/@angular/compiler/bundles/compiler.umd.js",
57 | "node_modules/@angular/elements/bundles/elements.umd.js",
58 | "node_modules/@angular/platform-browser/bundles/platform-browser.umd.js",
59 | "node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js"
60 | ]
61 | },
62 | "configurations": {
63 | "production": {
64 | "fileReplacements": [
65 | {
66 | "replace": "src/environments/environment.ts",
67 | "with": "src/environments/environment.prod.ts"
68 | }
69 | ],
70 | "optimization": true,
71 | "outputHashing": "all",
72 | "sourceMap": false,
73 | "extractCss": true,
74 | "namedChunks": false,
75 | "aot": true,
76 | "extractLicenses": true,
77 | "vendorChunk": false,
78 | "buildOptimizer": true
79 | }
80 | }
81 | },
82 | "serve": {
83 | "builder": "ngx-build-plus:dev-server",
84 | "options": {
85 | "browserTarget": "shell:build"
86 | },
87 | "configurations": {
88 | "production": {
89 | "browserTarget": "shell:build:production"
90 | }
91 | }
92 | },
93 | "extract-i18n": {
94 | "builder": "@angular-devkit/build-angular:extract-i18n",
95 | "options": {
96 | "browserTarget": "shell:build"
97 | }
98 | },
99 | "test": {
100 | "builder": "ngx-build-plus:karma",
101 | "options": {
102 | "main": "src/test.ts",
103 | "polyfills": "src/polyfills.ts",
104 | "tsConfig": "src/tsconfig.spec.json",
105 | "karmaConfig": "src/karma.conf.js",
106 | "styles": [
107 | {
108 | "input": "styles.css"
109 | }
110 | ],
111 | "scripts": [],
112 | "assets": [
113 | {
114 | "glob": "favicon.ico",
115 | "input": "src/",
116 | "output": "/"
117 | },
118 | {
119 | "glob": "**/*",
120 | "input": "src/assets",
121 | "output": "/assets"
122 | }
123 | ]
124 | }
125 | },
126 | "lint": {
127 | "builder": "@angular-devkit/build-angular:tslint",
128 | "options": {
129 | "tsConfig": [
130 | "src/tsconfig.app.json",
131 | "src/tsconfig.spec.json"
132 | ],
133 | "exclude": [
134 | "**/node_modules/**"
135 | ]
136 | }
137 | }
138 | }
139 | },
140 | "shell-e2e": {
141 | "root": "e2e/",
142 | "projectType": "application",
143 | "architect": {
144 | "e2e": {
145 | "builder": "@angular-devkit/build-angular:protractor",
146 | "options": {
147 | "protractorConfig": "e2e/protractor.conf.js",
148 | "devServerTarget": "shell:serve"
149 | }
150 | },
151 | "lint": {
152 | "builder": "@angular-devkit/build-angular:tslint",
153 | "options": {
154 | "tsConfig": "e2e/tsconfig.e2e.json",
155 | "exclude": [
156 | "**/node_modules/**"
157 | ]
158 | }
159 | }
160 | }
161 | },
162 | "client-a": {
163 | "root": "projects/client-a/",
164 | "projectType": "application",
165 | "prefix": "app",
166 | "architect": {
167 | "build": {
168 | "builder": "ngx-build-plus:build",
169 | "options": {
170 | "outputPath": "dist/client-a",
171 | "index": "projects/client-a/src/index.html",
172 | "main": "projects/client-a/src/main.ts",
173 | "polyfills": "projects/client-a/src/polyfills.ts",
174 | "tsConfig": "projects/client-a/tsconfig.app.json",
175 | "assets": [
176 | {
177 | "glob": "favicon.ico",
178 | "input": "projects/client-a/src",
179 | "output": "/"
180 | },
181 | {
182 | "glob": "**/*",
183 | "input": "projects/client-a/src/assets",
184 | "output": "/assets"
185 | }
186 | ],
187 | "styles": [
188 | "projects/client-a/src/styles.css"
189 | ],
190 | "scripts": [
191 | "node_modules/rxjs/bundles/rxjs.umd.js",
192 | "node_modules/@angular/core/bundles/core.umd.js",
193 | "node_modules/@angular/common/bundles/common.umd.js",
194 | "node_modules/@angular/common/bundles/common-http.umd.js",
195 | "node_modules/@angular/compiler/bundles/compiler.umd.js",
196 | "node_modules/@angular/elements/bundles/elements.umd.js",
197 | "node_modules/@angular/platform-browser/bundles/platform-browser.umd.js",
198 | "node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js"
199 | ]
200 | },
201 | "configurations": {
202 | "debug": {
203 | "fileReplacements": [
204 | {
205 | "replace": "projects/client-a/src/environments/environment.ts",
206 | "with": "projects/client-a/src/environments/environment.standalone.ts"
207 | }
208 | ]
209 | },
210 | "production": {
211 | "fileReplacements": [
212 | {
213 | "replace": "projects/client-a/src/environments/environment.ts",
214 | "with": "projects/client-a/src/environments/environment.prod.ts"
215 | }
216 | ],
217 | "optimization": true,
218 | "outputHashing": "all",
219 | "sourceMap": false,
220 | "extractCss": true,
221 | "namedChunks": false,
222 | "aot": true,
223 | "extractLicenses": true,
224 | "vendorChunk": false,
225 | "buildOptimizer": true
226 | }
227 | }
228 | },
229 | "serve": {
230 | "builder": "ngx-build-plus:dev-server",
231 | "options": {
232 | "browserTarget": "client-a:build"
233 | },
234 | "configurations": {
235 | "production": {
236 | "browserTarget": "client-a:build:production"
237 | }
238 | }
239 | },
240 | "extract-i18n": {
241 | "builder": "@angular-devkit/build-angular:extract-i18n",
242 | "options": {
243 | "browserTarget": "client-a:build"
244 | }
245 | },
246 | "test": {
247 | "builder": "@angular-devkit/build-angular:karma",
248 | "options": {
249 | "main": "projects/client-a/src/test.ts",
250 | "polyfills": "projects/client-a/src/polyfills.ts",
251 | "tsConfig": "projects/client-a/tsconfig.spec.json",
252 | "karmaConfig": "projects/client-a/karma.conf.js",
253 | "styles": [
254 | {
255 | "input": "projects/client-a/styles.css"
256 | }
257 | ],
258 | "scripts": [],
259 | "assets": [
260 | {
261 | "glob": "favicon.ico",
262 | "input": "projects/client-a/src/",
263 | "output": "/"
264 | },
265 | {
266 | "glob": "**/*",
267 | "input": "projects/client-a/src/assets",
268 | "output": "/assets"
269 | }
270 | ]
271 | }
272 | },
273 | "lint": {
274 | "builder": "@angular-devkit/build-angular:tslint",
275 | "options": {
276 | "tsConfig": [
277 | "projects/client-a/tsconfig.app.json",
278 | "projects/client-a/tsconfig.spec.json"
279 | ],
280 | "exclude": [
281 | "**/node_modules/**"
282 | ]
283 | }
284 | }
285 | }
286 | },
287 | "client-b": {
288 | "root": "projects/client-b/",
289 | "projectType": "application",
290 | "prefix": "app",
291 | "architect": {
292 | "build": {
293 | "builder": "ngx-build-plus:build",
294 | "options": {
295 | "outputPath": "dist/client-b",
296 | "index": "projects/client-b/src/index.html",
297 | "main": "projects/client-b/src/main.ts",
298 | "polyfills": "projects/client-b/src/polyfills.ts",
299 | "tsConfig": "projects/client-b/tsconfig.app.json",
300 | "assets": [
301 | {
302 | "glob": "favicon.ico",
303 | "input": "projects/client-b/src",
304 | "output": "/"
305 | },
306 | {
307 | "glob": "**/*",
308 | "input": "projects/client-b/src/assets",
309 | "output": "/assets"
310 | }
311 | ],
312 | "styles": [
313 | "projects/client-b/src/styles.css"
314 | ],
315 | "scripts": [
316 | "node_modules/rxjs/bundles/rxjs.umd.js",
317 | "node_modules/@angular/core/bundles/core.umd.js",
318 | "node_modules/@angular/common/bundles/common.umd.js",
319 | "node_modules/@angular/common/bundles/common-http.umd.js",
320 | "node_modules/@angular/compiler/bundles/compiler.umd.js",
321 | "node_modules/@angular/elements/bundles/elements.umd.js",
322 | "node_modules/@angular/platform-browser/bundles/platform-browser.umd.js",
323 | "node_modules/@angular/platform-browser-dynamic/bundles/platform-browser-dynamic.umd.js"
324 | ]
325 | },
326 | "configurations": {
327 | "production": {
328 | "fileReplacements": [
329 | {
330 | "replace": "projects/client-b/src/environments/environment.ts",
331 | "with": "projects/client-b/src/environments/environment.prod.ts"
332 | }
333 | ],
334 | "optimization": true,
335 | "outputHashing": "all",
336 | "sourceMap": false,
337 | "extractCss": true,
338 | "namedChunks": false,
339 | "aot": true,
340 | "extractLicenses": true,
341 | "vendorChunk": false,
342 | "buildOptimizer": true
343 | }
344 | }
345 | },
346 | "serve": {
347 | "builder": "ngx-build-plus:dev-server",
348 | "options": {
349 | "browserTarget": "client-b:build"
350 | },
351 | "configurations": {
352 | "production": {
353 | "browserTarget": "client-b:build:production"
354 | }
355 | }
356 | },
357 | "extract-i18n": {
358 | "builder": "@angular-devkit/build-angular:extract-i18n",
359 | "options": {
360 | "browserTarget": "client-b:build"
361 | }
362 | },
363 | "test": {
364 | "builder": "@angular-devkit/build-angular:karma",
365 | "options": {
366 | "main": "projects/client-b/src/test.ts",
367 | "polyfills": "projects/client-b/src/polyfills.ts",
368 | "tsConfig": "projects/client-b/tsconfig.spec.json",
369 | "karmaConfig": "projects/client-b/karma.conf.js",
370 | "styles": [
371 | {
372 | "input": "projects/client-b/styles.css"
373 | }
374 | ],
375 | "scripts": [],
376 | "assets": [
377 | {
378 | "glob": "favicon.ico",
379 | "input": "projects/client-b/src/",
380 | "output": "/"
381 | },
382 | {
383 | "glob": "**/*",
384 | "input": "projects/client-b/src/assets",
385 | "output": "/assets"
386 | }
387 | ]
388 | }
389 | },
390 | "lint": {
391 | "builder": "@angular-devkit/build-angular:tslint",
392 | "options": {
393 | "tsConfig": [
394 | "projects/client-b/tsconfig.app.json",
395 | "projects/client-b/tsconfig.spec.json"
396 | ],
397 | "exclude": [
398 | "**/node_modules/**"
399 | ]
400 | }
401 | }
402 | }
403 | },
404 | "client-a-e2e": {
405 | "root": "projects/client-a-e2e/",
406 | "projectType": "application",
407 | "architect": {
408 | "e2e": {
409 | "builder": "@angular-devkit/build-angular:protractor",
410 | "options": {
411 | "protractorConfig": "projects/client-a-e2e/protractor.conf.js",
412 | "devServerTarget": "client-a:serve"
413 | }
414 | },
415 | "lint": {
416 | "builder": "@angular-devkit/build-angular:tslint",
417 | "options": {
418 | "tsConfig": "projects/client-a-e2e/tsconfig.e2e.json",
419 | "exclude": [
420 | "**/node_modules/**"
421 | ]
422 | }
423 | }
424 | }
425 | }
426 | },
427 | "defaultProject": "shell",
428 | "schematics": {
429 | "@schematics/angular:component": {
430 | "style": "css"
431 | }
432 | }
433 | }
--------------------------------------------------------------------------------
/browserslist:
--------------------------------------------------------------------------------
1 | > 0.5%
2 | last 2 versions
3 | Firefox ESR
4 | not dead
5 | IE 9-11
--------------------------------------------------------------------------------
/deploy.js:
--------------------------------------------------------------------------------
1 | const cpr = require('cpr');
2 |
3 | cpr('dist/client-a/main.js', 'src/assets/micro-frontends/client-a/main.js', { overwrite: true });
4 | cpr('dist/client-b/main.js', 'src/assets/micro-frontends/client-b/main.js', { overwrite: true });
5 |
6 |
--------------------------------------------------------------------------------
/e2e/protractor.conf.js:
--------------------------------------------------------------------------------
1 | // Protractor configuration file, see link for more information
2 | // https://github.com/angular/protractor/blob/master/lib/config.ts
3 |
4 | const { SpecReporter } = require('jasmine-spec-reporter');
5 |
6 | exports.config = {
7 | allScriptsTimeout: 11000,
8 | specs: [
9 | './src/**/*.e2e-spec.ts'
10 | ],
11 | capabilities: {
12 | 'browserName': 'chrome'
13 | },
14 | directConnect: true,
15 | baseUrl: 'http://localhost:4200/',
16 | framework: 'jasmine',
17 | jasmineNodeOpts: {
18 | showColors: true,
19 | defaultTimeoutInterval: 30000,
20 | print: function() {}
21 | },
22 | onPrepare() {
23 | require('ts-node').register({
24 | project: require('path').join(__dirname, './tsconfig.e2e.json')
25 | });
26 | jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
27 | }
28 | };
--------------------------------------------------------------------------------
/e2e/src/app.e2e-spec.ts:
--------------------------------------------------------------------------------
1 | import { AppPage } from './app.po';
2 |
3 | describe('workspace-project App', () => {
4 | let page: AppPage;
5 |
6 | beforeEach(() => {
7 | page = new AppPage();
8 | });
9 |
10 | it('should display welcome message', () => {
11 | page.navigateTo();
12 | expect(page.getParagraphText()).toEqual('Welcome to app!');
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/e2e/src/app.po.ts:
--------------------------------------------------------------------------------
1 | import { browser, by, element } from 'protractor';
2 |
3 | export class AppPage {
4 | navigateTo() {
5 | return browser.get('/');
6 | }
7 |
8 | getParagraphText() {
9 | return element(by.css('app-root h1')).getText();
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/e2e/tsconfig.e2e.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "module": "commonjs",
6 | "target": "es5",
7 | "types": [
8 | "jasmine",
9 | "jasminewd2",
10 | "node"
11 | ]
12 | }
13 | }
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shell",
3 | "version": "0.0.0",
4 | "license": "MIT",
5 | "scripts": {
6 | "ng": "ng",
7 | "start": "ng serve -o",
8 | "postinstall:bak": "ngcc",
9 | "postinstall": "ngcc",
10 | "build:client-a:externals": "ng build --extra-webpack-config projects/client-a//webpack.externals.js --prod --project client-a --single-bundle",
11 | "build:client-b:externals": "ng build --extra-webpack-config projects/client-b//webpack.externals.js --prod --project client-b --single-bundle",
12 | "build:externals": "ng build --extra-webpack-config webpack.externals.js --prod --single-bundle",
13 | "build:shell:externals": "ng build --extra-webpack-config webpack.externals.js --prod --project shell --single-bundle",
14 | "build:all": "npm run build:client-a:externals -- --output-hashing none && npm run build:client-b:externals -- --output-hashing none && node deploy.js"
15 | },
16 | "private": true,
17 | "dependencies": {
18 | "@angular/animations": "~9.0.1",
19 | "@angular/common": "~9.0.1",
20 | "@angular/compiler": "~9.0.1",
21 | "@angular/core": "~9.0.1",
22 | "@angular/elements": "~9.0.1",
23 | "@angular/forms": "~9.0.1",
24 | "@angular/platform-browser": "~9.0.1",
25 | "@angular/platform-browser-dynamic": "~9.0.1",
26 | "@angular/router": "~9.0.1",
27 | "@webcomponents/custom-elements": "^1.1.0",
28 | "@webcomponents/webcomponentsjs": "^2.2.10",
29 | "bootstrap": "^3.3.7",
30 | "copy": "^0.3.2",
31 | "core-js": "^2.5.4",
32 | "ngx-build-plus": "^9.0.6",
33 | "rxjs": "6.5.4",
34 | "tslib": "^1.10.0",
35 | "zone.js": "~0.10.2"
36 | },
37 | "devDependencies": {
38 | "@angular-devkit/architect": "^0.900.2",
39 | "@angular-devkit/build-angular": "~0.900.2",
40 | "@angular/cli": "^9.0.2",
41 | "@angular/compiler-cli": "~9.0.1",
42 | "@angular/language-service": "~9.0.1",
43 | "@types/jasmine": "~2.8.6",
44 | "@types/jasminewd2": "~2.0.3",
45 | "@types/node": "^12.11.1",
46 | "codelyzer": "^5.1.2",
47 | "cpr": "^3.0.1",
48 | "css-loader": "^0.28.11",
49 | "html-loader": "^0.5.5",
50 | "jasmine-core": "~2.99.1",
51 | "jasmine-spec-reporter": "~4.2.1",
52 | "karma": "~1.7.1",
53 | "karma-chrome-launcher": "~2.2.0",
54 | "karma-coverage-istanbul-reporter": "~1.4.2",
55 | "karma-jasmine": "~1.1.1",
56 | "karma-jasmine-html-reporter": "^0.2.2",
57 | "live-server": "^1.2.0",
58 | "protractor": "~5.3.0",
59 | "ts-node": "~5.0.1",
60 | "tslint": "~5.9.1",
61 | "typescript": "~3.7.5",
62 | "webpack-cli": "^2.0.14"
63 | }
64 | }
--------------------------------------------------------------------------------
/projects/client-a/browserslist:
--------------------------------------------------------------------------------
1 | > 0.5%
2 | last 2 versions
3 | Firefox ESR
4 | not dead
5 | IE 9-11
--------------------------------------------------------------------------------
/projects/client-a/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, 'coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
--------------------------------------------------------------------------------
/projects/client-a/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | body { font-size: 14px; }
--------------------------------------------------------------------------------
/projects/client-a/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, } from '@angular/core';
2 | import { Subject } from 'rxjs';
3 | import { SysEvent } from 'src/app/shell/sys-event';
4 |
5 | @Component({
6 | selector: 'client-a',
7 | template: `
8 |
16 | `,
17 | styles: [`#client-a { border: darkred dashed 5px; padding: 10px }`]
18 | })
19 | export class AppComponent implements OnInit {
20 | ngOnInit() {
21 |
22 | const serviceBus = window['_serviceBus'] as Subject;
23 | serviceBus.next({
24 | type: 'init',
25 | args: 'client-a'
26 | });
27 |
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule, Injector, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3 |
4 | import { AppComponent } from './app.component';
5 | import { createCustomElement } from '@angular/elements';
6 | import { Page1Component } from './page1/page1.component';
7 | import { Page2Component } from './page2/page2.component';
8 |
9 | import { RouterModule } from '@angular/router';
10 | import { ClientAWidgetComponent } from './client-a-widget/client-a-widget.component';
11 | import { ReactiveFormsModule } from '@angular/forms';
12 | import { ErrorComponent } from './error/error.component';
13 |
14 | @NgModule({
15 | imports: [
16 | BrowserModule,
17 | RouterModule.forRoot([
18 | { path: '', pathMatch: 'full', redirectTo: 'client-a/page1'},
19 | {
20 | path: 'client-a', children: [
21 | { path: 'page1', component: Page1Component },
22 | { path: 'page2', component: Page2Component },
23 | ]
24 | },
25 | { path: '**', component: ErrorComponent }
26 | ], { useHash: true }),
27 | ReactiveFormsModule
28 | ],
29 | declarations: [
30 | AppComponent,
31 | Page1Component,
32 | Page2Component,
33 | ErrorComponent,
34 | ClientAWidgetComponent
35 | ],
36 | providers: [],
37 | bootstrap: [AppComponent],
38 | schemas: [CUSTOM_ELEMENTS_SCHEMA],
39 | entryComponents: [
40 | ClientAWidgetComponent
41 | ]
42 | })
43 | export class AppModule {
44 |
45 | constructor(private injector: Injector) {
46 | const widgetElement = createCustomElement(ClientAWidgetComponent, { injector: this.injector})
47 | customElements.define('client-a-widget', widgetElement);
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/client-a-widget/client-a-widget.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { ViewEncapsulation, OnInit } from '@angular/core';
3 | import { FormControl } from '@angular/forms';
4 | import { Observable } from 'rxjs';
5 |
6 | @Component({
7 | //selector: 'client-a-widget',
8 | template: `
9 |
38 |
39 |
40 | `,
41 | styles: [`
42 | #widget { padding:10px; border: 2px darkred dashed }
43 | `],
44 | encapsulation: ViewEncapsulation.Emulated
45 | })
46 | export class ClientAWidgetComponent implements OnInit {
47 | control = new FormControl();
48 | value$: Observable;
49 |
50 | ngOnInit(): void {
51 | this.control.valueChanges.subscribe(x => console.debug(x));
52 | this.value$ = this.control.valueChanges;
53 | }
54 |
55 | clickMe(): void {
56 | console.debug('ouch!');
57 | }
58 | }
59 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/error/error.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/projects/client-a/src/app/error/error.component.css
--------------------------------------------------------------------------------
/projects/client-a/src/app/error/error.component.html:
--------------------------------------------------------------------------------
1 |
2 | error works!
3 |
4 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/error/error.component.spec.ts:
--------------------------------------------------------------------------------
1 | /* tslint:disable:no-unused-variable */
2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 | import { By } from '@angular/platform-browser';
4 | import { DebugElement } from '@angular/core';
5 |
6 | import { ErrorComponent } from './error.component';
7 |
8 | describe('ErrorComponent', () => {
9 | let component: ErrorComponent;
10 | let fixture: ComponentFixture;
11 |
12 | beforeEach(async(() => {
13 | TestBed.configureTestingModule({
14 | declarations: [ ErrorComponent ]
15 | })
16 | .compileComponents();
17 | }));
18 |
19 | beforeEach(() => {
20 | fixture = TestBed.createComponent(ErrorComponent);
21 | component = fixture.componentInstance;
22 | fixture.detectChanges();
23 | });
24 |
25 | it('should create', () => {
26 | expect(component).toBeTruthy();
27 | });
28 | });
29 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/error/error.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-error',
5 | templateUrl: './error.component.html',
6 | styleUrls: ['./error.component.css']
7 | })
8 | export class ErrorComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/page1/page1.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 | import { FormControl } from '@angular/forms';
3 | import { Router } from '@angular/router';
4 |
5 | @Component({
6 | template: `
7 |
8 |
9 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
27 |
28 |
29 |
30 |
31 |
32 | `
33 | })
34 | export class Page1Component {
35 |
36 | constructor(private router: Router) {
37 | }
38 |
39 | control = new FormControl();
40 |
41 | search() {
42 | this.router.navigate(['.'], { queryParamsHandling: 'merge', queryParams: { id: 17 }});
43 | }
44 |
45 |
46 | }
47 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/page2/page2.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | template: `
5 |
39 | `
40 | })
41 | export class Page2Component {
42 | }
43 |
--------------------------------------------------------------------------------
/projects/client-a/src/app/sys-event.ts:
--------------------------------------------------------------------------------
1 |
2 | export interface SysEvent {
3 | type: string;
4 | args: any;
5 | }
--------------------------------------------------------------------------------
/projects/client-a/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | standalone: false
4 | };
5 |
--------------------------------------------------------------------------------
/projects/client-a/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false,
8 | standalone: true
9 | };
10 |
11 | /*
12 | * In development mode, to ignore zone related error stack frames such as
13 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
14 | * import the following file, but please comment it out in production mode
15 | * because it will have performance impact when throw error
16 | */
17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
18 |
--------------------------------------------------------------------------------
/projects/client-a/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/projects/client-a/src/favicon.ico
--------------------------------------------------------------------------------
/projects/client-a/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ClientA
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/projects/client-a/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | // Let the host app decide about prod mode
9 | // enableProdMode();
10 | }
11 |
12 | platformBrowserDynamic().bootstrapModule(AppModule)
13 | .catch(err => console.log(err));
14 |
--------------------------------------------------------------------------------
/projects/client-a/src/polyfills.ts:
--------------------------------------------------------------------------------
1 | /***************************************************************************************************
2 | * Zone JS is required by default for Angular itself.
3 | */
4 | import 'zone.js/dist/zone'; // Included with Angular CLI.
5 |
6 |
--------------------------------------------------------------------------------
/projects/client-a/src/polyfills.ts.bak:
--------------------------------------------------------------------------------
1 | /**
2 | * This file includes polyfills needed by Angular and is loaded before the app.
3 | * You can add your own extra polyfills to this file.
4 | *
5 | * This file is divided into 2 sections:
6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
8 | * file.
9 | *
10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13 | *
14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
15 | */
16 |
17 | /***************************************************************************************************
18 | * BROWSER POLYFILLS
19 | */
20 |
21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/
22 | import 'core-js/es6/symbol';
23 | import 'core-js/es6/object';
24 | import 'core-js/es6/function';
25 | import 'core-js/es6/parse-int';
26 | import 'core-js/es6/parse-float';
27 | import 'core-js/es6/number';
28 | import 'core-js/es6/math';
29 | import 'core-js/es6/string';
30 | import 'core-js/es6/date';
31 | import 'core-js/es6/array';
32 | import 'core-js/es6/regexp';
33 | import 'core-js/es6/map';
34 | import 'core-js/es6/weak-map';
35 | import 'core-js/es6/set';
36 |
37 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */
38 | // import 'classlist.js'; // Run `npm install --save classlist.js`.
39 |
40 | /** IE10 and IE11 requires the following for the Reflect API. */
41 | import 'core-js/es6/reflect';
42 |
43 |
44 | /** Evergreen browsers require these. **/
45 | // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
46 | import 'core-js/es7/reflect';
47 |
48 |
49 | /**
50 | * Required to support Web Animations `@angular/platform-browser/animations`.
51 | * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
52 | **/
53 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
54 |
55 | /**
56 | * By default, zone.js will patch all possible macroTask and DomEvents
57 | * user can disable parts of macroTask/DomEvents patch by setting following flags
58 | */
59 |
60 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
61 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
62 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
63 |
64 | /*
65 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
66 | * with the following flag, it will bypass `zone.js` patch for IE/Edge
67 | */
68 | // (window as any).__Zone_enable_cross_context_check = true;
69 |
70 | /***************************************************************************************************
71 | * Zone JS is required by default for Angular itself.
72 | */
73 | import 'zone.js/dist/zone'; // Included with Angular CLI.
74 |
75 |
76 |
77 | // IE
78 | import '@webcomponents/custom-elements/custom-elements.min';
79 |
80 |
81 |
--------------------------------------------------------------------------------
/projects/client-a/src/styles.css:
--------------------------------------------------------------------------------
1 | @import url('bootstrap/dist/css/bootstrap.css');
2 |
3 | /* You can add global styles to this file, and also import other style files */
4 | body { font-size: 14px; }
5 |
6 |
--------------------------------------------------------------------------------
/projects/client-a/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/projects/client-a/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/app",
5 | "module": "es2015",
6 | "target": "es5",
7 | "types": []
8 | },
9 | "exclude": [
10 | "src/test.ts",
11 | "**/*.spec.ts"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/projects/client-a/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts",
12 | "src/polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/projects/client-a/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/projects/client-a/webpack.externals.js:
--------------------------------------------------------------------------------
1 | const webpack = require('webpack');
2 |
3 | module.exports = {
4 | "externals": {
5 | "rxjs": "rxjs",
6 | "@angular/core": "ng.core",
7 | "@angular/common": "ng.common",
8 | "@angular/common/http": "ng.common.http",
9 | "@angular/platform-browser": "ng.platformBrowser",
10 | "@angular/platform-browser-dynamic": "ng.platformBrowserDynamic",
11 | "@angular/compiler": "ng.compiler",
12 | "@angular/elements": "ng.elements",
13 |
14 | // Uncomment and add to scripts in angular.json if needed
15 | // "@angular/router": "ng.router",
16 | // "@angular/forms": "ng.forms"
17 | }
18 | }
--------------------------------------------------------------------------------
/projects/client-b/browserslist:
--------------------------------------------------------------------------------
1 | > 0.5%
2 | last 2 versions
3 | Firefox ESR
4 | not dead
5 | IE 9-11
--------------------------------------------------------------------------------
/projects/client-b/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, 'coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
--------------------------------------------------------------------------------
/projects/client-b/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { ActivatedRoute } from '@angular/router';
3 | import { Subject } from 'rxjs';
4 | import { SysEvent } from './sys-event';
5 |
6 | @Component({
7 | selector: 'client-b',
8 | template: `
9 |
17 | `,
18 | styles: [`
19 | #client-b { border: navy dashed 5px; padding: 10px }
20 | `],
21 | })
22 | export class AppComponent {
23 | constructor(private route: ActivatedRoute) {
24 |
25 | route.queryParams.subscribe(params => {
26 | console.debug('params', params);
27 | });
28 |
29 | const serviceBus = window['_serviceBus'] as Subject;
30 | serviceBus.next({
31 | type: 'init',
32 | args: 'client-a'
33 | });
34 |
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/projects/client-b/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { BrowserModule } from '@angular/platform-browser';
2 | import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
3 |
4 | import { AppComponent } from './app.component';
5 | import { Page1Component } from './page1/page1.component';
6 | import { Page2Component } from './page2/page2.component';
7 |
8 | import { RouterModule } from '@angular/router';
9 | import { EmptyComponent } from './empty/empty.component';
10 | import { ReactiveFormsModule } from '@angular/forms';
11 |
12 | @NgModule({
13 | imports: [
14 | BrowserModule,
15 | RouterModule.forRoot([
16 | { path: '', pathMatch: 'full', redirectTo: 'client-b/page1'},
17 | { path: 'client-b', children: [
18 | { path: 'page1', component: Page1Component },
19 | { path: 'page2', component: Page2Component },
20 | ]},
21 | { path: '**', component: EmptyComponent }
22 | ], { useHash: true }),
23 | ReactiveFormsModule
24 | ],
25 | declarations: [
26 | AppComponent,
27 | Page1Component,
28 | Page2Component,
29 | EmptyComponent
30 | ],
31 | schemas: [CUSTOM_ELEMENTS_SCHEMA],
32 | providers: [],
33 | bootstrap: [AppComponent],
34 | entryComponents: [
35 | ]
36 | })
37 | export class AppModule {
38 | }
39 |
--------------------------------------------------------------------------------
/projects/client-b/src/app/empty/empty.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | template: ''
5 | })
6 | export class EmptyComponent {
7 | }
8 |
--------------------------------------------------------------------------------
/projects/client-b/src/app/page1/page1.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | template: `
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
30 |
31 |
32 |
33 |
34 |
35 | `
36 | })
37 | export class Page1Component {
38 | }
39 |
--------------------------------------------------------------------------------
/projects/client-b/src/app/page2/page2.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | template: `
5 |
6 |
7 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
46 |
47 |
48 |
49 | `
50 | })
51 | export class Page2Component {
52 | }
53 |
--------------------------------------------------------------------------------
/projects/client-b/src/app/sys-event.ts:
--------------------------------------------------------------------------------
1 |
2 | export interface SysEvent {
3 | type: string;
4 | args: any;
5 | }
--------------------------------------------------------------------------------
/projects/client-b/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true,
3 | standalone: false
4 | };
5 |
--------------------------------------------------------------------------------
/projects/client-b/src/environments/environment.standalone.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false,
8 | standalone: true
9 | };
10 |
11 | /*
12 | * In development mode, to ignore zone related error stack frames such as
13 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
14 | * import the following file, but please comment it out in production mode
15 | * because it will have performance impact when throw error
16 | */
17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
18 |
--------------------------------------------------------------------------------
/projects/client-b/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false,
8 | standalone: true
9 | };
10 |
11 | /*
12 | * In development mode, to ignore zone related error stack frames such as
13 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
14 | * import the following file, but please comment it out in production mode
15 | * because it will have performance impact when throw error
16 | */
17 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
18 |
--------------------------------------------------------------------------------
/projects/client-b/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/projects/client-b/src/favicon.ico
--------------------------------------------------------------------------------
/projects/client-b/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | ClientB
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/projects/client-b/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | // Let the host app decide about prod mode
9 | // enableProdMode();
10 | }
11 |
12 | platformBrowserDynamic().bootstrapModule(AppModule)
13 | .catch(err => console.log(err));
14 |
--------------------------------------------------------------------------------
/projects/client-b/src/polyfills.ts:
--------------------------------------------------------------------------------
1 | /***************************************************************************************************
2 | * Zone JS is required by default for Angular itself.
3 | */
4 | import 'zone.js/dist/zone'; // Included with Angular CLI.
5 |
6 |
--------------------------------------------------------------------------------
/projects/client-b/src/polyfills.ts.bak:
--------------------------------------------------------------------------------
1 | /**
2 | * This file includes polyfills needed by Angular and is loaded before the app.
3 | * You can add your own extra polyfills to this file.
4 | *
5 | * This file is divided into 2 sections:
6 | * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
7 | * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
8 | * file.
9 | *
10 | * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
11 | * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
12 | * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
13 | *
14 | * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
15 | */
16 |
17 | /***************************************************************************************************
18 | * BROWSER POLYFILLS
19 | */
20 |
21 | /** IE9, IE10 and IE11 requires all of the following polyfills. **/
22 | import 'core-js/es6/symbol';
23 | import 'core-js/es6/object';
24 | import 'core-js/es6/function';
25 | import 'core-js/es6/parse-int';
26 | import 'core-js/es6/parse-float';
27 | import 'core-js/es6/number';
28 | import 'core-js/es6/math';
29 | import 'core-js/es6/string';
30 | import 'core-js/es6/date';
31 | import 'core-js/es6/array';
32 | import 'core-js/es6/regexp';
33 | import 'core-js/es6/map';
34 | import 'core-js/es6/weak-map';
35 | import 'core-js/es6/set';
36 |
37 | /** IE10 and IE11 requires the following for NgClass support on SVG elements */
38 | // import 'classlist.js'; // Run `npm install --save classlist.js`.
39 |
40 | /** IE10 and IE11 requires the following for the Reflect API. */
41 | import 'core-js/es6/reflect';
42 |
43 |
44 | /** Evergreen browsers require these. **/
45 | // Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
46 | import 'core-js/es7/reflect';
47 |
48 |
49 | /**
50 | * Required to support Web Animations `@angular/platform-browser/animations`.
51 | * Needed for: All but Chrome, Firefox and Opera. http://caniuse.com/#feat=web-animation
52 | **/
53 | // import 'web-animations-js'; // Run `npm install --save web-animations-js`.
54 |
55 | /**
56 | * By default, zone.js will patch all possible macroTask and DomEvents
57 | * user can disable parts of macroTask/DomEvents patch by setting following flags
58 | */
59 |
60 | // (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
61 | // (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
62 | // (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
63 |
64 | /*
65 | * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
66 | * with the following flag, it will bypass `zone.js` patch for IE/Edge
67 | */
68 | // (window as any).__Zone_enable_cross_context_check = true;
69 |
70 | /***************************************************************************************************
71 | * Zone JS is required by default for Angular itself.
72 | */
73 | import 'zone.js/dist/zone'; // Included with Angular CLI.
74 |
75 |
76 |
77 | // IE
78 | //import '@webcomponents/custom-elements/custom-elements.min';
79 |
80 |
81 |
--------------------------------------------------------------------------------
/projects/client-b/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 | @import url('bootstrap/dist/css/bootstrap.css');
--------------------------------------------------------------------------------
/projects/client-b/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/projects/client-b/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/app",
5 | "module": "es2015",
6 | "target": "es5",
7 | "types": []
8 | },
9 | "exclude": [
10 | "src/test.ts",
11 | "**/*.spec.ts"
12 | ]
13 | }
14 |
--------------------------------------------------------------------------------
/projects/client-b/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "src/test.ts",
12 | "src/polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/projects/client-b/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/projects/client-b/webpack.externals.js:
--------------------------------------------------------------------------------
1 | const webpack = require('webpack');
2 |
3 | module.exports = {
4 | "externals": {
5 | "rxjs": "rxjs",
6 | "@angular/core": "ng.core",
7 | "@angular/common": "ng.common",
8 | "@angular/common/http": "ng.common.http",
9 | "@angular/platform-browser": "ng.platformBrowser",
10 | "@angular/platform-browser-dynamic": "ng.platformBrowserDynamic",
11 | "@angular/compiler": "ng.compiler",
12 | "@angular/elements": "ng.elements",
13 |
14 | // Uncomment and add to scripts in angular.json if needed
15 | // "@angular/router": "ng.router",
16 | // "@angular/forms": "ng.forms"
17 | }
18 | }
--------------------------------------------------------------------------------
/src/app/app.component.css:
--------------------------------------------------------------------------------
1 | #nav {
2 | color: black;
3 | font-family: Arial, Helvetica, sans-serif;
4 | border-bottom: 1px black solid;
5 | margin-bottom: 20px;
6 | }
7 |
8 | a, a:visited, a:active {
9 | color: black;
10 | text-decoration: none;
11 | }
12 |
13 | a:hover {
14 | color: black;
15 | text-decoration: underline;
16 | }
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/src/app/app.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { SimpleShellService } from './shell/simple.shell.service';
3 |
4 | @Component({
5 | selector: 'app-root',
6 | templateUrl: './app.component.html',
7 | styleUrls: ['./app.component.css']
8 | })
9 | export class AppComponent {
10 |
11 | constructor(private shellService: SimpleShellService) {
12 | }
13 |
14 | ngOnInit() {
15 | this.shellService.init();
16 | }
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/src/app/app.module.ts:
--------------------------------------------------------------------------------
1 | import { NavbarComponent } from './navbar/navbar.component';
2 | import { BrowserModule } from '@angular/platform-browser';
3 | import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
4 |
5 | import { AppComponent } from './app.component';
6 | import { SidebarComponent } from './sidebar/sidebar.component';
7 | import { RouterModule } from '@angular/router';
8 | import { EmptyComponent } from './empty/empty.component';
9 |
10 | @NgModule({
11 | declarations: [
12 | AppComponent,
13 | SidebarComponent,
14 | NavbarComponent,
15 | EmptyComponent
16 | ],
17 | imports: [
18 | BrowserModule,
19 | // RouterModule.forRoot([
20 | // { path: '', pathMatch: 'full', redirectTo: 'home'},
21 | // {
22 | // path: '**',
23 | // component: EmptyComponent
24 | // }
25 | // ], { useHash: true })
26 | ],
27 | schemas: [
28 | CUSTOM_ELEMENTS_SCHEMA
29 | ],
30 | providers: [],
31 | bootstrap: [
32 | AppComponent
33 | ]
34 | })
35 | export class AppModule { }
36 |
--------------------------------------------------------------------------------
/src/app/empty/empty.component.css:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/app/empty/empty.component.css
--------------------------------------------------------------------------------
/src/app/empty/empty.component.html:
--------------------------------------------------------------------------------
1 |
2 | empty works!
3 |
4 |
--------------------------------------------------------------------------------
/src/app/empty/empty.component.spec.ts:
--------------------------------------------------------------------------------
1 | /* tslint:disable:no-unused-variable */
2 | import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 | import { By } from '@angular/platform-browser';
4 | import { DebugElement } from '@angular/core';
5 |
6 | import { EmptyComponent } from './empty.component';
7 |
8 | describe('EmptyComponent', () => {
9 | let component: EmptyComponent;
10 | let fixture: ComponentFixture;
11 |
12 | beforeEach(async(() => {
13 | TestBed.configureTestingModule({
14 | declarations: [ EmptyComponent ]
15 | })
16 | .compileComponents();
17 | }));
18 |
19 | beforeEach(() => {
20 | fixture = TestBed.createComponent(EmptyComponent);
21 | component = fixture.componentInstance;
22 | fixture.detectChanges();
23 | });
24 |
25 | it('should create', () => {
26 | expect(component).toBeTruthy();
27 | });
28 | });
29 |
--------------------------------------------------------------------------------
/src/app/empty/empty.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit } from '@angular/core';
2 |
3 | @Component({
4 | selector: 'app-empty',
5 | templateUrl: './empty.component.html',
6 | styleUrls: ['./empty.component.css']
7 | })
8 | export class EmptyComponent implements OnInit {
9 |
10 | constructor() { }
11 |
12 | ngOnInit() {
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/app/navbar/navbar.component.html:
--------------------------------------------------------------------------------
1 |
46 |
--------------------------------------------------------------------------------
/src/app/navbar/navbar.component.ts:
--------------------------------------------------------------------------------
1 | import { Component, OnInit, ViewChild, ElementRef, Renderer2 } from '@angular/core';
2 | import { Router, ActivatedRoute } from '@angular/router';
3 | import { Location, LocationStrategy, PathLocationStrategy } from '@angular/common';
4 |
5 | @Component({
6 | selector: 'navbar-cmp',
7 | templateUrl: 'navbar.component.html'
8 | })
9 | export class NavbarComponent {
10 |
11 | private sidebarVisible: boolean = false;
12 |
13 | sidebarToggle(){
14 | var body = document.getElementsByTagName('body')[0];
15 |
16 | if(this.sidebarVisible == false){
17 | body.classList.add('nav-open');
18 | this.sidebarVisible = true;
19 | } else {
20 | this.sidebarVisible = false;
21 | body.classList.remove('nav-open');
22 | }
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/app/shell/advanced.shell.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { ClientConfigs, ShellConfig } from './config';
3 |
4 | @Injectable({
5 | providedIn: 'root'
6 | })
7 | export class AdvancedShellService {
8 |
9 | constructor() { }
10 |
11 | private config: ShellConfig;
12 |
13 | init(config: ShellConfig) {
14 | this.config = config;
15 | if (!location.hash && config.initialRoute) {
16 | location.hash = config.initialRoute;
17 | }
18 | window.addEventListener("hashchange", () => this.urlChanged());
19 | setTimeout(() => this.urlChanged(), 0);
20 | if (config.preload) {
21 | this.preloadClients();
22 | }
23 | }
24 |
25 | urlChanged() {
26 |
27 | //
28 | // This assumes we are using hash-based routing (e. g. url#/client-a).
29 | // For using path-based routing (e. g. url/client-a) we need another
30 | // Strategy, b/c there is no event called when such an URL changes
31 | // Hence, we need to use cross-frontend-communication (messaging)
32 | // to denote we want to change the URL.
33 | //
34 |
35 | for (const client in this.config.clients) {
36 | const entry = this.config.clients[client];
37 | const route = '#' + entry.route;
38 | if (location.hash.startsWith(route)) {
39 | // Lazy load module if still not loaded
40 | if (!entry.loaded) {
41 | this.load(client);
42 | }
43 | else {
44 | this.showClient(client);
45 | }
46 | }
47 | else if (entry.loaded) {
48 | this.hideClient(client);
49 | }
50 | }
51 | }
52 |
53 | showClient(clientName: string) {
54 | this.setClientVisibility(clientName, true);
55 | }
56 |
57 | hideClient(clientName: string) {
58 | this.setClientVisibility(clientName, false);
59 | }
60 |
61 | setClientVisibility(clientName: string, show: boolean) {
62 | const entry = this.config.clients[clientName];
63 |
64 | if (!entry) {
65 | throw new Error(`Client ${clientName} is not configured.`);
66 | }
67 |
68 | const elms = document.getElementsByTagName(entry.element);
69 |
70 | if (elms.length === 0) {
71 | throw new Error(`Client ${clientName} is not loaded.`);
72 | }
73 |
74 | if (elms.length > 1) {
75 | throw new Error(`Client ${clientName} is loaded several times.`);
76 | }
77 |
78 | const elm = elms[0];
79 | elm['hidden'] = !show;
80 | }
81 |
82 | load(name: string): void {
83 |
84 | const configItem = this.config.clients[name];
85 |
86 | // Don't load bundle twice
87 | if (configItem.loaded) return;
88 | configItem.loaded = true;
89 |
90 | const content = document.getElementById(this.config.outletId || 'content');
91 |
92 | // Add tag for micro frontend, e. g.
93 | const element = document.createElement(configItem.element);
94 | element['hidden'] = !location.hash.startsWith('#' + configItem.route);
95 | content.appendChild(element);
96 |
97 | // Add script-tag(s) to load bundle
98 | const files = typeof configItem.src === 'string' ? [configItem.src] : configItem.src;
99 |
100 | files.forEach(src => {
101 | const script = document.createElement('script');
102 | script.src = src;
103 | content.appendChild(script);
104 | });
105 |
106 | }
107 |
108 | preloadClients() {
109 | for (const client in this.config.clients) {
110 | this.load(client);
111 | }
112 | }
113 |
114 | navigate(url: string) {
115 | const pos = location.hash.indexOf('?');
116 | const query = pos !== -1? location.hash.substr(pos): '';
117 | location.hash = url + query;
118 | }
119 |
120 |
121 | }
122 |
--------------------------------------------------------------------------------
/src/app/shell/config.ts:
--------------------------------------------------------------------------------
1 |
2 | export interface ClientConfig {
3 | loaded: boolean;
4 | src: string | string[];
5 | element: string;
6 | route: string;
7 | }
8 |
9 | export interface ClientConfigs {
10 | [name: string]: ClientConfig
11 | }
12 |
13 | export interface ShellConfig {
14 | outletId?: string;
15 | initialRoute: string;
16 | preload: boolean;
17 | clients: ClientConfigs;
18 | }
--------------------------------------------------------------------------------
/src/app/shell/simple.shell.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { Subject } from 'rxjs';
3 | import { SysEvent } from './sys-event';
4 |
5 | @Injectable({providedIn: 'root'})
6 | export class SimpleShellService {
7 |
8 | frontends: { [name: string]: HTMLElement } = {};
9 |
10 | serviceBus = new Subject();
11 |
12 | init() {
13 | this._navigate(location.hash.substr(1));
14 |
15 | this.serviceBus.subscribe(msg => {
16 | console.debug('msg', msg);
17 | })
18 |
19 | window['_serviceBus'] = this.serviceBus;
20 |
21 | this.load('client-a');
22 | this.load('client-b');
23 | }
24 |
25 | load(clientName: string) {
26 | if (this.frontends[clientName]) return;
27 |
28 | const outlet = document.getElementById('content');
29 | const bundle = `assets/micro-frontends/${clientName}/main.js`;
30 |
31 | const script = document.createElement('script') as HTMLScriptElement;
32 | script.src = bundle;
33 | document.body.appendChild(script);
34 |
35 | const rootElm = document.createElement(clientName);
36 | rootElm.hidden = true;
37 | outlet.appendChild(rootElm);
38 |
39 | this.frontends[clientName] = rootElm;
40 | }
41 |
42 | _navigate(path: string) {
43 | const segments = path.split('/');
44 | const clientName = segments.length >= 2 ? segments[1] : '';
45 | this.navigate(clientName, path);
46 | }
47 |
48 | navigate(clientName: string, path: string) {
49 |
50 | if (!this.frontends[clientName]) {
51 | this.load(clientName);
52 | }
53 |
54 | for (const fe of Object.getOwnPropertyNames(this.frontends)) {
55 | const rootElm = this.frontends[fe];
56 | rootElm.hidden = true;
57 | }
58 |
59 | this.frontends[clientName].hidden = false;
60 |
61 | location.hash = path;
62 |
63 | }
64 |
65 | }
--------------------------------------------------------------------------------
/src/app/shell/sys-event.ts:
--------------------------------------------------------------------------------
1 |
2 | export interface SysEvent {
3 | type: string;
4 | args: any;
5 | }
--------------------------------------------------------------------------------
/src/app/sidebar/sidebar.component.html:
--------------------------------------------------------------------------------
1 |
2 |
64 |
--------------------------------------------------------------------------------
/src/app/sidebar/sidebar.component.ts:
--------------------------------------------------------------------------------
1 | import { Component } from '@angular/core';
2 | import { SimpleShellService } from '../shell/simple.shell.service';
3 |
4 |
5 | @Component({
6 | selector: 'sidebar-cmp',
7 | templateUrl: 'sidebar.component.html',
8 | })
9 | export class SidebarComponent {
10 | constructor(private shellService: SimpleShellService) {
11 | }
12 |
13 | navigate(clientName: string, path: string) {
14 | this.shellService.navigate(clientName, path);
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/app/state.service.ts:
--------------------------------------------------------------------------------
1 | import { Injectable } from '@angular/core';
2 | import { Subject } from 'rxjs';
3 |
4 | @Injectable({ providedIn: 'root' })
5 | export class StateService {
6 |
7 | constructor() { }
8 |
9 | private state$ = new Subject();
10 | private clients: HTMLElement[] = [];
11 |
12 | public registerClient(client: HTMLElement) {
13 | this.clients.push(client);
14 | }
15 |
16 | public setState(state: string) {
17 | for(let client of this.clients) {
18 | client.setAttribute('state', state);
19 | }
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/assets/css/demo.css:
--------------------------------------------------------------------------------
1 | @media (min-width: 992px){
2 | .typo-line{
3 | padding-left: 140px;
4 | margin-bottom: 40px;
5 | position: relative;
6 | }
7 |
8 | .typo-line .category{
9 | transform: translateY(-50%);
10 | top: 50%;
11 | left: 0px;
12 | position: absolute;
13 | }
14 | }
15 |
16 | .icon-section {
17 | margin: 0 0 3em;
18 | clear: both;
19 | overflow: hidden;
20 | }
21 | .icon-container {
22 | width: 240px;
23 | padding: .7em 0;
24 | float: left;
25 | position: relative;
26 | text-align: left;
27 | }
28 | .icon-container [class^="ti-"],
29 | .icon-container [class*=" ti-"] {
30 | color: #000;
31 | position: absolute;
32 | margin-top: 3px;
33 | transition: .3s;
34 | font-size: 1.2em;
35 | }
36 | .icon-container:hover [class^="ti-"],
37 | .icon-container:hover [class*=" ti-"] {
38 | font-size: 2.2em;
39 | margin-top: -5px;
40 | }
41 | .icon-container:hover .icon-name {
42 | color: #000;
43 | }
44 | .icon-name {
45 | color: #aaa;
46 | margin-left: 35px;
47 | font-size: .8em;
48 | transition: .3s;
49 | }
50 | .icon-container:hover .icon-name {
51 | margin-left: 45px;
52 | }
53 |
54 | .places-buttons .btn{
55 | margin-bottom: 30px
56 | }
57 | .sidebar .nav > li.active-pro{
58 | position: absolute;
59 | width: 100%;
60 | bottom: 10px;
61 | }
62 | .sidebar .nav > li.active-pro a{
63 | background: rgba(255, 255, 255, 0.14);
64 | opacity: 1;
65 | color: #FFFFFF;
66 | }
67 |
68 | .table-upgrade td:nth-child(2),
69 | .table-upgrade td:nth-child(3){
70 | text-align: center;
71 | }
72 |
--------------------------------------------------------------------------------
/src/assets/css/paper-dashboard.css.map:
--------------------------------------------------------------------------------
1 | {
2 | "version": 3,
3 | "mappings": "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",
4 | "sources": ["../sass/paper/mixins/_chartist.scss","../sass/paper/mixins/_fixed-plugin.scss","../sass/paper/_typography.scss","../sass/paper/_variables.scss","../sass/paper/_misc.scss","../sass/paper/mixins/_vendor-prefixes.scss","../sass/paper/_sidebar-and-main-panel.scss","../sass/paper/mixins/_sidebar.scss","../sass/paper/_buttons.scss","../sass/paper/mixins/_buttons.scss","../sass/paper/mixins/_transparency.scss","../sass/paper/_inputs.scss","../sass/paper/mixins/_inputs.scss","../sass/paper/_alerts.scss","../sass/paper/_tables.scss","../sass/paper/_checkbox-radio.scss","../sass/paper/_navbars.scss","../sass/paper/mixins/_navbars.scss","../sass/paper/_footers.scss","../sass/paper/_dropdown.scss","../sass/paper/_cards.scss","../sass/paper/_chartist.scss","../sass/paper/_responsive.scss"],
5 | "names": [],
6 | "file": "paper-dashboard.css"
7 | }
8 |
--------------------------------------------------------------------------------
/src/assets/css/themify-icons.css:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'themify';
3 | src:url('../fonts/themify.eot?-fvbane');
4 | src:url('../fonts/themify.eot?#iefix-fvbane') format('embedded-opentype'),
5 | url('../fonts/themify.woff?-fvbane') format('woff'),
6 | url('../fonts/themify.ttf?-fvbane') format('truetype'),
7 | url('../fonts/themify.svg?-fvbane#themify') format('svg');
8 | font-weight: normal;
9 | font-style: normal;
10 | }
11 |
12 | [class^="ti-"], [class*=" ti-"] {
13 | font-family: 'themify';
14 | speak: none;
15 | font-style: normal;
16 | font-weight: bold;
17 | font-variant: normal;
18 | text-transform: none;
19 | line-height: 1.42857;
20 |
21 | /* Better Font Rendering =========== */
22 | -webkit-font-smoothing: antialiased;
23 | -moz-osx-font-smoothing: grayscale;
24 | }
25 |
26 | .ti-wand:before {
27 | content: "\e600";
28 | }
29 | .ti-volume:before {
30 | content: "\e601";
31 | }
32 | .ti-user:before {
33 | content: "\e602";
34 | }
35 | .ti-unlock:before {
36 | content: "\e603";
37 | }
38 | .ti-unlink:before {
39 | content: "\e604";
40 | }
41 | .ti-trash:before {
42 | content: "\e605";
43 | }
44 | .ti-thought:before {
45 | content: "\e606";
46 | }
47 | .ti-target:before {
48 | content: "\e607";
49 | }
50 | .ti-tag:before {
51 | content: "\e608";
52 | }
53 | .ti-tablet:before {
54 | content: "\e609";
55 | }
56 | .ti-star:before {
57 | content: "\e60a";
58 | }
59 | .ti-spray:before {
60 | content: "\e60b";
61 | }
62 | .ti-signal:before {
63 | content: "\e60c";
64 | }
65 | .ti-shopping-cart:before {
66 | content: "\e60d";
67 | }
68 | .ti-shopping-cart-full:before {
69 | content: "\e60e";
70 | }
71 | .ti-settings:before {
72 | content: "\e60f";
73 | }
74 | .ti-search:before {
75 | content: "\e610";
76 | }
77 | .ti-zoom-in:before {
78 | content: "\e611";
79 | }
80 | .ti-zoom-out:before {
81 | content: "\e612";
82 | }
83 | .ti-cut:before {
84 | content: "\e613";
85 | }
86 | .ti-ruler:before {
87 | content: "\e614";
88 | }
89 | .ti-ruler-pencil:before {
90 | content: "\e615";
91 | }
92 | .ti-ruler-alt:before {
93 | content: "\e616";
94 | }
95 | .ti-bookmark:before {
96 | content: "\e617";
97 | }
98 | .ti-bookmark-alt:before {
99 | content: "\e618";
100 | }
101 | .ti-reload:before {
102 | content: "\e619";
103 | }
104 | .ti-plus:before {
105 | content: "\e61a";
106 | }
107 | .ti-pin:before {
108 | content: "\e61b";
109 | }
110 | .ti-pencil:before {
111 | content: "\e61c";
112 | }
113 | .ti-pencil-alt:before {
114 | content: "\e61d";
115 | }
116 | .ti-paint-roller:before {
117 | content: "\e61e";
118 | }
119 | .ti-paint-bucket:before {
120 | content: "\e61f";
121 | }
122 | .ti-na:before {
123 | content: "\e620";
124 | }
125 | .ti-mobile:before {
126 | content: "\e621";
127 | }
128 | .ti-minus:before {
129 | content: "\e622";
130 | }
131 | .ti-medall:before {
132 | content: "\e623";
133 | }
134 | .ti-medall-alt:before {
135 | content: "\e624";
136 | }
137 | .ti-marker:before {
138 | content: "\e625";
139 | }
140 | .ti-marker-alt:before {
141 | content: "\e626";
142 | }
143 | .ti-arrow-up:before {
144 | content: "\e627";
145 | }
146 | .ti-arrow-right:before {
147 | content: "\e628";
148 | }
149 | .ti-arrow-left:before {
150 | content: "\e629";
151 | }
152 | .ti-arrow-down:before {
153 | content: "\e62a";
154 | }
155 | .ti-lock:before {
156 | content: "\e62b";
157 | }
158 | .ti-location-arrow:before {
159 | content: "\e62c";
160 | }
161 | .ti-link:before {
162 | content: "\e62d";
163 | }
164 | .ti-layout:before {
165 | content: "\e62e";
166 | }
167 | .ti-layers:before {
168 | content: "\e62f";
169 | }
170 | .ti-layers-alt:before {
171 | content: "\e630";
172 | }
173 | .ti-key:before {
174 | content: "\e631";
175 | }
176 | .ti-import:before {
177 | content: "\e632";
178 | }
179 | .ti-image:before {
180 | content: "\e633";
181 | }
182 | .ti-heart:before {
183 | content: "\e634";
184 | }
185 | .ti-heart-broken:before {
186 | content: "\e635";
187 | }
188 | .ti-hand-stop:before {
189 | content: "\e636";
190 | }
191 | .ti-hand-open:before {
192 | content: "\e637";
193 | }
194 | .ti-hand-drag:before {
195 | content: "\e638";
196 | }
197 | .ti-folder:before {
198 | content: "\e639";
199 | }
200 | .ti-flag:before {
201 | content: "\e63a";
202 | }
203 | .ti-flag-alt:before {
204 | content: "\e63b";
205 | }
206 | .ti-flag-alt-2:before {
207 | content: "\e63c";
208 | }
209 | .ti-eye:before {
210 | content: "\e63d";
211 | }
212 | .ti-export:before {
213 | content: "\e63e";
214 | }
215 | .ti-exchange-vertical:before {
216 | content: "\e63f";
217 | }
218 | .ti-desktop:before {
219 | content: "\e640";
220 | }
221 | .ti-cup:before {
222 | content: "\e641";
223 | }
224 | .ti-crown:before {
225 | content: "\e642";
226 | }
227 | .ti-comments:before {
228 | content: "\e643";
229 | }
230 | .ti-comment:before {
231 | content: "\e644";
232 | }
233 | .ti-comment-alt:before {
234 | content: "\e645";
235 | }
236 | .ti-close:before {
237 | content: "\e646";
238 | }
239 | .ti-clip:before {
240 | content: "\e647";
241 | }
242 | .ti-angle-up:before {
243 | content: "\e648";
244 | }
245 | .ti-angle-right:before {
246 | content: "\e649";
247 | }
248 | .ti-angle-left:before {
249 | content: "\e64a";
250 | }
251 | .ti-angle-down:before {
252 | content: "\e64b";
253 | }
254 | .ti-check:before {
255 | content: "\e64c";
256 | }
257 | .ti-check-box:before {
258 | content: "\e64d";
259 | }
260 | .ti-camera:before {
261 | content: "\e64e";
262 | }
263 | .ti-announcement:before {
264 | content: "\e64f";
265 | }
266 | .ti-brush:before {
267 | content: "\e650";
268 | }
269 | .ti-briefcase:before {
270 | content: "\e651";
271 | }
272 | .ti-bolt:before {
273 | content: "\e652";
274 | }
275 | .ti-bolt-alt:before {
276 | content: "\e653";
277 | }
278 | .ti-blackboard:before {
279 | content: "\e654";
280 | }
281 | .ti-bag:before {
282 | content: "\e655";
283 | }
284 | .ti-move:before {
285 | content: "\e656";
286 | }
287 | .ti-arrows-vertical:before {
288 | content: "\e657";
289 | }
290 | .ti-arrows-horizontal:before {
291 | content: "\e658";
292 | }
293 | .ti-fullscreen:before {
294 | content: "\e659";
295 | }
296 | .ti-arrow-top-right:before {
297 | content: "\e65a";
298 | }
299 | .ti-arrow-top-left:before {
300 | content: "\e65b";
301 | }
302 | .ti-arrow-circle-up:before {
303 | content: "\e65c";
304 | }
305 | .ti-arrow-circle-right:before {
306 | content: "\e65d";
307 | }
308 | .ti-arrow-circle-left:before {
309 | content: "\e65e";
310 | }
311 | .ti-arrow-circle-down:before {
312 | content: "\e65f";
313 | }
314 | .ti-angle-double-up:before {
315 | content: "\e660";
316 | }
317 | .ti-angle-double-right:before {
318 | content: "\e661";
319 | }
320 | .ti-angle-double-left:before {
321 | content: "\e662";
322 | }
323 | .ti-angle-double-down:before {
324 | content: "\e663";
325 | }
326 | .ti-zip:before {
327 | content: "\e664";
328 | }
329 | .ti-world:before {
330 | content: "\e665";
331 | }
332 | .ti-wheelchair:before {
333 | content: "\e666";
334 | }
335 | .ti-view-list:before {
336 | content: "\e667";
337 | }
338 | .ti-view-list-alt:before {
339 | content: "\e668";
340 | }
341 | .ti-view-grid:before {
342 | content: "\e669";
343 | }
344 | .ti-uppercase:before {
345 | content: "\e66a";
346 | }
347 | .ti-upload:before {
348 | content: "\e66b";
349 | }
350 | .ti-underline:before {
351 | content: "\e66c";
352 | }
353 | .ti-truck:before {
354 | content: "\e66d";
355 | }
356 | .ti-timer:before {
357 | content: "\e66e";
358 | }
359 | .ti-ticket:before {
360 | content: "\e66f";
361 | }
362 | .ti-thumb-up:before {
363 | content: "\e670";
364 | }
365 | .ti-thumb-down:before {
366 | content: "\e671";
367 | }
368 | .ti-text:before {
369 | content: "\e672";
370 | }
371 | .ti-stats-up:before {
372 | content: "\e673";
373 | }
374 | .ti-stats-down:before {
375 | content: "\e674";
376 | }
377 | .ti-split-v:before {
378 | content: "\e675";
379 | }
380 | .ti-split-h:before {
381 | content: "\e676";
382 | }
383 | .ti-smallcap:before {
384 | content: "\e677";
385 | }
386 | .ti-shine:before {
387 | content: "\e678";
388 | }
389 | .ti-shift-right:before {
390 | content: "\e679";
391 | }
392 | .ti-shift-left:before {
393 | content: "\e67a";
394 | }
395 | .ti-shield:before {
396 | content: "\e67b";
397 | }
398 | .ti-notepad:before {
399 | content: "\e67c";
400 | }
401 | .ti-server:before {
402 | content: "\e67d";
403 | }
404 | .ti-quote-right:before {
405 | content: "\e67e";
406 | }
407 | .ti-quote-left:before {
408 | content: "\e67f";
409 | }
410 | .ti-pulse:before {
411 | content: "\e680";
412 | }
413 | .ti-printer:before {
414 | content: "\e681";
415 | }
416 | .ti-power-off:before {
417 | content: "\e682";
418 | }
419 | .ti-plug:before {
420 | content: "\e683";
421 | }
422 | .ti-pie-chart:before {
423 | content: "\e684";
424 | }
425 | .ti-paragraph:before {
426 | content: "\e685";
427 | }
428 | .ti-panel:before {
429 | content: "\e686";
430 | }
431 | .ti-package:before {
432 | content: "\e687";
433 | }
434 | .ti-music:before {
435 | content: "\e688";
436 | }
437 | .ti-music-alt:before {
438 | content: "\e689";
439 | }
440 | .ti-mouse:before {
441 | content: "\e68a";
442 | }
443 | .ti-mouse-alt:before {
444 | content: "\e68b";
445 | }
446 | .ti-money:before {
447 | content: "\e68c";
448 | }
449 | .ti-microphone:before {
450 | content: "\e68d";
451 | }
452 | .ti-menu:before {
453 | content: "\e68e";
454 | }
455 | .ti-menu-alt:before {
456 | content: "\e68f";
457 | }
458 | .ti-map:before {
459 | content: "\e690";
460 | }
461 | .ti-map-alt:before {
462 | content: "\e691";
463 | }
464 | .ti-loop:before {
465 | content: "\e692";
466 | }
467 | .ti-location-pin:before {
468 | content: "\e693";
469 | }
470 | .ti-list:before {
471 | content: "\e694";
472 | }
473 | .ti-light-bulb:before {
474 | content: "\e695";
475 | }
476 | .ti-Italic:before {
477 | content: "\e696";
478 | }
479 | .ti-info:before {
480 | content: "\e697";
481 | }
482 | .ti-infinite:before {
483 | content: "\e698";
484 | }
485 | .ti-id-badge:before {
486 | content: "\e699";
487 | }
488 | .ti-hummer:before {
489 | content: "\e69a";
490 | }
491 | .ti-home:before {
492 | content: "\e69b";
493 | }
494 | .ti-help:before {
495 | content: "\e69c";
496 | }
497 | .ti-headphone:before {
498 | content: "\e69d";
499 | }
500 | .ti-harddrives:before {
501 | content: "\e69e";
502 | }
503 | .ti-harddrive:before {
504 | content: "\e69f";
505 | }
506 | .ti-gift:before {
507 | content: "\e6a0";
508 | }
509 | .ti-game:before {
510 | content: "\e6a1";
511 | }
512 | .ti-filter:before {
513 | content: "\e6a2";
514 | }
515 | .ti-files:before {
516 | content: "\e6a3";
517 | }
518 | .ti-file:before {
519 | content: "\e6a4";
520 | }
521 | .ti-eraser:before {
522 | content: "\e6a5";
523 | }
524 | .ti-envelope:before {
525 | content: "\e6a6";
526 | }
527 | .ti-download:before {
528 | content: "\e6a7";
529 | }
530 | .ti-direction:before {
531 | content: "\e6a8";
532 | }
533 | .ti-direction-alt:before {
534 | content: "\e6a9";
535 | }
536 | .ti-dashboard:before {
537 | content: "\e6aa";
538 | }
539 | .ti-control-stop:before {
540 | content: "\e6ab";
541 | }
542 | .ti-control-shuffle:before {
543 | content: "\e6ac";
544 | }
545 | .ti-control-play:before {
546 | content: "\e6ad";
547 | }
548 | .ti-control-pause:before {
549 | content: "\e6ae";
550 | }
551 | .ti-control-forward:before {
552 | content: "\e6af";
553 | }
554 | .ti-control-backward:before {
555 | content: "\e6b0";
556 | }
557 | .ti-cloud:before {
558 | content: "\e6b1";
559 | }
560 | .ti-cloud-up:before {
561 | content: "\e6b2";
562 | }
563 | .ti-cloud-down:before {
564 | content: "\e6b3";
565 | }
566 | .ti-clipboard:before {
567 | content: "\e6b4";
568 | }
569 | .ti-car:before {
570 | content: "\e6b5";
571 | }
572 | .ti-calendar:before {
573 | content: "\e6b6";
574 | }
575 | .ti-book:before {
576 | content: "\e6b7";
577 | }
578 | .ti-bell:before {
579 | content: "\e6b8";
580 | }
581 | .ti-basketball:before {
582 | content: "\e6b9";
583 | }
584 | .ti-bar-chart:before {
585 | content: "\e6ba";
586 | }
587 | .ti-bar-chart-alt:before {
588 | content: "\e6bb";
589 | }
590 | .ti-back-right:before {
591 | content: "\e6bc";
592 | }
593 | .ti-back-left:before {
594 | content: "\e6bd";
595 | }
596 | .ti-arrows-corner:before {
597 | content: "\e6be";
598 | }
599 | .ti-archive:before {
600 | content: "\e6bf";
601 | }
602 | .ti-anchor:before {
603 | content: "\e6c0";
604 | }
605 | .ti-align-right:before {
606 | content: "\e6c1";
607 | }
608 | .ti-align-left:before {
609 | content: "\e6c2";
610 | }
611 | .ti-align-justify:before {
612 | content: "\e6c3";
613 | }
614 | .ti-align-center:before {
615 | content: "\e6c4";
616 | }
617 | .ti-alert:before {
618 | content: "\e6c5";
619 | }
620 | .ti-alarm-clock:before {
621 | content: "\e6c6";
622 | }
623 | .ti-agenda:before {
624 | content: "\e6c7";
625 | }
626 | .ti-write:before {
627 | content: "\e6c8";
628 | }
629 | .ti-window:before {
630 | content: "\e6c9";
631 | }
632 | .ti-widgetized:before {
633 | content: "\e6ca";
634 | }
635 | .ti-widget:before {
636 | content: "\e6cb";
637 | }
638 | .ti-widget-alt:before {
639 | content: "\e6cc";
640 | }
641 | .ti-wallet:before {
642 | content: "\e6cd";
643 | }
644 | .ti-video-clapper:before {
645 | content: "\e6ce";
646 | }
647 | .ti-video-camera:before {
648 | content: "\e6cf";
649 | }
650 | .ti-vector:before {
651 | content: "\e6d0";
652 | }
653 | .ti-themify-logo:before {
654 | content: "\e6d1";
655 | }
656 | .ti-themify-favicon:before {
657 | content: "\e6d2";
658 | }
659 | .ti-themify-favicon-alt:before {
660 | content: "\e6d3";
661 | }
662 | .ti-support:before {
663 | content: "\e6d4";
664 | }
665 | .ti-stamp:before {
666 | content: "\e6d5";
667 | }
668 | .ti-split-v-alt:before {
669 | content: "\e6d6";
670 | }
671 | .ti-slice:before {
672 | content: "\e6d7";
673 | }
674 | .ti-shortcode:before {
675 | content: "\e6d8";
676 | }
677 | .ti-shift-right-alt:before {
678 | content: "\e6d9";
679 | }
680 | .ti-shift-left-alt:before {
681 | content: "\e6da";
682 | }
683 | .ti-ruler-alt-2:before {
684 | content: "\e6db";
685 | }
686 | .ti-receipt:before {
687 | content: "\e6dc";
688 | }
689 | .ti-pin2:before {
690 | content: "\e6dd";
691 | }
692 | .ti-pin-alt:before {
693 | content: "\e6de";
694 | }
695 | .ti-pencil-alt2:before {
696 | content: "\e6df";
697 | }
698 | .ti-palette:before {
699 | content: "\e6e0";
700 | }
701 | .ti-more:before {
702 | content: "\e6e1";
703 | }
704 | .ti-more-alt:before {
705 | content: "\e6e2";
706 | }
707 | .ti-microphone-alt:before {
708 | content: "\e6e3";
709 | }
710 | .ti-magnet:before {
711 | content: "\e6e4";
712 | }
713 | .ti-line-double:before {
714 | content: "\e6e5";
715 | }
716 | .ti-line-dotted:before {
717 | content: "\e6e6";
718 | }
719 | .ti-line-dashed:before {
720 | content: "\e6e7";
721 | }
722 | .ti-layout-width-full:before {
723 | content: "\e6e8";
724 | }
725 | .ti-layout-width-default:before {
726 | content: "\e6e9";
727 | }
728 | .ti-layout-width-default-alt:before {
729 | content: "\e6ea";
730 | }
731 | .ti-layout-tab:before {
732 | content: "\e6eb";
733 | }
734 | .ti-layout-tab-window:before {
735 | content: "\e6ec";
736 | }
737 | .ti-layout-tab-v:before {
738 | content: "\e6ed";
739 | }
740 | .ti-layout-tab-min:before {
741 | content: "\e6ee";
742 | }
743 | .ti-layout-slider:before {
744 | content: "\e6ef";
745 | }
746 | .ti-layout-slider-alt:before {
747 | content: "\e6f0";
748 | }
749 | .ti-layout-sidebar-right:before {
750 | content: "\e6f1";
751 | }
752 | .ti-layout-sidebar-none:before {
753 | content: "\e6f2";
754 | }
755 | .ti-layout-sidebar-left:before {
756 | content: "\e6f3";
757 | }
758 | .ti-layout-placeholder:before {
759 | content: "\e6f4";
760 | }
761 | .ti-layout-menu:before {
762 | content: "\e6f5";
763 | }
764 | .ti-layout-menu-v:before {
765 | content: "\e6f6";
766 | }
767 | .ti-layout-menu-separated:before {
768 | content: "\e6f7";
769 | }
770 | .ti-layout-menu-full:before {
771 | content: "\e6f8";
772 | }
773 | .ti-layout-media-right-alt:before {
774 | content: "\e6f9";
775 | }
776 | .ti-layout-media-right:before {
777 | content: "\e6fa";
778 | }
779 | .ti-layout-media-overlay:before {
780 | content: "\e6fb";
781 | }
782 | .ti-layout-media-overlay-alt:before {
783 | content: "\e6fc";
784 | }
785 | .ti-layout-media-overlay-alt-2:before {
786 | content: "\e6fd";
787 | }
788 | .ti-layout-media-left-alt:before {
789 | content: "\e6fe";
790 | }
791 | .ti-layout-media-left:before {
792 | content: "\e6ff";
793 | }
794 | .ti-layout-media-center-alt:before {
795 | content: "\e700";
796 | }
797 | .ti-layout-media-center:before {
798 | content: "\e701";
799 | }
800 | .ti-layout-list-thumb:before {
801 | content: "\e702";
802 | }
803 | .ti-layout-list-thumb-alt:before {
804 | content: "\e703";
805 | }
806 | .ti-layout-list-post:before {
807 | content: "\e704";
808 | }
809 | .ti-layout-list-large-image:before {
810 | content: "\e705";
811 | }
812 | .ti-layout-line-solid:before {
813 | content: "\e706";
814 | }
815 | .ti-layout-grid4:before {
816 | content: "\e707";
817 | }
818 | .ti-layout-grid3:before {
819 | content: "\e708";
820 | }
821 | .ti-layout-grid2:before {
822 | content: "\e709";
823 | }
824 | .ti-layout-grid2-thumb:before {
825 | content: "\e70a";
826 | }
827 | .ti-layout-cta-right:before {
828 | content: "\e70b";
829 | }
830 | .ti-layout-cta-left:before {
831 | content: "\e70c";
832 | }
833 | .ti-layout-cta-center:before {
834 | content: "\e70d";
835 | }
836 | .ti-layout-cta-btn-right:before {
837 | content: "\e70e";
838 | }
839 | .ti-layout-cta-btn-left:before {
840 | content: "\e70f";
841 | }
842 | .ti-layout-column4:before {
843 | content: "\e710";
844 | }
845 | .ti-layout-column3:before {
846 | content: "\e711";
847 | }
848 | .ti-layout-column2:before {
849 | content: "\e712";
850 | }
851 | .ti-layout-accordion-separated:before {
852 | content: "\e713";
853 | }
854 | .ti-layout-accordion-merged:before {
855 | content: "\e714";
856 | }
857 | .ti-layout-accordion-list:before {
858 | content: "\e715";
859 | }
860 | .ti-ink-pen:before {
861 | content: "\e716";
862 | }
863 | .ti-info-alt:before {
864 | content: "\e717";
865 | }
866 | .ti-help-alt:before {
867 | content: "\e718";
868 | }
869 | .ti-headphone-alt:before {
870 | content: "\e719";
871 | }
872 | .ti-hand-point-up:before {
873 | content: "\e71a";
874 | }
875 | .ti-hand-point-right:before {
876 | content: "\e71b";
877 | }
878 | .ti-hand-point-left:before {
879 | content: "\e71c";
880 | }
881 | .ti-hand-point-down:before {
882 | content: "\e71d";
883 | }
884 | .ti-gallery:before {
885 | content: "\e71e";
886 | }
887 | .ti-face-smile:before {
888 | content: "\e71f";
889 | }
890 | .ti-face-sad:before {
891 | content: "\e720";
892 | }
893 | .ti-credit-card:before {
894 | content: "\e721";
895 | }
896 | .ti-control-skip-forward:before {
897 | content: "\e722";
898 | }
899 | .ti-control-skip-backward:before {
900 | content: "\e723";
901 | }
902 | .ti-control-record:before {
903 | content: "\e724";
904 | }
905 | .ti-control-eject:before {
906 | content: "\e725";
907 | }
908 | .ti-comments-smiley:before {
909 | content: "\e726";
910 | }
911 | .ti-brush-alt:before {
912 | content: "\e727";
913 | }
914 | .ti-youtube:before {
915 | content: "\e728";
916 | }
917 | .ti-vimeo:before {
918 | content: "\e729";
919 | }
920 | .ti-twitter:before {
921 | content: "\e72a";
922 | }
923 | .ti-time:before {
924 | content: "\e72b";
925 | }
926 | .ti-tumblr:before {
927 | content: "\e72c";
928 | }
929 | .ti-skype:before {
930 | content: "\e72d";
931 | }
932 | .ti-share:before {
933 | content: "\e72e";
934 | }
935 | .ti-share-alt:before {
936 | content: "\e72f";
937 | }
938 | .ti-rocket:before {
939 | content: "\e730";
940 | }
941 | .ti-pinterest:before {
942 | content: "\e731";
943 | }
944 | .ti-new-window:before {
945 | content: "\e732";
946 | }
947 | .ti-microsoft:before {
948 | content: "\e733";
949 | }
950 | .ti-list-ol:before {
951 | content: "\e734";
952 | }
953 | .ti-linkedin:before {
954 | content: "\e735";
955 | }
956 | .ti-layout-sidebar-2:before {
957 | content: "\e736";
958 | }
959 | .ti-layout-grid4-alt:before {
960 | content: "\e737";
961 | }
962 | .ti-layout-grid3-alt:before {
963 | content: "\e738";
964 | }
965 | .ti-layout-grid2-alt:before {
966 | content: "\e739";
967 | }
968 | .ti-layout-column4-alt:before {
969 | content: "\e73a";
970 | }
971 | .ti-layout-column3-alt:before {
972 | content: "\e73b";
973 | }
974 | .ti-layout-column2-alt:before {
975 | content: "\e73c";
976 | }
977 | .ti-instagram:before {
978 | content: "\e73d";
979 | }
980 | .ti-google:before {
981 | content: "\e73e";
982 | }
983 | .ti-github:before {
984 | content: "\e73f";
985 | }
986 | .ti-flickr:before {
987 | content: "\e740";
988 | }
989 | .ti-facebook:before {
990 | content: "\e741";
991 | }
992 | .ti-dropbox:before {
993 | content: "\e742";
994 | }
995 | .ti-dribbble:before {
996 | content: "\e743";
997 | }
998 | .ti-apple:before {
999 | content: "\e744";
1000 | }
1001 | .ti-android:before {
1002 | content: "\e745";
1003 | }
1004 | .ti-save:before {
1005 | content: "\e746";
1006 | }
1007 | .ti-save-alt:before {
1008 | content: "\e747";
1009 | }
1010 | .ti-yahoo:before {
1011 | content: "\e748";
1012 | }
1013 | .ti-wordpress:before {
1014 | content: "\e749";
1015 | }
1016 | .ti-vimeo-alt:before {
1017 | content: "\e74a";
1018 | }
1019 | .ti-twitter-alt:before {
1020 | content: "\e74b";
1021 | }
1022 | .ti-tumblr-alt:before {
1023 | content: "\e74c";
1024 | }
1025 | .ti-trello:before {
1026 | content: "\e74d";
1027 | }
1028 | .ti-stack-overflow:before {
1029 | content: "\e74e";
1030 | }
1031 | .ti-soundcloud:before {
1032 | content: "\e74f";
1033 | }
1034 | .ti-sharethis:before {
1035 | content: "\e750";
1036 | }
1037 | .ti-sharethis-alt:before {
1038 | content: "\e751";
1039 | }
1040 | .ti-reddit:before {
1041 | content: "\e752";
1042 | }
1043 | .ti-pinterest-alt:before {
1044 | content: "\e753";
1045 | }
1046 | .ti-microsoft-alt:before {
1047 | content: "\e754";
1048 | }
1049 | .ti-linux:before {
1050 | content: "\e755";
1051 | }
1052 | .ti-jsfiddle:before {
1053 | content: "\e756";
1054 | }
1055 | .ti-joomla:before {
1056 | content: "\e757";
1057 | }
1058 | .ti-html5:before {
1059 | content: "\e758";
1060 | }
1061 | .ti-flickr-alt:before {
1062 | content: "\e759";
1063 | }
1064 | .ti-email:before {
1065 | content: "\e75a";
1066 | }
1067 | .ti-drupal:before {
1068 | content: "\e75b";
1069 | }
1070 | .ti-dropbox-alt:before {
1071 | content: "\e75c";
1072 | }
1073 | .ti-css3:before {
1074 | content: "\e75d";
1075 | }
1076 | .ti-rss:before {
1077 | content: "\e75e";
1078 | }
1079 | .ti-rss-alt:before {
1080 | content: "\e75f";
1081 | }
1082 |
--------------------------------------------------------------------------------
/src/assets/fonts/themify.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/fonts/themify.eot
--------------------------------------------------------------------------------
/src/assets/fonts/themify.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/fonts/themify.ttf
--------------------------------------------------------------------------------
/src/assets/fonts/themify.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/fonts/themify.woff
--------------------------------------------------------------------------------
/src/assets/img/angular.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/angular.png
--------------------------------------------------------------------------------
/src/assets/img/angular2-logo-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/angular2-logo-white.png
--------------------------------------------------------------------------------
/src/assets/img/angular2-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/angular2-logo.png
--------------------------------------------------------------------------------
/src/assets/img/angularjs.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/angularjs.png
--------------------------------------------------------------------------------
/src/assets/img/apple-icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/apple-icon.png
--------------------------------------------------------------------------------
/src/assets/img/background.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/background.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-0.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/faces/face-0.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-1.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/faces/face-1.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-2.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/faces/face-2.jpg
--------------------------------------------------------------------------------
/src/assets/img/faces/face-3.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/faces/face-3.jpg
--------------------------------------------------------------------------------
/src/assets/img/favicon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/favicon.png
--------------------------------------------------------------------------------
/src/assets/img/new_logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/new_logo.png
--------------------------------------------------------------------------------
/src/assets/img/tim_80x80.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/assets/img/tim_80x80.png
--------------------------------------------------------------------------------
/src/environments/environment.prod.ts:
--------------------------------------------------------------------------------
1 | export const environment = {
2 | production: true
3 | };
4 |
--------------------------------------------------------------------------------
/src/environments/environment.ts:
--------------------------------------------------------------------------------
1 | // The file contents for the current environment will overwrite these during build.
2 | // The build system defaults to the dev environment which uses `environment.ts`, but if you do
3 | // `ng build --env=prod` then `environment.prod.ts` will be used instead.
4 | // The list of which env maps to which file can be found in `.angular-cli.json`.
5 |
6 | export const environment = {
7 | production: false
8 | };
9 |
10 | /*
11 | * In development mode, to ignore zone related error stack frames such as
12 | * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
13 | * import the following file, but please comment it out in production mode
14 | * because it will have performance impact when throw error
15 | */
16 | // import 'zone.js/dist/zone-error'; // Included with Angular CLI.
17 |
--------------------------------------------------------------------------------
/src/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/favicon.ico
--------------------------------------------------------------------------------
/src/img/logo.82b9c7a5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/manfredsteyer/simple-microfrontend-demo/0ed28034f11df156edef445ac02f40566cb73037/src/img/logo.82b9c7a5.png
--------------------------------------------------------------------------------
/src/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Shell
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/src/karma.conf.js:
--------------------------------------------------------------------------------
1 | // Karma configuration file, see link for more information
2 | // https://karma-runner.github.io/1.0/config/configuration-file.html
3 |
4 | module.exports = function (config) {
5 | config.set({
6 | basePath: '',
7 | frameworks: ['jasmine', '@angular-devkit/build-angular'],
8 | plugins: [
9 | require('karma-jasmine'),
10 | require('karma-chrome-launcher'),
11 | require('karma-jasmine-html-reporter'),
12 | require('karma-coverage-istanbul-reporter'),
13 | require('@angular-devkit/build-angular/plugins/karma')
14 | ],
15 | client: {
16 | clearContext: false // leave Jasmine Spec Runner output visible in browser
17 | },
18 | coverageIstanbulReporter: {
19 | dir: require('path').join(__dirname, 'coverage'),
20 | reports: ['html', 'lcovonly'],
21 | fixWebpackSourcePaths: true
22 | },
23 | reporters: ['progress', 'kjhtml'],
24 | port: 9876,
25 | colors: true,
26 | logLevel: config.LOG_INFO,
27 | autoWatch: true,
28 | browsers: ['Chrome'],
29 | singleRun: false
30 | });
31 | };
--------------------------------------------------------------------------------
/src/main.ts:
--------------------------------------------------------------------------------
1 | import { enableProdMode } from '@angular/core';
2 | import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
3 |
4 | import { AppModule } from './app/app.module';
5 | import { environment } from './environments/environment';
6 |
7 | if (environment.production) {
8 | enableProdMode();
9 | }
10 |
11 | platformBrowserDynamic().bootstrapModule(AppModule)
12 | .catch(err => console.log(err));
13 |
--------------------------------------------------------------------------------
/src/polyfills.ts:
--------------------------------------------------------------------------------
1 | /***************************************************************************************************
2 | * Zone JS is required by default for Angular itself.
3 | */
4 | import 'zone.js/dist/zone'; // Included with Angular CLI.
--------------------------------------------------------------------------------
/src/styles.css:
--------------------------------------------------------------------------------
1 | /* You can add global styles to this file, and also import other style files */
2 |
--------------------------------------------------------------------------------
/src/test.ts:
--------------------------------------------------------------------------------
1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files
2 |
3 | import 'zone.js/dist/zone-testing';
4 | import { getTestBed } from '@angular/core/testing';
5 | import {
6 | BrowserDynamicTestingModule,
7 | platformBrowserDynamicTesting
8 | } from '@angular/platform-browser-dynamic/testing';
9 |
10 | declare const require: any;
11 |
12 | // First, initialize the Angular testing environment.
13 | getTestBed().initTestEnvironment(
14 | BrowserDynamicTestingModule,
15 | platformBrowserDynamicTesting()
16 | );
17 | // Then we find all the tests.
18 | const context = require.context('./', true, /\.spec\.ts$/);
19 | // And load the modules.
20 | context.keys().map(context);
21 |
--------------------------------------------------------------------------------
/src/tsconfig.app.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/app",
5 | "types": []
6 | },
7 | "exclude": [
8 | "src/test.ts",
9 | "**/*.spec.ts"
10 | ]
11 | }
12 |
--------------------------------------------------------------------------------
/src/tsconfig.spec.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tsconfig.json",
3 | "compilerOptions": {
4 | "outDir": "../out-tsc/spec",
5 | "types": [
6 | "jasmine",
7 | "node"
8 | ]
9 | },
10 | "files": [
11 | "test.ts",
12 | "polyfills.ts"
13 | ],
14 | "include": [
15 | "**/*.spec.ts",
16 | "**/*.d.ts"
17 | ]
18 | }
19 |
--------------------------------------------------------------------------------
/src/tslint.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../tslint.json",
3 | "rules": {
4 | "directive-selector": [
5 | true,
6 | "attribute",
7 | "app",
8 | "camelCase"
9 | ],
10 | "component-selector": [
11 | true,
12 | "element",
13 | "app",
14 | "kebab-case"
15 | ]
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compileOnSave": false,
3 | "compilerOptions": {
4 | "baseUrl": "./",
5 | "downlevelIteration": true,
6 | "importHelpers": true,
7 | "outDir": "./dist/out-tsc",
8 | "sourceMap": true,
9 | "declaration": false,
10 | "moduleResolution": "node",
11 | "emitDecoratorMetadata": true,
12 | "experimentalDecorators": true,
13 | "target": "es5",
14 | "module": "esnext",
15 | "typeRoots": [
16 | "node_modules/@types"
17 | ],
18 | "lib": [
19 | "es2017",
20 | "dom"
21 | ]
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/tslint.json:
--------------------------------------------------------------------------------
1 | {}
--------------------------------------------------------------------------------
/webpack.externals.js:
--------------------------------------------------------------------------------
1 | const webpack = require('webpack');
2 |
3 | module.exports = {
4 | "externals": {
5 | "rxjs": "rxjs",
6 | "@angular/core": "ng.core",
7 | "@angular/common": "ng.common",
8 | "@angular/common/http": "ng.common.http",
9 | "@angular/platform-browser": "ng.platformBrowser",
10 | "@angular/platform-browser-dynamic": "ng.platformBrowserDynamic",
11 | "@angular/compiler": "ng.compiler",
12 | "@angular/elements": "ng.elements",
13 |
14 | // Uncomment and add to scripts in angular.json if needed
15 | // "@angular/router": "ng.router",
16 | // "@angular/forms": "ng.forms"
17 | }
18 | }
--------------------------------------------------------------------------------