diff --git a/package-lock.json b/package-lock.json index 4fb35baf..9df6e071 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,6 +4,11 @@ "lockfileVersion": 1, "requires": true, "dependencies": { + "@agm/core": { + "version": "1.0.0-beta.1", + "resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0-beta.1.tgz", + "integrity": "sha512-IVwQGmcaE42SmYY2e5QwqOC0vrSXZCW8BhATY0Vpy3NjbiydSXi9T81hVqKLvuKaB3ves1sv3W++SB1Wj+5B6A==" + }, "@angular-devkit/build-optimizer": { "version": "0.0.20", "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.20.tgz", @@ -43,17 +48,17 @@ } }, "@angular/animations": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.4.3.tgz", - "integrity": "sha1-OWxKW/sihH+eRYJFuplfnBMMDPM=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-4.4.5.tgz", + "integrity": "sha1-WlpVHXV+WlVgCY9vhTXBAtk5VNc=", "requires": { "tslib": "1.7.1" } }, "@angular/cdk": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-2.0.0-beta.11.tgz", - "integrity": "sha512-sbOqPoC439SDmpLiMq2XjidMMCJ6ofToDew4IXd9ne0jLSd0gGU20tTrRHf79HMTmlAySP7PBOq4Wv1eOFu/8A==", + "version": "2.0.0-beta.12", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-2.0.0-beta.12.tgz", + "integrity": "sha1-OiQ8tiuT9OA5EgunD5ANyeI1Yi4=", "requires": { "tslib": "1.7.1" } @@ -120,32 +125,32 @@ "webpack-dev-middleware": "1.12.0", "webpack-dev-server": "2.7.1", "webpack-merge": "4.1.0", - "zone.js": "0.8.17" + "zone.js": "0.8.18" } }, "@angular/common": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.4.3.tgz", - "integrity": "sha1-+SrGiwK+xfDm02A6hDKU3JbJYHQ=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-4.4.5.tgz", + "integrity": "sha1-vVF53JIq2/TD6m37Gec8uEn/3Dc=", "requires": { "tslib": "1.7.1" } }, "@angular/compiler": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.3.tgz", - "integrity": "sha1-jwEWPa19s0CEl9mdOHVUtrGFrWY=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-4.4.5.tgz", + "integrity": "sha1-hyGlkQ8rtS8J4tQEytJk817eWQI=", "requires": { "tslib": "1.7.1" } }, "@angular/compiler-cli": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.3.tgz", - "integrity": "sha1-GDr4HxQRhrjWYLBkKVktQLdUCko=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-4.4.5.tgz", + "integrity": "sha1-YfoDNqzRogjF8cXG1N9nnpmVMkg=", "dev": true, "requires": { - "@angular/tsc-wrapped": "4.4.3", + "@angular/tsc-wrapped": "4.4.5", "minimist": "1.2.0", "reflect-metadata": "0.1.10" }, @@ -159,9 +164,9 @@ } }, "@angular/core": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.3.tgz", - "integrity": "sha1-5x0rB76qy6tIq39R1OIobqXXDhU=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-4.4.5.tgz", + "integrity": "sha1-VKy8vaEXGfiDx4apBpdKvrEy8aA=", "requires": { "tslib": "1.7.1" } @@ -175,63 +180,63 @@ } }, "@angular/forms": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.4.3.tgz", - "integrity": "sha1-JbQburWL8dqHJBHIUXwQ18U3PY4=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-4.4.5.tgz", + "integrity": "sha1-6VUghiMqqyzh0I7xmLYiBOoTxDs=", "requires": { "tslib": "1.7.1" } }, "@angular/http": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.3.tgz", - "integrity": "sha1-tVftJBRKrMRLE2zUd+hNL1eAiQM=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-4.4.5.tgz", + "integrity": "sha1-LHNe2EJAH8I1ZBkmjiiNzyOW6E8=", "requires": { "tslib": "1.7.1" } }, "@angular/language-service": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-4.4.3.tgz", - "integrity": "sha1-RScBGllJZ6OW7/PAXtFb1MhtUbc=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-4.4.5.tgz", + "integrity": "sha1-zO8Tm40+FoSwGvo1xvvyFy4rtnY=", "dev": true }, "@angular/material": { - "version": "2.0.0-beta.11", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.11.tgz", - "integrity": "sha512-k4eyil3n8aHqqS3Fq4N77XvF3bcXA2Ttgf9ujDZwXmMd2NlR4XL+LJrguPLwNSQ6i3EYT+ovE2p4XUu2nkHVeQ==", + "version": "2.0.0-beta.12", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-2.0.0-beta.12.tgz", + "integrity": "sha1-cbbQt7AhiR5dDjaIwdS9eMdFf1g=", "requires": { "tslib": "1.7.1" } }, "@angular/platform-browser": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.3.tgz", - "integrity": "sha1-I/mkW9Pcf0TZeHf7+OYDLez8ncs=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-4.4.5.tgz", + "integrity": "sha1-dOuRwLdYEm8m1T7lbHz0ZovZysU=", "requires": { "tslib": "1.7.1" } }, "@angular/platform-browser-dynamic": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.4.3.tgz", - "integrity": "sha1-5B3dglJDJ3UxDqtZQM3Y3wYY8IQ=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-4.4.5.tgz", + "integrity": "sha1-d029wdkPd12/HjGfbtQrJgYjth8=", "requires": { "tslib": "1.7.1" } }, "@angular/router": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.4.3.tgz", - "integrity": "sha1-JsyUd1o4YJRq6vHC6PYPTUTpCZE=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-4.4.5.tgz", + "integrity": "sha1-9zEwz0h9mjLMGYiv2llmX0Siiok=", "requires": { "tslib": "1.7.1" } }, "@angular/tsc-wrapped": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.3.tgz", - "integrity": "sha1-LT84IQodTbA/yG3PHglYErhc0Rk=", + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/@angular/tsc-wrapped/-/tsc-wrapped-4.4.5.tgz", + "integrity": "sha1-MKDLtDpmOqddyphIlL5IE3eN3Jw=", "dev": true, "requires": { "tsickle": "0.21.6" @@ -429,31 +434,31 @@ "dev": true }, "angular-calendar": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.19.0.tgz", - "integrity": "sha512-RbLciS+OBl9ITgPKVUOjMUXe7sTP5KHPZtCB7Rru3ebUXh8WehdZvELC3Wxz0euS8hqBP2o3ueSqXcAy1pz2bw==", + "version": "0.21.2", + "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.21.2.tgz", + "integrity": "sha512-ueMlZ8B0qn4kpVtSkvXdRLglrBa4qPdbyD6a2WbY2KBAV5xgD06CwCiE4hqnCyClGhJUVNG7P1DlojXjgNGxvg==", "requires": { - "angular-draggable-droppable": "1.0.1", - "angular-resizable-element": "1.2.0", - "calendar-utils": "0.0.56", - "date-fns": "1.28.5", - "positioning": "1.3.0" + "angular-draggable-droppable": "1.1.0", + "angular-resizable-element": "1.2.3", + "calendar-utils": "0.0.57", + "date-fns": "1.29.0", + "positioning": "1.3.1" } }, "angular-draggable-droppable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-1.0.1.tgz", - "integrity": "sha1-etcMMQmUsPmA9A04Lc5ZlG/jDc8=" + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/angular-draggable-droppable/-/angular-draggable-droppable-1.1.0.tgz", + "integrity": "sha512-mPeeFLhCXCxTrHh99A/0DcRCJKcNM5bkFKgp2qLxYF8tPVcK1HFmsQpqPAkAS2afxhJUps7FqTm6cb22oF3uoA==" }, "angular-in-memory-web-api": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.4.6.tgz", - "integrity": "sha1-EB9Zo4XrFTnH+TB1uv0MHLd061g=" + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.5.0.tgz", + "integrity": "sha1-A372pLPq6kMpzGjEY/Y9oWB/Xsk=" }, "angular-resizable-element": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/angular-resizable-element/-/angular-resizable-element-1.2.0.tgz", - "integrity": "sha512-i5xCl4n2VMgGK4gY6Jtho0K5aazbsqNw1bmPYpI9RwlKK+dIOcsMRuMl1JPWzrznHsm4qEsfYg+9KLkYsYy+/g==" + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/angular-resizable-element/-/angular-resizable-element-1.2.3.tgz", + "integrity": "sha512-1JVz1xXTBz+qRCVljjRTQRNZ95HeW+96P+RaWsP+ikPWbE16fS4STrY6vgK6deLeFpMy5nHW+Kd174qlXq6+bg==" }, "angular2-markdown": { "version": "1.6.0", @@ -766,7 +771,7 @@ "integrity": "sha1-CpSJ8UTecO+zzkMArM2zKeL8VDs=", "dev": true, "requires": { - "core-js": "2.5.0", + "core-js": "2.5.1", "regenerator-runtime": "0.10.5" } }, @@ -854,11 +859,6 @@ "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", "dev": true }, - "batch-processor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/batch-processor/-/batch-processor-1.0.0.tgz", - "integrity": "sha1-dclcMrdI4IUNEMKxaPa9vpiRrOg=" - }, "bcrypt-pbkdf": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz", @@ -1161,9 +1161,9 @@ "dev": true }, "calendar-utils": { - "version": "0.0.56", - "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.0.56.tgz", - "integrity": "sha512-IvvzvIGmtDdVjSrnIOd5dDJ3ATWLztqdgLOTeIB2IJonN60LMa2R71KDVpdF8w9sKm3drRV4kfgIbocYJAw6+Q==" + "version": "0.0.57", + "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.0.57.tgz", + "integrity": "sha512-d3DMPFafv5JfJIvjnWuo+mgUYLkM9imIpSIsNmq6jj+AVIXwIzC5lwpNpUsNPP9mnUdpUNwDiJGLPlNGE6y1Mg==" }, "callsite": { "version": "1.0.0", @@ -1290,6 +1290,7 @@ "requires": { "anymatch": "1.3.0", "async-each": "1.0.1", + "fsevents": "1.1.2", "glob-parent": "2.0.0", "inherits": "2.0.3", "is-binary-path": "1.0.1", @@ -1743,9 +1744,9 @@ } }, "core-js": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.0.tgz", - "integrity": "sha1-VpwFCRi+ZIazg3VSAorgRmtxcIY=" + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.5.1.tgz", + "integrity": "sha1-rmh03GaTd4m4B1T/VCjfZoGcpQs=" }, "core-object": { "version": "3.1.5", @@ -2304,9 +2305,9 @@ } }, "date-fns": { - "version": "1.28.5", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.28.5.tgz", - "integrity": "sha1-JXz8RdMi30XvVlhmWWfuhBzXP68=" + "version": "1.29.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.29.0.tgz", + "integrity": "sha512-lbTXWZ6M20cWH8N9S6afb0SBm6tMk+uUg6z3MqHPKE9atmsY3kJkTm8vKe93izJ2B2+q5MV990sM2CHgtAZaOw==" }, "date-now": { "version": "0.1.4", @@ -2614,14 +2615,6 @@ "integrity": "sha1-qWfr3P6O0Ag/wkTRiUAiqOgRPqI=", "dev": true }, - "element-resize-detector": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/element-resize-detector/-/element-resize-detector-1.1.12.tgz", - "integrity": "sha1-iz/W7t2hf5wAs2Cg6i35knroC6I=", - "requires": { - "batch-processor": "1.0.0" - } - }, "elliptic": { "version": "6.4.0", "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.4.0.tgz", @@ -3331,6 +3324,905 @@ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, + "fsevents": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.2.tgz", + "integrity": "sha512-Sn44E5wQW4bTHXvQmvSHwqbuiXtduD6Rrjm2ZtUEGbyrig+nUH3t/QD4M4/ZXViY556TBpRgZkHLDx3JxPwxiw==", + "dev": true, + "optional": true, + "requires": { + "nan": "2.6.2", + "node-pre-gyp": "0.6.36" + }, + "dependencies": { + "abbrev": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ajv": { + "version": "4.11.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "co": "4.6.0", + "json-stable-stringify": "1.0.1" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "aproba": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "1.0.0", + "readable-stream": "2.2.9" + } + }, + "asn1": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "assert-plus": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws-sign2": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "aws4": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "balanced-match": { + "version": "0.4.2", + "bundled": true, + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "tweetnacl": "0.14.5" + } + }, + "block-stream": { + "version": "0.0.9", + "bundled": true, + "dev": true, + "requires": { + "inherits": "2.0.3" + } + }, + "boom": { + "version": "2.10.1", + "bundled": true, + "dev": true, + "requires": { + "hoek": "2.16.3" + } + }, + "brace-expansion": { + "version": "1.1.7", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "0.4.2", + "concat-map": "0.0.1" + } + }, + "buffer-shims": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "caseless": { + "version": "0.12.0", + "bundled": true, + "dev": true, + "optional": true + }, + "co": { + "version": "4.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "combined-stream": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "requires": { + "delayed-stream": "1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "cryptiles": { + "version": "2.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1" + } + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "debug": { + "version": "2.6.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "deep-extend": { + "version": "0.4.2", + "bundled": true, + "dev": true, + "optional": true + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "ecc-jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "extend": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "extsprintf": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asynckit": "0.4.0", + "combined-stream": "1.0.5", + "mime-types": "2.1.15" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "fstream": { + "version": "1.0.11", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "inherits": "2.0.3", + "mkdirp": "0.5.1", + "rimraf": "2.6.1" + } + }, + "fstream-ignore": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fstream": "1.0.11", + "inherits": "2.0.3", + "minimatch": "3.0.4" + } + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "1.1.1", + "console-control-strings": "1.1.0", + "has-unicode": "2.0.1", + "object-assign": "4.1.1", + "signal-exit": "3.0.2", + "string-width": "1.0.2", + "strip-ansi": "3.0.1", + "wide-align": "1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob": { + "version": "7.1.2", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "1.0.0", + "inflight": "1.0.6", + "inherits": "2.0.3", + "minimatch": "3.0.4", + "once": "1.4.0", + "path-is-absolute": "1.0.1" + } + }, + "graceful-fs": { + "version": "4.1.11", + "bundled": true, + "dev": true + }, + "har-schema": { + "version": "1.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "har-validator": { + "version": "4.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ajv": "4.11.8", + "har-schema": "1.0.5" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "hawk": { + "version": "3.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "boom": "2.10.1", + "cryptiles": "2.0.5", + "hoek": "2.16.3", + "sntp": "1.0.9" + } + }, + "hoek": { + "version": "2.16.3", + "bundled": true, + "dev": true + }, + "http-signature": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "0.2.0", + "jsprim": "1.4.0", + "sshpk": "1.13.0" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "1.4.0", + "wrappy": "1.0.2" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "ini": { + "version": "1.3.4", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "jodid25519": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsbn": "0.1.1" + } + }, + "jsbn": { + "version": "0.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true, + "dev": true, + "optional": true + }, + "json-stable-stringify": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "jsonify": "0.0.0" + } + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "jsonify": { + "version": "0.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "jsprim": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.0.2", + "json-schema": "0.2.3", + "verror": "1.3.6" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "mime-db": { + "version": "1.27.0", + "bundled": true, + "dev": true + }, + "mime-types": { + "version": "2.1.15", + "bundled": true, + "dev": true, + "requires": { + "mime-db": "1.27.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "node-pre-gyp": { + "version": "0.6.36", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "mkdirp": "0.5.1", + "nopt": "4.0.1", + "npmlog": "4.1.0", + "rc": "1.2.1", + "request": "2.81.0", + "rimraf": "2.6.1", + "semver": "5.3.0", + "tar": "2.2.1", + "tar-pack": "3.4.0" + } + }, + "nopt": { + "version": "4.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1.1.0", + "osenv": "0.1.4" + } + }, + "npmlog": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "1.1.4", + "console-control-strings": "1.1.0", + "gauge": "2.7.4", + "set-blocking": "2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "oauth-sign": { + "version": "0.8.2", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "1.0.2", + "os-tmpdir": "1.0.2" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "performance-now": { + "version": "0.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "1.0.7", + "bundled": true, + "dev": true + }, + "punycode": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true + }, + "qs": { + "version": "6.4.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "0.4.2", + "ini": "1.3.4", + "minimist": "1.2.0", + "strip-json-comments": "2.0.1" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.2.9", + "bundled": true, + "dev": true, + "requires": { + "buffer-shims": "1.0.0", + "core-util-is": "1.0.2", + "inherits": "2.0.3", + "isarray": "1.0.0", + "process-nextick-args": "1.0.7", + "string_decoder": "1.0.1", + "util-deprecate": "1.0.2" + } + }, + "request": { + "version": "2.81.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "0.6.0", + "aws4": "1.6.0", + "caseless": "0.12.0", + "combined-stream": "1.0.5", + "extend": "3.0.1", + "forever-agent": "0.6.1", + "form-data": "2.1.4", + "har-validator": "4.2.1", + "hawk": "3.1.3", + "http-signature": "1.1.1", + "is-typedarray": "1.0.0", + "isstream": "0.1.2", + "json-stringify-safe": "5.0.1", + "mime-types": "2.1.15", + "oauth-sign": "0.8.2", + "performance-now": "0.2.0", + "qs": "6.4.0", + "safe-buffer": "5.0.1", + "stringstream": "0.0.5", + "tough-cookie": "2.3.2", + "tunnel-agent": "0.6.0", + "uuid": "3.0.1" + } + }, + "rimraf": { + "version": "2.6.1", + "bundled": true, + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, + "safe-buffer": { + "version": "5.0.1", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.3.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sntp": { + "version": "1.0.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "hoek": "2.16.3" + } + }, + "sshpk": { + "version": "1.13.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "asn1": "0.2.3", + "assert-plus": "1.0.0", + "bcrypt-pbkdf": "1.0.1", + "dashdash": "1.14.1", + "ecc-jsbn": "0.1.1", + "getpass": "0.1.7", + "jodid25519": "1.0.2", + "jsbn": "0.1.1", + "tweetnacl": "0.14.5" + }, + "dependencies": { + "assert-plus": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "is-fullwidth-code-point": "1.0.0", + "strip-ansi": "3.0.1" + } + }, + "string_decoder": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "stringstream": { + "version": "0.0.5", + "bundled": true, + "dev": true, + "optional": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "2.1.1" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "2.2.1", + "bundled": true, + "dev": true, + "requires": { + "block-stream": "0.0.9", + "fstream": "1.0.11", + "inherits": "2.0.3" + } + }, + "tar-pack": { + "version": "3.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "2.6.8", + "fstream": "1.0.11", + "fstream-ignore": "1.0.5", + "once": "1.4.0", + "readable-stream": "2.2.9", + "rimraf": "2.6.1", + "tar": "2.2.1", + "uid-number": "0.0.6" + } + }, + "tough-cookie": { + "version": "2.3.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "punycode": "1.4.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true, + "dev": true, + "optional": true + }, + "uid-number": { + "version": "0.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "uuid": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "verror": { + "version": "1.3.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "extsprintf": "1.0.2" + } + }, + "wide-align": { + "version": "1.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "1.0.2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + } + } + }, "fstream": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz", @@ -4713,7 +5605,7 @@ "colors": "1.1.2", "combine-lists": "1.0.1", "connect": "3.6.3", - "core-js": "2.5.0", + "core-js": "2.5.1", "di": "0.0.1", "dom-serialize": "2.2.1", "expand-braces": "0.1.2", @@ -5106,11 +5998,6 @@ "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", "dev": true }, - "md2": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/md2/-/md2-0.0.28.tgz", - "integrity": "sha512-XQ71eTVKG3oRsGBj3lMLqL8p2inueqDXn++a2EntzWkUPlBZXPCPtlpfI9ER/LAlBKwJZQSqTzFItw7q9+vgvw==" - }, "md5": { "version": "2.2.1", "resolved": "https://registry.npmjs.org/md5/-/md5-2.2.1.tgz", @@ -5320,9 +6207,9 @@ } }, "moment": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", - "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + "version": "2.19.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.19.1.tgz", + "integrity": "sha1-VtoaLRy/AdOLfhr8McELz6GSkWc=" }, "ms": { "version": "2.0.0", @@ -5368,30 +6255,14 @@ "dev": true }, "ngx-color-picker": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-4.3.1.tgz", - "integrity": "sha512-/Gn3XvOgaAK/ZnXA0ej9ivYm6uIvHwvZaSzx04ZUtG1Vw5RCKzw84dK0Ru9Ylnnq1xJU4WmdA63REkJb8cvYXg==" + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-4.4.0.tgz", + "integrity": "sha512-0xNcqpmL2DwvxJVaqTF7b1VlHcbG+nD9y6F8ZkUsR8hDD13tCQuwhc0P2xrjmipDYAT+IPE6HwWEB2XaDVIkgg==" }, "ngx-cookie-service": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-1.0.7.tgz", - "integrity": "sha1-NdQzt3WloqgIxUl19Pr1AKzFL2g=" - }, - "ngx-perfect-scrollbar": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/ngx-perfect-scrollbar/-/ngx-perfect-scrollbar-4.6.2.tgz", - "integrity": "sha512-cFF4+y9HtcKOdzP+jUB3pg5ljuLl0/NsesWb+yw+eQIX7r0JhNXlUm49xj1QhnYoQDYz5e7OQTukbHn4RRijiw==", - "requires": { - "element-resize-detector": "1.1.12", - "perfect-scrollbar": "0.8.1" - }, - "dependencies": { - "perfect-scrollbar": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.8.1.tgz", - "integrity": "sha512-RNC5tX/JMRYR+qVdJTEAWnRxw0Yf9lvbO8lTuAOvgDODkiA8lveTSkvrNMhmaGKEyimJpJl+myb/syVS9YyPuw==" - } - } + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/ngx-cookie-service/-/ngx-cookie-service-1.0.9.tgz", + "integrity": "sha512-n4kTAZQr4EnnQLBaRPMjSmf98N/aLlYWknmbRunonJj9aMhpT1Nki6PfjBuRPl5DxT/9NMAVrQyvk66k/pJ0uQ==" }, "no-case": { "version": "2.3.2", @@ -5974,9 +6845,9 @@ } }, "perfect-scrollbar": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-0.8.1.tgz", - "integrity": "sha512-RNC5tX/JMRYR+qVdJTEAWnRxw0Yf9lvbO8lTuAOvgDODkiA8lveTSkvrNMhmaGKEyimJpJl+myb/syVS9YyPuw==" + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/perfect-scrollbar/-/perfect-scrollbar-1.0.3.tgz", + "integrity": "sha512-XASWeorN9fOdK/cErq1+gHC1Uy/sbnoGuVR1y2nsG7PvmzLofruZyTwYaDJUlw8i9S2N1blEdICihQBgoifoYQ==" }, "performance-now": { "version": "0.2.0", @@ -6025,9 +6896,9 @@ } }, "positioning": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/positioning/-/positioning-1.3.0.tgz", - "integrity": "sha512-B0BHlhLFsLPV8EWVv792caQCg4QNxuCeZUVXw/DP1jRj4WOF74KmTAg+7t3dDfrFXDT22qBS2vcryQmZYSM7jg==" + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/positioning/-/positioning-1.3.1.tgz", + "integrity": "sha512-9ac2qRSW1jAK2+MTZaAY/g1UKBBzSD6cfVq6ztKUW4zBcux/tCFq8FvDe4oen0Z3rfhZm4X1rwXaFrbLVrcC3Q==" }, "postcss": { "version": "5.2.17", @@ -9370,9 +10241,9 @@ } }, "zone.js": { - "version": "0.8.17", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.17.tgz", - "integrity": "sha1-TF5RhahX2o2nk9rzkZNxxaNrKgs=" + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz", + "integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q==" } } } diff --git a/package.json b/package.json index 0602954f..000dd4ec 100644 --- a/package.json +++ b/package.json @@ -15,43 +15,42 @@ }, "private": true, "dependencies": { - "@angular/animations": "4.4.3", - "@angular/cdk": "2.0.0-beta.11", - "@angular/common": "4.4.3", - "@angular/compiler": "4.4.3", - "@angular/core": "4.4.3", + "@agm/core": "1.0.0-beta.1", + "@angular/animations": "4.4.5", + "@angular/cdk": "2.0.0-beta.12", + "@angular/common": "4.4.5", + "@angular/compiler": "4.4.5", + "@angular/core": "4.4.5", "@angular/flex-layout": "2.0.0-beta.9", - "@angular/forms": "4.4.3", - "@angular/http": "4.4.3", - "@angular/material": "2.0.0-beta.11", - "@angular/platform-browser": "4.4.3", - "@angular/platform-browser-dynamic": "4.4.3", - "@angular/router": "4.4.3", + "@angular/forms": "4.4.5", + "@angular/http": "4.4.5", + "@angular/material": "2.0.0-beta.12", + "@angular/platform-browser": "4.4.5", + "@angular/platform-browser-dynamic": "4.4.5", + "@angular/router": "4.4.5", "@swimlane/ngx-charts": "6.0.2", "@swimlane/ngx-datatable": "9.3.1", "@swimlane/ngx-dnd": "3.0.0", - "angular-calendar": "0.19.0", - "angular-in-memory-web-api": "0.4.6", + "angular-calendar": "0.21.2", + "angular-in-memory-web-api": "0.5.0", "classlist.js": "1.1.20150312", - "core-js": "2.5.0", + "core-js": "2.5.1", "d3": "4.10.0", "hammerjs": "2.0.8", "highlight.js": "9.12.0", "intl": "1.2.5", - "md2": "0.0.28", - "moment": "2.18.1", - "ngx-color-picker": "4.3.1", - "ngx-cookie-service": "1.0.7", - "ngx-perfect-scrollbar": "4.6.2", - "perfect-scrollbar": "0.8.1", + "moment": "2.19.1", + "ngx-color-picker": "4.4.0", + "ngx-cookie-service": "1.0.9", + "perfect-scrollbar": "1.0.3", "rxjs": "5.4.3", "web-animations-js": "2.3.1", - "zone.js": "0.8.17" + "zone.js": "0.8.18" }, "devDependencies": { "@angular/cli": "1.4.2", - "@angular/compiler-cli": "4.4.3", - "@angular/language-service": "4.4.3", + "@angular/compiler-cli": "4.4.5", + "@angular/language-service": "4.4.5", "@angularclass/hmr": "2.1.3", "@ngtools/webpack": "1.7.1", "@types/jasmine": "2.6.0", diff --git a/src/app/core/components/confirm-dialog/confirm-dialog.component.html b/src/app/core/components/confirm-dialog/confirm-dialog.component.html index d7d60191..0f971757 100644 --- a/src/app/core/components/confirm-dialog/confirm-dialog.component.html +++ b/src/app/core/components/confirm-dialog/confirm-dialog.component.html @@ -1,6 +1,6 @@ -

Confirm

-
{{confirmMessage}}
-
- - +

Confirm

+
{{confirmMessage}}
+
+ +
diff --git a/src/app/core/components/confirm-dialog/confirm-dialog.component.ts b/src/app/core/components/confirm-dialog/confirm-dialog.component.ts index 08bb4600..24e22d35 100644 --- a/src/app/core/components/confirm-dialog/confirm-dialog.component.ts +++ b/src/app/core/components/confirm-dialog/confirm-dialog.component.ts @@ -1,5 +1,5 @@ import { Component, OnInit } from '@angular/core'; -import { MdDialogRef } from '@angular/material'; +import { MatDialogRef } from '@angular/material'; @Component({ selector : 'fuse-confirm-dialog', @@ -10,7 +10,7 @@ export class FuseConfirmDialogComponent implements OnInit { public confirmMessage: string; - constructor(public dialogRef: MdDialogRef) + constructor(public dialogRef: MatDialogRef) { } diff --git a/src/app/core/components/copier/copier.service.ts b/src/app/core/components/copier/copier.service.ts index 42ce0483..03227fc4 100644 --- a/src/app/core/components/copier/copier.service.ts +++ b/src/app/core/components/copier/copier.service.ts @@ -6,55 +6,60 @@ * * Both released under MIT license - © Zeno Rocha */ -import {Injectable} from '@angular/core'; +import { Injectable } from '@angular/core'; @Injectable() -export class CopierService { +export class CopierService +{ - private textarea: HTMLTextAreaElement; + private textarea: HTMLTextAreaElement; - /** Copy the text value to the clipboard. */ - copyText(text: string): boolean { - this.createTextareaAndSelect(text); + /** Copy the text value to the clipboard. */ + copyText(text: string): boolean + { + this.createTextareaAndSelect(text); - const copySuccessful = document.execCommand('copy'); - this.removeFake(); + const copySuccessful = document.execCommand('copy'); + this.removeFake(); - return copySuccessful; - } - - /** - * Creates a hidden textarea element, sets its value from `text` property, - * and makes a selection on it. - */ - private createTextareaAndSelect(text: string) { - // Create a fake element to hold the contents to copy - this.textarea = document.createElement('textarea'); - - // Prevent zooming on iOS - this.textarea.style.fontSize = '12pt'; - - // Hide the element - this.textarea.classList.add('cdk-visually-hidden'); - - // Move element to the same position vertically - const yPosition = window.pageYOffset || document.documentElement.scrollTop; - this.textarea.style.top = yPosition + 'px'; - - this.textarea.setAttribute('readonly', ''); - this.textarea.value = text; - - document.body.appendChild(this.textarea); - - this.textarea.select(); - this.textarea.setSelectionRange(0, this.textarea.value.length); - } - - /** Remove the text area from the DOM. */ - private removeFake() { - if (this.textarea) { - document.body.removeChild(this.textarea); - this.textarea = null; + return copySuccessful; + } + + /** + * Creates a hidden textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + private createTextareaAndSelect(text: string) + { + // Create a fake element to hold the contents to copy + this.textarea = document.createElement('textarea'); + + // Prevent zooming on iOS + this.textarea.style.fontSize = '12pt'; + + // Hide the element + this.textarea.classList.add('cdk-visually-hidden'); + + // Move element to the same position vertically + const yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.textarea.style.top = yPosition + 'px'; + + this.textarea.setAttribute('readonly', ''); + this.textarea.value = text; + + document.body.appendChild(this.textarea); + + this.textarea.select(); + this.textarea.setSelectionRange(0, this.textarea.value.length); + } + + /** Remove the text area from the DOM. */ + private removeFake() + { + if ( this.textarea ) + { + document.body.removeChild(this.textarea); + this.textarea = null; + } } - } } diff --git a/src/app/core/components/demo/demo-sidenav/demo-sidenav.component.html b/src/app/core/components/demo/demo-sidenav/demo-sidenav.component.html index 069cf67a..9c1b47a4 100644 --- a/src/app/core/components/demo/demo-sidenav/demo-sidenav.component.html +++ b/src/app/core/components/demo/demo-sidenav/demo-sidenav.component.html @@ -1,100 +1,100 @@
- -

Sidenav Demo

+ +

Sidenav Demo

- + Sidenav Item 1 - + - + - + Sidenav Item 2 - + - + - + Sidenav Item 3 - + - + - + Sidenav Item 4 - + - + - + Sidenav Item 5 - + - + - + Sidenav Item 6 - + - + - + Sidenav Item 7 - + - + - + Sidenav Item 8 - + - + - + Sidenav Item 9 - + - + - + Sidenav Item 10 - + - + - + Sidenav Item 11 - + - + - + Sidenav Item 12 - + - + - + Sidenav Item 13 - + - + - + Sidenav Item 14 - + - + - + Sidenav Item 15 - + - + - + Sidenav Item 16 - + -
+
diff --git a/src/app/core/components/material-color-picker/material-color-picker.component.html b/src/app/core/components/material-color-picker/material-color-picker.component.html index e305b812..a1209174 100644 --- a/src/app/core/components/material-color-picker/material-color-picker.component.html +++ b/src/app/core/components/material-color-picker/material-color-picker.component.html @@ -1,23 +1,23 @@ - - + -
- @@ -28,11 +28,11 @@ Select Color -
@@ -47,10 +47,10 @@ fxLayoutAlign="start start" class="colors" fusePerfectScrollbar>
+ fxLayout="row" fxLayoutAlign="start end" mat-ink-ripple> {{color.key}} @@ -67,16 +67,16 @@
+ fxLayout="row" fxLayoutAlign="start end" mat-ink-ripple> {{hue}} - check + check
- + diff --git a/src/app/core/components/material-color-picker/material-color-picker.component.scss b/src/app/core/components/material-color-picker/material-color-picker.component.scss index fc5b4fab..9a4647bb 100644 --- a/src/app/core/components/material-color-picker/material-color-picker.component.scss +++ b/src/app/core/components/material-color-picker/material-color-picker.component.scss @@ -11,7 +11,7 @@ overflow: hidden; min-height: 258px; height: 308px; - background-color: #f7f7f7; + background-color: #F7F7F7; .view { position: absolute; @@ -39,7 +39,7 @@ font-size: 10px; } - md-icon { + mat-icon { position: absolute; top: 2px; right: 2px; diff --git a/src/app/core/components/material-color-picker/material-color-picker.component.ts b/src/app/core/components/material-color-picker/material-color-picker.component.ts index 786ce470..317c829d 100644 --- a/src/app/core/components/material-color-picker/material-color-picker.component.ts +++ b/src/app/core/components/material-color-picker/material-color-picker.component.ts @@ -129,7 +129,7 @@ export class FuseMaterialColorPickerComponent implements OnInit, OnChanges { this.selectedBg = MatColors.getColor(this.selectedPalette)[this.selectedHue]; this.selectedFg = MatColors.getColor(this.selectedPalette).contrast[this.selectedHue]; - this.selectedClass = 'md-' + this.selectedPalette + '-' + this.selectedHue + '-bg'; + this.selectedClass = 'mat-' + this.selectedPalette + '-' + this.selectedHue + '-bg'; } else { diff --git a/src/app/core/components/navigation/horizontal/nav-collapse/nav-horizontal-collapse.component.html b/src/app/core/components/navigation/horizontal/nav-collapse/nav-horizontal-collapse.component.html index 9fcef7d6..4712628d 100644 --- a/src/app/core/components/navigation/horizontal/nav-collapse/nav-horizontal-collapse.component.html +++ b/src/app/core/components/navigation/horizontal/nav-collapse/nav-horizontal-collapse.component.html @@ -1,7 +1,7 @@ - - {{item.icon}} + + {{item.icon}} {{item.title}} - keyboard_arrow_right + keyboard_arrow_right
diff --git a/src/app/core/components/navigation/horizontal/nav-item/nav-horizontal-item.component.html b/src/app/core/components/navigation/horizontal/nav-item/nav-horizontal-item.component.html index 54045a83..559fe6a3 100644 --- a/src/app/core/components/navigation/horizontal/nav-item/nav-horizontal-item.component.html +++ b/src/app/core/components/navigation/horizontal/nav-item/nav-horizontal-item.component.html @@ -1,6 +1,17 @@ - - {{item.icon}} + + {{item.icon}} {{item.title}} - {{item.badge.title}} - \ No newline at end of file + + {{item.badge.title}} + + + + + {{item.icon}} + {{item.title}} + + {{item.badge.title}} + + \ No newline at end of file diff --git a/src/app/core/components/navigation/navigation.service.ts b/src/app/core/components/navigation/navigation.service.ts index ca22f6ed..6dbe6c86 100644 --- a/src/app/core/components/navigation/navigation.service.ts +++ b/src/app/core/components/navigation/navigation.service.ts @@ -19,6 +19,7 @@ export class FuseNavigationService /** * Get navigation model + * * @returns {any[]} */ getNavigationModel() @@ -28,19 +29,125 @@ export class FuseNavigationService /** * Set the navigation model + * * @param model */ setNavigationModel(model) { - // console.log(model); - this.navigationModel = model; - - console.log(this.navigationModel); - this.onNavigationModelChange.next(this.navigationModel.model); } + /** + * Add new navigation item + * to the given location + */ + addNavigationItem(location, item) + { + // Parse the location + const locationArr = location.split('.'); + + if ( locationArr.length === 0 ) + { + return; + } + + // Find the navigation item + const navItem = this.findNavigationItemById(locationArr); + + // Act according to the item type + switch ( navItem.type ) + { + case 'item': + + // Create a children array + navItem.children = []; + + // Push the item + navItem.children.push(item); + + // Change the item type to collapsable + navItem.type = 'collapse'; + + break; + + case 'collapse': + + // Push the item + navItem.children.push(item); + + break; + + case 'group': + + // Push the item + navItem.children.push(item); + + break; + + default: + break; + } + } + + /** + * Get navigation item from + * given location + * + * @param location + */ + getNavigationItem(location) + { + // Parse the location + const locationArr = location.split('.'); + + if ( locationArr.length === 0 ) + { + return; + } + + // Find and return the navigation item + return this.findNavigationItemById(locationArr); + } + + /** + * Find navigation item by location + * + * @param location + * @param navigation + */ + findNavigationItemById(location, navigation?) + { + if ( !navigation ) + { + navigation = this.navigationModel.model; + } + + // Iterate through the given navigation + for ( const navItem of navigation ) + { + // If the nav item id equals the first location... + if ( navItem.id === location[0] ) + { + // If there is more location to look at... + if ( location.length > 1 ) + { + // Remove the first item of the location + location.splice(0, 1); + + // Go nested... + return this.findNavigationItemById(location, navItem.children); + } + + // Otherwise just return the nav item + else + { + return navItem; + } + } + } + } + /** * Get flattened navigation array * @param navigationItems diff --git a/src/app/core/components/navigation/vertical/nav-collapse/nav-vertical-collapse.component.html b/src/app/core/components/navigation/vertical/nav-collapse/nav-vertical-collapse.component.html index a55711f1..5a255b6f 100644 --- a/src/app/core/components/navigation/vertical/nav-collapse/nav-vertical-collapse.component.html +++ b/src/app/core/components/navigation/vertical/nav-collapse/nav-vertical-collapse.component.html @@ -1,7 +1,7 @@ - - {{item.icon}} + + {{item.icon}} {{item.title}} - keyboard_arrow_right + keyboard_arrow_right
diff --git a/src/app/core/components/navigation/vertical/nav-item/nav-vertical-item.component.html b/src/app/core/components/navigation/vertical/nav-item/nav-vertical-item.component.html index 2767e8dd..97a706fd 100644 --- a/src/app/core/components/navigation/vertical/nav-item/nav-vertical-item.component.html +++ b/src/app/core/components/navigation/vertical/nav-item/nav-vertical-item.component.html @@ -1,6 +1,17 @@ - - {{item.icon}} + + {{item.icon}} {{item.title}} - {{item.badge.title}} + + {{item.badge.title}} + + + + {{item.icon}} + {{item.title}} + + {{item.badge.title}} + + diff --git a/src/app/core/components/search-bar/search-bar.component.html b/src/app/core/components/search-bar/search-bar.component.html index a2ce08c3..c78502a7 100644 --- a/src/app/core/components/search-bar/search-bar.component.html +++ b/src/app/core/components/search-bar/search-bar.component.html @@ -1,20 +1,20 @@
-
- + - - - + + + - - + + - +
- {{shortcutItem.icon}} + {{shortcutItem.icon}} {{shortcutItem.title.substr(0, 1).toUpperCase()}} -

{{shortcutItem.title}}

- star +

{{shortcutItem.title}}

+ star
-
- + +

No shortcuts yet!

-
-
+ + - - + +
- {{navigationItem.icon}} + {{navigationItem.icon}} {{navigationItem.title.substr(0, 1).toUpperCase()}} -

{{navigationItem.title}}

- star +

{{navigationItem.title}}

+ star
-
-
-
+ + +
diff --git a/src/app/core/components/theme-options/theme-options.component.html b/src/app/core/components/theme-options/theme-options.component.html index e49e995b..3d2c8698 100644 --- a/src/app/core/components/theme-options/theme-options.component.html +++ b/src/app/core/components/theme-options/theme-options.component.html @@ -1,50 +1,50 @@ -
-
+
-

Navigation:

- - Top - Left - Right - None - + + Top + Left + Right + None +

Toolbar:

- - Below - Above - None - + + Below + Above + None +

Footer:

- - Below - Above - None - + + Below + Above + None +

Layout Mode:

- - Boxed - Fullwidth - + + Boxed + Fullwidth + - +

Colors:

@@ -69,30 +69,31 @@
- +

Router Animation:

- - - None - - - Slide up - - - Slide down - - - Slide right - - - Slide left - - - Fade in - - - + + + + None + + + Slide up + + + Slide down + + + Slide right + + + Slide left + + + Fade in + + +
diff --git a/src/app/core/components/theme-options/theme-options.component.scss b/src/app/core/components/theme-options/theme-options.component.scss index f01c54f4..bc116a3c 100644 --- a/src/app/core/components/theme-options/theme-options.component.scss +++ b/src/app/core/components/theme-options/theme-options.component.scss @@ -14,6 +14,7 @@ display: block; right: 0; top: 160px; + z-index: 998; &.bar-closed .theme-options-panel { display: none; @@ -48,7 +49,7 @@ color: rgba(0, 0, 0, 0.54); } - .mat-divider{ + .mat-divider { display: block !important; width: 100%; margin: 24px 0 16px 0; @@ -102,7 +103,7 @@ opacity: .75; z-index: 998; - md-icon { + mat-icon { animation: rotating 3s linear infinite; } diff --git a/src/app/core/directives/fuse-if-on-dom/fuse-if-on-dom.directive.ts b/src/app/core/directives/fuse-if-on-dom/fuse-if-on-dom.directive.ts index b7042968..403bce13 100644 --- a/src/app/core/directives/fuse-if-on-dom/fuse-if-on-dom.directive.ts +++ b/src/app/core/directives/fuse-if-on-dom/fuse-if-on-dom.directive.ts @@ -21,7 +21,7 @@ export class FuseIfOnDomDirective implements AfterContentChecked { setTimeout(() => { this.viewContainer.createEmbeddedView(this.templateRef); - }, 350); + }, 300); this.isCreated = true; } else if ( this.isCreated && !document.body.contains(this.element.nativeElement) ) diff --git a/src/app/core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive.ts b/src/app/core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive.ts index b1b42b41..4979c2a4 100644 --- a/src/app/core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive.ts +++ b/src/app/core/directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive.ts @@ -1,5 +1,5 @@ -import { AfterViewInit, Directive, ElementRef, NgZone, OnDestroy, OnInit } from '@angular/core'; -import * as Ps from 'perfect-scrollbar'; +import { AfterViewInit, Directive, ElementRef, OnDestroy, OnInit } from '@angular/core'; +import PerfectScrollbar from 'perfect-scrollbar'; import { FuseConfigService } from '../../services/config.service'; import { Subscription } from 'rxjs/Subscription'; import { Platform } from '@angular/cdk/platform'; @@ -13,10 +13,10 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD isDisableCustomScrollbars = false; isMobile = false; isInitialized = true; + ps; constructor( private element: ElementRef, - private zone: NgZone, private fuseConfig: FuseConfigService, private platform: Platform ) @@ -48,11 +48,8 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD return; } - this.zone.runOutsideAngular(() => { - - // Initialize the perfect-scrollbar - Ps.initialize(this.element.nativeElement); - }); + // Initialize the perfect-scrollbar + this.ps = new PerfectScrollbar(this.element.nativeElement); } ngOnDestroy() @@ -65,7 +62,7 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD this.onSettingsChanged.unsubscribe(); // Destroy the perfect-scrollbar - Ps.destroy(this.element.nativeElement); + this.ps.destroy(); } update() @@ -76,7 +73,7 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD } // Update the perfect-scrollbar - Ps.update(this.element.nativeElement); + this.ps.update(); } destroy() @@ -126,7 +123,6 @@ export class FusePerfectScrollbarDirective implements OnInit, AfterViewInit, OnD // PS has weird event sending order, this is a workaround for that this.update(); - this.update(); } else if ( value !== this.element.nativeElement[target] ) diff --git a/src/app/core/directives/mat-sidenav-helper/mat-sidenav-helper.directive.ts b/src/app/core/directives/mat-sidenav-helper/mat-sidenav-helper.directive.ts new file mode 100644 index 00000000..55161597 --- /dev/null +++ b/src/app/core/directives/mat-sidenav-helper/mat-sidenav-helper.directive.ts @@ -0,0 +1,99 @@ +import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding } from '@angular/core'; +import { MatSidenav } from '@angular/material'; +import { FuseMatSidenavHelperService } from 'app/core/directives/mat-sidenav-helper/mat-sidenav-helper.service'; +import { FuseMatchMedia } from '../../services/match-media.service'; +import { ObservableMedia } from '@angular/flex-layout'; +import { Subscription } from 'rxjs/Subscription'; + +@Directive({ + selector: '[fuseMatSidenavHelper]' +}) +export class FuseMatSidenavHelperDirective implements OnInit, OnDestroy +{ + matchMediaSubscription: Subscription; + + @HostBinding('class.mat-is-locked-open') isLockedOpen = true; + @HostBinding('class.mat-stop-transition') stopTransition = true; + + @Input('fuseMatSidenavHelper') id: string; + @Input('mat-is-locked-open') matIsLockedOpenBreakpoint: string; + + constructor( + private fuseMatSidenavService: FuseMatSidenavHelperService, + private fuseMatchMedia: FuseMatchMedia, + private observableMedia: ObservableMedia, + private matSidenav: MatSidenav + ) + { + } + + ngOnInit() + { + this.fuseMatSidenavService.setSidenav(this.id, this.matSidenav); + + if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) ) + { + setTimeout(() => { + this.isLockedOpen = true; + this.matSidenav.mode = 'side'; + this.matSidenav.open(); + }); + this.stopTransition = false; + } + else + { + setTimeout(() => { + this.isLockedOpen = false; + this.matSidenav.mode = 'over'; + this.matSidenav.close(); + }); + + setTimeout(() => { + this.stopTransition = false; + }, 3000); + } + + this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => { + if ( this.observableMedia.isActive(this.matIsLockedOpenBreakpoint) ) + { + setTimeout(() => { + this.isLockedOpen = true; + this.matSidenav.mode = 'side'; + this.matSidenav.open(); + }); + } + else + { + setTimeout(() => { + this.isLockedOpen = false; + this.matSidenav.mode = 'over'; + this.matSidenav.close(); + }); + } + }); + + } + + ngOnDestroy() + { + this.matchMediaSubscription.unsubscribe(); + } +} + +@Directive({ + selector: '[fuseMatSidenavToggler]' +}) +export class FuseMatSidenavTogglerDirective +{ + @Input('fuseMatSidenavToggler') id; + + constructor(private fuseMatSidenavService: FuseMatSidenavHelperService) + { + } + + @HostListener('click') + onClick() + { + this.fuseMatSidenavService.getSidenav(this.id).toggle(); + } +} diff --git a/src/app/core/directives/md-sidenav-helper/md-sidenav-helper.service.ts b/src/app/core/directives/mat-sidenav-helper/mat-sidenav-helper.service.ts similarity index 70% rename from src/app/core/directives/md-sidenav-helper/md-sidenav-helper.service.ts rename to src/app/core/directives/mat-sidenav-helper/mat-sidenav-helper.service.ts index d928f46e..748d9480 100644 --- a/src/app/core/directives/md-sidenav-helper/md-sidenav-helper.service.ts +++ b/src/app/core/directives/mat-sidenav-helper/mat-sidenav-helper.service.ts @@ -1,10 +1,10 @@ import { Injectable } from '@angular/core'; -import { MdSidenav } from '@angular/material'; +import { MatSidenav } from '@angular/material'; @Injectable() -export class FuseMdSidenavHelperService +export class FuseMatSidenavHelperService { - sidenavInstances: MdSidenav[]; + sidenavInstances: MatSidenav[]; constructor() { diff --git a/src/app/core/directives/md-sidenav-helper/md-sidenav-helper.directive.ts b/src/app/core/directives/md-sidenav-helper/md-sidenav-helper.directive.ts deleted file mode 100644 index f0ad7ab4..00000000 --- a/src/app/core/directives/md-sidenav-helper/md-sidenav-helper.directive.ts +++ /dev/null @@ -1,99 +0,0 @@ -import { Directive, Input, OnInit, HostListener, OnDestroy, HostBinding } from '@angular/core'; -import { MdSidenav } from '@angular/material'; -import { FuseMdSidenavHelperService } from 'app/core/directives/md-sidenav-helper/md-sidenav-helper.service'; -import { FuseMatchMedia } from '../../services/match-media.service'; -import { ObservableMedia } from '@angular/flex-layout'; -import { Subscription } from 'rxjs/Subscription'; - -@Directive({ - selector: '[fuseMdSidenavHelper]' -}) -export class FuseMdSidenavHelperDirective implements OnInit, OnDestroy -{ - matchMediaSubscription: Subscription; - - @HostBinding('class.md-is-locked-open') isLockedOpen = true; - @HostBinding('class.md-stop-transition') stopTransition = true; - - @Input('fuseMdSidenavHelper') id: string; - @Input('md-is-locked-open') mdIsLockedOpenBreakpoint: string; - - constructor( - private fuseMdSidenavService: FuseMdSidenavHelperService, - private fuseMatchMedia: FuseMatchMedia, - private observableMedia: ObservableMedia, - private mdSidenav: MdSidenav - ) - { - } - - ngOnInit() - { - this.fuseMdSidenavService.setSidenav(this.id, this.mdSidenav); - - if ( this.observableMedia.isActive(this.mdIsLockedOpenBreakpoint) ) - { - setTimeout(() => { - this.isLockedOpen = true; - this.mdSidenav.mode = 'side'; - this.mdSidenav.open(); - }); - this.stopTransition = false; - } - else - { - setTimeout(() => { - this.isLockedOpen = false; - this.mdSidenav.mode = 'over'; - this.mdSidenav.close(); - }); - - setTimeout(() => { - this.stopTransition = false; - }, 3000); - } - - this.matchMediaSubscription = this.fuseMatchMedia.onMediaChange.subscribe(() => { - if ( this.observableMedia.isActive(this.mdIsLockedOpenBreakpoint) ) - { - setTimeout(() => { - this.isLockedOpen = true; - this.mdSidenav.mode = 'side'; - this.mdSidenav.open(); - }); - } - else - { - setTimeout(() => { - this.isLockedOpen = false; - this.mdSidenav.mode = 'over'; - this.mdSidenav.close(); - }); - } - }); - - } - - ngOnDestroy() - { - this.matchMediaSubscription.unsubscribe(); - } -} - -@Directive({ - selector: '[fuseMdSidenavToggler]' -}) -export class FuseMdSidenavTogglerDirective -{ - @Input('fuseMdSidenavToggler') id; - - constructor(private fuseMdSidenavService: FuseMdSidenavHelperService) - { - } - - @HostListener('click') - onClick() - { - this.fuseMdSidenavService.getSidenav(this.id).toggle(); - } -} diff --git a/src/app/core/modules/material.module.ts b/src/app/core/modules/material.module.ts index f4a3d895..36d357c6 100644 --- a/src/app/core/modules/material.module.ts +++ b/src/app/core/modules/material.module.ts @@ -1,106 +1,108 @@ import { NgModule } from '@angular/core'; import { - MdAutocompleteModule, - MdButtonModule, - MdButtonToggleModule, - MdCheckboxModule, - MdToolbarModule, - MdTooltipModule, - MdCardModule, - MdChipsModule, - MdDatepickerModule, - MdDialogModule, - MdExpansionModule, - MdGridListModule, - MdIconModule, - MdInputModule, - MdListModule, - MdMenuModule, - MdNativeDateModule, - MdPaginatorModule, - MdProgressBarModule, - MdProgressSpinnerModule, - MdRadioModule, - MdRippleModule, - MdSelectModule, - MdSidenavModule, - MdSliderModule, - MdSlideToggleModule, - MdSnackBarModule, - MdStepperModule, - MdSortModule, - MdTableModule, - MdTabsModule + MatAutocompleteModule, + MatButtonModule, + MatButtonToggleModule, + MatCheckboxModule, + MatToolbarModule, + MatTooltipModule, + MatCardModule, + MatChipsModule, + MatDatepickerModule, + MatDialogModule, + MatExpansionModule, + MatFormFieldModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatStepperModule } from '@angular/material'; import { CdkTableModule } from '@angular/cdk/table'; @NgModule({ imports: [ - MdAutocompleteModule, - MdButtonModule, - MdButtonToggleModule, - MdCardModule, - MdCheckboxModule, - MdChipsModule, - MdDatepickerModule, - MdDialogModule, - MdExpansionModule, - MdGridListModule, - MdIconModule, - MdInputModule, - MdListModule, - MdMenuModule, - MdNativeDateModule, - MdPaginatorModule, - MdProgressBarModule, - MdProgressSpinnerModule, - MdRadioModule, - MdRippleModule, - MdSelectModule, - MdSidenavModule, - MdSliderModule, - MdSlideToggleModule, - MdSnackBarModule, - MdStepperModule, - MdSortModule, - MdTableModule, - MdTabsModule, - MdToolbarModule, - MdTooltipModule, + MatAutocompleteModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatChipsModule, + MatDatepickerModule, + MatDialogModule, + MatExpansionModule, + MatFormFieldModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatStepperModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, CdkTableModule ], exports: [ - MdAutocompleteModule, - MdButtonModule, - MdButtonToggleModule, - MdCardModule, - MdCheckboxModule, - MdChipsModule, - MdDatepickerModule, - MdDialogModule, - MdExpansionModule, - MdGridListModule, - MdIconModule, - MdInputModule, - MdListModule, - MdMenuModule, - MdNativeDateModule, - MdPaginatorModule, - MdProgressBarModule, - MdProgressSpinnerModule, - MdRadioModule, - MdRippleModule, - MdSelectModule, - MdSidenavModule, - MdSliderModule, - MdSlideToggleModule, - MdSnackBarModule, - MdStepperModule, - MdSortModule, - MdTableModule, - MdTabsModule, - MdToolbarModule, - MdTooltipModule, + MatAutocompleteModule, + MatButtonModule, + MatButtonToggleModule, + MatCardModule, + MatCheckboxModule, + MatChipsModule, + MatDatepickerModule, + MatDialogModule, + MatExpansionModule, + MatGridListModule, + MatIconModule, + MatInputModule, + MatListModule, + MatMenuModule, + MatNativeDateModule, + MatPaginatorModule, + MatProgressBarModule, + MatProgressSpinnerModule, + MatRadioModule, + MatRippleModule, + MatSelectModule, + MatSidenavModule, + MatSliderModule, + MatSlideToggleModule, + MatSnackBarModule, + MatStepperModule, + MatSortModule, + MatTableModule, + MatTabsModule, + MatToolbarModule, + MatTooltipModule, CdkTableModule ] }) diff --git a/src/app/core/modules/shared.module.ts b/src/app/core/modules/shared.module.ts index 8e83073b..38051f01 100644 --- a/src/app/core/modules/shared.module.ts +++ b/src/app/core/modules/shared.module.ts @@ -8,24 +8,23 @@ import { ColorPickerModule } from 'ngx-color-picker'; import { NgxDnDModule } from '@swimlane/ngx-dnd'; import { NgxDatatableModule } from '@swimlane/ngx-datatable'; -import { FuseMdSidenavHelperDirective, FuseMdSidenavTogglerDirective } from '../directives/md-sidenav-helper/md-sidenav-helper.directive'; +import { FuseMatSidenavHelperDirective, FuseMatSidenavTogglerDirective } from '../directives/mat-sidenav-helper/mat-sidenav-helper.directive'; import { FusePipesModule } from '../pipes/pipes.module'; import { FuseConfirmDialogComponent } from '../components/confirm-dialog/confirm-dialog.component'; import { FuseCountdownComponent } from '../components/countdown/countdown.component'; import { FuseMatchMedia } from '../services/match-media.service'; import { FuseNavbarVerticalService } from '../../main/navbar/vertical/navbar-vertical.service'; -import { FuseMdSidenavHelperService } from '../directives/md-sidenav-helper/md-sidenav-helper.service'; +import { FuseMatSidenavHelperService } from '../directives/mat-sidenav-helper/mat-sidenav-helper.service'; import { FuseHljsComponent } from '../components/hljs/hljs.component'; import { FusePerfectScrollbarDirective } from '../directives/fuse-perfect-scrollbar/fuse-perfect-scrollbar.directive'; import { FuseIfOnDomDirective } from '../directives/fuse-if-on-dom/fuse-if-on-dom.directive'; import { FuseMaterialColorPickerComponent } from '../components/material-color-picker/material-color-picker.component'; -import { Md2Module } from 'md2'; import { CookieService } from 'ngx-cookie-service'; @NgModule({ declarations : [ - FuseMdSidenavHelperDirective, - FuseMdSidenavTogglerDirective, + FuseMatSidenavHelperDirective, + FuseMatSidenavTogglerDirective, FuseConfirmDialogComponent, FuseCountdownComponent, FuseHljsComponent, @@ -42,16 +41,15 @@ import { CookieService } from 'ngx-cookie-service'; ReactiveFormsModule, ColorPickerModule, NgxDnDModule, - NgxDatatableModule, - Md2Module + NgxDatatableModule ], exports : [ FlexLayoutModule, MaterialModule, CommonModule, FormsModule, - FuseMdSidenavHelperDirective, - FuseMdSidenavTogglerDirective, + FuseMatSidenavHelperDirective, + FuseMatSidenavTogglerDirective, FusePipesModule, FuseCountdownComponent, FuseHljsComponent, @@ -61,8 +59,7 @@ import { CookieService } from 'ngx-cookie-service'; NgxDnDModule, NgxDatatableModule, FuseIfOnDomDirective, - FuseMaterialColorPickerComponent, - Md2Module + FuseMaterialColorPickerComponent ], entryComponents: [ FuseConfirmDialogComponent @@ -71,7 +68,7 @@ import { CookieService } from 'ngx-cookie-service'; CookieService, FuseMatchMedia, FuseNavbarVerticalService, - FuseMdSidenavHelperService + FuseMatSidenavHelperService ] }) diff --git a/src/app/core/scss/core.scss b/src/app/core/scss/core.scss index ec657acc..c960cbda 100644 --- a/src/app/core/scss/core.scss +++ b/src/app/core/scss/core.scss @@ -3,7 +3,7 @@ @import '~@swimlane/ngx-datatable/release/themes/material.css'; @import '~@swimlane/ngx-datatable/release/assets/icons.css'; // Perfect scrollbar -@import '~perfect-scrollbar/dist/css/perfect-scrollbar.min.css'; +@import '~perfect-scrollbar/css/perfect-scrollbar.css'; // Fuse @import "fuse"; diff --git a/src/app/core/scss/partials/_angular-material-fix.scss b/src/app/core/scss/partials/_angular-material-fix.scss index 168656a3..45cc656e 100644 --- a/src/app/core/scss/partials/_angular-material-fix.scss +++ b/src/app/core/scss/partials/_angular-material-fix.scss @@ -7,11 +7,11 @@ } // Fix: "Sidenav opening with animations for the first time" -md-sidenav-container { +mat-sidenav-container { - md-sidenav { + mat-sidenav { - &[md-is-locked-open].md-stop-transition { + &[mat-is-locked-open].mat-stop-transition { transition: none !important; transform: translate3d(0, 0, 0) !important; opacity: 0; diff --git a/src/app/core/scss/partials/_colors.scss b/src/app/core/scss/partials/_colors.scss index 7d61345f..0bfdfa10 100644 --- a/src/app/core/scss/partials/_colors.scss +++ b/src/app/core/scss/partials/_colors.scss @@ -51,14 +51,16 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400 // If the base text color is black... @if (rgba(black, 1) == rgba($baseTextColor, 1)) { - &.secondary-text, - .secondary-text, .mat-icon, - .icon, - .md2-datepicker-button { + .icon { color: rgba(0, 0, 0, 0.54); } + &.secondary-text, + .secondary-text { + color: rgba(0, 0, 0, 0.54) !important; + } + &.hint-text, .hint-text, &.disabled-text, @@ -80,8 +82,7 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400 @else { .mat-icon, - .icon, - .md2-datepicker-button { + .icon { color: rgba(255, 255, 255, 1); } @@ -111,49 +112,60 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400 @mixin generateMaterialElementColors($contrastColor) { // If the contrast color is white... - $foreground: $mat-dark-theme-foreground; + $fuseForeground: ( + base: white, + text: white, + hint-text: rgba(white, 0.5), + divider: rgba(white, 0.12), + ); // If the contrast color is black... @if (rgba(black, 1) == rgba($contrastColor, 1)) { - $foreground: $mat-light-theme-foreground; + + $fuseForeground: ( + base: black, + hint-text: rgba(black, 0.38), + divider: rgba(black, 0.12), + ); } // Native Input input[type="text"] { - color: mat-color($foreground, base); + color: map_get($fuseForeground, base); } // Input .mat-input-placeholder { - color: mat-color($foreground, hint-text); + color: map_get($fuseForeground, hint-text); } .mat-input-underline { - background-color: mat-color($foreground, divider); + background-color: map_get($fuseForeground, divider); } // Select .mat-select-trigger, .mat-select-arrow { - color: mat-color($foreground, hint-text); + color: map_get($fuseForeground, hint-text); } .mat-select-underline { - background-color: mat-color($foreground, divider); + background-color: map_get($fuseForeground, divider); } .mat-select-disabled .mat-select-value, .mat-select-arrow, .mat-select-trigger { - color: mat-color($foreground, hint-text); + color: map_get($fuseForeground, hint-text); } - .mat-select-content, .mat-select-panel-done-animating { - background: mat-color($background, card); + .mat-select-content, + .mat-select-panel-done-animating { + background: map_get($background, card); } .mat-select-value { - color: mat-color($foreground, text); + color: map_get($fuseForeground, text); } } @@ -164,7 +176,7 @@ $matColorHues: 50, 100, 200, 300, 400, 500, 600, 700, 800, 900, A100, A200, A400 background-color: $color !important; } - .md-#{$colorName}#{$hue}-bg { + .mat-#{$colorName}#{$hue}-bg { background-color: $color !important; color: $contrastColor !important; diff --git a/src/app/core/scss/partials/_global.scss b/src/app/core/scss/partials/_global.scss index dfdf4f60..f7b93621 100644 --- a/src/app/core/scss/partials/_global.scss +++ b/src/app/core/scss/partials/_global.scss @@ -1,6 +1,6 @@ body { - > md-sidenav-container { + > mat-sidenav-container { height: 100%; } } diff --git a/src/app/core/scss/partials/_icons.scss b/src/app/core/scss/partials/_icons.scss index 44f18524..43281c59 100644 --- a/src/app/core/scss/partials/_icons.scss +++ b/src/app/core/scss/partials/_icons.scss @@ -1,5 +1,5 @@ i, -md-icon { +mat-icon { color: rgba(0, 0, 0, 0.54); font-size: 24px; width: 24px; diff --git a/src/app/core/scss/partials/_material.scss b/src/app/core/scss/partials/_material.scss index bb91fdc9..fb6c488e 100644 --- a/src/app/core/scss/partials/_material.scss +++ b/src/app/core/scss/partials/_material.scss @@ -46,14 +46,14 @@ margin-top: 0; margin-bottom: 0; } - md-icon.status { + mat-icon.status { position: absolute; top: 28px; left: 28px; } } -md-icon.status { +mat-icon.status { border-radius: 50%; &.online { @@ -116,7 +116,7 @@ md-icon.status { max-height: 48px; height: 48px; - md-icon { + mat-icon { margin: 0 16px 0 0; } @@ -142,7 +142,7 @@ md-icon.status { } } - md-divider { + mat-divider { margin: 8px 0; } } @@ -196,7 +196,7 @@ md-icon.status { background-color: #FFFFFF; width: 280px; border-radius: 2px; - margin: 24px 24px 0 0; + margin: 12px; overflow: hidden; &.style-1 { @@ -234,7 +234,7 @@ md-icon.status { } } - md-divider { + mat-divider { margin: 16px 32px; } diff --git a/src/app/core/scss/partials/_page-layouts.scss b/src/app/core/scss/partials/_page-layouts.scss index 51595b0a..29d66d7f 100644 --- a/src/app/core/scss/partials/_page-layouts.scss +++ b/src/app/core/scss/partials/_page-layouts.scss @@ -112,12 +112,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); // Single scroll &.single-scroll { - > md-sidenav-container { + > mat-sidenav-container { flex: 1 0 auto; } } - > md-sidenav-container { + > mat-sidenav-container { display: flex; flex: 1; background: none; @@ -132,11 +132,11 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); min-width: 240px; max-width: 240px; height: auto; - z-index: 2; + z-index: 4; overflow-y: hidden; @include mat-elevation(7); - &.md-is-locked-open { + &.mat-is-locked-open { background: none; box-shadow: none; } @@ -145,6 +145,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); height: $carded-header-height; min-height: $carded-header-height; max-height: $carded-header-height; + + @include media-breakpoint-down('sm') { + height: $carded-header-height-sm; + min-height: $carded-header-height-sm; + max-height: $carded-header-height-sm; + } } .content { @@ -175,6 +181,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); height: $carded-header-height-without-toolbar; min-height: $carded-header-height-without-toolbar; max-height: $carded-header-height-without-toolbar; + + @include media-breakpoint-down('sm') { + height: $carded-header-height-without-toolbar-sm; + min-height: $carded-header-height-without-toolbar-sm; + max-height: $carded-header-height-without-toolbar-sm; + } } .content-card { @@ -216,11 +228,11 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); &.left-sidenav { // Sidenav - > md-sidenav-container { + > mat-sidenav-container { .sidenav { - &.md-is-locked-open { + &.mat-is-locked-open { ~ .mat-sidenav-content, ~ .mat-drawer-content { @@ -238,12 +250,12 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); &.right-sidenav { // Sidenav - > md-sidenav-container { + > mat-sidenav-container { .sidenav { order: 999; - &.md-is-locked-open { + &.mat-is-locked-open { ~ .mat-sidenav-content, ~ .mat-drawer-content { @@ -295,7 +307,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); // Single scroll &.single-scroll { - > md-sidenav-container { + > mat-sidenav-container { flex: 1 0 auto; > .mat-sidenav-content, @@ -309,7 +321,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); // Inner Sidenav &.inner-sidenav { - > md-sidenav-container { + > mat-sidenav-container { flex: 1; .sidenav { @@ -338,10 +350,9 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); } } - > md-sidenav-container { + > mat-sidenav-container { display: flex; flex-direction: column; - //flex-direction: row; flex: 1; background: none; z-index: 2; @@ -354,7 +365,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); z-index: 51; @include mat-elevation(7); - &.md-is-locked-open { + &.mat-is-locked-open { width: 220px; min-width: 220px; max-width: 220px; @@ -440,7 +451,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); &.left-sidenav, &.right-sidenav { - > md-sidenav-container { + > mat-sidenav-container { flex: 1 0 auto; } } @@ -458,7 +469,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); &.left-sidenav, &.right-sidenav { - > md-sidenav-container { + > mat-sidenav-container { flex: 1 0 auto !important; > .mat-sidenav-content, @@ -483,7 +494,7 @@ $top-bg-image: url('assets/images/backgrounds/header-bg.png'); &.left-sidenav, &.right-sidenav { - > md-sidenav-container { + > mat-sidenav-container { > .mat-sidenav-content, > .mat-drawer-content { diff --git a/src/app/core/scss/partials/_reset.scss b/src/app/core/scss/partials/_reset.scss index 1c42a8ac..3b5ea1fa 100644 --- a/src/app/core/scss/partials/_reset.scss +++ b/src/app/core/scss/partials/_reset.scss @@ -28,7 +28,7 @@ html, body { } // Reset non angular-material input's default browser/os styles -*:not(md-input-container) { +*:not(mat-input-container) { > input { border: none; @@ -55,7 +55,7 @@ html, body { } } -*:not(md-input-container) { +*:not(mat-input-container) { > input[type="button"], > button, diff --git a/src/app/core/scss/partials/plugins/_perfect-scrollbar.scss b/src/app/core/scss/partials/plugins/_perfect-scrollbar.scss index 917597a0..b4e97061 100644 --- a/src/app/core/scss/partials/plugins/_perfect-scrollbar.scss +++ b/src/app/core/scss/partials/plugins/_perfect-scrollbar.scss @@ -1,11 +1,12 @@ .ps { position: relative; - > .ps__scrollbar-y-rail { + > .ps__rail-x { z-index: 99999; } - > .ps__scrollbar-y-rail { + > .ps__rail-y { z-index: 99999; + left: auto !important; } } \ No newline at end of file diff --git a/src/app/core/services/config.service.ts b/src/app/core/services/config.service.ts index 6cdc2383..2335da84 100644 --- a/src/app/core/services/config.service.ts +++ b/src/app/core/services/config.service.ts @@ -28,12 +28,12 @@ export class FuseConfigService mode : 'fullwidth' // 'boxed', 'fullwidth' }, colorClasses : { - toolbar: 'md-white-500-bg', - navbar : 'md-fuse-dark-500-bg', - footer : 'md-fuse-dark-700-bg' + toolbar: 'mat-white-500-bg', + navbar : 'mat-fuse-dark-700-bg', + footer : 'mat-fuse-dark-900-bg' }, customScrollbars: true, - routerAnimation : 'fadeIn' + routerAnimation : 'fadeIn' // fadeIn, slideUp, slideDown, slideRight, slideLeft }; /** diff --git a/src/app/fuse-fake-db/faq.ts b/src/app/fuse-fake-db/faq.ts new file mode 100644 index 00000000..be28a980 --- /dev/null +++ b/src/app/fuse-fake-db/faq.ts @@ -0,0 +1,61 @@ +export class FaqFakeDb +{ + public static data = [ + { + 'question': 'Proident tempor est nulla irure ad est?', + 'answer': 'Id nulla nulla proident deserunt deserunt proident in quis. Cillum reprehenderit labore id anim laborum.' + }, + { + 'question': 'Ullamco duis commodo sint ad aliqua aute?', + 'answer': 'Sunt laborum enim nostrud ea fugiat cillum mollit aliqua exercitation ad elit.' + }, + { + 'question': 'Eiusmod non occaecat pariatur Lorem in ex?', + 'answer': 'Nostrud anim mollit incididunt qui qui sit commodo duis. Anim amet irure aliquip duis nostrud sit quis fugiat ullamco non dolor labore. Lorem sunt voluptate laboris culpa proident. Aute eiusmod aliqua exercitation irure exercitation qui laboris mollit occaecat eu occaecat fugiat.' + }, + { + 'question': 'Lorem magna cillum consequat consequat mollit?', + 'answer': 'Velit ipsum proident ea incididunt et. Consectetur eiusmod laborum voluptate duis occaecat ullamco sint enim proident.' + }, + { + 'question': 'Quis irure cupidatat ad consequat reprehenderit excepteur?', + 'answer': 'Esse nisi mollit aliquip mollit aute consequat adipisicing. Do excepteur dolore proident cupidatat pariatur irure consequat incididunt.' + }, + { + 'question': 'Officia voluptate tempor ut mollit ea cillum?', + 'answer': 'Deserunt veniam reprehenderit do elit magna ut.' + }, + { + 'question': 'Sunt fugiat officia nisi minim sunt duis?', + 'answer': 'Eiusmod eiusmod sint aliquip exercitation cillum. Magna nulla officia ex consectetur ea ad excepteur in qui.' + }, + { + 'question': 'Non cupidatat enim quis aliquip minim laborum?', + 'answer': 'Qui cillum eiusmod nostrud sunt dolore velit nostrud labore voluptate ad dolore. Eu Lorem anim pariatur aliqua. Ullamco ut dolor velit esse occaecat dolore eu cillum commodo qui. Nulla dolor consequat voluptate magna ut commodo magna consectetur non aute proident.' + }, + { + 'question': 'Dolor ex occaecat magna labore laboris qui?', + 'answer': 'Incididunt qui excepteur eiusmod elit cillum occaecat voluptate cillum nostrud. Dolor ullamco ullamco eiusmod do sunt adipisicing pariatur. In esse esse labore id reprehenderit sint do. Pariatur culpa dolor tempor qui excepteur duis do anim minim ipsum.' + }, + { + 'question': 'Nisi et ullamco minim ea proident tempor?', + 'answer': 'Dolor veniam dolor cillum Lorem magna nisi in occaecat nulla dolor ea eiusmod.' + }, + { + 'question': 'Amet sunt et quis amet commodo quis?', + 'answer': 'Nulla dolore consequat aliqua sint consequat elit qui occaecat et.' + }, + { + 'question': 'Ut eiusmod ex ea eiusmod culpa incididunt?', + 'answer': 'Fugiat non incididunt officia ex incididunt occaecat. Voluptate nostrud culpa aliquip mollit incididunt non dolore.' + }, + { + 'question': 'Proident reprehenderit laboris pariatur ut et nisi?', + 'answer': 'Reprehenderit proident ut ad cillum quis velit quis aliqua ut aliquip tempor ullamco.' + }, + { + 'question': 'Aliqua aliquip aliquip aliquip et exercitation aute?', + 'answer': 'Adipisicing Lorem tempor ex anim. Labore tempor laboris nostrud dolore voluptate ullamco. Fugiat ex deserunt anim minim esse velit laboris aute ea duis incididunt. Elit irure id Lorem incididunt laborum aliquip consectetur est irure sunt. Ut labore anim nisi aliqua tempor laborum nulla cillum. Duis irure consequat cillum magna cillum eiusmod ut. Et exercitation voluptate quis deserunt elit quis dolor deserunt ex ex esse ex.' + } + ]; +} diff --git a/src/app/main/footer/footer.component.html b/src/app/main/footer/footer.component.html index 2b1cecfb..72bff219 100644 --- a/src/app/main/footer/footer.component.html +++ b/src/app/main/footer/footer.component.html @@ -1,20 +1,20 @@ - +
- shopping_cart + shopping_cart Purchase FUSE (Angular4+)
- Documentation + Documentation - Changelog + Changelog
- + diff --git a/src/app/main/main.component.html b/src/app/main/main.component.html index 7c5a2fd7..4155a298 100644 --- a/src/app/main/main.component.html +++ b/src/app/main/main.component.html @@ -1,6 +1,6 @@ - + -
+
@@ -19,8 +19,8 @@ @@ -62,11 +62,11 @@
- + - + - + diff --git a/src/app/main/navbar/horizontal/navbar-horizontal.component.ts b/src/app/main/navbar/horizontal/navbar-horizontal.component.ts index db5d2d6e..18a66d68 100644 --- a/src/app/main/navbar/horizontal/navbar-horizontal.component.ts +++ b/src/app/main/navbar/horizontal/navbar-horizontal.component.ts @@ -8,7 +8,8 @@ import { Component, OnInit, ViewEncapsulation } from '@angular/core'; }) export class FuseNavbarHorizontalComponent implements OnInit { - constructor() { + constructor() + { } ngOnInit() diff --git a/src/app/main/navbar/vertical/navbar-vertical.component.html b/src/app/main/navbar/vertical/navbar-vertical.component.html index a88e997b..fe98e297 100644 --- a/src/app/main/navbar/vertical/navbar-vertical.component.html +++ b/src/app/main/navbar/vertical/navbar-vertical.component.html @@ -5,12 +5,12 @@ FUSE
- -
diff --git a/src/app/main/navbar/vertical/navbar-vertical.component.scss b/src/app/main/navbar/vertical/navbar-vertical.component.scss index 400efd78..abf58d03 100644 --- a/src/app/main/navbar/vertical/navbar-vertical.component.scss +++ b/src/app/main/navbar/vertical/navbar-vertical.component.scss @@ -134,11 +134,18 @@ fuse-navbar-vertical { } } - .nav-bar-content { + .navbar-content { flex: 1; } } +fuse-navbar-horizontal + #wrapper > fuse-navbar-vertical { + display: none; + @include media-breakpoint-down(md) { + display: flex; + } +} + .fuse-navbar-backdrop { position: absolute; top: 0; diff --git a/src/app/main/navbar/vertical/navbar-vertical.component.ts b/src/app/main/navbar/vertical/navbar-vertical.component.ts index 1c20080b..e0d8aba7 100644 --- a/src/app/main/navbar/vertical/navbar-vertical.component.ts +++ b/src/app/main/navbar/vertical/navbar-vertical.component.ts @@ -26,6 +26,8 @@ export class FuseNavbarVerticalComponent implements OnInit, OnDestroy @ViewChild(FusePerfectScrollbarDirective) fusePerfectScrollbarDirective; matchMediaWatcher: Subscription; + navigationServiceWatcher: Subscription; + fusePerfectScrollbarUpdateTimeout; player: AnimationPlayer; @@ -43,11 +45,12 @@ export class FuseNavbarVerticalComponent implements OnInit, OnDestroy { navBarService.setNavBar(this); - this.fuseNavigationService.onNavCollapseToggle.subscribe(() => { - setTimeout(() => { - this.fusePerfectScrollbarDirective.update(); - }, 310); - }); + this.navigationServiceWatcher = + this.fuseNavigationService.onNavCollapseToggle.subscribe(() => { + this.fusePerfectScrollbarUpdateTimeout = setTimeout(() => { + this.fusePerfectScrollbarDirective.update(); + }, 310); + }); this.matchMediaWatcher = this.fuseMatchMedia.onMediaChange @@ -112,6 +115,13 @@ export class FuseNavbarVerticalComponent implements OnInit, OnDestroy } } + ngOnDestroy() + { + clearTimeout(this.fusePerfectScrollbarUpdateTimeout); + this.matchMediaWatcher.unsubscribe(); + this.navigationServiceWatcher.unsubscribe(); + } + openBar() { this.isClosed = false; @@ -235,9 +245,4 @@ export class FuseNavbarVerticalComponent implements OnInit, OnDestroy }); } } - - ngOnDestroy() - { - this.matchMediaWatcher.unsubscribe(); - } } diff --git a/src/app/main/quick-panel/quick-panel.component.html b/src/app/main/quick-panel/quick-panel.component.html index 86afb250..bf13a381 100644 --- a/src/app/main/quick-panel/quick-panel.component.html +++ b/src/app/main/quick-panel/quick-panel.component.html @@ -1,6 +1,6 @@ - + -

+

Today

@@ -14,33 +14,59 @@ {{date | date:'MMMM'}} -
+ - + - -

+ +

+ Events +

+ + +

{{event.title}}

+

{{event.detail}}

+
+
+ + + + +

+ Notes +

+ + +

{{note.title}}

+

{{note.detail}}

+
+
+ + + + +

Quick Settings

- - + +

Notifications

-
-
+ + - - + +

Cloud Sync

-
-
+ + - - + +

Retro Thrusters

-
-
- + + +
diff --git a/src/app/main/toolbar/toolbar.component.html b/src/app/main/toolbar/toolbar.component.html index ad5da2d1..42d13d58 100644 --- a/src/app/main/toolbar/toolbar.component.html +++ b/src/app/main/toolbar/toolbar.component.html @@ -1,12 +1,14 @@ - + + +
-
@@ -17,7 +19,7 @@
-
+
@@ -25,35 +27,33 @@
- - - - + - - - - +
@@ -61,33 +61,33 @@
- - - - +
-
-
+ diff --git a/src/app/main/toolbar/toolbar.component.scss b/src/app/main/toolbar/toolbar.component.scss index 9a1e2745..6176d063 100644 --- a/src/app/main/toolbar/toolbar.component.scss +++ b/src/app/main/toolbar/toolbar.component.scss @@ -13,6 +13,15 @@ .mat-toolbar { background: inherit; color: inherit; + position: relative; + + .loading-bar { + position: absolute; + top: 0; + left: 0; + right: 0; + width: 100%; + } } .logo { @@ -24,11 +33,6 @@ } } - .loading-spinner { - width: 32px; - height: 32px; - } - .user-button, fuse-search-bar, .language-button, diff --git a/src/app/main/toolbar/toolbar.component.ts b/src/app/main/toolbar/toolbar.component.ts index 82899d0f..5c7368e4 100644 --- a/src/app/main/toolbar/toolbar.component.ts +++ b/src/app/main/toolbar/toolbar.component.ts @@ -13,7 +13,7 @@ export class FuseToolbarComponent userStatusOptions: any[]; languages: any; selectedLanguage: any; - showSpinner: boolean; + showLoadingBar: boolean; horizontalNav: boolean; constructor( @@ -73,11 +73,11 @@ export class FuseToolbarComponent (event) => { if ( event instanceof NavigationStart ) { - this.showSpinner = true; + this.showLoadingBar = true; } if ( event instanceof NavigationEnd ) { - this.showSpinner = false; + this.showLoadingBar = false; } }); diff --git a/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.css b/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.css new file mode 100644 index 00000000..515dd7c1 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.css @@ -0,0 +1,21 @@ +div { + display: flex; +} + +input { + border: none; + background: none; + padding: 0; + outline: none; + font: inherit; + text-align: center; +} + +span { + opacity: 0; + transition: opacity 200ms; +} + +:host.floating span { + opacity: 1; +} diff --git a/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.html b/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.html new file mode 100644 index 00000000..74a64b9c --- /dev/null +++ b/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.html @@ -0,0 +1,7 @@ +
+ + + + + +
diff --git a/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.ts b/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.ts new file mode 100644 index 00000000..e9e62c24 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-custom-control/form-field-custom-control-example.ts @@ -0,0 +1,177 @@ +import { FocusMonitor } from '@angular/cdk/a11y'; +import { coerceBooleanProperty } from '@angular/cdk/coercion'; +import { Component, ElementRef, Input, OnDestroy, Renderer2 } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; +import { MatFormFieldControl } from '@angular/material/form-field'; +import { Subject } from 'rxjs/Subject'; + +/** Data structure for holding telephone number. */ +export class MyTel +{ + constructor(public area: string, public exchange: string, public subscriber: string) + { + } +} + +/** Custom `MatFormFieldControl` for telephone number input. */ +@Component({ + selector : 'my-tel-input', + templateUrl: 'form-field-custom-control-example.html', + styleUrls : ['form-field-custom-control-example.css'], + providers : [ + { + provide : MatFormFieldControl, + useExisting: MyTelInput + } + ], + host : { + '[class.floating]' : 'shouldPlaceholderFloat', + '[id]' : 'id', + '[attr.aria-describedby]': 'describedBy' + } +}) +export class MyTelInput implements MatFormFieldControl, OnDestroy +{ + static nextId = 0; + + parts: FormGroup; + + stateChanges = new Subject(); + + focused = false; + + ngControl = null; + + errorState = false; + + controlType = 'my-tel-input'; + + get empty() + { + let n = this.parts.value; + return !n.area && !n.exchange && !n.subscriber; + } + + get shouldPlaceholderFloat() + { + return this.focused || !this.empty; + } + + id = `my-tel-input-${MyTelInput.nextId++}`; + + describedBy = ''; + + @Input() + get placeholder() + { + return this._placeholder; + } + + set placeholder(plh) + { + this._placeholder = plh; + this.stateChanges.next(); + } + + private _placeholder: string; + + @Input() + get required() + { + return this._required; + } + + set required(req) + { + this._required = coerceBooleanProperty(req); + this.stateChanges.next(); + } + + private _required = false; + + @Input() + get disabled() + { + return this._disabled; + } + + set disabled(dis) + { + this._disabled = coerceBooleanProperty(dis); + this.stateChanges.next(); + } + + private _disabled = false; + + @Input() + get value(): MyTel | null + { + let n = this.parts.value; + if ( n.area.length == 3 && n.exchange.length == 3 && n.subscriber.length == 4 ) + { + return new MyTel(n.area, n.exchange, n.subscriber); + } + return null; + } + + set value(tel: MyTel | null) + { + tel = tel || new MyTel('', '', ''); + this.parts.setValue({ + area : tel.area, + exchange : tel.exchange, + subscriber: tel.subscriber + }); + this.stateChanges.next(); + } + + constructor(fb: FormBuilder, private fm: FocusMonitor, private elRef: ElementRef, + renderer: Renderer2 + ) + { + this.parts = fb.group({ + 'area' : '', + 'exchange' : '', + 'subscriber': '' + }); + + fm.monitor(elRef.nativeElement, renderer, true).subscribe((origin) => { + this.focused = !!origin; + this.stateChanges.next(); + }); + } + + ngOnDestroy() + { + this.stateChanges.complete(); + this.fm.stopMonitoring(this.elRef.nativeElement); + } + + setDescribedByIds(ids: string[]) + { + this.describedBy = ids.join(' '); + } + + onContainerClick(event: MouseEvent) + { + if ( (event.target as Element).tagName.toLowerCase() != 'input' ) + { + this.elRef.nativeElement.querySelector('input').focus(); + } + } +} + +/** @title Form field with custom telephone number input control. */ +@Component({ + selector: 'form-field-custom-control-example', + template: ` + + + phone + Include area code + + ` +}) +export class FormFieldCustomControlExample +{ +} diff --git a/src/assets/angular-material-examples/form-field-error/form-field-error-example.css b/src/assets/angular-material-examples/form-field-error/form-field-error-example.css new file mode 100644 index 00000000..6efed507 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-error/form-field-error-example.css @@ -0,0 +1,8 @@ +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} diff --git a/src/assets/angular-material-examples/form-field-error/form-field-error-example.html b/src/assets/angular-material-examples/form-field-error/form-field-error-example.html new file mode 100644 index 00000000..4a626d54 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-error/form-field-error-example.html @@ -0,0 +1,6 @@ +
+ + + {{getErrorMessage()}} + +
diff --git a/src/assets/angular-material-examples/form-field-error/form-field-error-example.ts b/src/assets/angular-material-examples/form-field-error/form-field-error-example.ts new file mode 100644 index 00000000..ad13e53b --- /dev/null +++ b/src/assets/angular-material-examples/form-field-error/form-field-error-example.ts @@ -0,0 +1,20 @@ +import { Component } from '@angular/core'; +import { FormControl, Validators } from '@angular/forms'; + +/** @title Form field with error messages */ +@Component({ + selector : 'form-field-error-example', + templateUrl: 'form-field-error-example.html', + styleUrls : ['form-field-error-example.css'] +}) +export class FormFieldErrorExample +{ + email = new FormControl('', [Validators.required, Validators.email]); + + getErrorMessage() + { + return this.email.hasError('required') ? 'You must enter a value' : + this.email.hasError('email') ? 'Not a valid email' : + ''; + } +} diff --git a/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.css b/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.css new file mode 100644 index 00000000..6efed507 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.css @@ -0,0 +1,8 @@ +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} diff --git a/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.html b/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.html new file mode 100644 index 00000000..fb09e073 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.html @@ -0,0 +1,13 @@ +
+ + + {{input.value?.length || 0}}/10 + + + + + Option + + Here's the dropdown arrow ^ + +
diff --git a/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.ts b/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.ts new file mode 100644 index 00000000..556928ca --- /dev/null +++ b/src/assets/angular-material-examples/form-field-hint/form-field-hint-example.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +/** @title Form field with hints */ +@Component({ + selector : 'form-field-hint-example', + templateUrl: 'form-field-hint-example.html', + styleUrls : ['form-field-hint-example.css'] +}) +export class FormFieldHintExample +{ +} diff --git a/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.css b/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.css new file mode 100644 index 00000000..6efed507 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.css @@ -0,0 +1,8 @@ +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} diff --git a/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.html b/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.html new file mode 100644 index 00000000..8c19a60e --- /dev/null +++ b/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.html @@ -0,0 +1,15 @@ +
+ + + + + + + + + + + Option + + +
diff --git a/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.ts b/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.ts new file mode 100644 index 00000000..cd18e2ef --- /dev/null +++ b/src/assets/angular-material-examples/form-field-overview/form-field-overview-example.ts @@ -0,0 +1,11 @@ +import { Component } from '@angular/core'; + +/** @title Simple form field */ +@Component({ + selector : 'form-field-overview-example', + templateUrl: 'form-field-overview-example.html', + styleUrls : ['form-field-overview-example.css'] +}) +export class FormFieldOverviewExample +{ +} diff --git a/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.css b/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.css new file mode 100644 index 00000000..4118084a --- /dev/null +++ b/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.css @@ -0,0 +1,20 @@ +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} + +.example-container form { + margin-bottom: 20px; +} + +.example-container form > * { + margin: 5px 0; +} + +.example-container .mat-radio-button { + margin: 0 5px; +} diff --git a/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.html b/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.html new file mode 100644 index 00000000..384e461c --- /dev/null +++ b/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.html @@ -0,0 +1,31 @@ +
+
+ Hide required marker +
+ + + Auto + Always + Never + +
+
+ + + + + + + + -- None -- + Option + + + favorite + Fancy placeholder + +
diff --git a/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.ts b/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.ts new file mode 100644 index 00000000..92fb35c5 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-placeholder/form-field-placeholder-example.ts @@ -0,0 +1,21 @@ +import { Component } from '@angular/core'; +import { FormBuilder, FormGroup } from '@angular/forms'; + +/** @title Form field with placeholder */ +@Component({ + selector : 'form-field-placeholder-example', + templateUrl: 'form-field-placeholder-example.html', + styleUrls : ['form-field-placeholder-example.css'] +}) +export class FormFieldPlaceholderExample +{ + options: FormGroup; + + constructor(fb: FormBuilder) + { + this.options = fb.group({ + hideRequired : false, + floatPlaceholder: 'auto' + }); + } +} diff --git a/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.css b/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.css new file mode 100644 index 00000000..553ce85f --- /dev/null +++ b/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.css @@ -0,0 +1,17 @@ +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} + +.example-right-align { + text-align: right; +} + +input.example-right-align::-webkit-outer-spin-button, +input.example-right-align::-webkit-inner-spin-button { + display: none; +} diff --git a/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.html b/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.html new file mode 100644 index 00000000..a761065b --- /dev/null +++ b/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.html @@ -0,0 +1,12 @@ +
+ + + {{hide ? 'visibility' : 'visibility_off'}} + + + + + + .00 + +
diff --git a/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.ts b/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.ts new file mode 100644 index 00000000..279ed320 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-prefix-suffix/form-field-prefix-suffix-example.ts @@ -0,0 +1,12 @@ +import { Component } from '@angular/core'; + +/** @title Form field with prefix & suffix */ +@Component({ + selector : 'form-field-prefix-suffix-example', + templateUrl: 'form-field-prefix-suffix-example.html', + styleUrls : ['form-field-prefix-suffix-example.css'] +}) +export class FormFieldPrefixSuffixExample +{ + hide = true; +} diff --git a/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.css b/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.css new file mode 100644 index 00000000..6efed507 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.css @@ -0,0 +1,8 @@ +.example-container { + display: flex; + flex-direction: column; +} + +.example-container > * { + width: 100%; +} diff --git a/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.html b/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.html new file mode 100644 index 00000000..085adc53 --- /dev/null +++ b/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.html @@ -0,0 +1,14 @@ +
+ + + Primary + Accent + Warn + + + + + + Min size: 10px + +
diff --git a/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.ts b/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.ts new file mode 100644 index 00000000..a417d1fa --- /dev/null +++ b/src/assets/angular-material-examples/form-field-theming/form-field-theming-example.ts @@ -0,0 +1,26 @@ +import { Component } from '@angular/core'; +import { FormBuilder, FormGroup, Validators } from '@angular/forms'; + +/** @title Form field theming */ +@Component({ + selector : 'form-field-theming-example', + templateUrl: 'form-field-theming-example.html', + styleUrls : ['form-field-theming-example.css'] +}) +export class FormFieldThemingExample +{ + options: FormGroup; + + constructor(fb: FormBuilder) + { + this.options = fb.group({ + 'color' : 'primary', + 'fontSize': [16, Validators.min(10)] + }); + } + + getFontSize() + { + return Math.max(10, this.options.value.fontSize); + } +} diff --git a/src/environments/environment.hmr.ts b/src/environments/environment.hmr.ts index e1c43c7f..b129af6b 100644 --- a/src/environments/environment.hmr.ts +++ b/src/environments/environment.hmr.ts @@ -1,4 +1,4 @@ export const environment = { production: false, - hmr: true + hmr : true }; diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3420b328..bcbc8810 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -1,4 +1,4 @@ export const environment = { production: true, - hmr: false + hmr : false }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 8bd4860c..cd8ca06f 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -5,5 +5,5 @@ export const environment = { production: false, - hmr: false + hmr : false };