diff --git a/package-lock.json b/package-lock.json index 50f72a4..d884a42 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2315,9 +2315,9 @@ "dev": true }, "camelcase": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-3.0.0.tgz", - "integrity": "sha1-MvxLn82vhF/N9+c7uXysImHwqwo=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", "dev": true }, "camelcase-keys": { @@ -2328,14 +2328,6 @@ "requires": { "camelcase": "^2.0.0", "map-obj": "^1.0.0" - }, - "dependencies": { - "camelcase": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", - "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", - "dev": true - } } }, "caniuse-lite": { @@ -2525,14 +2517,42 @@ } }, "cliui": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", - "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wrap-ansi": "^2.0.0" + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "clone-deep": { @@ -3502,6 +3522,38 @@ "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, + "file-loader": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.0.0.tgz", + "integrity": "sha512-/aMOAYEFXDdjG0wytpTL5YQLfZnnTmLNjn+AIrJ/6HVnTfDqLsVKUUwkDf4I4kgex36BvjuXEn/TX9B/1ESyqQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", @@ -4195,17 +4247,6 @@ "inherits": "~2.0.0", "mkdirp": ">=0.5 0", "rimraf": "2" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } } }, "function-bind": { @@ -4240,9 +4281,9 @@ } }, "get-caller-file": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", - "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true }, "get-stdin": { @@ -4603,6 +4644,15 @@ "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", "dev": true }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, "indexes-of": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", @@ -4651,12 +4701,6 @@ "loose-envify": "^1.0.0" } }, - "invert-kv": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", - "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", - "dev": true - }, "is-accessor-descriptor": { "version": "0.1.6", "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", @@ -5172,8 +5216,7 @@ }, "yargs-parser": { "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "resolved": "", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -5587,9 +5630,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", @@ -5788,9 +5831,9 @@ }, "dependencies": { "acorn": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", - "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", "dev": true } } @@ -5858,15 +5901,6 @@ "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "dev": true }, - "lcid": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", - "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", - "dev": true, - "requires": { - "invert-kv": "^1.0.0" - } - }, "left-pad": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", @@ -6368,15 +6402,6 @@ "which": "1" }, "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, "semver": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", @@ -6523,9 +6548,9 @@ } }, "node-sass": { - "version": "4.13.1", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", - "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -6542,7 +6567,7 @@ "node-gyp": "^3.8.0", "npmlog": "^4.0.0", "request": "^2.88.0", - "sass-graph": "^2.2.4", + "sass-graph": "2.2.5", "stdout-stream": "^1.4.0", "true-case-path": "^1.0.2" }, @@ -6778,15 +6803,6 @@ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", "dev": true }, - "os-locale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", - "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", - "dev": true, - "requires": { - "lcid": "^1.0.0" - } - }, "os-tmpdir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", @@ -7455,17 +7471,6 @@ "requires": { "indent-string": "^2.1.0", "strip-indent": "^1.0.1" - }, - "dependencies": { - "indent-string": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", - "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", - "dev": true, - "requires": { - "repeating": "^2.0.0" - } - } } }, "redux": { @@ -7657,9 +7662,9 @@ "dev": true }, "require-main-filename": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", - "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "dev": true }, "resolve": { @@ -7708,6 +7713,15 @@ "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", "dev": true }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, "ripemd160": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", @@ -7772,15 +7786,15 @@ } }, "sass-graph": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.4.tgz", - "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=", + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", "dev": true, "requires": { "glob": "^7.0.0", "lodash": "^4.0.0", "scss-tokenizer": "^0.2.3", - "yargs": "^7.0.0" + "yargs": "^13.3.2" } }, "sass-loader": { @@ -8878,6 +8892,54 @@ } } }, + "url-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-4.1.0.tgz", + "integrity": "sha512-IzgAAIC8wRrg6NYkFIJY09vtktQcsvU8V6HhtQj9PTefbYImzLB1hufqo4m+RyM5N3mLx5BqJKccgxJS+W3kqw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "mime-types": "^2.1.26", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "json5": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.3.tgz", + "integrity": "sha512-KXPvOm8K9IJKFM0bmdn8QXh7udDh1g/giieX0NLCaMnb4hEiVFqnop2ImTXCc5e0/oHz3LTqmHGtExn5hfMkOA==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + } + } + }, "use": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", @@ -9320,9 +9382,9 @@ } }, "which-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-1.0.0.tgz", - "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "wide-align": { @@ -9350,13 +9412,42 @@ } }, "wrap-ansi": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", - "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", "dev": true, "requires": { - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1" + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "wrappy": { @@ -9398,9 +9489,9 @@ "dev": true }, "y18n": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", - "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", "dev": true }, "yallist": { @@ -9410,33 +9501,67 @@ "dev": true }, "yargs": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-7.1.0.tgz", - "integrity": "sha1-a6MY6xaWFyf10oT46gA+jWFU0Mg=", + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", "dev": true, "requires": { - "camelcase": "^3.0.0", - "cliui": "^3.2.0", - "decamelize": "^1.1.1", - "get-caller-file": "^1.0.1", - "os-locale": "^1.4.0", - "read-pkg-up": "^1.0.1", + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", "require-directory": "^2.1.1", - "require-main-filename": "^1.0.1", + "require-main-filename": "^2.0.0", "set-blocking": "^2.0.0", - "string-width": "^1.0.2", - "which-module": "^1.0.0", - "y18n": "^3.2.1", - "yargs-parser": "^5.0.0" + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } } }, "yargs-parser": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-5.0.0.tgz", - "integrity": "sha1-J17PDX/+Bcd+ZOfIbkzZS/DhIoo=", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { - "camelcase": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "dependencies": { + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + } } } } diff --git a/package.json b/package.json index e2c4667..1fec809 100644 --- a/package.json +++ b/package.json @@ -44,16 +44,18 @@ "clean-webpack-plugin": "^3.0.0", "css-loader": "^3.4.2", "fetch-mock": "^8.3.1", + "file-loader": "^6.0.0", "jest": "^24.9.0", "mini-css-extract-plugin": "^0.9.0", "node-fetch": "^2.6.0", - "node-sass": "^4.13.1", + "node-sass": "^4.14.1", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0", "redux-mock-store": "^1.5.4", "sass-loader": "^8.0.2", "style-loader": "^1.1.3", + "url-loader": "^4.1.0", "webpack": "^4.42.1", "webpack-cli": "^3.3.11", "webpack-merge": "^4.2.2" diff --git a/src/newsreader/assets/fonts/METADATA.pb b/src/newsreader/assets/fonts/METADATA.pb new file mode 100755 index 0000000..18857e1 --- /dev/null +++ b/src/newsreader/assets/fonts/METADATA.pb @@ -0,0 +1,101 @@ +name: "Rubik" +designer: "Hubert and Fischer, Meir Sadan, Cyreal" +license: "OFL" +category: "SANS_SERIF" +date_added: "2015-07-22" +fonts { + name: "Rubik" + style: "normal" + weight: 300 + filename: "Rubik-Light.ttf" + post_script_name: "Rubik-Light" + full_name: "Rubik Light" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "italic" + weight: 300 + filename: "Rubik-LightItalic.ttf" + post_script_name: "Rubik-LightItalic" + full_name: "Rubik Light Italic" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "normal" + weight: 400 + filename: "Rubik-Regular.ttf" + post_script_name: "Rubik-Regular" + full_name: "Rubik Regular" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "italic" + weight: 400 + filename: "Rubik-Italic.ttf" + post_script_name: "Rubik-Italic" + full_name: "Rubik Italic" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "normal" + weight: 500 + filename: "Rubik-Medium.ttf" + post_script_name: "Rubik-Medium" + full_name: "Rubik Medium" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "italic" + weight: 500 + filename: "Rubik-MediumItalic.ttf" + post_script_name: "Rubik-MediumItalic" + full_name: "Rubik Medium Italic" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "normal" + weight: 700 + filename: "Rubik-Bold.ttf" + post_script_name: "Rubik-Bold" + full_name: "Rubik Bold" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "italic" + weight: 700 + filename: "Rubik-BoldItalic.ttf" + post_script_name: "Rubik-BoldItalic" + full_name: "Rubik Bold Italic" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "normal" + weight: 900 + filename: "Rubik-Black.ttf" + post_script_name: "Rubik-Black" + full_name: "Rubik Black" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +fonts { + name: "Rubik" + style: "italic" + weight: 900 + filename: "Rubik-BlackItalic.ttf" + post_script_name: "Rubik-BlackItalic" + full_name: "Rubik Black Italic" + copyright: "Copyright 2015 The Rubik Project Authors (https://github.com/googlefonts/rubik)" +} +subsets: "cyrillic" +subsets: "cyrillic-ext" +subsets: "hebrew" +subsets: "latin" +subsets: "latin-ext" +subsets: "menu" diff --git a/src/newsreader/assets/fonts/Rubik-Black.ttf b/src/newsreader/assets/fonts/Rubik-Black.ttf new file mode 100755 index 0000000..0ffcec9 Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-Black.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-BlackItalic.ttf b/src/newsreader/assets/fonts/Rubik-BlackItalic.ttf new file mode 100755 index 0000000..5bb1d4b Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-BlackItalic.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-Bold.ttf b/src/newsreader/assets/fonts/Rubik-Bold.ttf new file mode 100755 index 0000000..5493b22 Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-Bold.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-BoldItalic.ttf b/src/newsreader/assets/fonts/Rubik-BoldItalic.ttf new file mode 100755 index 0000000..d380dac Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-BoldItalic.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-Italic.ttf b/src/newsreader/assets/fonts/Rubik-Italic.ttf new file mode 100755 index 0000000..cf43a4b Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-Italic.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-Light.ttf b/src/newsreader/assets/fonts/Rubik-Light.ttf new file mode 100755 index 0000000..f6e44cc Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-Light.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-LightItalic.ttf b/src/newsreader/assets/fonts/Rubik-LightItalic.ttf new file mode 100755 index 0000000..b9c5631 Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-LightItalic.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-Medium.ttf b/src/newsreader/assets/fonts/Rubik-Medium.ttf new file mode 100755 index 0000000..5a3f898 Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-Medium.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-MediumItalic.ttf b/src/newsreader/assets/fonts/Rubik-MediumItalic.ttf new file mode 100755 index 0000000..5b5bf1f Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-MediumItalic.ttf differ diff --git a/src/newsreader/assets/fonts/Rubik-Regular.ttf b/src/newsreader/assets/fonts/Rubik-Regular.ttf new file mode 100755 index 0000000..abdc5bc Binary files /dev/null and b/src/newsreader/assets/fonts/Rubik-Regular.ttf differ diff --git a/src/newsreader/conf/base.py b/src/newsreader/conf/base.py index ee5a296..5d46230 100644 --- a/src/newsreader/conf/base.py +++ b/src/newsreader/conf/base.py @@ -31,6 +31,7 @@ INSTALLED_APPS = [ "axes", # app modules "newsreader.accounts", + "newsreader.utils", "newsreader.news", "newsreader.news.core", "newsreader.news.collection", @@ -70,6 +71,8 @@ TEMPLATES = [ } ] +FORM_RENDERER = "newsreader.utils.form.FormRenderer" + WSGI_APPLICATION = "newsreader.wsgi.application" # Database diff --git a/src/newsreader/fixtures/default-fixture.json b/src/newsreader/fixtures/default-fixture.json index a6a9162..4117cc1 100644 --- a/src/newsreader/fixtures/default-fixture.json +++ b/src/newsreader/fixtures/default-fixture.json @@ -140,6 +140,22 @@ "expire_date": "2020-05-16T18:29:04.049Z" } }, +{ + "model": "sessions.session", + "pk": "d4wophwpjm8z96doe8iddvhdv9yfafyx", + "fields": { + "session_data": "OWZkZTQyZDQ2NzNkYzdkOTBhM2ZlOWU3MDhhNDkyMWQ0MDdmZTc5ODp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiJhZTMwMWFlMzI5OGFlOThkNjY1MTY1NDIxM2EyMmM0NDA0Y2FkZTc3In0=", + "expire_date": "2020-06-07T19:45:49.727Z" + } +}, +{ + "model": "sessions.session", + "pk": "jwn66dptmdkm6hom2ns3j288aaxqtyjd", + "fields": { + "session_data": "OWZkZTQyZDQ2NzNkYzdkOTBhM2ZlOWU3MDhhNDkyMWQ0MDdmZTc5ODp7Il9hdXRoX3VzZXJfaWQiOiIxIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiJhZTMwMWFlMzI5OGFlOThkNjY1MTY1NDIxM2EyMmM0NDA0Y2FkZTc3In0=", + "expire_date": "2020-06-07T18:38:19.116Z" + } +}, { "model": "django_celery_beat.intervalschedule", "pk": 1, @@ -172,6 +188,14 @@ "period": "hours" } }, +{ + "model": "django_celery_beat.intervalschedule", + "pk": 5, + "fields": { + "every": 4, + "period": "hours" + } +}, { "model": "django_celery_beat.crontabschedule", "pk": 1, @@ -188,7 +212,7 @@ "model": "django_celery_beat.periodictasks", "pk": 1, "fields": { - "last_update": "2020-05-02T20:40:29.029Z" + "last_update": "2020-05-24T19:46:50.243Z" } }, { @@ -225,11 +249,11 @@ "fields": { "name": "sonny@bakker.nl-collection-task", "task": "newsreader.news.collection.tasks.FeedTask", - "interval": 4, + "interval": 5, "crontab": null, "solar": null, "clocked": null, - "args": "[2]", + "args": "[1]", "kwargs": "{}", "queue": null, "exchange": null, @@ -241,37 +265,9 @@ "one_off": false, "start_time": null, "enabled": true, - "last_run_at": "2020-05-02T20:06:24.012Z", - "total_run_count": 292, - "date_changed": "2020-05-02T20:06:24.027Z", - "description": "" - } -}, -{ - "model": "django_celery_beat.periodictask", - "pk": 26, - "fields": { - "name": "sonnyba871@gmail.com-collection-task", - "task": "newsreader.news.collection.tasks.FeedTask", - "interval": 4, - "crontab": null, - "solar": null, - "clocked": null, - "args": "[18]", - "kwargs": "{}", - "queue": null, - "exchange": null, - "routing_key": null, - "headers": "{}", - "priority": null, - "expires": null, - "expire_seconds": null, - "one_off": false, - "start_time": null, - "enabled": true, - "last_run_at": "2020-05-02T20:06:24.045Z", - "total_run_count": 105, - "date_changed": "2020-05-02T20:09:24.331Z", + "last_run_at": "2020-05-24T18:37:57.707Z", + "total_run_count": 293, + "date_changed": "2020-05-24T19:46:50.245Z", "description": "" } }, @@ -1115,7 +1111,7 @@ "model": "accounts.user", "fields": { "password": "pbkdf2_sha256$180000$KGKGsPnSwyiN$RqQAD46r4Kzqndqp5dmpj+H/drDrPRI0r6j4gLtYBjE=", - "last_login": "2020-05-02T18:29:04.047Z", + "last_login": "2020-05-24T19:45:49.721Z", "is_superuser": true, "first_name": "", "last_name": "", @@ -1167,6 +1163,7 @@ "last_suceeded": "2020-05-02T20:06:25.793Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1187,6 +1184,7 @@ "last_suceeded": "2020-05-02T20:06:24.128Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1207,6 +1205,7 @@ "last_suceeded": "2020-05-02T20:06:25.364Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1227,6 +1226,7 @@ "last_suceeded": "2020-05-02T20:06:25.620Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1247,6 +1247,7 @@ "last_suceeded": "2020-05-02T20:06:24.730Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1267,6 +1268,7 @@ "last_suceeded": "2020-05-02T20:06:25.742Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1287,6 +1289,7 @@ "last_suceeded": "2020-05-02T20:06:25.549Z", "succeeded": true, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1307,6 +1310,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1327,6 +1331,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1347,6 +1352,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1367,6 +1373,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1387,6 +1394,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1407,6 +1415,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1427,6 +1436,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1447,6 +1457,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1467,6 +1478,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1487,6 +1499,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1507,6 +1520,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1527,6 +1541,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1547,6 +1562,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1567,6 +1583,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1587,6 +1604,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1607,6 +1625,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1627,6 +1646,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1647,6 +1667,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1667,6 +1688,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1687,6 +1709,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1707,6 +1730,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1727,6 +1751,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1747,6 +1772,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1767,6 +1793,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1787,6 +1814,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1807,6 +1835,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1827,6 +1856,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1847,6 +1877,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1867,6 +1898,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1887,6 +1919,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1907,6 +1940,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1927,6 +1961,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1947,6 +1982,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1967,6 +2003,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -1987,6 +2024,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2007,6 +2045,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2027,6 +2066,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2047,6 +2087,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2067,6 +2108,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2087,6 +2129,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2107,6 +2150,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2127,6 +2171,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2147,6 +2192,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2167,6 +2213,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2187,6 +2234,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2207,6 +2255,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2227,6 +2276,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2247,6 +2297,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2267,6 +2318,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2287,6 +2339,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2307,6 +2360,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2327,6 +2381,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2347,6 +2402,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2367,6 +2423,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2387,6 +2444,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2407,6 +2465,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2427,6 +2486,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2447,6 +2507,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2467,6 +2528,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2487,6 +2549,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2507,6 +2570,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2527,6 +2591,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2547,6 +2612,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2567,6 +2633,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2587,6 +2654,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2607,6 +2675,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2627,6 +2696,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2647,6 +2717,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2667,6 +2738,7 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] @@ -2687,9 +2759,82 @@ "last_suceeded": null, "succeeded": false, "error": null, + "enabled": true, "user": [ "sonny@bakker.nl" ] } +}, +{ + "model": "admin.logentry", + "pk": 1, + "fields": { + "action_time": "2020-05-24T18:38:44.624Z", + "user": [ + "sonny@bakker.nl" + ], + "content_type": [ + "django_celery_beat", + "intervalschedule" + ], + "object_id": "5", + "object_repr": "every 4 hours", + "action_flag": 1, + "change_message": "[{\"added\": {}}]" + } +}, +{ + "model": "admin.logentry", + "pk": 2, + "fields": { + "action_time": "2020-05-24T18:38:46.689Z", + "user": [ + "sonny@bakker.nl" + ], + "content_type": [ + "django_celery_beat", + "periodictask" + ], + "object_id": "10", + "object_repr": "sonny@bakker.nl-collection-task: every 4 hours", + "action_flag": 2, + "change_message": "[{\"changed\": {\"fields\": [\"Interval Schedule\"]}}]" + } +}, +{ + "model": "admin.logentry", + "pk": 3, + "fields": { + "action_time": "2020-05-24T18:39:09.203Z", + "user": [ + "sonny@bakker.nl" + ], + "content_type": [ + "django_celery_beat", + "periodictask" + ], + "object_id": "26", + "object_repr": "sonnyba871@gmail.com-collection-task: every hour", + "action_flag": 3, + "change_message": "" + } +}, +{ + "model": "admin.logentry", + "pk": 4, + "fields": { + "action_time": "2020-05-24T19:46:50.248Z", + "user": [ + "sonny@bakker.nl" + ], + "content_type": [ + "django_celery_beat", + "periodictask" + ], + "object_id": "10", + "object_repr": "sonny@bakker.nl-collection-task: every 4 hours", + "action_flag": 2, + "change_message": "[{\"changed\": {\"fields\": [\"Positional Arguments\"]}}]" + } } ] diff --git a/src/newsreader/js/pages/homepage/components/PostModal.js b/src/newsreader/js/pages/homepage/components/PostModal.js index 4abf710..acc700a 100644 --- a/src/newsreader/js/pages/homepage/components/PostModal.js +++ b/src/newsreader/js/pages/homepage/components/PostModal.js @@ -47,16 +47,37 @@ class PostModal extends React.Component { return (
- +
-

{`${post.title} `}

+

{`${post.title} `}

{publicationDate} + {post.author && {post.author}} + {this.props.category && ( + + + {this.props.category.name} + + + )} + + + {this.props.rule.name} + +
- {/* HTML is sanitized by the collectors */}
diff --git a/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js b/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js index e873965..e679eed 100644 --- a/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js +++ b/src/newsreader/js/pages/homepage/components/feedlist/FeedList.js @@ -6,7 +6,7 @@ import { fetchPostsBySection } from '../../actions/posts.js'; import { filterPosts } from './filters.js'; import LoadingIndicator from '../../../../components/LoadingIndicator.js'; -import RuleItem from './RuleItem.js'; +import PostItem from './PostItem.js'; class FeedList extends React.Component { checkScrollHeight = ::this.checkScrollHeight; @@ -37,8 +37,8 @@ class FeedList extends React.Component { } render() { - const ruleItems = this.props.posts.map((item, index) => { - return ; + const postItems = this.props.postsBySection.map((item, index) => { + return ; }); if (isEqual(this.props.selected, {})) { @@ -50,7 +50,7 @@ class FeedList extends React.Component {
); - } else if (ruleItems.length === 0 && !this.props.isFetching) { + } else if (postItems.length === 0 && !this.props.isFetching) { return (
@@ -62,8 +62,8 @@ class FeedList extends React.Component { ); } else { return ( -
- {ruleItems} +
+
    {postItems}
{this.props.isFetching && }
); @@ -73,7 +73,7 @@ class FeedList extends React.Component { const mapStateToProps = state => ({ isFetching: state.posts.isFetching, - posts: filterPosts(state), + postsBySection: filterPosts(state), next: state.selected.next, lastReached: state.selected.lastReached, selected: state.selected.item, diff --git a/src/newsreader/js/pages/homepage/components/feedlist/PostItem.js b/src/newsreader/js/pages/homepage/components/feedlist/PostItem.js index a24b9c0..a796916 100644 --- a/src/newsreader/js/pages/homepage/components/feedlist/PostItem.js +++ b/src/newsreader/js/pages/homepage/components/feedlist/PostItem.js @@ -1,33 +1,44 @@ import React from 'react'; import { connect } from 'react-redux'; +import { CATEGORY_TYPE, RULE_TYPE } from '../../constants.js'; import { selectPost } from '../../actions/posts.js'; - import { formatDatetime } from '../../../../utils.js'; class PostItem extends React.Component { render() { - const post = this.props.post; + const rule = { ...this.props.post.rule }; + const post = { ...this.props.post, rule: rule.id }; const publicationDate = formatDatetime(post.publicationDate); const titleClassName = post.read - ? 'posts-header__title posts-header__title--read' - : 'posts-header__title'; + ? 'posts__header posts__header--read' + : 'posts__header'; return ( -
  • { - this.props.selectPost(post); - }} - > -
    +
  • +
    this.props.selectPost(post)} + > {post.title}
    - {publicationDate} + {publicationDate} {post.author && `By ${post.author}`} + {this.props.selected.type == CATEGORY_TYPE && ( + + + {rule.name} + + + )} { - return new Date(secondEl.publicationDate) - new Date(firstEl.publicationDate); - }); - - const postItems = posts.map(post => { - return ; - }); - - return ( -
    -

    {this.props.rule.name}

    -
      {postItems}
    -
    - ); - } -} - -export default RuleItem; diff --git a/src/newsreader/js/pages/homepage/components/feedlist/filters.js b/src/newsreader/js/pages/homepage/components/feedlist/filters.js index a3ee886..59fd665 100644 --- a/src/newsreader/js/pages/homepage/components/feedlist/filters.js +++ b/src/newsreader/js/pages/homepage/components/feedlist/filters.js @@ -9,7 +9,9 @@ export const filterPostsByRule = (rule = {}, posts = []) => { return post.rule === rule.id; }); - return filteredPosts.length > 0 ? [{ rule, posts: filteredPosts }] : []; + const filteredData = filteredPosts.map(post => ({ ...post, rule: { ...rule } })); + + return filteredData.length > 0 ? [...filteredData] : []; }; export const filterPostsByCategory = (category = {}, rules = [], posts = []) => { @@ -22,13 +24,14 @@ export const filterPostsByCategory = (category = {}, rules = [], posts = []) => return post.rule === rule.id; }); - return { - rule: { ...rule }, - posts: filteredPosts, - }; + return filteredPosts.map(post => ({ ...post, rule: { ...rule } })); }); - return filteredData.filter(rule => rule.posts.length > 0); + const sortedPosts = [...filteredData.flat()].sort((firstPost, secondPost) => { + return new Date(secondPost.publicationDate) - new Date(firstPost.publicationDate); + }); + + return sortedPosts; }; export const filterPosts = state => { diff --git a/src/newsreader/js/pages/homepage/components/sidebar/CategoryItem.js b/src/newsreader/js/pages/homepage/components/sidebar/CategoryItem.js index d1a0c94..7c0268c 100644 --- a/src/newsreader/js/pages/homepage/components/sidebar/CategoryItem.js +++ b/src/newsreader/js/pages/homepage/components/sidebar/CategoryItem.js @@ -40,7 +40,7 @@ class CategoryItem extends React.Component {
    this.handleSelect()}> -

    {this.props.category.name}

    + {this.props.category.name} {this.props.category.unread}
  • diff --git a/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js b/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js index 879745f..df8da94 100644 --- a/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js +++ b/src/newsreader/js/pages/homepage/components/sidebar/RuleItem.js @@ -31,9 +31,9 @@ class RuleItem extends React.Component {
  • this.handleSelect()}>
    {favicon} -
    + {this.props.rule.name} -
    +
    {this.props.rule.unread}
  • diff --git a/src/newsreader/news/collection/templates/news/collection/views/rules.html b/src/newsreader/news/collection/templates/news/collection/views/rules.html index a17b818..1da7c4d 100644 --- a/src/newsreader/news/collection/templates/news/collection/views/rules.html +++ b/src/newsreader/news/collection/templates/news/collection/views/rules.html @@ -1,5 +1,5 @@ {% extends "base.html" %} -{% load i18n static %} +{% load i18n static filters %} {% block content %}
    @@ -15,6 +15,7 @@ @@ -23,7 +24,7 @@ - + {% include "components/form/checkbox.html" with id="select-all" data_input="rules" id_for_label="select-all" %} {% trans "Name" %} {% trans "Category" %} @@ -36,7 +37,11 @@ {% for rule in rules %} - + + {% with rule|id_for_label:"rules" as id_for_label %} + {% include "components/form/checkbox.html" with name="rules" value=rule.pk id=id_for_label id_for_label=id_for_label %} + {% endwith %} + {{ rule.name }} {{ rule.category.name }} {{ rule.url }} diff --git a/src/newsreader/news/core/endpoints.py b/src/newsreader/news/core/endpoints.py index acc4ab2..f5a48bc 100644 --- a/src/newsreader/news/core/endpoints.py +++ b/src/newsreader/news/core/endpoints.py @@ -92,7 +92,7 @@ class NestedPostCategoryView(ListAPIView): queryset = Post.objects.filter( rule__in=category.rules.values_list("id", flat=True) - ).order_by("rule", "-publication_date") + ).order_by("-publication_date", "rule__name") return queryset diff --git a/src/newsreader/news/core/templates/news/core/widgets/rule.html b/src/newsreader/news/core/templates/news/core/widgets/rule.html index b3c7b68..c8535e8 100644 --- a/src/newsreader/news/core/templates/news/core/widgets/rule.html +++ b/src/newsreader/news/core/templates/news/core/widgets/rule.html @@ -1,5 +1,8 @@ - +{% load filters %} + +{% with option.instance|id_for_label:"category" as id_for_label %} + {% include "components/form/checkbox.html" with widget=option checked=option.selected id_for_label=id_for_label only %} +{% endwith %} {% if option.instance.favicon %} diff --git a/src/newsreader/news/core/tests/endpoints/category/list/tests.py b/src/newsreader/news/core/tests/endpoints/category/list/tests.py index aedd5e1..4d5f0e6 100644 --- a/src/newsreader/news/core/tests/endpoints/category/list/tests.py +++ b/src/newsreader/news/core/tests/endpoints/category/list/tests.py @@ -498,13 +498,12 @@ class NestedCategoryPostView(TestCase): self.assertEquals(data["count"], 6) self.assertEquals(posts[0]["title"], "Second BBC post") - self.assertEquals(posts[1]["title"], "First BBC post") - + self.assertEquals(posts[1]["title"], "Second Reuters post") self.assertEquals(posts[2]["title"], "Second Guardian post") - self.assertEquals(posts[3]["title"], "First Guardian post") - self.assertEquals(posts[4]["title"], "Second Reuters post") - self.assertEquals(posts[5]["title"], "First Reuters post") + self.assertEquals(posts[3]["title"], "First BBC post") + self.assertEquals(posts[4]["title"], "First Reuters post") + self.assertEquals(posts[5]["title"], "First Guardian post") def test_only_posts_from_category_are_returned(self): category = CategoryFactory.create(user=self.user) diff --git a/src/newsreader/scss/components/body/_body.scss b/src/newsreader/scss/components/body/_body.scss index 306ad7c..fed260b 100644 --- a/src/newsreader/scss/components/body/_body.scss +++ b/src/newsreader/scss/components/body/_body.scss @@ -1,10 +1,9 @@ .body { margin: 0; padding: 0; - background-color: $gainsboro; - font-family: $default-font; - color: $default-font-color; + font-family: Rubik, sans-serif; + color: $font-color; } body { diff --git a/src/newsreader/scss/components/body/index.scss b/src/newsreader/scss/components/body/index.scss index 533e39e..62b72d4 100644 --- a/src/newsreader/scss/components/body/index.scss +++ b/src/newsreader/scss/components/body/index.scss @@ -1 +1 @@ -@import "body"; +@import './body'; diff --git a/src/newsreader/scss/components/card/index.scss b/src/newsreader/scss/components/card/index.scss index 149efa0..8c358b8 100644 --- a/src/newsreader/scss/components/card/index.scss +++ b/src/newsreader/scss/components/card/index.scss @@ -1,2 +1,2 @@ -@import "card"; -@import "rule-card"; +@import './card'; +@import './rule-card'; diff --git a/src/newsreader/scss/components/category/_category.scss b/src/newsreader/scss/components/category/_category.scss index 9d8451f..683ed0b 100644 --- a/src/newsreader/scss/components/category/_category.scss +++ b/src/newsreader/scss/components/category/_category.scss @@ -4,8 +4,6 @@ padding: 5px; - border-radius: 5px; - &__info { display: flex; justify-content: space-between; @@ -35,11 +33,7 @@ } } - &:hover { - background-color: darken($azureish-white, +10%); - } - - &--selected { - background-color: darken($azureish-white, +10%); + &--selected, &:hover { + background-color: $border-gray; } } diff --git a/src/newsreader/scss/components/category/index.scss b/src/newsreader/scss/components/category/index.scss index 702bb58..d434e4f 100644 --- a/src/newsreader/scss/components/category/index.scss +++ b/src/newsreader/scss/components/category/index.scss @@ -1 +1 @@ -@import "category"; +@import './category'; diff --git a/src/newsreader/scss/components/errorlist/index.scss b/src/newsreader/scss/components/errorlist/index.scss index bf0c9c9..0987360 100644 --- a/src/newsreader/scss/components/errorlist/index.scss +++ b/src/newsreader/scss/components/errorlist/index.scss @@ -1 +1 @@ -@import "errorlist"; +@import './errorlist'; diff --git a/src/newsreader/scss/components/fieldset/index.scss b/src/newsreader/scss/components/fieldset/index.scss index be990a8..069cfdb 100644 --- a/src/newsreader/scss/components/fieldset/index.scss +++ b/src/newsreader/scss/components/fieldset/index.scss @@ -1 +1 @@ -@import "fieldset"; +@import './fieldset'; diff --git a/src/newsreader/scss/components/form/_form.scss b/src/newsreader/scss/components/form/_form.scss index 19e9d4b..79d3e43 100644 --- a/src/newsreader/scss/components/form/_form.scss +++ b/src/newsreader/scss/components/form/_form.scss @@ -7,7 +7,6 @@ width: 70%; border-radius: 5px; - font-family: $form-font; background-color: $white; &__section { @@ -47,6 +46,7 @@ &__actions { display: flex; flex-direction: row; + gap: 15px; @include form-padding; } diff --git a/src/newsreader/scss/components/form/index.scss b/src/newsreader/scss/components/form/index.scss index 8069223..fc89867 100644 --- a/src/newsreader/scss/components/form/index.scss +++ b/src/newsreader/scss/components/form/index.scss @@ -1,3 +1,2 @@ -@import "form"; - -@import "rules-form"; +@import './form'; +@import './rules-form'; diff --git a/src/newsreader/scss/components/index.scss b/src/newsreader/scss/components/index.scss index 53e0f71..cc9e717 100644 --- a/src/newsreader/scss/components/index.scss +++ b/src/newsreader/scss/components/index.scss @@ -1,28 +1,25 @@ -@import "body/index"; -@import "form/index"; -@import "main/index"; -@import "navbar/index"; -@import "loading-indicator/index"; +@import './body/index'; +@import './form/index'; +@import './main/index'; +@import './navbar/index'; +@import './loading-indicator/index'; -@import "modal/index"; +@import './modal/index'; -@import "card/index"; -@import "list/index"; -@import "messages/index"; -@import "section/index"; -@import "errorlist/index"; -@import "fieldset/index"; -@import "pagination/index"; -@import "sidebar/index"; -@import "table/index"; +@import './card/index'; +@import './list/index'; +@import './messages/index'; +@import './section/index'; +@import './errorlist/index'; +@import './fieldset/index'; +@import './pagination/index'; +@import './sidebar/index'; +@import './table/index'; -@import "rules/index"; -@import "category/index"; +@import './rules/index'; +@import './category/index'; -@import "post/index"; -@import "post-block/index"; -@import "post-message/index"; -@import "posts/index"; -@import "posts-header/index"; -@import "posts-info/index"; -@import "posts-section/index"; +@import './post/index'; +@import './post-message/index'; +@import './posts/index'; +@import './posts-info/index'; diff --git a/src/newsreader/scss/components/list/index.scss b/src/newsreader/scss/components/list/index.scss index 0a92e49..8c42751 100644 --- a/src/newsreader/scss/components/list/index.scss +++ b/src/newsreader/scss/components/list/index.scss @@ -1 +1 @@ -@import "list"; +@import './list'; diff --git a/src/newsreader/scss/components/loading-indicator/index.scss b/src/newsreader/scss/components/loading-indicator/index.scss index c3a3bc3..fc2ebd7 100644 --- a/src/newsreader/scss/components/loading-indicator/index.scss +++ b/src/newsreader/scss/components/loading-indicator/index.scss @@ -1 +1 @@ -@import "loading-indicator"; +@import './loading-indicator'; diff --git a/src/newsreader/scss/components/main/index.scss b/src/newsreader/scss/components/main/index.scss index bdb4ce0..dd76080 100644 --- a/src/newsreader/scss/components/main/index.scss +++ b/src/newsreader/scss/components/main/index.scss @@ -1 +1 @@ -@import "main"; +@import './main'; diff --git a/src/newsreader/scss/components/messages/index.scss b/src/newsreader/scss/components/messages/index.scss index 1e28703..890a555 100644 --- a/src/newsreader/scss/components/messages/index.scss +++ b/src/newsreader/scss/components/messages/index.scss @@ -1 +1 @@ -@import "messages"; +@import './messages'; diff --git a/src/newsreader/scss/components/modal/_modal.scss b/src/newsreader/scss/components/modal/_modal.scss index 93fe54f..3ca246c 100644 --- a/src/newsreader/scss/components/modal/_modal.scss +++ b/src/newsreader/scss/components/modal/_modal.scss @@ -20,7 +20,6 @@ width: 60%; - border-radius: 5px; background-color: $white; } diff --git a/src/newsreader/scss/components/modal/index.scss b/src/newsreader/scss/components/modal/index.scss index d84836a..e239d86 100644 --- a/src/newsreader/scss/components/modal/index.scss +++ b/src/newsreader/scss/components/modal/index.scss @@ -1,3 +1,2 @@ -@import "modal"; - -@import "post-modal"; +@import './modal'; +@import './post-modal'; diff --git a/src/newsreader/scss/components/navbar/_navbar.scss b/src/newsreader/scss/components/navbar/_navbar.scss index 0176265..60c9f48 100644 --- a/src/newsreader/scss/components/navbar/_navbar.scss +++ b/src/newsreader/scss/components/navbar/_navbar.scss @@ -6,8 +6,6 @@ padding: 10px 0; width: 100%; - background-color: $white; - ol { display: flex; justify-content: flex-start; @@ -16,26 +14,14 @@ list-style-type: none; } - a { - color: $nickel; - text-decoration: none; - } - &__item { margin: 0px 10px; - border: none; - border-radius: 2px; - - background-color: darken($azureish-white, 20%); - - &:hover{ - background-color: lighten($azureish-white, +5%); - } - & a { @extend .button; - color: $white; + + font-size: 18px !important; + font-weight: 600; } } diff --git a/src/newsreader/scss/components/navbar/index.scss b/src/newsreader/scss/components/navbar/index.scss index b45a5a0..dd4098f 100644 --- a/src/newsreader/scss/components/navbar/index.scss +++ b/src/newsreader/scss/components/navbar/index.scss @@ -1 +1 @@ -@import "navbar"; +@import './navbar'; diff --git a/src/newsreader/scss/components/pagination/index.scss b/src/newsreader/scss/components/pagination/index.scss index d92e61f..185e83e 100644 --- a/src/newsreader/scss/components/pagination/index.scss +++ b/src/newsreader/scss/components/pagination/index.scss @@ -1 +1 @@ -@import "pagination"; +@import './pagination'; diff --git a/src/newsreader/scss/components/post-block/_post-block.scss b/src/newsreader/scss/components/post-block/_post-block.scss deleted file mode 100644 index c65352b..0000000 --- a/src/newsreader/scss/components/post-block/_post-block.scss +++ /dev/null @@ -1,12 +0,0 @@ -.post-block { - display: flex; - flex-direction: column; - align-items: center; - - width: 70%; - margin: 0 0 2% 0; - - font-family: $article-font; - - border-radius: 2px; -} diff --git a/src/newsreader/scss/components/post-block/index.scss b/src/newsreader/scss/components/post-block/index.scss deleted file mode 100644 index e17b7a9..0000000 --- a/src/newsreader/scss/components/post-block/index.scss +++ /dev/null @@ -1 +0,0 @@ -@import "post-block"; diff --git a/src/newsreader/scss/components/post-message/_post-message.scss b/src/newsreader/scss/components/post-message/_post-message.scss index 03a1dc2..574d633 100644 --- a/src/newsreader/scss/components/post-message/_post-message.scss +++ b/src/newsreader/scss/components/post-message/_post-message.scss @@ -6,9 +6,7 @@ width: 60%; height: 80vh; - border-radius: 2px; - font-family: $article-font; background-color: $white; &__message { diff --git a/src/newsreader/scss/components/post-message/index.scss b/src/newsreader/scss/components/post-message/index.scss index 03cf130..7114cb2 100644 --- a/src/newsreader/scss/components/post-message/index.scss +++ b/src/newsreader/scss/components/post-message/index.scss @@ -1 +1 @@ -@import "post-message"; +@import './post-message'; diff --git a/src/newsreader/scss/components/post/_post.scss b/src/newsreader/scss/components/post/_post.scss index a7b5ed5..46d389d 100644 --- a/src/newsreader/scss/components/post/_post.scss +++ b/src/newsreader/scss/components/post/_post.scss @@ -9,8 +9,6 @@ margin: 2% auto 5% auto; - border-radius: 5px; - overflow-y: auto; background-color: $white; @@ -22,13 +20,9 @@ flex-direction: column; padding: 20px 0 10px 0; width: 75%; - - font-family: $article-header-font; } &__title { - line-height: 1; - &--read { color: $gainsboro; } @@ -44,10 +38,21 @@ } &__date { - align-self: center; font-size: small; } + &__author { + font-size: small; + } + + &__rule, &__category { + background-color: $light-orange !important; + + & a { + color: $black; + } + } + &__body { display:flex; flex-direction: column; @@ -55,10 +60,6 @@ padding: 10px 0 30px 0; width: 75%; - line-height: 1.5; - font-family: $article-font; - font-size: 18px; - & p { padding: 10px 0; } @@ -82,9 +83,11 @@ position: relative; margin: 1% 2% 0 0; align-self: flex-end; + background-color: $button-blue; + color: $white; &:hover { - background-color: lighten($gainsboro, +1%); + background-color: lighten($button-blue, +1%); } } @@ -94,39 +97,6 @@ align-items: center; margin: 15px 0; - } - - &__section-info { - display: flex; - flex-direction: column; - - align-self: flex-end; - position: absolute; - top: 25%; - width: 10%; - - font-family: $button-font; - color: lighten($default-font-color, +10%); - - & h5 { - margin: 10px 0 0 0; - padding: 5px 1px 5px 5px; - - border-radius: 5px 0 0 5px; - - background-color: aquamarine; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - text-align: center; - } - - & h5:first-child { - background-color: $light-orange; - } - - & h5:last-child { - background-color: $beige; - } + gap: 5px; } } diff --git a/src/newsreader/scss/components/post/index.scss b/src/newsreader/scss/components/post/index.scss index b31e7bb..0ad3ea2 100644 --- a/src/newsreader/scss/components/post/index.scss +++ b/src/newsreader/scss/components/post/index.scss @@ -1 +1 @@ -@import "post"; +@import './post'; diff --git a/src/newsreader/scss/components/posts-header/_posts-header.scss b/src/newsreader/scss/components/posts-header/_posts-header.scss deleted file mode 100644 index be0dac8..0000000 --- a/src/newsreader/scss/components/posts-header/_posts-header.scss +++ /dev/null @@ -1,15 +0,0 @@ -.posts-header { - - &__title { - width: 80%; - - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - font-size: 16px; - - &--read { - color: darken($gainsboro, +10%); - } - } -} diff --git a/src/newsreader/scss/components/posts-header/index.scss b/src/newsreader/scss/components/posts-header/index.scss deleted file mode 100644 index 451a453..0000000 --- a/src/newsreader/scss/components/posts-header/index.scss +++ /dev/null @@ -1 +0,0 @@ -@import "posts-header"; diff --git a/src/newsreader/scss/components/posts-info/_posts-info.scss b/src/newsreader/scss/components/posts-info/_posts-info.scss index 9f9bc6c..c199961 100644 --- a/src/newsreader/scss/components/posts-info/_posts-info.scss +++ b/src/newsreader/scss/components/posts-info/_posts-info.scss @@ -1,9 +1,9 @@ .posts-info { display: flex; - justify-content: space-around; align-items: center; - width: 20%; + margin: 10px 0; + gap: 15px; &__date { align-self: center; @@ -12,4 +12,10 @@ &__link { display: inline-flex; } + + & .badge { + & a { + color: $black; + } + } } diff --git a/src/newsreader/scss/components/posts-info/index.scss b/src/newsreader/scss/components/posts-info/index.scss index 2a7a495..50a159b 100644 --- a/src/newsreader/scss/components/posts-info/index.scss +++ b/src/newsreader/scss/components/posts-info/index.scss @@ -1 +1 @@ -@import "posts-info"; +@import './posts-info'; diff --git a/src/newsreader/scss/components/posts-section/_post-section.scss b/src/newsreader/scss/components/posts-section/_post-section.scss deleted file mode 100644 index 1c40bec..0000000 --- a/src/newsreader/scss/components/posts-section/_post-section.scss +++ /dev/null @@ -1,20 +0,0 @@ -.posts-section { - display: flex; - flex-direction: column; - width: 95%; - - margin: 20px; - padding: 10px; - border-radius: 5px; - - background-color: $white; - - &:first-child { - padding: 0 10px 10px 10px; - margin: 0 20px 20px 20px; - } - - &__name { - padding: 20px 0 10px 0; - } -} diff --git a/src/newsreader/scss/components/posts-section/index.scss b/src/newsreader/scss/components/posts-section/index.scss deleted file mode 100644 index 945ed28..0000000 --- a/src/newsreader/scss/components/posts-section/index.scss +++ /dev/null @@ -1 +0,0 @@ -@import "post-section"; diff --git a/src/newsreader/scss/components/posts/_posts.scss b/src/newsreader/scss/components/posts/_posts.scss index 9a3525b..94223a6 100644 --- a/src/newsreader/scss/components/posts/_posts.scss +++ b/src/newsreader/scss/components/posts/_posts.scss @@ -1,23 +1,25 @@ .posts { - display: flex; - flex-direction: column; + width: 70%; + margin: 0 0 2% 20px; - list-style: none; + &__list { + display: flex; + flex-direction: column; - padding: 0; + list-style: none; + + width: 95%; + padding: 0; + } &__item { display: flex; - align-items: center; + flex-direction: column-reverse; - padding: 10px 0 10px 0; + padding: 10px; - border-radius: 2px; - border-bottom: 2px solid $azureish-white; - - &:hover { - cursor: pointer; - background-color: $gainsboro; + &:first-child { + padding: 0 10px 10px 10px; } & span { @@ -27,8 +29,29 @@ white-space: nowrap; } + & .badge { + background-color: $light-orange; + } + &:last-child { border-bottom: 0; } } + + &__header { + width: 80%; + + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + font-size: 16px; + + &--read { + color: darken($gainsboro, +10%); + } + + &:hover { + cursor: pointer; + } + } } diff --git a/src/newsreader/scss/components/posts/index.scss b/src/newsreader/scss/components/posts/index.scss index 66f1811..b19500b 100644 --- a/src/newsreader/scss/components/posts/index.scss +++ b/src/newsreader/scss/components/posts/index.scss @@ -1 +1 @@ -@import "posts"; +@import './posts'; diff --git a/src/newsreader/scss/components/rules/_rules.scss b/src/newsreader/scss/components/rules/_rules.scss index 92427da..b07d03d 100644 --- a/src/newsreader/scss/components/rules/_rules.scss +++ b/src/newsreader/scss/components/rules/_rules.scss @@ -8,19 +8,17 @@ padding: 5px 5px 5px 20px; - border-radius: 5px; - & * { padding: 0 2px 0 2px; } &:hover { cursor: pointer; - background-color: $focus-blue; + background-color: $border-gray; } &--selected { - background-color: $focus-blue; + background-color: $border-gray; } } diff --git a/src/newsreader/scss/components/rules/index.scss b/src/newsreader/scss/components/rules/index.scss index e6a0ebf..1a0309e 100644 --- a/src/newsreader/scss/components/rules/index.scss +++ b/src/newsreader/scss/components/rules/index.scss @@ -1 +1 @@ -@import "rules"; +@import './rules'; diff --git a/src/newsreader/scss/components/section/index.scss b/src/newsreader/scss/components/section/index.scss index 0e02686..0721e8d 100644 --- a/src/newsreader/scss/components/section/index.scss +++ b/src/newsreader/scss/components/section/index.scss @@ -1,2 +1,2 @@ -@import "section"; -@import "text-section"; +@import './section'; +@import './text-section'; diff --git a/src/newsreader/scss/components/sidebar/_sidebar.scss b/src/newsreader/scss/components/sidebar/_sidebar.scss index feac44d..89df180 100644 --- a/src/newsreader/scss/components/sidebar/_sidebar.scss +++ b/src/newsreader/scss/components/sidebar/_sidebar.scss @@ -17,8 +17,6 @@ list-style: none; border-radius: 5px; - font-family: $sidebar-font; - &__item { padding: 2px 10px 5px 10px; } diff --git a/src/newsreader/scss/components/sidebar/index.scss b/src/newsreader/scss/components/sidebar/index.scss index 0abffa8..5e4494d 100644 --- a/src/newsreader/scss/components/sidebar/index.scss +++ b/src/newsreader/scss/components/sidebar/index.scss @@ -1 +1 @@ -@import "sidebar"; +@import './sidebar'; diff --git a/src/newsreader/scss/components/table/_table.scss b/src/newsreader/scss/components/table/_table.scss index 60ab7e8..01f81a0 100644 --- a/src/newsreader/scss/components/table/_table.scss +++ b/src/newsreader/scss/components/table/_table.scss @@ -1,8 +1,6 @@ @import "../../lib/mixins"; .table { - @include rounded; - table-layout: fixed; background-color: $white; width: 90%; diff --git a/src/newsreader/scss/components/table/index.scss b/src/newsreader/scss/components/table/index.scss index d175a21..d5f640e 100644 --- a/src/newsreader/scss/components/table/index.scss +++ b/src/newsreader/scss/components/table/index.scss @@ -1,2 +1,2 @@ -@import "table"; -@import "rules-table"; +@import './table'; +@import './rules-table'; diff --git a/src/newsreader/scss/elements/badge/_badge.scss b/src/newsreader/scss/elements/badge/_badge.scss index 1e2db24..efdd1b7 100644 --- a/src/newsreader/scss/elements/badge/_badge.scss +++ b/src/newsreader/scss/elements/badge/_badge.scss @@ -3,12 +3,10 @@ padding-left: 8px; padding-right: 8px; - border-radius: 2px; text-align: center; - background-color: lighten($pewter-blue, +20%); + background-color: $gainsboro; - font-family: $button-font; font-size: small; } diff --git a/src/newsreader/scss/elements/badge/index.scss b/src/newsreader/scss/elements/badge/index.scss index 87110f0..af0fda4 100644 --- a/src/newsreader/scss/elements/badge/index.scss +++ b/src/newsreader/scss/elements/badge/index.scss @@ -1 +1 @@ -@import "badge"; +@import './badge'; diff --git a/src/newsreader/scss/elements/button/_button.scss b/src/newsreader/scss/elements/button/_button.scss index 3a06cd3..2e97d6b 100644 --- a/src/newsreader/scss/elements/button/_button.scss +++ b/src/newsreader/scss/elements/button/_button.scss @@ -9,9 +9,7 @@ @include button-padding; border: none; - border-radius: 2px; - font-family: $button-font; font-size: 16px; &:hover { @@ -39,10 +37,10 @@ &--primary { color: $white !important; - background-color: darken($azureish-white, +20%); + background-color: $button-blue; &:hover { - background-color: $azureish-white; + background-color: lighten($button-blue, 5%); } } } diff --git a/src/newsreader/scss/elements/button/index.scss b/src/newsreader/scss/elements/button/index.scss index a9b2ec7..af09e59 100644 --- a/src/newsreader/scss/elements/button/index.scss +++ b/src/newsreader/scss/elements/button/index.scss @@ -1,2 +1,2 @@ -@import "button"; -@import "_read-button"; +@import './button'; +@import './read-button'; diff --git a/src/newsreader/scss/elements/checkbox/_checkbox.scss b/src/newsreader/scss/elements/checkbox/_checkbox.scss new file mode 100644 index 0000000..f23a7c3 --- /dev/null +++ b/src/newsreader/scss/elements/checkbox/_checkbox.scss @@ -0,0 +1,35 @@ +.checkbox { + display: block; + height: 20px; + width: 20px; + margin: 0 0 0 20px; + + + & input[type=checkbox] { + position: absolute; + opacity: 0; + + appearance: none; + -moz-appearance: none; + + &:checked + .checkbox__label { + .checkbox__box { + background-color: $checkbox-blue; + } + } + } + + &__label { + padding: 0; + } + + &__box { + display: block; + position: relative; + + height: 100%; + width: 100%; + border: 2px solid darken($gainsboro, 10%); + cursor: pointer; + } +} diff --git a/src/newsreader/scss/elements/checkbox/index.scss b/src/newsreader/scss/elements/checkbox/index.scss new file mode 100644 index 0000000..b022713 --- /dev/null +++ b/src/newsreader/scss/elements/checkbox/index.scss @@ -0,0 +1 @@ +@import './checkbox'; diff --git a/src/newsreader/scss/elements/h1/_h1.scss b/src/newsreader/scss/elements/h1/_h1.scss index d82b6eb..6ddee05 100644 --- a/src/newsreader/scss/elements/h1/_h1.scss +++ b/src/newsreader/scss/elements/h1/_h1.scss @@ -1,3 +1,8 @@ .h1 { - font-family: $header-font; + color: $header-color; + font-size: 20px; +} + +h1 { + @extend .h1; } diff --git a/src/newsreader/scss/elements/h1/index.scss b/src/newsreader/scss/elements/h1/index.scss index 0fe45be..a04aefc 100644 --- a/src/newsreader/scss/elements/h1/index.scss +++ b/src/newsreader/scss/elements/h1/index.scss @@ -1 +1 @@ -@import "h1"; +@import './h1'; diff --git a/src/newsreader/scss/elements/h2/_h2.scss b/src/newsreader/scss/elements/h2/_h2.scss index 18abeb4..9f77ad8 100644 --- a/src/newsreader/scss/elements/h2/_h2.scss +++ b/src/newsreader/scss/elements/h2/_h2.scss @@ -1,3 +1,7 @@ .h2 { - font-family: $header-font; + color: $header-color; +} + +h2 { + @extend .h2; } diff --git a/src/newsreader/scss/elements/h2/index.scss b/src/newsreader/scss/elements/h2/index.scss index 6ca9eab..9e9be3d 100644 --- a/src/newsreader/scss/elements/h2/index.scss +++ b/src/newsreader/scss/elements/h2/index.scss @@ -1 +1 @@ -@import "h2"; +@import './h2'; diff --git a/src/newsreader/scss/elements/h3/_h3.scss b/src/newsreader/scss/elements/h3/_h3.scss index 955967b..7394bd7 100644 --- a/src/newsreader/scss/elements/h3/_h3.scss +++ b/src/newsreader/scss/elements/h3/_h3.scss @@ -1,3 +1,7 @@ .h3 { - font-family: $header-font; + color: $header-color; +} + +h3 { + @extend .h3; } diff --git a/src/newsreader/scss/elements/h3/index.scss b/src/newsreader/scss/elements/h3/index.scss index feb5951..c1aeae5 100644 --- a/src/newsreader/scss/elements/h3/index.scss +++ b/src/newsreader/scss/elements/h3/index.scss @@ -1 +1 @@ -@import "h3"; +@import './h3'; diff --git a/src/newsreader/scss/elements/h4/_h4.scss b/src/newsreader/scss/elements/h4/_h4.scss new file mode 100644 index 0000000..ab24888 --- /dev/null +++ b/src/newsreader/scss/elements/h4/_h4.scss @@ -0,0 +1,7 @@ +.h4 { + color: $header-color; +} + +h4 { + @extend .h4; +} diff --git a/src/newsreader/scss/elements/h4/index.scss b/src/newsreader/scss/elements/h4/index.scss new file mode 100644 index 0000000..4c735ff --- /dev/null +++ b/src/newsreader/scss/elements/h4/index.scss @@ -0,0 +1 @@ +@import './h4'; diff --git a/src/newsreader/scss/elements/h5/_h5.scss b/src/newsreader/scss/elements/h5/_h5.scss new file mode 100644 index 0000000..5efa58e --- /dev/null +++ b/src/newsreader/scss/elements/h5/_h5.scss @@ -0,0 +1,7 @@ +.h5 { + color: $header-color; +} + +h5 { + @extend .h5; +} diff --git a/src/newsreader/scss/elements/h5/index.scss b/src/newsreader/scss/elements/h5/index.scss new file mode 100644 index 0000000..2781c4f --- /dev/null +++ b/src/newsreader/scss/elements/h5/index.scss @@ -0,0 +1 @@ +@import './h5'; diff --git a/src/newsreader/scss/elements/help-text/index.scss b/src/newsreader/scss/elements/help-text/index.scss index f5f595f..1f8cde9 100644 --- a/src/newsreader/scss/elements/help-text/index.scss +++ b/src/newsreader/scss/elements/help-text/index.scss @@ -1 +1 @@ -@import "help-text"; +@import './help-text'; diff --git a/src/newsreader/scss/elements/index.scss b/src/newsreader/scss/elements/index.scss index 3e2a01c..0c30aff 100644 --- a/src/newsreader/scss/elements/index.scss +++ b/src/newsreader/scss/elements/index.scss @@ -1,11 +1,14 @@ -@import "badge/index"; -@import "button/index"; -@import "help-text/index"; -@import "input/index"; -@import "label/index"; -@import "link/index"; -@import "h1/index"; -@import "h2/index"; -@import "h3/index"; -@import "small/index"; -@import "select/index"; +@import './badge/index'; +@import './button/index'; +@import './help-text/index'; +@import './input/index'; +@import './label/index'; +@import './link/index'; +@import './h1/index'; +@import './h2/index'; +@import './h3/index'; +@import './h4/index'; +@import './h5/index'; +@import './small/index'; +@import './select/index'; +@import './checkbox/index'; diff --git a/src/newsreader/scss/elements/input/_input.scss b/src/newsreader/scss/elements/input/_input.scss index 897fbf9..8258020 100644 --- a/src/newsreader/scss/elements/input/_input.scss +++ b/src/newsreader/scss/elements/input/_input.scss @@ -1,9 +1,7 @@ .input { padding: 10px; - background-color: lighten($gainsboro, +4%); border: 1px $border-gray solid; - border-radius: 2px; &:focus { border: 1px $focus-blue solid; diff --git a/src/newsreader/scss/elements/input/index.scss b/src/newsreader/scss/elements/input/index.scss index 84e5ed8..d602311 100644 --- a/src/newsreader/scss/elements/input/index.scss +++ b/src/newsreader/scss/elements/input/index.scss @@ -1 +1 @@ -@import "input"; +@import './input'; diff --git a/src/newsreader/scss/elements/label/index.scss b/src/newsreader/scss/elements/label/index.scss index 12e5523..d893279 100644 --- a/src/newsreader/scss/elements/label/index.scss +++ b/src/newsreader/scss/elements/label/index.scss @@ -1 +1 @@ -@import "label"; +@import './label'; diff --git a/src/newsreader/scss/elements/link/index.scss b/src/newsreader/scss/elements/link/index.scss index bab69d1..1e73038 100644 --- a/src/newsreader/scss/elements/link/index.scss +++ b/src/newsreader/scss/elements/link/index.scss @@ -1 +1 @@ -@import "link"; +@import './link'; diff --git a/src/newsreader/scss/elements/select/index.scss b/src/newsreader/scss/elements/select/index.scss index 8320088..192ab81 100644 --- a/src/newsreader/scss/elements/select/index.scss +++ b/src/newsreader/scss/elements/select/index.scss @@ -1 +1 @@ -@import "select"; +@import './select'; diff --git a/src/newsreader/scss/elements/small/index.scss b/src/newsreader/scss/elements/small/index.scss index ea3d25f..c168f07 100644 --- a/src/newsreader/scss/elements/small/index.scss +++ b/src/newsreader/scss/elements/small/index.scss @@ -1 +1 @@ -@import "small"; +@import './small'; diff --git a/src/newsreader/scss/index.scss b/src/newsreader/scss/index.scss index 2dbf46a..6bd9025 100644 --- a/src/newsreader/scss/index.scss +++ b/src/newsreader/scss/index.scss @@ -1,6 +1,6 @@ -@import "lib/index"; -@import "partials/index"; -@import "components/index"; -@import "elements/index"; +@import './lib/index'; +@import './partials/index'; +@import './components/index'; +@import './elements/index'; -@import "pages/index"; +@import './pages/index'; diff --git a/src/newsreader/scss/lib/_css.gg.scss b/src/newsreader/scss/lib/_css.gg.scss index e7096d5..a1b1338 100644 --- a/src/newsreader/scss/lib/_css.gg.scss +++ b/src/newsreader/scss/lib/_css.gg.scss @@ -1,9 +1,10 @@ -@import "~css.gg/icons-scss/icons"; +@import '~css.gg/icons-scss/icons'; .gg-link { color: initial; } .gg-pen { + transform: rotate(-45deg) scale(var(--ggs, 0.8)); color: initial; } diff --git a/src/newsreader/scss/lib/_mixins.scss b/src/newsreader/scss/lib/_mixins.scss index e2d28aa..8b13789 100644 --- a/src/newsreader/scss/lib/_mixins.scss +++ b/src/newsreader/scss/lib/_mixins.scss @@ -1,3 +1 @@ -@mixin rounded { - border-radius: 5px; -} + diff --git a/src/newsreader/scss/lib/index.scss b/src/newsreader/scss/lib/index.scss index 2aca0df..ec6885e 100644 --- a/src/newsreader/scss/lib/index.scss +++ b/src/newsreader/scss/lib/index.scss @@ -1 +1 @@ -@import "css.gg"; +@import 'css.gg'; diff --git a/src/newsreader/scss/pages/index.scss b/src/newsreader/scss/pages/index.scss index ddfaf85..44ca8a7 100644 --- a/src/newsreader/scss/pages/index.scss +++ b/src/newsreader/scss/pages/index.scss @@ -1,14 +1,14 @@ -@import "categories/index"; -@import "category/index"; +@import './categories/index'; +@import './category/index'; -@import "import/index"; -@import "homepage/index"; +@import './import/index'; +@import './homepage/index'; -@import "login/index"; -@import "password-reset/index"; -@import "register/index"; +@import './login/index'; +@import './password-reset/index'; +@import './register/index'; -@import "rule/index"; -@import "rules/index"; +@import './rule/index'; +@import './rules/index'; -@import "settings/index"; +@import './settings/index'; diff --git a/src/newsreader/scss/partials/_colors.scss b/src/newsreader/scss/partials/_colors.scss index 8e776a2..08c7169 100644 --- a/src/newsreader/scss/partials/_colors.scss +++ b/src/newsreader/scss/partials/_colors.scss @@ -19,10 +19,10 @@ $lavendal-pink: rgba(162, 155, 254, 1); $beige: rgba(245, 245, 220, 1); $light-green: rgba(230, 247, 185, 1); -$light-orange: rgba(237, 212, 178, 1); +$light-orange: rgba(255, 212, 153, 1); $light-red: rgba(255, 118, 117, 1); -$success-green: rgba(46,204,113, 1); +$success-green: rgba(89, 181, 128, 1); $error-red: lighten(rgba(231, 76, 60, 1), 10%); $confirm-green: $success-green; @@ -30,8 +30,11 @@ $cancel-red: $error-red; $border-gray: rgba(227, 227, 227, 1); +$button-blue: rgba(111, 164, 196, 1); $focus-blue: darken($azureish-white, +10%); -$default-font-color: rgba(48, 51, 53, 1); +$checkbox-blue: rgba(34, 170, 253, 1); +$font-color: rgba(48, 51, 53, 1); +$header-color: rgba(100, 101, 102, 1); $white: rgba(255, 255, 255, 1); $black: rgba(0, 0, 0, 1); diff --git a/src/newsreader/scss/partials/_fonts.scss b/src/newsreader/scss/partials/_fonts.scss index 31c5d56..bcceb13 100644 --- a/src/newsreader/scss/partials/_fonts.scss +++ b/src/newsreader/scss/partials/_fonts.scss @@ -1,17 +1,10 @@ -@import url("https://fonts.googleapis.com/css?family=Barlow&display=swap"); -@import url("https://fonts.googleapis.com/css?family=Oswald&display=swap"); -@import url("https://fonts.googleapis.com/css?family=Nunito&display=swap"); -@import url("https://fonts.googleapis.com/css?family=Noto+Sans&display=swap"); -@import url("https://fonts.googleapis.com/css?family=Noto+Serif&display=swap"); -@import url("https://fonts.googleapis.com/css?family=IBM+Plex+Sans:600&display=swap"); +@font-face { + font-family: Rubik; + src: url('../assets/fonts/Rubik-Regular.ttf'); +} -$default-font: "Noto Serif", serif; - -$button-font: "IBM Plex Sans", sans-serif; -$form-font: "Barlow", sans-serif; - -$article-font: "Noto Serif", serif; -$article-header-font: "Oswald", sans-serif; - -$header-font: "Noto Sans", sans-serif; -$sidebar-font: "Nunito", sans-serif; +@font-face { + font-family: Rubik; + src: url('../assets/fonts/Rubik-Bold.ttf'); + font-weight: bold; +} diff --git a/src/newsreader/scss/partials/index.scss b/src/newsreader/scss/partials/index.scss index 24bbbd0..ff28d1b 100644 --- a/src/newsreader/scss/partials/index.scss +++ b/src/newsreader/scss/partials/index.scss @@ -1,2 +1,2 @@ -@import "fonts"; -@import "colors"; +@import './colors'; +@import './fonts'; diff --git a/src/newsreader/templates/components/form/attrs.html b/src/newsreader/templates/components/form/attrs.html new file mode 100644 index 0000000..50aec9b --- /dev/null +++ b/src/newsreader/templates/components/form/attrs.html @@ -0,0 +1,18 @@ +{% spaceless %} + {% for name, value in widget.attrs.items %} + {% if value is not False %} + {{ name }} + + {% if value is not True %} + ="{{ value|stringformat:'s' }}" + {% endif %} + {% endif %} + {% endfor %} + + {% if id %} id="{{ id }}"{% endif %} + {% if type %} type="{{ type }}"{% endif %} + {% if value %} value="{{ value }}"{% endif %} + {% if name %} name="{{ name }}"{% endif %} + {% if data_input %} data-input="{{ data_input }}"{% endif %} + {% if checked %} checked {% endif %} +{% endspaceless %} diff --git a/src/newsreader/templates/components/form/checkbox.html b/src/newsreader/templates/components/form/checkbox.html new file mode 100644 index 0000000..42ac691 --- /dev/null +++ b/src/newsreader/templates/components/form/checkbox.html @@ -0,0 +1,10 @@ +
    + {% if widget %} + {% include "components/form/input.html" with widget=widget %} + {% else %} + {% include "components/form/input.html" with id=id name=name type="checkbox" value=value data_input=data_input checked=checked %} + {% endif %} + +
    diff --git a/src/newsreader/templates/components/form/input.html b/src/newsreader/templates/components/form/input.html new file mode 100644 index 0000000..08f32e1 --- /dev/null +++ b/src/newsreader/templates/components/form/input.html @@ -0,0 +1,7 @@ +{% spaceless %} + +{% endspaceless %} diff --git a/src/newsreader/templates/django/forms/widgets/attrs.html b/src/newsreader/templates/django/forms/widgets/attrs.html new file mode 120000 index 0000000..595204e --- /dev/null +++ b/src/newsreader/templates/django/forms/widgets/attrs.html @@ -0,0 +1 @@ +../../../components/form/attrs.html \ No newline at end of file diff --git a/src/newsreader/templates/django/forms/widgets/checkbox.html b/src/newsreader/templates/django/forms/widgets/checkbox.html new file mode 120000 index 0000000..f939869 --- /dev/null +++ b/src/newsreader/templates/django/forms/widgets/checkbox.html @@ -0,0 +1 @@ +../../../components/form/checkbox.html \ No newline at end of file diff --git a/src/newsreader/utils/__init__.py b/src/newsreader/utils/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/newsreader/utils/admin.py b/src/newsreader/utils/admin.py new file mode 100644 index 0000000..846f6b4 --- /dev/null +++ b/src/newsreader/utils/admin.py @@ -0,0 +1 @@ +# Register your models here. diff --git a/src/newsreader/utils/apps.py b/src/newsreader/utils/apps.py new file mode 100644 index 0000000..3e82e49 --- /dev/null +++ b/src/newsreader/utils/apps.py @@ -0,0 +1,5 @@ +from django.apps import AppConfig + + +class UtilsConfig(AppConfig): + name = "utils" diff --git a/src/newsreader/utils/form.py b/src/newsreader/utils/form.py new file mode 100644 index 0000000..dc619bf --- /dev/null +++ b/src/newsreader/utils/form.py @@ -0,0 +1,16 @@ +from django.forms.renderers import DjangoTemplates +from django.template.exceptions import TemplateDoesNotExist +from django.template.loader import get_template + + +class FormRenderer(DjangoTemplates): + """ + Prioritizes templates from TEMPLATES setting and fall's back to django's + default FormRenderer behaviour + """ + + def get_template(self, template_name): + try: + return get_template(template_name) + except TemplateDoesNotExist: + return super().get_template(template_name) diff --git a/src/newsreader/utils/migrations/__init__.py b/src/newsreader/utils/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/newsreader/utils/models.py b/src/newsreader/utils/models.py new file mode 100644 index 0000000..6b20219 --- /dev/null +++ b/src/newsreader/utils/models.py @@ -0,0 +1 @@ +# Create your models here. diff --git a/src/newsreader/utils/templatetags/filters.py b/src/newsreader/utils/templatetags/filters.py new file mode 100644 index 0000000..94fa541 --- /dev/null +++ b/src/newsreader/utils/templatetags/filters.py @@ -0,0 +1,9 @@ +from django import template + + +register = template.Library() + + +@register.filter +def id_for_label(instance, arg): + return f"{arg}_{instance.pk}" diff --git a/src/newsreader/utils/views.py b/src/newsreader/utils/views.py new file mode 100644 index 0000000..60f00ef --- /dev/null +++ b/src/newsreader/utils/views.py @@ -0,0 +1 @@ +# Create your views here. diff --git a/webpack.common.babel.js b/webpack.common.babel.js index 2c8471c..4ad1700 100644 --- a/webpack.common.babel.js +++ b/webpack.common.babel.js @@ -21,6 +21,16 @@ export default { test: /\.(sass|scss)$/, use: [{ loader: MiniCssExtractPlugin.loader }, 'css-loader', 'sass-loader'], }, + { + test: /\.(ttf|woff|woff2)$/, + use: { + loader: 'file-loader', + options: { + name: 'fonts/[name].[ext]', + publicPath: '../', + }, + }, + }, ], }, plugins: [