From d7e2178658d28941d2bfc697474ae574ba72e314 Mon Sep 17 00:00:00 2001 From: loopteam0 Date: Tue, 29 Jan 2019 10:07:14 +0000 Subject: [PATCH] =downloader app initialize --- angular.json | 6 +- package-lock.json | 12 +- package.json | 334 +++++++++--------- projects/downloader/src/app/app.module.ts | 3 +- .../electron/electron.service.spec.ts | 15 + .../app/services/electron/electron.service.ts | 36 ++ projects/wallpaper-app/src/app/app.module.ts | 4 +- projects/wallpaper-app/src/index.html | 2 + projects/wallpaper-app/src/main.ts | 1 + projects/wallpaper-app/src/styles.scss | 3 + script/installer.js | 38 -- script/windows-store.js | 29 -- src/index.html | 1 + src/main.ts | 1 + src/styles.scss | 3 + 15 files changed, 243 insertions(+), 245 deletions(-) create mode 100644 projects/downloader/src/app/services/electron/electron.service.spec.ts create mode 100644 projects/downloader/src/app/services/electron/electron.service.ts delete mode 100644 script/installer.js delete mode 100644 script/windows-store.js diff --git a/angular.json b/angular.json index cd0e449..4ce1125 100644 --- a/angular.json +++ b/angular.json @@ -86,9 +86,7 @@ "tsConfig": "src/tsconfig.spec.json", "karmaConfig": "src/karma.conf.js", "styles": [ - { - "input": "node_modules/@angular/material/prebuilt-themes/indigo-pink.css" - }, + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "src/styles.scss" ], "scripts": [], @@ -302,6 +300,7 @@ "projects/wallpaper-app/src/assets" ], "styles": [ + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "projects/wallpaper-app/src/styles.scss" ], "scripts": [] @@ -358,6 +357,7 @@ "tsConfig": "projects/wallpaper-app/tsconfig.spec.json", "karmaConfig": "projects/wallpaper-app/karma.conf.js", "styles": [ + "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", "projects/wallpaper-app/src/styles.scss" ], "scripts": [], diff --git a/package-lock.json b/package-lock.json index 88b87a6..f627f36 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "LoopClient", - "version": "0.8.0", + "version": "v0.8.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -206,7 +206,6 @@ "version": "7.1.4", "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-7.1.4.tgz", "integrity": "sha512-877LZ83scksJtflVz97CUWlSsZnxduBxPD+ls5OTrTT/bq3muzHCm8rgTO7S8fBwwrEVXLorvMAlhDPpMg5Swg==", - "dev": true, "requires": { "tslib": "^1.9.0" } @@ -215,7 +214,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-7.2.0.tgz", "integrity": "sha512-ANGNIvyEdkMW6APl+6XDQC5VBS+mS/M+3UB/ROnj+7Om3xe2DSbEjqDXB/SpeJYUp6Qg/wQoWmyvd4y8HfjMwA==", - "dev": true, "requires": { "parse5": "^5.0.0", "tslib": "^1.7.1" @@ -225,7 +223,6 @@ "version": "5.1.0", "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.0.tgz", "integrity": "sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ==", - "dev": true, "optional": true } } @@ -667,7 +664,6 @@ "version": "7.2.0", "resolved": "https://registry.npmjs.org/@angular/material/-/material-7.2.0.tgz", "integrity": "sha512-ZLgpZ6hVJABMu6lk+97esN9TmLvBjeAgTbszLBJHOeSKocUGaWeKsdiUweMCdNgWrYNMowIAVKGqwavmaj7XTQ==", - "dev": true, "requires": { "tslib": "^1.7.1" } @@ -6394,8 +6390,7 @@ "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", - "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=", - "dev": true + "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE=" }, "handle-thing": { "version": "1.2.5", @@ -13040,8 +13035,7 @@ "tslib": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.9.3.tgz", - "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==", - "dev": true + "integrity": "sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==" }, "tslint": { "version": "5.9.1", diff --git a/package.json b/package.json index 6e6c23f..6cad224 100644 --- a/package.json +++ b/package.json @@ -1,172 +1,178 @@ { - "name": "LoopClient", - "version": "v0.8.0", + "name": "LoopClient", + "version": "v0.8.0", + "productName": "Loop Client", + "main": "main.js", + "author": { + "name": "The Loop Team", + "email": "loopteam0@gmail.com" + }, + "description": "Free torrent Movies;Software;Games;Anime;Music downloader", + "homepage": "https://www.loopteam0.github.io", + "scripts": { + "ng": "ng", + "start": "ng serve", + "build": "ng build --prod", + "test": "ng test", + "lint": "ng lint", + "e2e": "ng e2e", + "electron": "electron .", + "electron-toolkit": "electron ./node_modules/electron-toolkit", + "loop:build": "ng build --prod && electron .", + "pack": "electron-builder --dir", + "dist": "electron-builder --platform all --arch x64 ia32", + "dist:win": "electron-builder --win", + "dist:lin": "electron-builder --linux", + "dist:mac": "electron-builder --mac", + "publish": "build --lin --win -p always" + }, + "build": { + "appId": "com.electron.Loop_Client", + "copyright": "Copyright © 2019 The Loop Team", "productName": "Loop Client", - "main": "main.js", - "author": { - "name": "The Loop Team", - "email": "loopteam0@gmail.com" + "electronVersion": "4.0.2", + "compression": "normal", + "asar": true, + "publish": [ + { + "provider": "github", + "owner": "loopteam0", + "repo": "loop-client" + } + ], + "directories": { + "app": "C:\\Users\\MEDAS\\Documents\\coding\\Loop-Client", + "output": "build/out" }, - "description": "", - "homepage": "https://www.loopteam0.github.io", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build --prod", - "test": "ng test", - "lint": "ng lint", - "e2e": "ng e2e", - "electron": "electron .", - "electron-toolkit": "electron ./node_modules/electron-toolkit", - "loop:build": "ng build --prod && electron .", - "pack": "electron-builder --dir", - "dist": "electron-builder mwl --x64 --ia32", - "publish": "build --lin --win -p always" - }, - "build": { - "appId": "com.electron.Loop_Client", - "copyright": "Copyright © 2019 The Loop Team", - "productName": "Loop Client", - "electronVersion": "4.0.2", - "compression": "normal", - "asar": true, - "publish": [{ - "provider":"github", - "owner": "loopteam0", - "repo": "loop-client" - }], - "directories": { - "app": "C:\\Users\\MEDAS\\Documents\\coding\\Loop-Client", - "output": "build" - }, - "win": { - "target": [ - { - "target": "nsis", - "arch": [ - "x64", - "ia32" - ] - }, - { - "target": "appx", - "arch": [ - "x64", - "ia32" - ] - } - ], - "icon": "build/icon.ico", - "publisherName": "The Loop Team" - }, - "nsis": { - "oneClick": false, - "allowToChangeInstallationDirectory": true, - "installerIcon": "build/icon.ico", - "uninstallerIcon": "build/icon.ico", - "installerHeaderIcon": "build/icon.ico", - "createDesktopShortcut": true - }, - "appx": { - "applicationId": "com.electron.Loop_Client", - "backgroundColor": "#0097a7", - "publisherDisplayName": "The Loop Team" - }, - "linux": { - "executableName":"Loop Client", - "category": "Movies;Software;Games;Anime;Music;Free_Downloader", - "target": [ - { - "target": "deb", - "arch": [ - "x64", - "ia32" - ] - } - ] + "win": { + "target": [ + { + "target": "nsis", + "arch": [ + "x64", + "ia32" + ] }, - "deb": { - "icon": "build/png/128x128.png" - }, - "releaseInfo": { - "releaseName": "January Update", - "releaseNotes": "Critical Updates", - "releaseNotesFile": "./build/releaseinfo.html", - "releaseDate": "January 29, 2019" - }, - "files": [ - "**/*", - "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}", - "!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}", - "!**/node_modules/*.d.ts", - "!**/node_modules/.bin", - "!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}", - "!.editorconfig", - "!**/._*", - "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}", - "!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}", - "!**/{appveyor.yml,.travis.yml,circle.yml}", - "!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}", - "!{build,src,projects,e2e,.vscode,script}", - "!{angular.json,data.json,test.js,update.js,tslint.json,README.md,tsconfig.json,dev-app-update.yml,yarn.lock}", - "dist${/*}", - "!dist/win-unpacked" - ] + { + "target": "appx", + "arch": [ + "x64", + "ia32" + ] + } + ], + "icon": "build/icon.ico", + "publisherName": "The Loop Team" + }, + "nsis": { + "oneClick": false, + "allowToChangeInstallationDirectory": true, + "installerIcon": "build/icon.ico", + "uninstallerIcon": "build/icon.ico", + "installerHeaderIcon": "build/icon.ico", + "createDesktopShortcut": true + }, + "appx": { + "backgroundColor": "#0097a7", + "publisherDisplayName": "The Loop Team" + }, + "linux": { + "executableName": "Loop Client", + "category": "Movies;Software;Games;Anime;Music;Free_Downloader", + "target": [ + { + "target": "deb", + "arch": [ + "x64", + "ia32" + ] + } + ] }, - "repository": { - "url": "https://github.com/loopteam0/loop-client" + "deb": { + "icon": "build/png/128x128.png" }, - "private": true, - "dependencies": { - "@trodi/electron-splashscreen": "^0.3.4", - "electron-log": "^2.2.17", - "electron-updater": "^4.0.6", - "torrent-search-api": "^2.0.4" + "releaseInfo": { + "releaseName": "January Update", + "releaseNotes": "Critical Updates", + "releaseNotesFile": "./build/releaseinfo.html", + "releaseDate": "January 29, 2019" }, - "devDependencies": { - "@angular/animations": "^7.1.4", - "@angular/cdk": "^7.2.0", - "@angular/common": "^7.1.4", - "@angular/compiler": "^7.1.4", - "@angular/core": "^7.1.4", - "@angular/forms": "^7.1.4", - "@angular/http": "^7.1.4", - "@angular/material": "^7.2.0", - "@angular/platform-browser": "^7.1.4", - "@angular/platform-browser-dynamic": "^7.1.4", - "@angular/router": "^7.1.4", - "@ng-bootstrap/ng-bootstrap": "^4.0.1", - "bootstrap": "^4.1.2", - "core-js": "^2.5.4", - "hammerjs": "^2.0.8", - "ngx-pipes": "^2.3.5", - "perfect-scrollbar": "^1.4.0", - "rxjs": "^6.3.3", - "simplebar": "^3.0.0-beta.3", - "zone.js": "^0.8.26", - "@angular-devkit/build-angular": "~0.10.0", - "@angular/cli": "^7.1.3", - "@angular/compiler-cli": "^7.1.4", - "@angular/language-service": "^7.1.4", - "@types/jasmine": "~2.8.6", - "@types/jasminewd2": "~2.0.3", - "@types/node": "~8.9.4", - "codelyzer": "~4.2.1", - "electron": "^4.0.2", - "electron-builder": "^20.38.4", - "electron-packager": "^12.1.0", - "electron-toolkit": "^1.0.24", - "electron-winstaller": "^2.7.0", - "jasmine-core": "~2.99.1", - "jasmine-spec-reporter": "~4.2.1", - "karma": "~1.7.1", - "karma-chrome-launcher": "~2.2.0", - "karma-coverage-istanbul-reporter": "~2.0.0", - "karma-jasmine": "~1.1.1", - "karma-jasmine-html-reporter": "^0.2.2", - "protractor": "~5.3.0", - "ts-node": "~5.0.1", - "tslint": "~5.9.1", - "typescript": "~3.1.6" - } + "files": [ + "**/*", + "!**/node_modules/*/{CHANGELOG.md,README.md,README,readme.md,readme}", + "!**/node_modules/*/{test,__tests__,tests,powered-test,example,examples}", + "!**/node_modules/*.d.ts", + "!**/node_modules/.bin", + "!**/*.{iml,o,hprof,orig,pyc,pyo,rbc,swp,csproj,sln,xproj}", + "!.editorconfig", + "!**/._*", + "!**/{.DS_Store,.git,.hg,.svn,CVS,RCS,SCCS,.gitignore,.gitattributes}", + "!**/{__pycache__,thumbs.db,.flowconfig,.idea,.vs,.nyc_output}", + "!**/{appveyor.yml,.travis.yml,circle.yml}", + "!**/{npm-debug.log,yarn.lock,.yarn-integrity,.yarn-metadata.json}", + "!{build,src,projects,e2e,.vscode,script}", + "!{angular.json,data.json,test.js,update.js,tslint.json,README.md,tsconfig.json,dev-app-update.yml,yarn.lock}", + "dist${/*}", + "!dist/win-unpacked" + ] + }, + "repository": { + "url": "https://github.com/loopteam0/loop-client" + }, + "private": true, + "dependencies": { + "@angular/animations": ">=7.0.0", + "@trodi/electron-splashscreen": "^0.3.4", + "electron-log": "^2.2.17", + "electron-updater": "^4.0.6", + "hammerjs": "^2.0.8", + "torrent-search-api": "^2.0.4" + }, + "devDependencies": { + "@angular/animations": "^7.1.4", + "@angular/cdk": "^7.2.0", + "@angular/common": "^7.1.4", + "@angular/compiler": "^7.1.4", + "@angular/core": "^7.1.4", + "@angular/forms": "^7.1.4", + "@angular/http": "^7.1.4", + "@angular/material": "^7.2.0", + "@angular/platform-browser": "^7.1.4", + "@angular/platform-browser-dynamic": "^7.1.4", + "@angular/router": "^7.1.4", + "@ng-bootstrap/ng-bootstrap": "^4.0.1", + "bootstrap": "^4.1.2", + "core-js": "^2.5.4", + "hammerjs": "^2.0.8", + "ngx-pipes": "^2.3.5", + "perfect-scrollbar": "^1.4.0", + "rxjs": "^6.3.3", + "simplebar": "^3.0.0-beta.3", + "zone.js": "^0.8.26", + "@angular-devkit/build-angular": "~0.10.0", + "@angular/cli": "^7.1.3", + "@angular/compiler-cli": "^7.1.4", + "@angular/language-service": "^7.1.4", + "@types/jasmine": "~2.8.6", + "@types/jasminewd2": "~2.0.3", + "@types/node": "~8.9.4", + "codelyzer": "~4.2.1", + "electron": "^4.0.2", + "electron-builder": "^20.38.4", + "electron-packager": "^12.1.0", + "electron-toolkit": "^1.0.24", + "electron-winstaller": "^2.7.0", + "jasmine-core": "~2.99.1", + "jasmine-spec-reporter": "~4.2.1", + "karma": "~1.7.1", + "karma-chrome-launcher": "~2.2.0", + "karma-coverage-istanbul-reporter": "~2.0.0", + "karma-jasmine": "~1.1.1", + "karma-jasmine-html-reporter": "^0.2.2", + "protractor": "~5.3.0", + "ts-node": "~5.0.1", + "tslint": "~5.9.1", + "typescript": "~3.1.6" + } } diff --git a/projects/downloader/src/app/app.module.ts b/projects/downloader/src/app/app.module.ts index f940f0e..1f69ffb 100644 --- a/projects/downloader/src/app/app.module.ts +++ b/projects/downloader/src/app/app.module.ts @@ -5,6 +5,7 @@ import { AppComponent } from './app.component'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { DownloadServiceService } from './services/download-service.service'; import { MaterialModule } from './modules/material/material.module'; +import {ElectronService } from './services/electron/electron.service'; @NgModule({ declarations: [ @@ -15,7 +16,7 @@ import { MaterialModule } from './modules/material/material.module'; MaterialModule, BrowserAnimationsModule ], - providers: [DownloadServiceService], + providers: [DownloadServiceService, ElectronService], bootstrap: [AppComponent] }) export class AppModule { } diff --git a/projects/downloader/src/app/services/electron/electron.service.spec.ts b/projects/downloader/src/app/services/electron/electron.service.spec.ts new file mode 100644 index 0000000..21607aa --- /dev/null +++ b/projects/downloader/src/app/services/electron/electron.service.spec.ts @@ -0,0 +1,15 @@ +import { TestBed, inject } from '@angular/core/testing'; + +import { ElectronService } from './electron.service'; + +describe('ElectronService', () => { + beforeEach(() => { + TestBed.configureTestingModule({ + providers: [ElectronService] + }); + }); + + it('should be created', inject([ElectronService], (service: ElectronService) => { + expect(service).toBeTruthy(); + })); +}); diff --git a/projects/downloader/src/app/services/electron/electron.service.ts b/projects/downloader/src/app/services/electron/electron.service.ts new file mode 100644 index 0000000..37958c2 --- /dev/null +++ b/projects/downloader/src/app/services/electron/electron.service.ts @@ -0,0 +1,36 @@ +import { Injectable } from '@angular/core'; +import { ipcRenderer, shell, webFrame, remote, BrowserWindow } from 'electron'; +import * as childProcess from 'child_process'; +import * as fs from 'fs'; +import * as TorrentSearch from 'torrent-search-api'; + +@Injectable() +export class ElectronService { + + ipcRenderer: typeof ipcRenderer; + webFrame: typeof webFrame; + remote: typeof remote; + childProcess: typeof childProcess; + fs: typeof fs; + shell: typeof shell; + BrowserWindow: typeof BrowserWindow; + TorrentSearch: typeof TorrentSearch; + constructor() { + // Conditional imports + if (this.isElectron()) { + this.ipcRenderer = window.require('electron').ipcRenderer; + this.webFrame = window.require('electron').webFrame; + this.remote = window.require('electron').remote; + this.shell = window.require('electron').shell; + this.BrowserWindow = window.require('electron').BrowserWindow; + this.childProcess = window.require('child_process'); + this.fs = window.require('fs'); + this.TorrentSearch = window.require('torrent-search-api') + } + } + + isElectron = () => { + return window && window.process && window.process.type; + } + +} diff --git a/projects/wallpaper-app/src/app/app.module.ts b/projects/wallpaper-app/src/app/app.module.ts index 2c3ba29..0cadd23 100644 --- a/projects/wallpaper-app/src/app/app.module.ts +++ b/projects/wallpaper-app/src/app/app.module.ts @@ -3,6 +3,7 @@ import { NgModule } from '@angular/core'; import { AppRoutingModule } from './app-routing.module'; import { AppComponent } from './app.component'; +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; @NgModule({ declarations: [ @@ -10,7 +11,8 @@ import { AppComponent } from './app.component'; ], imports: [ BrowserModule, - AppRoutingModule + AppRoutingModule, + BrowserAnimationsModule ], providers: [], bootstrap: [AppComponent] diff --git a/projects/wallpaper-app/src/index.html b/projects/wallpaper-app/src/index.html index 7fb818c..cff8fe2 100644 --- a/projects/wallpaper-app/src/index.html +++ b/projects/wallpaper-app/src/index.html @@ -7,6 +7,8 @@ + + diff --git a/projects/wallpaper-app/src/main.ts b/projects/wallpaper-app/src/main.ts index c7b673c..3b2b7d0 100644 --- a/projects/wallpaper-app/src/main.ts +++ b/projects/wallpaper-app/src/main.ts @@ -1,3 +1,4 @@ +import 'hammerjs'; import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; diff --git a/projects/wallpaper-app/src/styles.scss b/projects/wallpaper-app/src/styles.scss index 90d4ee0..7e7239a 100644 --- a/projects/wallpaper-app/src/styles.scss +++ b/projects/wallpaper-app/src/styles.scss @@ -1 +1,4 @@ /* You can add global styles to this file, and also import other style files */ + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/script/installer.js b/script/installer.js deleted file mode 100644 index 579fc9c..0000000 --- a/script/installer.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node -//@tss-check -const createWindowsInstaller = require('electron-winstaller').createWindowsInstaller -const path = require('path') -const rimraf = require('rimraf') - -deleteOutputFolder() - .then(getInstallerConfig) - .then(createWindowsInstaller) - .catch((error) => { - console.error(error.message || error) - process.exit(1) - }) - -function getInstallerConfig () { - const rootPath = path.join(__dirname, '..',) - const outPath = path.join(rootPath, 'out') - - return Promise.resolve({ - appDirectory: path.join(outPath, 'Loop Client-win32-ia32'), - exe: 'Loop Client.exe', - iconUrl: '../dist/app/assets/icons/icon.win.ico', - loadingGif: path.join(rootPath, 'assets', 'img', 'loading.gif'), - noMsi: true, - outputDirectory: path.join(outPath, 'windows-installer'), - setupExe: 'Loop Client.exe', - setupIcon: path.join(rootPath, 'assets', 'dist', 'icons', 'icon.win.ico'), - skipUpdateIcon: true - }) -} - -function deleteOutputFolder () { - return new Promise((resolve, reject) => { - rimraf(path.join(__dirname, '..', 'out', 'windows-installer'), (error) => { - error ? reject(error) : resolve() - }) - }) -} diff --git a/script/windows-store.js b/script/windows-store.js deleted file mode 100644 index 37981a6..0000000 --- a/script/windows-store.js +++ /dev/null @@ -1,29 +0,0 @@ -const ChildProcess = require('child_process') -const path = require('path') - -const metadata = require('../package') - -const command = path.join(__dirname, '..', 'node_modules', '.bin', 'electron-windows-store.cmd') -const args = [ - '--input-directory', - path.join(__dirname, '..', 'out', 'Loop Client-win32-ia32'), - '--output-directory', - path.join(__dirname, '..', 'out', 'windows-store'), - '--flatten', - true, - '--package-version', - metadata.version + '.0', - '--package-name', - metadata.productName, - '--package-display-name', - metadata.productName, - '--assets', - path.join(__dirname, '..', 'assets', 'tiles'), - '--package-description', - metadata.description -] - -const windowsStore = ChildProcess.spawn(command, args, {stdio: 'inherit'}) -windowsStore.on('close', (code) => { - process.exit(code) -}) diff --git a/src/index.html b/src/index.html index 9de9750..6b12fcc 100644 --- a/src/index.html +++ b/src/index.html @@ -11,6 +11,7 @@ + diff --git a/src/main.ts b/src/main.ts index 3715e82..615d36a 100644 --- a/src/main.ts +++ b/src/main.ts @@ -1,3 +1,4 @@ +import 'hammerjs'; import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; diff --git a/src/styles.scss b/src/styles.scss index a21be41..4a7a13c 100644 --- a/src/styles.scss +++ b/src/styles.scss @@ -326,3 +326,6 @@ mat-card.errorHandler { transform: translate3d(0, 0, 0); } } + +html, body { height: 100%; } +body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; }