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": { "@angular/cli": {
"version": "1.3.1", "version": "1.3.2",
"resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.3.1.tgz", "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.3.2.tgz",
"integrity": "sha512-khmFQjuuqUxulvPnYTaThSf7Dw5B5blMuVsU8MkSe3mfdyc/x/DaKjfPXDfFNGoDiiSJfMwob2CT3OYQOPI2MQ==", "integrity": "sha512-VAZXI19PbhhUE/dJH5r6HT7502y0OXYzxhbGIagh/e7SNKnVV8KglVL4zfTfnsI8kmLrFFbAmPy7xomKO8Btkg==",
"dev": true, "dev": true,
"requires": { "requires": {
"@angular-devkit/build-optimizer": "0.0.13", "@angular-devkit/build-optimizer": "0.0.13",
"@ngtools/json-schema": "1.1.0", "@ngtools/json-schema": "1.1.0",
"@ngtools/webpack": "1.6.1", "@ngtools/webpack": "1.6.2",
"autoprefixer": "6.7.7", "autoprefixer": "6.7.7",
"chalk": "2.1.0", "chalk": "2.1.0",
"circular-dependency-plugin": "3.0.0", "circular-dependency-plugin": "3.0.0",
@ -99,7 +99,7 @@
"webpack-dev-middleware": "1.12.0", "webpack-dev-middleware": "1.12.0",
"webpack-dev-server": "2.5.1", "webpack-dev-server": "2.5.1",
"webpack-merge": "4.1.0", "webpack-merge": "4.1.0",
"zone.js": "0.8.16" "zone.js": "0.8.17"
} }
}, },
"@angular/common": { "@angular/common": {
@ -129,6 +129,15 @@
"reflect-metadata": "0.1.10" "reflect-metadata": "0.1.10"
}, },
"dependencies": { "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": { "minimist": {
"version": "1.2.0", "version": "1.2.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
@ -204,15 +213,6 @@
"tslib": "1.7.1" "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": { "@ngtools/json-schema": {
"version": "1.1.0", "version": "1.1.0",
"resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz", "resolved": "https://registry.npmjs.org/@ngtools/json-schema/-/json-schema-1.1.0.tgz",
@ -220,9 +220,9 @@
"dev": true "dev": true
}, },
"@ngtools/webpack": { "@ngtools/webpack": {
"version": "1.6.1", "version": "1.6.2",
"resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.6.1.tgz", "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.6.2.tgz",
"integrity": "sha512-a+nmdxKadC7Fz6NkolsAUzutjdajL3tupEfvJccwaBtmok/JJOps8a4lZnWKMTb/3+zsg8xZIGlSEXrTwPLNmA==", "integrity": "sha512-2s2kCCV3FQUC+MG69e+H5k7zELuVcQ0Gkl1ioqR25HOclxv0UGVY7jsmz9LRm/DanS5ORXQt4S82EFV1dY4w+A==",
"dev": true, "dev": true,
"requires": { "requires": {
"loader-utils": "1.1.0", "loader-utils": "1.1.0",
@ -231,9 +231,9 @@
} }
}, },
"@swimlane/ngx-charts": { "@swimlane/ngx-charts": {
"version": "6.0.1", "version": "6.0.2",
"resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-6.0.1.tgz", "resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-6.0.2.tgz",
"integrity": "sha1-sn99Q3vtCXbUTZL7rDUHQZH1sqA=" "integrity": "sha512-f9js4MptTBgYxUo53nK7fLVxgjWjLiudh0fVVvh4fCEQBG/UOsK9KGpFt5dSJJNNGQRdTiDVUzLzVnl8w+JwFg=="
}, },
"@swimlane/ngx-datatable": { "@swimlane/ngx-datatable": {
"version": "9.3.1", "version": "9.3.1",
@ -241,17 +241,17 @@
"integrity": "sha1-qbEwcycSHd+HTnW6a9amxpySZaE=" "integrity": "sha1-qbEwcycSHd+HTnW6a9amxpySZaE="
}, },
"@swimlane/ngx-dnd": { "@swimlane/ngx-dnd": {
"version": "2.2.0", "version": "3.0.0",
"resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-2.2.0.tgz", "resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-3.0.0.tgz",
"integrity": "sha512-ndkJZlNx68MtQ9kY4mKnwwGrlepaj0Wd/QsDn2cXUBjsOJPaX1f8EUZ98OXdg6cc1yQP8JxTkgmgRPDsiV6CSw==", "integrity": "sha512-LH/Nc6/2tyX7U9SHa5hNvC2Sk/svj/PMrJu34V/BF/H811fik5AGzTjORdGQo7cl2m951MEkl9yijMKywRw37w==",
"requires": { "requires": {
"dragula": "3.7.2" "dragula": "3.7.2"
} }
}, },
"@types/jasmine": { "@types/jasmine": {
"version": "2.5.53", "version": "2.5.54",
"resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.53.tgz", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.5.54.tgz",
"integrity": "sha512-2YNL0jXYuN7w07mb1sMZQ6T6zOvGi83v8UbjhBZ8mhvI1VkQ2STU9XOrTFyvWswMyh5rW1evS+e7qltYJvTqPA==", "integrity": "sha512-B9YofFbUljs19g5gBKUYeLIulsh31U5AK70F41BImQRHEZQGm4GcN922UvnYwkduMqbC/NH+9fruWa/zrqvHIg==",
"dev": true "dev": true
}, },
"@types/jasminewd2": { "@types/jasminewd2": {
@ -260,7 +260,7 @@
"integrity": "sha1-X2jh5pe/ELxv2Mvy4Aaj1nEsW2Q=", "integrity": "sha1-X2jh5pe/ELxv2Mvy4Aaj1nEsW2Q=",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/jasmine": "2.5.53" "@types/jasmine": "2.5.54"
} }
}, },
"@types/node": { "@types/node": {
@ -636,7 +636,7 @@
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000716", "caniuse-db": "1.0.30000717",
"normalize-range": "0.1.2", "normalize-range": "0.1.2",
"num2fraction": "1.2.2", "num2fraction": "1.2.2",
"postcss": "5.2.17", "postcss": "5.2.17",
@ -1003,7 +1003,7 @@
"buffer-xor": "1.0.3", "buffer-xor": "1.0.3",
"cipher-base": "1.0.4", "cipher-base": "1.0.4",
"create-hash": "1.1.3", "create-hash": "1.1.3",
"evp_bytestokey": "1.0.0", "evp_bytestokey": "1.0.2",
"inherits": "2.0.3" "inherits": "2.0.3"
} }
}, },
@ -1015,7 +1015,7 @@
"requires": { "requires": {
"browserify-aes": "1.0.6", "browserify-aes": "1.0.6",
"browserify-des": "1.0.0", "browserify-des": "1.0.0",
"evp_bytestokey": "1.0.0" "evp_bytestokey": "1.0.2"
} }
}, },
"browserify-des": { "browserify-des": {
@ -1069,7 +1069,7 @@
"integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
"dev": true, "dev": true,
"requires": { "requires": {
"caniuse-db": "1.0.30000716", "caniuse-db": "1.0.30000717",
"electron-to-chromium": "1.3.18" "electron-to-chromium": "1.3.18"
} }
}, },
@ -1085,9 +1085,9 @@
} }
}, },
"buffer-indexof": { "buffer-indexof": {
"version": "1.1.0", "version": "1.1.1",
"resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.0.tgz", "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
"integrity": "sha1-9U9kfE9OJSKLqmVqLlfkPV8nCYI=", "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
"dev": true "dev": true
}, },
"buffer-xor": { "buffer-xor": {
@ -1158,15 +1158,15 @@
"dev": true, "dev": true,
"requires": { "requires": {
"browserslist": "1.7.7", "browserslist": "1.7.7",
"caniuse-db": "1.0.30000716", "caniuse-db": "1.0.30000717",
"lodash.memoize": "4.1.2", "lodash.memoize": "4.1.2",
"lodash.uniq": "4.5.0" "lodash.uniq": "4.5.0"
} }
}, },
"caniuse-db": { "caniuse-db": {
"version": "1.0.30000716", "version": "1.0.30000717",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000716.tgz", "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000717.tgz",
"integrity": "sha1-sHF3ZdFXZi6MdKYVYshMn8NgSkk=", "integrity": "sha1-J931/szdM4yZpiyXiMJpT5n2ftc=",
"dev": true "dev": true
}, },
"caseless": { "caseless": {
@ -1317,9 +1317,9 @@
} }
}, },
"cli-width": { "cli-width": {
"version": "2.1.0", "version": "2.2.0",
"resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.1.0.tgz", "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.0.tgz",
"integrity": "sha1-sjTKIJsp72b8UY2bmNWEewDt8Ao=", "integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
"dev": true "dev": true
}, },
"cliui": { "cliui": {
@ -2380,7 +2380,7 @@
"integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
"dev": true, "dev": true,
"requires": { "requires": {
"buffer-indexof": "1.1.0" "buffer-indexof": "1.1.1"
} }
}, },
"dom-converter": { "dom-converter": {
@ -2830,12 +2830,13 @@
} }
}, },
"evp_bytestokey": { "evp_bytestokey": {
"version": "1.0.0", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.0.tgz", "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.2.tgz",
"integrity": "sha1-SXtmrZ/vZc18CKYYCCS6FHa2blM=", "integrity": "sha512-ni0r0lrm7AOzsh2qC5mi9sj8S0gmj5fLNjfFpxN05FB4tAVZEKotbkjOtLPqTCX/CXT7NsUr6juZb4IFJeNNdA==",
"dev": true, "dev": true,
"requires": { "requires": {
"create-hash": "1.1.3" "md5.js": "1.3.4",
"safe-buffer": "5.1.1"
} }
}, },
"execa": { "execa": {
@ -3174,162 +3175,6 @@
"pinkie-promise": "2.0.1" "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": { "flatten": {
"version": "1.0.2", "version": "1.0.2",
"resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz", "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
@ -5034,7 +4879,7 @@
"ansi-escapes": "2.0.0", "ansi-escapes": "2.0.0",
"chalk": "2.1.0", "chalk": "2.1.0",
"cli-cursor": "2.1.0", "cli-cursor": "2.1.0",
"cli-width": "2.1.0", "cli-width": "2.2.0",
"external-editor": "2.0.4", "external-editor": "2.0.4",
"figures": "2.0.0", "figures": "2.0.0",
"lodash": "4.17.4", "lodash": "4.17.4",
@ -6091,6 +5936,28 @@
"integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
"dev": true "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": { "media-typer": {
"version": "0.3.0", "version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz",
@ -6326,9 +6193,9 @@
"integrity": "sha512-/Gn3XvOgaAK/ZnXA0ej9ivYm6uIvHwvZaSzx04ZUtG1Vw5RCKzw84dK0Ru9Ylnnq1xJU4WmdA63REkJb8cvYXg==" "integrity": "sha512-/Gn3XvOgaAK/ZnXA0ej9ivYm6uIvHwvZaSzx04ZUtG1Vw5RCKzw84dK0Ru9Ylnnq1xJU4WmdA63REkJb8cvYXg=="
}, },
"ngx-perfect-scrollbar": { "ngx-perfect-scrollbar": {
"version": "4.5.5", "version": "4.5.6",
"resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-4.5.5.tgz", "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-4.5.6.tgz",
"integrity": "sha512-tC5unIM2JC6ciWHHOq1yjPe1cBvhLZzJa83GFFxqSBRgje6yU8LU2O+FkeZinAsB4F61bwfDg0tTVbK71I2oYg==", "integrity": "sha512-vpFA6AzYhcjCKFLwXGg58OmLCjhHwi+YrozPK2NYllWNXz2dVhhnWuAubtChAVkb5d3brz2joVu8Di8vLuU6vw==",
"requires": { "requires": {
"perfect-scrollbar": "0.7.1" "perfect-scrollbar": "0.7.1"
} }
@ -6786,7 +6653,7 @@
"asn1.js": "4.9.1", "asn1.js": "4.9.1",
"browserify-aes": "1.0.6", "browserify-aes": "1.0.6",
"create-hash": "1.1.3", "create-hash": "1.1.3",
"evp_bytestokey": "1.0.0", "evp_bytestokey": "1.0.2",
"pbkdf2": "3.0.13" "pbkdf2": "3.0.13"
} }
}, },
@ -10273,9 +10140,9 @@
"dev": true "dev": true
}, },
"zone.js": { "zone.js": {
"version": "0.8.16", "version": "0.8.17",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.16.tgz", "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.17.tgz",
"integrity": "sha1-rDG2xBj4jA+Ritas2KQCrKkxOrs=" "integrity": "sha1-TF5RhahX2o2nk9rzkZNxxaNrKgs="
} }
} }
} }

View File

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

View File

@ -4,9 +4,7 @@ import { HttpModule } from '@angular/http';
import { HttpClientModule } from '@angular/common/http'; import { HttpClientModule } from '@angular/common/http';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
import { RouterModule, Routes } from '@angular/router'; import { RouterModule, Routes } from '@angular/router';
import 'hammerjs'; import 'hammerjs';
import { SharedModule } from './core/modules/shared.module'; import { SharedModule } from './core/modules/shared.module';
import { AppComponent } from './app.component'; import { AppComponent } from './app.component';
import { PerfectScrollbarModule } from 'ngx-perfect-scrollbar'; 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 export class Animations
{ {
@ -70,23 +70,119 @@ export class Animations
transition('* => void', animate('300ms')) transition('* => void', animate('300ms'))
]); ]);
public static routerTransition = trigger('routerTransition', [ public static routerTransitionLeft = trigger('routerTransitionLeft', [
transition('* => *', [ transition('* => *', [
query(':enter, :leave', style({ query('fuse-content > :enter, fuse-content > :leave', [
style({
position: 'absolute', position: 'absolute',
top : 0, top : 0,
bottom : 0, bottom : 0,
left : 0, left : 0,
right : 0 right : 0
})), })
query(':enter', style({ ], {optional: true}),
transform: 'translateY(100%)', query('fuse-content > :enter', [
style({
transform: 'translateX(100%)',
opacity : 0 opacity : 0
})), })
], {optional: true}),
sequence([ sequence([
group([ 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({ style({
transform: 'translateY(0)', transform: 'translateY(0)',
opacity : 1 opacity : 1
@ -96,19 +192,108 @@ export class Animations
transform: 'translateY(-100%)', transform: 'translateY(-100%)',
opacity : 0 opacity : 0
})) }))
]), ], {optional: true}),
query(':enter', [ query('fuse-content > :enter', [
style({transform: 'translateY(100%)'}), style({transform: 'translateY(100%)'}),
animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)', animate('400ms cubic-bezier(0.250, 0.460, 0.450, 0.940)',
style({ style({
transform: 'translateY(0%)', transform: 'translateY(0%)',
opacity : 1 opacity : 1
})) }))
]) ], {optional: true})
]), ]),
query(':leave', animateChild()), query('fuse-content > :leave', animateChild(), {optional: true}),
query(':enter', animateChild()) 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> </div>
</md-list-item> </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> </md-list>
</div> </div>

View File

@ -30,7 +30,8 @@ export class FuseConfigService
navbar : 'md-fuse-dark-500-bg', navbar : 'md-fuse-dark-500-bg',
footer : 'md-fuse-dark-800-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 { ActivatedRoute, NavigationEnd, Router } from '@angular/router';
import { Animations } from '../../core/animations'; import { Animations } from '../../core/animations';
import { FuseConfigService } from '../../core/services/config.service';
import { Subscription } from 'rxjs/Subscription';
@Component({ @Component({
selector : 'fuse-content', selector : 'fuse-content',
templateUrl: './content.component.html', templateUrl: './content.component.html',
styleUrls : ['./content.component.scss'], 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( constructor(
private router: Router, private router: Router,
private activatedRoute: ActivatedRoute private activatedRoute: ActivatedRoute,
private fuseConfig: FuseConfigService
) )
{ {
this.router.events this.router.events
.filter((event) => event instanceof NavigationEnd) .filter((event) => event instanceof NavigationEnd)
.map(() => this.activatedRoute) .map(() => this.activatedRoute)
.subscribe((event) => { .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() ngOnInit()
{ {
} }
ngOnDestroy()
{
this.onSettingsChanged.unsubscribe();
}
} }

View File

@ -15,6 +15,13 @@
</div> </div>
<div class="toolbar-separator"></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>
<div class="" fxFlex="0 1 auto" fxLayout="row" fxLayoutAlign="start center"> <div class="" fxFlex="0 1 auto" fxLayout="row" fxLayoutAlign="start center">