Merge branch 'master' into skeleton

# Conflicts:
#	src/app/app.module.ts
#	src/app/main/content/apps/calendar/calendar.component.html
#	src/app/main/content/apps/contacts/contact-list/contact-list.component.html
#	src/app/main/content/apps/contacts/contacts.component.html
#	src/app/main/content/apps/contacts/contacts.component.scss
#	src/app/main/content/apps/contacts/contacts.module.ts
#	src/app/main/content/apps/contacts/contacts.service.ts
#	src/app/main/content/apps/contacts/selected-bar/selected-bar.component.html
#	src/app/main/content/apps/mail/sidenavs/main/main-sidenav.component.html
#	src/app/navigation.model.ts
This commit is contained in:
Sercan Yemen 2017-08-24 11:18:24 +03:00
commit ff4899e8d2
10 changed files with 392 additions and 269 deletions

3
.floo
View File

@ -1,3 +0,0 @@
{
"url": "https://floobits.com/srcn/Fuse2"
}

View File

@ -1,7 +0,0 @@
extern
node_modules
tmp
vendor
.idea/workspace.xml
.idea/misc.xml
assets/.gitkeep

287
package-lock.json generated
View File

@ -32,14 +32,14 @@
}
},
"@angular/cli": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.3.1.tgz",
"integrity": "sha512-khmFQjuuqUxulvPnYTaThSf7Dw5B5blMuVsU8MkSe3mfdyc/x/DaKjfPXDfFNGoDiiSJfMwob2CT3OYQOPI2MQ==",
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.3.2.tgz",
"integrity": "sha512-VAZXI19PbhhUE/dJH5r6HT7502y0OXYzxhbGIagh/e7SNKnVV8KglVL4zfTfnsI8kmLrFFbAmPy7xomKO8Btkg==",
"dev": true,
"requires": {
"@angular-devkit/build-optimizer": "0.0.13",
"@ngtools/json-schema": "1.1.0",
"@ngtools/webpack": "1.6.1",
"@ngtools/webpack": "1.6.2",
"autoprefixer": "6.7.7",
"chalk": "2.1.0",
"circular-dependency-plugin": "3.0.0",
@ -99,7 +99,7 @@
"webpack-dev-middleware": "1.12.0",
"webpack-dev-server": "2.5.1",
"webpack-merge": "4.1.0",
"zone.js": "0.8.16"
"zone.js": "0.8.17"
}
},
"@angular/common": {
@ -129,6 +129,15 @@
"reflect-metadata": "0.1.10"
},
"dependencies": {
"@angular/tsc-wrapped": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.5.tgz",
"integrity": "sha1-lf2qgTz8VyYvx+9f6nJtYorvq6w=",
"dev": true,
"requires": {
"tsickle": "0.21.6"
}
},
"minimist": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
@ -204,15 +213,6 @@
"tslib": "1.7.1"
}
},
"@angular/tsc-wrapped": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.3.5.tgz",
"integrity": "sha1-lf2qgTz8VyYvx+9f6nJtYorvq6w=",
"dev": true,
"requires": {
"tsickle": "0.21.6"
}
},
"@ngtools/json-schema": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz",
@ -220,9 +220,9 @@
"dev": true
},
"@ngtools/webpack": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.6.1.tgz",
"integrity": "sha512-a+nmdxKadC7Fz6NkolsAUzutjdajL3tupEfvJccwaBtmok/JJOps8a4lZnWKMTb/3+zsg8xZIGlSEXrTwPLNmA==",
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.6.2.tgz",
"integrity": "sha512-2s2kCCV3FQUC+MG69e+H5k7zELuVcQ0Gkl1ioqR25HOclxv0UGVY7jsmz9LRm/DanS5ORXQt4S82EFV1dY4w+A==",
"dev": true,
"requires": {
"loader-utils": "1.1.0",
@ -231,9 +231,9 @@
}
},
"@swimlane/ngx-charts": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-6.0.1.tgz",
"integrity": "sha1-sn99Q3vtCXbUTZL7rDUHQZH1sqA="
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-6.0.2.tgz",
"integrity": "sha512-f9js4MptTBgYxUo53nK7fLVxgjWjLiudh0fVVvh4fCEQBG/UOsK9KGpFt5dSJJNNGQRdTiDVUzLzVnl8w+JwFg=="
},
"@swimlane/ngx-datatable": {
"version": "9.3.1",
@ -241,17 +241,17 @@
"integrity": "sha1-qbEwcycSHd+HTnW6a9amxpySZaE="
},
"@swimlane/ngx-dnd": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-2.2.0.tgz",
"integrity": "sha512-ndkJZlNx68MtQ9kY4mKnwwGrlepaj0Wd/QsDn2cXUBjsOJPaX1f8EUZ98OXdg6cc1yQP8JxTkgmgRPDsiV6CSw==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-3.0.0.tgz",
"integrity": "sha512-LH/Nc6/2tyX7U9SHa5hNvC2Sk/svj/PMrJu34V/BF/H811fik5AGzTjORdGQo7cl2m951MEkl9yijMKywRw37w==",
"requires": {
"dragula": "3.7.2"
}
},
"@types/jasmine": {
"version": "2.5.53",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.53.tgz",
"integrity": "sha512-2YNL0jXYuN7w07mb1sMZQ6T6zOvGi83v8UbjhBZ8mhvI1VkQ2STU9XOrTFyvWswMyh5rW1evS+e7qltYJvTqPA==",
"version": "2.5.54",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.54.tgz",
"integrity": "sha512-B9YofFbUljs19g5gBKUYeLIulsh31U5AK70F41BImQRHEZQGm4GcN922UvnYwkduMqbC/NH+9fruWa/zrqvHIg==",
"dev": true
},
"@types/jasminewd2": {
@ -260,7 +260,7 @@
"integrity": "sha1-X2jh5pe/ELxv2Mvy4Aaj1nEsW2Q=",
"dev": true,
"requires": {
"@types/jasmine": "2.5.53"
"@types/jasmine": "2.5.54"
}
},
"@types/node": {
@ -636,7 +636,7 @@
"dev": true,
"requires": {
"browserslist": "1.7.7",
"caniuse-db": "1.0.30000716",
"caniuse-db": "1.0.30000717",
"normalize-range": "0.1.2",
"num2fraction": "1.2.2",
"postcss": "5.2.17",
@ -1003,7 +1003,7 @@
"buffer-xor": "1.0.3",
"cipher-base": "1.0.4",
"create-hash": "1.1.3",
"evp_bytestokey": "1.0.0",
"evp_bytestokey": "1.0.2",
"inherits": "2.0.3"
}
},
@ -1015,7 +1015,7 @@
"requires": {
"browserify-aes": "1.0.6",
"browserify-des": "1.0.0",
"evp_bytestokey": "1.0.0"
"evp_bytestokey": "1.0.2"
}
},
"browserify-des": {
@ -1069,7 +1069,7 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true,
"requires": {
"caniuse-db": "1.0.30000716",
"caniuse-db": "1.0.30000717",
"electron-to-chromium": "1.3.18"
}
},
@ -1085,9 +1085,9 @@
}
},
"buffer-indexof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.0.tgz",
"integrity": "sha1-9U9kfE9OJSKLqmVqLlfkPV8nCYI=",
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
"integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
"dev": true
},
"buffer-xor": {
@ -1158,15 +1158,15 @@
"dev": true,
"requires": {
"browserslist": "1.7.7",
"caniuse-db": "1.0.30000716",
"caniuse-db": "1.0.30000717",
"lodash.memoize": "4.1.2",
"lodash.uniq": "4.5.0"
}
},
"caniuse-db": {
"version": "1.0.30000716",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000716.tgz",
"integrity": "sha1-sHF3ZdFXZi6MdKYVYshMn8NgSkk=",
"version": "1.0.30000717",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000717.tgz",
"integrity": "sha1-J931/szdM4yZpiyXiMJpT5n2ftc=",
"dev": true
},
"caseless": {
@ -1317,9 +1317,9 @@
}
},
"cli-width": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz",
"integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=",
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
"dev": true
},
"cliui": {
@ -2380,7 +2380,7 @@
"integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
"dev": true,
"requires": {
"buffer-indexof": "1.1.0"
"buffer-indexof": "1.1.1"
}
},
"dom-converter": {
@ -2830,12 +2830,13 @@
}
},
"evp_bytestokey": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz",
"integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=",
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz",
"integrity": "sha512-ni0r0lrm7AOzsh2qC5mi9sj8S0gmj5fLNjfFpxN05FB4tAVZEKotbkjOtLPqTCX/CXT7NsUr6juZb4IFJeNNdA==",
"dev": true,
"requires": {
"create-hash": "1.1.3"
"md5.js": "1.3.4",
"safe-buffer": "5.1.1"
}
},
"execa": {
@ -3174,162 +3175,6 @@
"pinkie-promise": "2.0.1"
}
},
"firebase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/firebase/-/firebase-4.3.0.tgz",
"integrity": "sha1-Idlakvhix+QG3fhxwXO1DxU/jUY=",
"requires": {
"dom-storage": "2.0.2",
"faye-websocket": "0.9.3",
"jsonwebtoken": "7.4.2",
"promise-polyfill": "6.0.2",
"xmlhttprequest": "1.8.0"
},
"dependencies": {
"base64url": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/base64url/-/base64url-2.0.0.tgz",
"integrity": "sha1-6sFuA+oUOO/5Qj1puqNiYu0fcLs="
},
"buffer-equal-constant-time": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz",
"integrity": "sha1-+OcRMvf/5uAaXJaXpMbz5I1cyBk="
},
"dom-storage": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/dom-storage/-/dom-storage-2.0.2.tgz",
"integrity": "sha1-7RfL9oq9EOCu+BgnE+KXxeS1ALA="
},
"ecdsa-sig-formatter": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz",
"integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=",
"requires": {
"base64url": "2.0.0",
"safe-buffer": "5.1.1"
}
},
"faye-websocket": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.9.3.tgz",
"integrity": "sha1-SCpQWw3wrmJrlphm0710DNuWLoM=",
"requires": {
"websocket-driver": "0.6.5"
}
},
"hoek": {
"version": "2.16.3",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
"integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
},
"isemail": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/isemail/-/isemail-1.2.0.tgz",
"integrity": "sha1-vgPfjMPineTSxd9lASY/H6RZXpo="
},
"joi": {
"version": "6.10.1",
"resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
"integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=",
"requires": {
"hoek": "2.16.3",
"isemail": "1.2.0",
"moment": "2.18.1",
"topo": "1.1.0"
}
},
"jsonwebtoken": {
"version": "7.4.2",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.2.tgz",
"integrity": "sha1-VxuQPAfodcD8WSA9GseGZ9gOCc0=",
"requires": {
"joi": "6.10.1",
"jws": "3.1.4",
"lodash.once": "4.1.1",
"ms": "2.0.0",
"xtend": "4.0.1"
}
},
"jwa": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/jwa/-/jwa-1.1.5.tgz",
"integrity": "sha1-oFUs4CIHQs1S4VN3SjKQXDDnVuU=",
"requires": {
"base64url": "2.0.0",
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.9",
"safe-buffer": "5.1.1"
}
},
"jws": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz",
"integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=",
"requires": {
"base64url": "2.0.0",
"jwa": "1.1.5",
"safe-buffer": "5.1.1"
}
},
"lodash.once": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz",
"integrity": "sha1-DdOXEhPHxW34gJd9UEyI+0cal6w="
},
"moment": {
"version": "2.18.1",
"resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz",
"integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8="
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
},
"promise-polyfill": {
"version": "6.0.2",
"resolved": "https://registry.npmjs.org/promise-polyfill/-/promise-polyfill-6.0.2.tgz",
"integrity": "sha1-2chtPcTcLfkBboiUbe/Wm0m0EWI="
},
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
},
"topo": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
"integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
"requires": {
"hoek": "2.16.3"
}
},
"websocket-driver": {
"version": "0.6.5",
"resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz",
"integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=",
"requires": {
"websocket-extensions": "0.1.1"
}
},
"websocket-extensions": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.1.tgz",
"integrity": "sha1-domUmcGEtu91Q3fC27DNbLVdKec="
},
"xmlhttprequest": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/xmlhttprequest/-/xmlhttprequest-1.8.0.tgz",
"integrity": "sha1-Z/4HXFwk/vOfnWX197f+dRcZaPw="
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
}
}
},
"flatten": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
@ -5034,7 +4879,7 @@
"ansi-escapes": "2.0.0",
"chalk": "2.1.0",
"cli-cursor": "2.1.0",
"cli-width": "2.1.0",
"cli-width": "2.2.0",
"external-editor": "2.0.4",
"figures": "2.0.0",
"lodash": "4.17.4",
@ -6091,6 +5936,28 @@
"integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
"dev": true
},
"md5.js": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.4.tgz",
"integrity": "sha1-6b296UogpawYsENA/Fdk1bCdkB0=",
"dev": true,
"requires": {
"hash-base": "3.0.4",
"inherits": "2.0.3"
},
"dependencies": {
"hash-base": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.0.4.tgz",
"integrity": "sha1-X8hoaEfs1zSZQDMZprCj8/auSRg=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"safe-buffer": "5.1.1"
}
}
}
},
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -6326,9 +6193,9 @@
"integrity": "sha512-/Gn3XvOgaAK/ZnXA0ej9ivYm6uIvHwvZaSzx04ZUtG1Vw5RCKzw84dK0Ru9Ylnnq1xJU4WmdA63REkJb8cvYXg=="
},
"ngx-perfect-scrollbar": {
"version": "4.5.5",
"resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-4.5.5.tgz",
"integrity": "sha512-tC5unIM2JC6ciWHHOq1yjPe1cBvhLZzJa83GFFxqSBRgje6yU8LU2O+FkeZinAsB4F61bwfDg0tTVbK71I2oYg==",
"version": "4.5.6",
"resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-4.5.6.tgz",
"integrity": "sha512-vpFA6AzYhcjCKFLwXGg58OmLCjhHwi+YrozPK2NYllWNXz2dVhhnWuAubtChAVkb5d3brz2joVu8Di8vLuU6vw==",
"requires": {
"perfect-scrollbar": "0.7.1"
}
@ -6786,7 +6653,7 @@
"asn1.js": "4.9.1",
"browserify-aes": "1.0.6",
"create-hash": "1.1.3",
"evp_bytestokey": "1.0.0",
"evp_bytestokey": "1.0.2",
"pbkdf2": "3.0.13"
}
},
@ -10273,9 +10140,9 @@
"dev": true
},
"zone.js": {
"version": "0.8.16",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.16.tgz",
"integrity": "sha1-rDG2xBj4jA+Ritas2KQCrKkxOrs="
"version": "0.8.17",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.17.tgz",
"integrity": "sha1-TF5RhahX2o2nk9rzkZNxxaNrKgs="
}
}
}

View File

@ -1,6 +1,6 @@
{
"name": "fuse2",
"version": "1.0.0",
"version": "1.0.1",
"license": "MIT",
"scripts": {
"ng": "ng",
@ -12,43 +12,42 @@
},
"private": true,
"dependencies": {
"@angular/animations": "^4.3.5",
"@angular/animations": "4.3.5",
"@angular/cdk": "^2.0.0-beta.8",
"@angular/common": "^4.3.5",
"@angular/compiler": "^4.3.5",
"@angular/core": "^4.3.5",
"@angular/common": "4.3.5",
"@angular/compiler": "4.3.5",
"@angular/core": "4.3.5",
"@angular/flex-layout": "2.0.0-beta.8",
"@angular/forms": "^4.3.5",
"@angular/http": "^4.3.5",
"@angular/forms": "4.3.5",
"@angular/http": "4.3.5",
"@angular/material": "^2.0.0-beta.8",
"@angular/platform-browser": "^4.3.5",
"@angular/platform-browser-dynamic": "^4.3.5",
"@angular/router": "^4.3.5",
"@swimlane/ngx-charts": "^6.0.1",
"@angular/platform-browser": "4.3.5",
"@angular/platform-browser-dynamic": "4.3.5",
"@angular/router": "4.3.5",
"@swimlane/ngx-charts": "^6.0.2",
"@swimlane/ngx-datatable": "^9.3.1",
"@swimlane/ngx-dnd": "^2.2.0",
"@swimlane/ngx-dnd": "^3.0.0",
"angular-calendar": "^0.19.0",
"angular-in-memory-web-api": "^0.3.2",
"classlist.js": "^1.1.20150312",
"core-js": "^2.5.0",
"d3": "^4.10.0",
"firebase": "^4.3.0",
"hammerjs": "^2.0.8",
"highlight.js": "^9.12.0",
"intl": "^1.2.5",
"moment": "^2.18.1",
"ngx-color-picker": "^4.3.1",
"ngx-perfect-scrollbar": "^4.5.5",
"ngx-perfect-scrollbar": "^4.5.6",
"rxjs": "^5.4.3",
"web-animations-js": "^2.3.1",
"zone.js": "^0.8.16"
"zone.js": "^0.8.17"
},
"devDependencies": {
"@angular/cli": "^1.3.1",
"@angular/compiler-cli": "^4.3.5",
"@angular/language-service": "^4.3.5",
"@ngtools/webpack": "^1.6.1",
"@types/jasmine": "^2.5.53",
"@angular/cli": "^1.3.2",
"@angular/compiler-cli": "4.3.5",
"@angular/language-service": "4.3.5",
"@ngtools/webpack": "^1.6.2",
"@types/jasmine": "^2.5.54",
"@types/jasminewd2": "^2.0.2",
"@types/node": "^6.0.87",
"codelyzer": "~3.0.1",

View File

@ -4,9 +4,7 @@ import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { RouterModule, Routes } from '@angular/router';
import 'hammerjs';
import { SharedModule } from './core/modules/shared.module';
import { AppComponent } from './app.component';
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar';

View File

@ -1,6 +1,6 @@
import { sequence, trigger, stagger, animate, style, group, query as q, transition, keyframes, animateChild, state } from '@angular/animations';
import { sequence, trigger, stagger, animate, style, group, query, transition, keyframes, animateChild, state } from '@angular/animations';
const query = (s, a, o = {optional: true}) => q(s, a, o);
// const query = (s, a, o = {optional: true}) => q(s, a, o);
export class Animations
{
@ -70,23 +70,119 @@ export class Animations
transition('* => void', animate('300ms'))
]);
public static routerTransition = trigger('routerTransition', [
public static routerTransitionLeft = trigger('routerTransitionLeft', [
transition('* => *', [
query(':enter, :leave', style({
position: 'absolute',
top : 0,
bottom : 0,
left : 0,
right : 0
})),
query(':enter', style({
transform: 'translateY(100%)',
opacity : 0
})),
query('fuse-content > :enter, fuse-content > :leave', [
style({
position: 'absolute',
top : 0,
bottom : 0,
left : 0,
right : 0
})
], {optional: true}),
query('fuse-content > :enter', [
style({
transform: 'translateX(100%)',
opacity : 0
})
], {optional: true}),
sequence([
group([
query(':leave', [
query('fuse-content > :leave', [
style({
transform: 'translateX(0)',
opacity : 1
}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateX(-100%)',
opacity : 0
}))
], {optional: true}),
query('fuse-content > :enter', [
style({transform: 'translateX(100%)'}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateX(0%)',
opacity : 1
}))
], {optional: true})
]),
query('fuse-content > :leave', animateChild(), {optional: true}),
query('fuse-content > :enter', animateChild(), {optional: true})
])
])
]);
public static routerTransitionRight = trigger('routerTransitionRight', [
transition('* => *', [
query('fuse-content > :enter, fuse-content > :leave', [
style({
position: 'absolute',
top : 0,
bottom : 0,
left : 0,
right : 0
})
], {optional: true}),
query('fuse-content > :enter', [
style({
transform: 'translateX(-100%)',
opacity : 0
})
], {optional: true}),
sequence([
group([
query('fuse-content > :leave', [
style({
transform: 'translateX(0)',
opacity : 1
}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateX(100%)',
opacity : 0
}))
], {optional: true}),
query('fuse-content > :enter', [
style({transform: 'translateX(-100%)'}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateX(0%)',
opacity : 1
}))
], {optional: true})
]),
query('fuse-content > :leave', animateChild(), {optional: true}),
query('fuse-content > :enter', animateChild(), {optional: true})
])
])
]);
public static routerTransitionUp = trigger('routerTransitionUp', [
transition('* => *', [
query('fuse-content > :enter, fuse-content > :leave', [
style({
position: 'absolute',
top : 0,
bottom : 0,
left : 0,
right : 0
})
], {optional: true}),
query('fuse-content > :enter', [
style({
transform: 'translateY(100%)',
opacity : 0
})
], {optional: true}),
sequence([
group([
query('fuse-content > :leave', [
style({
transform: 'translateY(0)',
opacity : 1
@ -96,19 +192,108 @@ export class Animations
transform: 'translateY(-100%)',
opacity : 0
}))
]),
query(':enter', [
], {optional: true}),
query('fuse-content > :enter', [
style({transform: 'translateY(100%)'}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateY(0%)',
opacity : 1
}))
])
], {optional: true})
]),
query(':leave', animateChild()),
query(':enter', animateChild())
query('fuse-content > :leave', animateChild(), {optional: true}),
query('fuse-content > :enter', animateChild(), {optional: true})
])
])
]);
public static routerTransitionDown = trigger('routerTransitionDown', [
transition('* => *', [
query('fuse-content > :enter, fuse-content > :leave', [
style({
position: 'absolute',
top : 0,
bottom : 0,
left : 0,
right : 0
})
], {optional: true}),
query('fuse-content > :enter', [
style({
transform: 'translateY(-100%)',
opacity : 0
})
], {optional: true}),
sequence([
group([
query('fuse-content > :leave', [
style({
transform: 'translateY(0)',
opacity : 1
}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateY(100%)',
opacity : 0
}))
], {optional: true}),
query('fuse-content > :enter', [
style({transform: 'translateY(-100%)'}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
transform: 'translateY(0%)',
opacity : 1
}))
], {optional: true})
]),
query('fuse-content > :leave', animateChild(), {optional: true}),
query('fuse-content > :enter', animateChild(), {optional: true})
])
])
]);
public static routerTransitionFade = trigger('routerTransitionFade', [
transition('* => *', [
query('fuse-content > :enter, fuse-content > :leave ', [
style({
position: 'absolute',
top : 0,
bottom : 0,
left : 0,
right : 0
})
], {optional: true}),
query('fuse-content > :enter', [
style({
opacity: 0
})
], {optional: true}),
// sequence([
query('fuse-content > :leave', [
style({
opacity: 1
}),
animate('300ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
opacity: 0
}))
], {optional: true}),
query('fuse-content > :enter', [
style({
opacity: 0
}),
animate('300ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({
opacity: 1
}))
], {optional: true}),
// ]),
query('fuse-content > :enter', animateChild(), {optional: true}),
query('fuse-content > :leave', animateChild(), {optional: true})
])
]);
}

View File

@ -61,5 +61,35 @@
</div>
</md-list-item>
<md-divider></md-divider>
<h3 md-subheader>Animation:</h3>
<md-list-item>
<div fxFlex fxLayout="row" fxLayoutAlign="space-between center">
<h4>Router Animation</h4>
<md-select [(ngModel)]="fuseSettings.routerAnimation">
<md-option value="none">
None
</md-option>
<md-option value="slideUp">
Slide up
</md-option>
<md-option value="slideDown">
Slide down
</md-option>
<md-option value="slideRight">
Slide right
</md-option>
<md-option value="slideLeft">
Slide left
</md-option>
<md-option value="fadeIn">
Fade in
</md-option>
</md-select>
</div>
</md-list-item>
</md-list>
</div>

View File

@ -30,7 +30,8 @@ export class FuseConfigService
navbar : 'md-fuse-dark-500-bg',
footer : 'md-fuse-dark-800-bg'
},
customScrollbars: true
customScrollbars: true,
routerAnimation : 'fadeIn'
};
/**

View File

@ -1,32 +1,78 @@
import { Component, HostBinding, OnInit } from '@angular/core';
import { Component, HostBinding, OnInit, OnDestroy } from '@angular/core';
import { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
import { Animations } from '../../core/animations';
import { FuseConfigService } from '../../core/services/config.service';
import { Subscription } from 'rxjs/Subscription';
@Component({
selector : 'fuse-content',
templateUrl: './content.component.html',
styleUrls : ['./content.component.scss'],
animations : [Animations.routerTransition]
animations : [
Animations.routerTransitionUp,
Animations.routerTransitionDown,
Animations.routerTransitionRight,
Animations.routerTransitionLeft,
Animations.routerTransitionFade
]
})
export class FuseContentComponent implements OnInit
export class FuseContentComponent implements OnInit, OnDestroy
{
@HostBinding('@routerTransition') routeAnimationState = false;
onSettingsChanged: Subscription;
fuseSettings: any;
@HostBinding('@routerTransitionUp') routeAnimationUp = false;
@HostBinding('@routerTransitionDown') routeAnimationDown = false;
@HostBinding('@routerTransitionRight') routeAnimationRight = false;
@HostBinding('@routerTransitionLeft') routeAnimationLeft = false;
@HostBinding('@routerTransitionFade') routeAnimationFade = false;
constructor(
private router: Router,
private activatedRoute: ActivatedRoute
private activatedRoute: ActivatedRoute,
private fuseConfig: FuseConfigService
)
{
this.router.events
.filter((event) => event instanceof NavigationEnd)
.map(() => this.activatedRoute)
.subscribe((event) => {
this.routeAnimationState = !this.routeAnimationState;
switch ( this.fuseSettings.routerAnimation )
{
case 'fadeIn':
this.routeAnimationFade = !this.routeAnimationFade;
break;
case 'slideUp':
this.routeAnimationUp = !this.routeAnimationUp;
break;
case 'slideDown':
this.routeAnimationDown = !this.routeAnimationDown;
break;
case 'slideRight':
this.routeAnimationRight = !this.routeAnimationRight;
break;
case 'slideLeft':
this.routeAnimationLeft = !this.routeAnimationLeft;
break;
}
});
this.onSettingsChanged =
this.fuseConfig.onSettingsChanged
.subscribe(
(newSettings) => {
this.fuseSettings = newSettings;
}
);
}
ngOnInit()
{
}
ngOnDestroy()
{
this.onSettingsChanged.unsubscribe();
}
}

View File

@ -15,6 +15,13 @@
</div>
<div class="toolbar-separator"></div>
<a href="http://themeforest.net/item/fuse-angularjs-material-design-admin-template/12931855?ref=srcn"
target="_blank" md-raised-button class="ml-8 ml-sm-24 md-pink-bg" fxFlex="0 0 auto" fxLayout="row"
fxLayoutAlign="start center">
<md-icon class="s-16 mr-sm-4">shopping_cart</md-icon>
<span fxHide fxShow.gt-xs>Purchase Fuse template (Angular4+)</span>
</a>
</div>
<div class="" fxFlex="0 1 auto" fxLayout="row" fxLayoutAlign="start center">