From ce34ef902f460d463480d04a8bef2a4b5e304361 Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Wed, 6 Jun 2018 09:43:28 -0400 Subject: [PATCH] stubbing out some layout --- package-lock.json | 20 +++++++ package.json | 4 ++ src/app/app-routing.module.ts | 2 +- src/app/app.component.html | 2 + src/app/app.component.ts | 5 +- src/app/main.ts | 6 ++ src/app/polyfills.ts | 23 +++++++ src/app/vault/vault.component.html | 76 +++++++++++++++++++++++- src/index.html | 25 ++++---- src/scss/styles.scss | 47 ++++++++++++++- src/services/webPlatformUtils.service.ts | 6 ++ 11 files changed, 198 insertions(+), 18 deletions(-) create mode 100644 src/app/app.component.html create mode 100644 src/app/polyfills.ts diff --git a/package-lock.json b/package-lock.json index 546b3d51867..bac478103f3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1089,6 +1089,11 @@ "hoek": "2.16.3" } }, + "bootstrap": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.1.1.tgz", + "integrity": "sha512-SpiDSOcbg4J/PjVSt4ny5eY6j74VbVSjROY4Fb/WIUXBV9cnb5luyR4KnPvNoXuGnBK1T+nJIWqRsvU3yP8Mcg==" + }, "boxen": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/boxen/-/boxen-1.3.0.tgz", @@ -4627,6 +4632,11 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "jquery": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.3.1.tgz", + "integrity": "sha512-Ubldcmxp5np52/ENotGxlLe6aGMvmF4R8S6tZjsP6Knsaxd/xp3Zrh50cG93lR6nPXyUFwzN3ZSOQI0wRJNdGg==" + }, "js-base64": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.4.5.tgz", @@ -6087,6 +6097,11 @@ "find-up": "2.1.0" } }, + "popper.js": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.14.3.tgz", + "integrity": "sha1-FDj5jQRqz3tNeM1QK/QYrGTU8JU=" + }, "posix-character-classes": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", @@ -10454,6 +10469,11 @@ } } }, + "whatwg-fetch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz", + "integrity": "sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng==" + }, "whet.extend": { "version": "0.9.9", "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", diff --git a/package.json b/package.json index 37aba1d2821..1c85e2bfe1f 100644 --- a/package.json +++ b/package.json @@ -55,18 +55,22 @@ "@angular/upgrade": "5.2.0", "angular2-toaster": "4.0.2", "angulartics2": "5.0.1", + "bootstrap": "4.1.1", "core-js": "2.4.1", "duo_web_sdk": "git+https://github.com/duosecurity/duo_web_sdk.git", "font-awesome": "4.7.0", + "jquery": "3.3.1", "lunr": "2.1.6", "mousetrap": "1.6.1", "ngx-infinite-scroll": "0.8.4", "node-forge": "0.7.1", "papaparse": "4.3.5", + "popper.js": "1.14.3", "rxjs": "5.5.6", "sweetalert": "2.1.0", "tldjs": "2.0.0", "web-animations-js": "2.3.1", + "whatwg-fetch": "^2.0.4", "zone.js": "0.8.19" } } diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index db27217f962..80970051b72 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -12,7 +12,7 @@ import { TwoFactorComponent } from './accounts/two-factor.component'; import { VaultComponent } from './vault/vault.component'; const routes: Routes = [ - { path: '', redirectTo: '/login', pathMatch: 'full' }, + { path: '', redirectTo: '/vault', pathMatch: 'full' }, { path: 'login', component: LoginComponent }, { path: '2fa', component: TwoFactorComponent }, { path: 'register', component: RegisterComponent }, diff --git a/src/app/app.component.html b/src/app/app.component.html new file mode 100644 index 00000000000..307007679b0 --- /dev/null +++ b/src/app/app.component.html @@ -0,0 +1,2 @@ + + diff --git a/src/app/app.component.ts b/src/app/app.component.ts index 9cdcd64e283..15a5f4fc998 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -11,10 +11,7 @@ import { Router } from '@angular/router'; @Component({ selector: 'app-root', - styles: [], - template: ` - - `, + templateUrl: 'app.component.html', }) export class AppComponent { toasterConfig: ToasterConfig = new ToasterConfig({ diff --git a/src/app/main.ts b/src/app/main.ts index 3dc3e00a05d..249e91fbeb1 100644 --- a/src/app/main.ts +++ b/src/app/main.ts @@ -1,6 +1,12 @@ import { enableProdMode } from '@angular/core'; import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; +import './polyfills'; + +import 'bootstrap'; +import 'jquery'; +import 'popper.js'; + // tslint:disable-next-line require('../scss/styles.scss'); diff --git a/src/app/polyfills.ts b/src/app/polyfills.ts new file mode 100644 index 00000000000..f9972be113b --- /dev/null +++ b/src/app/polyfills.ts @@ -0,0 +1,23 @@ +import 'whatwg-fetch'; +import '../scripts/webcrypto-shim'; + +// IE9, IE10 and IE11 requires all of the following polyfills. +import 'core-js/es6/symbol'; +import 'core-js/es6/object'; +import 'core-js/es6/function'; +import 'core-js/es6/parse-int'; +import 'core-js/es6/parse-float'; +import 'core-js/es6/number'; +import 'core-js/es6/math'; +import 'core-js/es6/string'; +import 'core-js/es6/date'; +import 'core-js/es6/array'; +import 'core-js/es6/regexp'; +import 'core-js/es6/map'; +import 'core-js/es6/weak-map'; +import 'core-js/es6/set'; + +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; + +import 'zone.js/dist/zone'; diff --git a/src/app/vault/vault.component.html b/src/app/vault/vault.component.html index 9999a5155f8..b439846b9b5 100644 --- a/src/app/vault/vault.component.html +++ b/src/app/vault/vault.component.html @@ -1 +1,75 @@ -The vault!! {{ 'hello' | i18n }} + +
+
+
+
+
+ Navigation +
+ +
+
+
+

My Vault

+

Stuff

+
+
+
+
+ All Items +
+
+
+
+
+ diff --git a/src/index.html b/src/index.html index 91dcb38d9ee..5c19eecc142 100644 --- a/src/index.html +++ b/src/index.html @@ -2,18 +2,21 @@ - - - - + + + + - Bitwarden Web Vault + Bitwarden Web Vault - - - - - + + + + + + + @@ -22,4 +25,4 @@ - \ No newline at end of file + diff --git a/src/scss/styles.scss b/src/scss/styles.scss index 796c55c42f6..83af7cde615 100644 --- a/src/scss/styles.scss +++ b/src/scss/styles.scss @@ -1,3 +1,48 @@ +$theme-colors: ( + "primary": #3c8dbc, + "primary-accent": #286090, + "danger": #dd4b39, + "success": #00a65a, + "info": #555555, + "warning": #bf7e16 +); + +$font-family-sans-serif: 'Open Sans','Helvetica Neue',Helvetica, + Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol'; + +$h1-font-size: 2rem; +$h2-font-size: 1.3rem; +$h3-font-size: 1rem; +$h4-font-size: 1rem; +$h5-font-size: 1rem; +$h6-font-size: 1rem; + +$grid-gutter-width: 20px; + +@import "../../node_modules/bootstrap/scss/bootstrap"; + body { - background-color: gray; + min-width: 1010px; +} + +.navbar { + padding-left: 0; + padding-right: 0; +} + +.container { + width: 980px; + margin: 0 auto; + padding: 0; + max-width: none !important; +} + +.page-content { + margin-top: 20px; +} + +.footer { + margin-top: 40px; + padding: 40px 0 10px 0; + border-top: 1px solid $border-color; } diff --git a/src/services/webPlatformUtils.service.ts b/src/services/webPlatformUtils.service.ts index 39080086931..9f9c833ce14 100644 --- a/src/services/webPlatformUtils.service.ts +++ b/src/services/webPlatformUtils.service.ts @@ -33,6 +33,8 @@ export class WebPlatformUtilsService implements PlatformUtilsService { this.deviceCache = DeviceType.Safari; } else if ((window as any).chrome && navigator.userAgent.indexOf(' Chrome/') !== -1) { this.deviceCache = DeviceType.Chrome; + } else if (navigator.userAgent.indexOf(' Trident/') !== -1) { + this.deviceCache = DeviceType.IE; } return this.deviceCache; @@ -54,6 +56,10 @@ export class WebPlatformUtilsService implements PlatformUtilsService { return this.getDevice() === DeviceType.Edge; } + isIE(): boolean { + return this.getDevice() === DeviceType.IE; + } + isOpera(): boolean { return this.getDevice() === DeviceType.Opera; }