MOBILE-2348 quiz: Style fixes

main
Pau Ferrer Ocaña 2018-04-09 13:14:55 +02:00 committed by Dani Palou
parent 31490d337b
commit f69051cc1e
23 changed files with 266 additions and 145 deletions

164
package-lock.json generated
View File

@ -7,7 +7,7 @@
"7zip-bin": {
"version": "2.2.7",
"resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-2.2.7.tgz",
"integrity": "sha512-+rr4OgeTNrLuJAf09o3USdttEYiXvZshWMkhD6wR9v1ieXH0JM1Q2yT41/cJuJcqiPpSXlM/g3aR+Y5MWQdr0Q==",
"integrity": "sha1-ckgCuNa9oL8s/mGkuGqCDvyOzpM=",
"optional": true,
"requires": {
"7zip-bin-linux": "1.3.1",
@ -48,7 +48,7 @@
"@angular/animations": {
"version": "5.2.9",
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.9.tgz",
"integrity": "sha512-H/3fMs4PhYjKoA81II6D0PHifDrqlKet2u/EXzUBq3ehXby+N/0GBzqsBYwPeU5pTye7WPFfW+5sgoJpN8Ye6Q==",
"integrity": "sha1-Ig25+1pSoZPbACPXIbI93SWnV3A=",
"requires": {
"tslib": "1.8.1"
}
@ -123,7 +123,7 @@
"@ionic-native/badge": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@ionic-native/badge/-/badge-4.6.0.tgz",
"integrity": "sha512-tzPqvETj5OEDdo3nlgMbMaCnuJ9+8RzCat3yOxtpRt3IWfYFgPqr7CrKYgQF68UBg/7S5Gc1l4OmM0f3yQru7w=="
"integrity": "sha1-/L4+HDpd9skKhtC2LZzBJ2so0JA="
},
"@ionic-native/camera": {
"version": "4.5.2",
@ -138,12 +138,12 @@
"@ionic-native/core": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@ionic-native/core/-/core-4.3.0.tgz",
"integrity": "sha512-Pf0qCzqlVFmIpZpvo35Kl0e+1K8GUgPMcKBnN57gWh+5Ecj3dPcb+MbP4murJo/dnFsIYPYdXRZRf74hjo6gtw=="
"integrity": "sha1-DWE7tsh3kUaUlRQpnKHAJhHjCKk="
},
"@ionic-native/device": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@ionic-native/device/-/device-4.6.0.tgz",
"integrity": "sha512-xHXmfoRQ0aAJRiD3ZmHOExfQTbgv4Bgu6aDeGVOQ2vo5ZShIvHR1zvhjZ65Avg0tNf3Bz4ZqRIYpSENj77XI5g=="
"integrity": "sha1-NvvxsjbfFqmNgKxz9gzJsp6aHps="
},
"@ionic-native/file": {
"version": "4.5.2",
@ -188,12 +188,12 @@
"@ionic-native/push": {
"version": "4.6.0",
"resolved": "https://registry.npmjs.org/@ionic-native/push/-/push-4.6.0.tgz",
"integrity": "sha512-fBVZotifaGD7bJNenLfm1QmPFg4mwUfYfURDskDIEPhxw6tpk6uAw6ZYtpadEP4bMfEa/gmcF75aHblFYfNQSw=="
"integrity": "sha1-TeQ/Wl0rTW/ARaEvTtJjs1240GM="
},
"@ionic-native/splash-screen": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@ionic-native/splash-screen/-/splash-screen-4.3.0.tgz",
"integrity": "sha512-psShN4u3hiLkuva8GaCUqwFuVrd8nizXxM8n0eZyFdXedFHFF3CqBMPzPdH98fcoseyOD7QekOtrm0lV6QlD8w=="
"integrity": "sha1-nesHr88QWYByM6p9kNbkQfbss3I="
},
"@ionic-native/sqlite": {
"version": "4.5.2",
@ -203,7 +203,7 @@
"@ionic-native/status-bar": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/@ionic-native/status-bar/-/status-bar-4.3.0.tgz",
"integrity": "sha512-gjS0U2uT6XYshysvzNu98Pf6b5SZ7SGSYkZW1mft19geFn6/MKunX1CJkjpXmiTn14nAD1+FBxF43Oi2OfoM4g=="
"integrity": "sha1-3bFoYaIscjXAc3uk4OUSfJruSs4="
},
"@ionic-native/zip": {
"version": "4.5.2",
@ -375,12 +375,12 @@
"@types/promise.prototype.finally": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/@types/promise.prototype.finally/-/promise.prototype.finally-2.0.2.tgz",
"integrity": "sha512-Fs99h+iFQZ4ZY2vO3+uJCrx+5KQnJ4FPerZ3oT/1L5aA7vnmK/d7Z/Ml1yHtNCh9UQcjFTR4Xo/Jss2f39Fgtw=="
"integrity": "sha1-aP77jw4j8hiTozdAyTHHn0S+NJk="
},
"abbrev": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
"integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
"integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
"dev": true
},
"accepts": {
@ -477,7 +477,7 @@
"anymatch": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz",
"integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==",
"integrity": "sha1-VT3Lj5HjyImEXf26NMd3IbkLnXo=",
"requires": {
"micromatch": "2.3.11",
"normalize-path": "2.1.1"
@ -486,7 +486,7 @@
"aproba": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
"integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
"integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
"dev": true
},
"archiver": {
@ -552,7 +552,7 @@
"arr-flatten": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
"integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg=="
"integrity": "sha1-NgSLv/TntH4TZkQxbJlmnqWukfE="
},
"array-differ": {
"version": "1.0.0",
@ -581,7 +581,7 @@
"array-slice": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.1.0.tgz",
"integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==",
"integrity": "sha1-42jqFfibxwaff/uJrsOmx9SsItQ=",
"dev": true
},
"array-uniq": {
@ -630,7 +630,7 @@
"async": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/async/-/async-2.6.0.tgz",
"integrity": "sha512-xAfGg1/NTLBBKlHFmnd7PlmUW9KhVQIUuSrYem9xzFUZy13ScvtyGGejaae9iAVRiRq9+Cx7DPFaAAhCpyxyPw==",
"integrity": "sha1-YaKau2/MAm/qd+VtHG7FOnlZUfQ=",
"requires": {
"lodash": "4.17.5"
}
@ -643,7 +643,7 @@
"async-exit-hook": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/async-exit-hook/-/async-exit-hook-2.0.1.tgz",
"integrity": "sha512-NW2cX8m1Q7KPA7a5M2ULQeZ2wR5qI5PAbw5L0UOMxdioVk9PMZ0h1TmyZEkPYrCvYjDlFICusOu1dlEKAAeXBw=="
"integrity": "sha1-i9iwJLDsmxwBzMua+dspvXF9+vM="
},
"async-foreach": {
"version": "0.1.3",
@ -654,7 +654,7 @@
"async-limiter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.0.tgz",
"integrity": "sha512-jp/uFnooOiO+L211eZOoSyzpOITMXx1rBITauYykG3BRYPu8h0UcxsPNB04RR5vo4Tyz3+ay17tR6JVf9qzYWg==",
"integrity": "sha1-ePrtjD0HSrgfIrTphdeehzj3IPg=",
"dev": true
},
"asynckit": {
@ -757,7 +757,7 @@
"big.js": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
"integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
"integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
"dev": true
},
"binary-extensions": {
@ -815,12 +815,12 @@
"bluebird": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
"integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA=="
"integrity": "sha1-2VUfnemPH82h5oPRfukaBgLuLrk="
},
"bluebird-lst": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/bluebird-lst/-/bluebird-lst-1.0.5.tgz",
"integrity": "sha512-Ey0bDNys5qpYPhZ/oQ9vOEvD0TYQDTILMXWP2iGfvMg7rSDde+oV4aQQgqRH+CvBFNz2BSDQnPGMUl6LKBUUQA==",
"integrity": "sha1-vryDAmt+kqcocaPcWZ4hnL+wAqk=",
"requires": {
"bluebird": "3.5.1"
}
@ -828,7 +828,7 @@
"bn.js": {
"version": "4.11.8",
"resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.8.tgz",
"integrity": "sha512-ItfYfPLkWHUjckQCk8xC+LwxgK8NYcXywGigJgSwOP8Y2iyWT4f2vsZnoOXTTbo+o5yXmIUJ4gn5538SO5S3gA==",
"integrity": "sha1-LN4J617jQfSEdGuwMJsyU7GxRC8=",
"dev": true
},
"body": {
@ -986,7 +986,7 @@
"browserify-zlib": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
"integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
"integrity": "sha1-KGlFnZqjviRf6P4sofRuLn9U1z8=",
"dev": true,
"requires": {
"pako": "1.0.6"
@ -1027,7 +1027,7 @@
"builder-util": {
"version": "4.2.5",
"resolved": "https://registry.npmjs.org/builder-util/-/builder-util-4.2.5.tgz",
"integrity": "sha512-zc3mm9ThI0WP3ghHBtrWDTiV+YiuePCFey1ncbZT0HTB6kckrUG6I6dj2tuE+hzQQAuUZh53CTMmo3V+XMxPoA==",
"integrity": "sha1-urwZDi8sNoFJdjK1zCdPFUOqkmQ=",
"requires": {
"7zip-bin": "3.0.0",
"bluebird-lst": "1.0.5",
@ -1049,7 +1049,7 @@
"7zip-bin": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-3.0.0.tgz",
"integrity": "sha512-CYsciSeLZvl+hlJiDBBEh987fyqvFFFJG3nZi8QbNYgmgxNOzf+kyYuAYIR48CTc/X6SX5d5KtTgvkUlj9jLQA=="
"integrity": "sha1-F0FtxUL0FRGyapZnuShH117xUP4="
},
"debug": {
"version": "3.1.0",
@ -1193,7 +1193,7 @@
"cipher-base": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
"integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
"integrity": "sha1-h2Dk7MJy9MNjUy+SbYdKriwTl94=",
"dev": true,
"requires": {
"inherits": "2.0.3",
@ -1247,7 +1247,7 @@
"color-convert": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.1.tgz",
"integrity": "sha512-mjGanIiwQJskCC18rPR6OmrZ6fm2Lc7PeGFYwCmy5J34wC6F1PzdGL6xeMfmgicfYcNLGuVFA3WzXtIDCQSZxQ==",
"integrity": "sha1-wSYRB66y8pTr/+ye2eytUppgl+0=",
"requires": {
"color-name": "1.1.3"
}
@ -1318,7 +1318,7 @@
"content-type": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
"integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
"integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=",
"dev": true
},
"continuable-cache": {
@ -1422,7 +1422,7 @@
"crypto-browserify": {
"version": "3.12.0",
"resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
"integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
"integrity": "sha1-OWz58xN/A+S45TLFj2mCVOAPgOw=",
"dev": true,
"requires": {
"browserify-cipher": "1.0.0",
@ -1661,7 +1661,7 @@
"electron-builder-squirrel-windows": {
"version": "19.56.0",
"resolved": "https://registry.npmjs.org/electron-builder-squirrel-windows/-/electron-builder-squirrel-windows-19.56.0.tgz",
"integrity": "sha512-AU8o4c5kiqwZ+E9i0ZVCjKSE2HDrtCS7BVtAvVL7j7SwRYGq9jXmZSb/Axauhand/vXMWQLEZfnszA/cn+xXOw==",
"integrity": "sha1-E5AVvk0CZ5WIJEbVxSbWv1JDkco=",
"requires": {
"7zip-bin": "2.2.7",
"archiver": "2.1.1",
@ -1680,7 +1680,7 @@
"electron-windows-notifications": {
"version": "1.1.16",
"resolved": "https://registry.npmjs.org/electron-windows-notifications/-/electron-windows-notifications-1.1.16.tgz",
"integrity": "sha512-KdgFOA2sjIml52b4aClyd6rAN0Fd3jovddNoxVJ2kAj3ggjIJ2DMQsUXAguXp4C4yGZmvD8esi3T8Ti84FMDsA==",
"integrity": "sha1-zB8DnT2lBM0rwIkrSitg6FPi51M=",
"requires": {
"@nodert-win10/windows.applicationmodel": "0.2.96",
"@nodert-win10/windows.data.xml.dom": "0.2.96",
@ -1772,7 +1772,7 @@
"es-abstract": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.10.0.tgz",
"integrity": "sha512-/uh/DhdqIOSkAWifU+8nG78vlQxdLckUdI/sPgy0VhuXi2qJ7T8czBmqIYtLQVpCIFYafChnsRsB5pyb1JdmCQ==",
"integrity": "sha1-Hss2wZeEKgDY7kwt/YZGu5fWCGQ=",
"requires": {
"es-to-primitive": "1.1.1",
"function-bind": "1.1.1",
@ -1913,7 +1913,7 @@
"estree-walker": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.1.tgz",
"integrity": "sha512-7HgCgz1axW7w5aOvgOQkoR1RMBkllygJrssU3BvymKQ95lxXYv6Pon17fBRDm9qhkvXZGijOULoSF9ShOk/ZLg==",
"integrity": "sha1-ZPw3UFOrxvV9c+m9LwBGRK08WFQ=",
"dev": true
},
"esutils": {
@ -1947,7 +1947,7 @@
"evp_bytestokey": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
"integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
"integrity": "sha1-f8vbGY3HGVlDLv4ThCaE4FJaywI=",
"dev": true,
"requires": {
"md5.js": "1.3.4",
@ -3187,7 +3187,7 @@
"function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
"integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
"integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0="
},
"gauge": {
"version": "2.7.4",
@ -3267,7 +3267,7 @@
"glob": {
"version": "7.1.2",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz",
"integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==",
"integrity": "sha1-wZyd+aAocC1nhhI4SmVSQExjbRU=",
"requires": {
"fs.realpath": "1.0.0",
"inflight": "1.0.6",
@ -3774,7 +3774,7 @@
"hash.js": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.3.tgz",
"integrity": "sha512-/UETyP0W22QILqS+6HowevwhEFJ3MBJnwTf75Qob9Wz9t0DPuisL8kW8YZMK62dHAKE1c1p+gY1TtOLY+USEHA==",
"integrity": "sha1-NA3tvmKQGHFRweodd3o0SJNd+EY=",
"dev": true,
"requires": {
"inherits": "2.0.3",
@ -3863,7 +3863,7 @@
"iconv-lite": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.19.tgz",
"integrity": "sha512-oTZqweIP51xaGPI4uPa56/Pri/480R+mo7SeU+YETByQNhDG55ycFyNLIgta9vXhILrxXDmF7ZGhqZIcuN0gJQ==",
"integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=",
"dev": true
},
"ieee754": {
@ -3915,7 +3915,7 @@
"ini": {
"version": "1.3.5",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
"integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
"integrity": "sha1-7uJfVtscnsYIXgwid4CD9Zar+Sc="
},
"interpret": {
"version": "1.1.0",
@ -3932,7 +3932,7 @@
"ionic-angular": {
"version": "3.9.2",
"resolved": "https://registry.npmjs.org/ionic-angular/-/ionic-angular-3.9.2.tgz",
"integrity": "sha512-BEZ6magY1i5GwM9ki/MOpszUz62+g518HsGICtw9TE1D4v9Eb6n/o7e+X0vtvpK4TdouFjQ8r5XA9VPAKW9/+Q=="
"integrity": "sha1-dQU+SkIqqufXzWaMySz9XLKdOMw="
},
"ionicons": {
"version": "3.0.0",
@ -3972,7 +3972,7 @@
"is-buffer": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
"integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w=="
"integrity": "sha1-76ouqdqg16suoTqXsritUf776L4="
},
"is-builtin-module": {
"version": "1.0.0",
@ -4091,7 +4091,7 @@
"is-plain-object": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
"integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
"integrity": "sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=",
"dev": true,
"requires": {
"isobject": "3.0.1"
@ -4232,7 +4232,7 @@
"json-loader": {
"version": "0.5.7",
"resolved": "https://registry.npmjs.org/json-loader/-/json-loader-0.5.7.tgz",
"integrity": "sha512-QLPs8Dj7lnf3e3QYS1zkCo+4ZwqOiF9d/nZnYozTISxXWCfNs9yuky5rJw4/W34s7POaNlbZmQGaB5NiXCbP4w==",
"integrity": "sha1-3KFKcCNf+C8KyaOr62DTN6NlGF0=",
"dev": true
},
"json-schema": {
@ -4296,7 +4296,7 @@
"jszip": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/jszip/-/jszip-3.1.5.tgz",
"integrity": "sha512-5W8NUaFRFRqTOL7ZDDrx5qWHJyBXy6velVudIzQUSoqAAYqzSh2Z7/m0Rf1QbmQJccegD0r+YZxBjzqoBiEeJQ==",
"integrity": "sha1-48KmxtcGrG5gMxQDbUPNQL7v3zc=",
"requires": {
"core-js": "2.3.0",
"es6-promise": "3.0.2",
@ -4629,7 +4629,7 @@
"macos-release": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/macos-release/-/macos-release-1.1.0.tgz",
"integrity": "sha512-mmLbumEYMi5nXReB9js3WGsB8UE6cDBWyIO62Z4DNx6GbRhDxHNjA1MlzSpJ2S2KM1wyiPRA0d19uHWYYvMHjA==",
"integrity": "sha1-gxlF4pNltHCqhySwqzbI+JWdEPs=",
"dev": true
},
"magic-string": {
@ -4753,7 +4753,7 @@
"miller-rabin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
"integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
"integrity": "sha1-8IA1HIZbDcViqEYpZtqlNUPHik0=",
"dev": true,
"requires": {
"bn.js": "4.11.8",
@ -4763,7 +4763,7 @@
"mime": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz",
"integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==",
"integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=",
"dev": true
},
"mime-db": {
@ -4802,7 +4802,7 @@
"minimatch": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
"requires": {
"brace-expansion": "1.1.8"
}
@ -4907,7 +4907,7 @@
"node-libs-browser": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.1.0.tgz",
"integrity": "sha512-5AzFzdoIMb89hBGMZglEegffzgRg+ZFoUmisQ8HI4j1KDdpx13J0taNp2y9xPbur6W61gepGDDotGBVQ7mfUCg==",
"integrity": "sha1-X5QmPUBPbkR2fXJpAf/wVHjWAN8=",
"dev": true,
"requires": {
"assert": "1.4.1",
@ -5022,7 +5022,7 @@
"normalize-package-data": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
"dev": true,
"requires": {
"hosted-git-info": "2.6.0",
@ -5057,7 +5057,7 @@
"npmlog": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
"integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
"integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
"dev": true,
"requires": {
"are-we-there-yet": "1.1.4",
@ -5284,7 +5284,7 @@
"pako": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/pako/-/pako-1.0.6.tgz",
"integrity": "sha512-lQe48YPsMJAig+yngZ87Lus+NF+3mtu7DVOBu6b/gHO1YpKwIj5AWjZ/TOS7i46HD/UixzWb1zeWDZfGZ3iYcg=="
"integrity": "sha1-AQEhG6pwxLykoPY/Igbpe3368lg="
},
"parse-asn1": {
"version": "5.1.0",
@ -5418,7 +5418,7 @@
"pbkdf2": {
"version": "3.0.14",
"resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.0.14.tgz",
"integrity": "sha512-gjsZW9O34fm0R7PaLHRJmLLVfSoesxztjPjE9o6R+qtVJij90ltg1joIovN9GKrRW3t1PzhDDG3UMEMFfZ+1wA==",
"integrity": "sha1-o14TxkeZsGzhUyD0WcIw5o5zut4=",
"dev": true,
"requires": {
"create-hash": "1.1.3",
@ -5491,7 +5491,7 @@
"promise.prototype.finally": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/promise.prototype.finally/-/promise.prototype.finally-3.1.0.tgz",
"integrity": "sha512-7p/K2f6dI+dM8yjRQEGrTQs5hTQixUAdOGpMEA3+pVxpX5oHKRSKAXyLw9Q9HUWDTdwtoo39dSHGQtN90HcEwQ==",
"integrity": "sha1-ZvFhsWQ2NuUOfPIB3BuEqFfzhk4=",
"requires": {
"define-properties": "1.1.2",
"es-abstract": "1.10.0",
@ -5548,7 +5548,7 @@
"qs": {
"version": "6.5.1",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.5.1.tgz",
"integrity": "sha512-eRzhrN1WSINYCDCbrz796z37LOe3m5tmW7RQf6oBntukAG1nmovJvhnwHHRMAfeoItc1m2Hk02WER2aQ/iqs+A==",
"integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=",
"dev": true
},
"querystring": {
@ -5566,7 +5566,7 @@
"randomatic": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/randomatic/-/randomatic-1.1.7.tgz",
"integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
"integrity": "sha1-x6vpzIuHwLqodrGf3oP9RkeX44w=",
"requires": {
"is-number": "3.0.0",
"kind-of": "4.0.0"
@ -5746,7 +5746,7 @@
"regex-cache": {
"version": "0.4.4",
"resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz",
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
"integrity": "sha1-db3FiioUls7EihKDW8VMjVYjNt0=",
"requires": {
"is-equal-shallow": "0.1.3"
}
@ -5832,7 +5832,7 @@
"resolve": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/resolve/-/resolve-1.5.0.tgz",
"integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
"integrity": "sha1-HwmsznlsmnYlefMbLBzEw83fnzY=",
"dev": true,
"requires": {
"path-parse": "1.0.5"
@ -5860,7 +5860,7 @@
"rimraf": {
"version": "2.6.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.2.tgz",
"integrity": "sha512-lreewLK/BlghmxtfH36YYVg1i8IAce4TI7oao75I1g245+6BctqTVQiBP3YUJ9C6DQOXJmkYR9X9fCLtCOJc5w==",
"integrity": "sha1-LtgVDSShbqhlHm1u8PR8QVjOejY=",
"dev": true,
"requires": {
"glob": "7.1.2"
@ -5879,13 +5879,13 @@
"rollup": {
"version": "0.50.0",
"resolved": "https://registry.npmjs.org/rollup/-/rollup-0.50.0.tgz",
"integrity": "sha512-7RqCBQ9iwsOBPkjYgoIaeUij606mSkDMExP0NT7QDI3bqkHYQHrQ83uoNIXwPcQm/vP2VbsUz3kiyZZ1qPlLTQ==",
"integrity": "sha1-TBWPTngObLM/8Nv8GEpSzFjNXzs=",
"dev": true
},
"rollup-plugin-commonjs": {
"version": "8.2.6",
"resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.2.6.tgz",
"integrity": "sha512-qK0+uhktmnAgZkHkqFuajNmPw93fjrO7+CysDaxWE5jrUR9XSlSvuao5ZJP+XizxA8weakhgYYBtbVz9SGBpjA==",
"integrity": "sha1-J+W5Bp/5QAW7AeAbtGoeSHN4Rnc=",
"dev": true,
"requires": {
"acorn": "5.5.3",
@ -5928,7 +5928,7 @@
"rxjs": {
"version": "5.5.2",
"resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.2.tgz",
"integrity": "sha512-oRYoIKWBU3Ic37fLA5VJu31VqQO4bWubRntcHSJ+cwaDQBwdnZ9x4zmhJfm/nFQ2E82/I4loSioHnACamrKGgA==",
"integrity": "sha1-KNQD8AcRIZZ/GK1mVWMlXVQjasM=",
"requires": {
"symbol-observable": "1.1.0"
}
@ -5936,7 +5936,7 @@
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
"integrity": "sha512-kKvNJn6Mm93gAczWVJg7wH+wGYWNrDHdWvpUmHyEsgCtIwwo3bqPtV4tR5tuPaUhTOo/kvhVwd8XwwOllGYkbg=="
"integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM="
},
"safe-json-parse": {
"version": "1.0.1",
@ -5955,7 +5955,7 @@
"sanitize-xml-string": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/sanitize-xml-string/-/sanitize-xml-string-1.1.0.tgz",
"integrity": "sha512-RzX25K64YtZm9FvdZr/Ac7Eeq0va1YX0xmpOkjWoREhgKXXldrJRVJhBel83nS8omIcaKcNTdLY8XzOIK920HA=="
"integrity": "sha1-3YZoYGnOECtJVJEtnHmCA3uSh2g="
},
"sass-graph": {
"version": "2.2.4",
@ -5972,7 +5972,7 @@
"sax": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
"integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
"integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
},
"scss-tokenizer": {
"version": "0.2.3",
@ -6053,7 +6053,7 @@
"setprototypeof": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
"integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
"integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
"dev": true
},
"sha.js": {
@ -6111,7 +6111,7 @@
"source-list-map": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.0.tgz",
"integrity": "sha512-I2UmuJSRr/T8jisiROLU3A3ltr+swpniSmNPI4Ml3ZCX6tVnDsuZzK7F2hl5jTqbZBWCEKlj5HRQiPExXLgE8A==",
"integrity": "sha1-qqR0A/eyRakvvJfqCPJQ1gh+0IU=",
"dev": true
},
"source-map": {
@ -6122,7 +6122,7 @@
"source-map-support": {
"version": "0.4.18",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz",
"integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==",
"integrity": "sha1-Aoam3ovkJkEzhZTpfM6nXwosWF8=",
"requires": {
"source-map": "0.5.7"
}
@ -6325,7 +6325,7 @@
"symbol-observable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.1.0.tgz",
"integrity": "sha512-dQoid9tqQ+uotGhuTKEY11X4xhyYePVnqGSoSm3OGKh2E8LZ6RPULp1uXTctk33IeERlrRJYoVSBglsL05F5Uw=="
"integrity": "sha1-XGj9jVQRXZ37cqhHIFSSIujbmzI="
},
"tapable": {
"version": "0.2.8",
@ -6347,7 +6347,7 @@
"tar-stream": {
"version": "1.5.5",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.5.5.tgz",
"integrity": "sha512-mQdgLPc/Vjfr3VWqWbfxW8yQNiJCbAZ+Gf6GDu1Cy0bdb33ofyiNGBtAY96jHFhDuivCwgW1H9DgTON+INiXgg==",
"integrity": "sha1-XK2Ed59FyDsfJQjZawnYjHIYr1U=",
"requires": {
"bl": "1.2.2",
"end-of-stream": "1.4.1",
@ -6423,7 +6423,7 @@
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"integrity": "sha1-W7WgZyYotkFJVmuhaBnmFRjGcmE=",
"dev": true,
"requires": {
"ms": "2.0.0"
@ -6492,7 +6492,7 @@
"tsickle": {
"version": "0.24.1",
"resolved": "https://registry.npmjs.org/tsickle/-/tsickle-0.24.1.tgz",
"integrity": "sha512-XloFQZhVhgjpQsi3u2ORNRJvuID5sflOg6HfP093IqAbhE1+fIUXznULpdDwHgG4p+v8w78KdHruQtkWUKx5AQ==",
"integrity": "sha1-A5NDsgW/UXozOwcDl4iS+Ap9hI4=",
"requires": {
"minimist": "1.2.0",
"mkdirp": "0.5.1",
@ -6591,7 +6591,7 @@
"uglify-es": {
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.2.2.tgz",
"integrity": "sha512-l+s5VLzFwGJfS+fbqaGf/Dfwo1MF13jLOF2ekL0PytzqEqQ6cVppvHf4jquqFok+35USMpKjqkYxy6pQyUcuug==",
"integrity": "sha1-FcYrd3UALIG3mHocSezT8SbKznM=",
"dev": true,
"requires": {
"commander": "2.12.2",
@ -6669,7 +6669,7 @@
"ultron": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ultron/-/ultron-1.1.1.tgz",
"integrity": "sha512-UIEXBNeYmKptWH6z8ZnqTeS8fV74zG0/eRU9VGkpzz+LIJNs8W/zM/L+7ctCkRrgbNnnR0xxw4bKOr0cW0N0Og==",
"integrity": "sha1-n+FTahCmZKZSZqHjzPhf02MCvJw=",
"dev": true
},
"unc-path-regex": {
@ -6894,7 +6894,7 @@
"vlq": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz",
"integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==",
"integrity": "sha1-jz5DKM9jsVQMDWfhsneDhviXWyY=",
"dev": true
},
"vm-browserify": {
@ -7093,7 +7093,7 @@
"webpack-merge": {
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.1.2.tgz",
"integrity": "sha512-/0QYwW/H1N/CdXYA2PNPVbsxO3u2Fpz34vs72xm03SRfg6bMNGfMJIQEpQjKRvkG2JvT6oRJFpDtSrwbX8Jzvw==",
"integrity": "sha1-XTct3dPh5fiHT1v1qOkp2wn+shY=",
"dev": true,
"requires": {
"lodash": "4.17.5"
@ -7102,7 +7102,7 @@
"webpack-sources": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.1.0.tgz",
"integrity": "sha512-aqYp18kPphgoO5c/+NaUvEeACtZjMESmDChuD3NBciVpah3XpMEU9VAAtIaB1BsfJWWTSdv8Vv1m3T0aRk2dUw==",
"integrity": "sha1-oQHrrlnWUHNU1x2AE5UKOot6WlQ=",
"dev": true,
"requires": {
"source-list-map": "2.0.0",
@ -7122,13 +7122,13 @@
"websocket-extensions": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.3.tgz",
"integrity": "sha512-nqHUnMXmBzT0w570r2JpJxfiSD1IzoI+HGVdd3aZ0yNi3ngvQ4jv1dtHt5VGxfI2yj5yqImPhOK4vmIh2xMbGg==",
"integrity": "sha1-XS/yKXcAPsaHpLhwc9+7rBRszyk=",
"dev": true
},
"which": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz",
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"integrity": "sha1-/wS9/AEO5UfXgL7DjhrBwnd9JTo=",
"dev": true,
"requires": {
"isexe": "2.0.0"
@ -7143,7 +7143,7 @@
"wide-align": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.2.tgz",
"integrity": "sha512-ijDLlyQ7s6x1JgCLur53osjm/UXUYD9+0PbYKrBsYisYXzCxN+HC3mYDNy/dWdmf3AwqwU3CXwDCvsNgGK1S0w==",
"integrity": "sha1-Vx4PGwYEY268DfwhsDObvjE0FxA=",
"dev": true,
"requires": {
"string-width": "1.0.2"
@ -7188,7 +7188,7 @@
"ws": {
"version": "3.3.2",
"resolved": "https://registry.npmjs.org/ws/-/ws-3.3.2.tgz",
"integrity": "sha512-t+WGpsNxhMR4v6EClXS8r8km5ZljKJzyGhJf7goJz9k5Ye3+b5Bvno5rjqPuIBn5mnn5GBb7o8IrIWHxX1qOLQ==",
"integrity": "sha1-lsHQiz/v2h1cHjNwDTv6qb4tVgg=",
"dev": true,
"requires": {
"async-limiter": "1.0.0",
@ -7204,7 +7204,7 @@
"xml2js": {
"version": "0.4.19",
"resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz",
"integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==",
"integrity": "sha1-aGwg8hMgnpSr8NG88e+qKRx4J6c=",
"dev": true,
"requires": {
"sax": "1.2.4",
@ -7294,7 +7294,7 @@
"zone.js": {
"version": "0.8.18",
"resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.8.18.tgz",
"integrity": "sha512-knKOBQM0oea3/x9pdyDuDi7RhxDlJhOIkeixXSiTKWLgs4LpK37iBc+1HaHwzlciHUKT172CymJFKo8Xgh+44Q=="
"integrity": "sha1-jOyzl3/NGzCQVi/0Vw4oR+dStI0="
}
}
}

View File

@ -39,16 +39,17 @@
</ion-card-header>
<ion-list>
<!-- "Header" of the table -->
<ion-item text-wrap class="addon-mod_quiz-table-header" detail-push>
<ion-item text-wrap class="addon-mod_quiz-table-header">
<ion-row align-items-center>
<ion-col text-center *ngIf="quiz.showAttemptColumn"><b>{{ 'addon.mod_quiz.attemptnumber' | translate }}</b></ion-col>
<ion-col text-center class="hidden-phone" *ngIf="quiz.showAttemptColumn"><b>{{ 'addon.mod_quiz.attemptnumber' | translate }}</b></ion-col>
<ion-col text-center class="hidden-tablet" *ngIf="quiz.showAttemptColumn"><b>#</b></ion-col>
<ion-col col-7><b>{{ 'addon.mod_quiz.attemptstate' | translate }}</b></ion-col>
<ion-col text-center class="hidden-phone" *ngIf="quiz.showMarkColumn"><b>{{ 'addon.mod_quiz.marks' | translate }} / {{ quiz.sumGradesFormatted }}</b></ion-col>
<ion-col text-center *ngIf="quiz.showGradeColumn"><b>{{ 'addon.mod_quiz.grade' | translate }} / {{ quiz.gradeFormatted }}</b></ion-col>
</ion-row>
</ion-item>
<!-- List of attempts. -->
<a ion-item text-wrap *ngFor="let attempt of attempts" [ngClass]='{"addon-mod_quiz-highlighted": attempt.highlightGrade}' [navPush]="'AddonModQuizAttemptPage'" [navParams]="{courseId: courseId, quizId: quiz.id, attemptId: attempt.id}" [attr.aria-label]="'core.seemoredetail' | translate" detail-push>
<a ion-item text-wrap *ngFor="let attempt of attempts" [ngClass]='{"addon-mod_quiz-highlighted core-white-push-arrow": attempt.highlightGrade}' [navPush]="'AddonModQuizAttemptPage'" [navParams]="{courseId: courseId, quizId: quiz.id, attemptId: attempt.id}" [attr.aria-label]="'core.seemoredetail' | translate">
<ion-row align-items-center>
<ion-col text-center *ngIf="quiz.showAttemptColumn && attempt.preview">{{ 'addon.mod_quiz.preview' | translate }}</ion-col>
<ion-col text-center *ngIf="quiz.showAttemptColumn && !attempt.preview">{{ attempt.attempt }}</ion-col>
@ -82,21 +83,21 @@
<ion-card *ngIf="quiz">
<ion-list>
<!-- Error messages. -->
<ion-item text-wrap class="core-error-item" *ngFor="let message of preventMessages">
<ion-item text-wrap class="core-danger-item" *ngFor="let message of preventMessages">
<p>{{ message }}</p>
</ion-item>
<ion-item text-wrap class="core-error-item" *ngIf="quiz.hasquestions === 0">
<ion-item text-wrap class="core-danger-item" *ngIf="quiz.hasquestions === 0">
<p>{{ 'addon.mod_quiz.noquestions' | translate }}</p>
</ion-item>
<ion-item text-wrap class="core-error-item" *ngIf="unsupportedQuestions && unsupportedQuestions.length">
<ion-item text-wrap class="core-danger-item" *ngIf="unsupportedQuestions && unsupportedQuestions.length">
<p>{{ 'addon.mod_quiz.errorquestionsnotsupported' | translate }}</p>
<p *ngFor="let type of unsupportedQuestions">{{ type }}</p>
</ion-item>
<ion-item text-wrap class="core-error-item" *ngIf="unsupportedRules && unsupportedRules.length">
<ion-item text-wrap class="core-danger-item" *ngIf="unsupportedRules && unsupportedRules.length">
<p>{{ 'addon.mod_quiz.errorrulesnotsupported' | translate }}</p>
<p *ngFor="let name of unsupportedRules">{{ name }}</p>
</ion-item>
<ion-item text-wrap class="core-error-item" *ngIf="behaviourSupported === false">
<ion-item text-wrap class="core-danger-item" *ngIf="behaviourSupported === false">
<p>{{ 'addon.mod_quiz.errorbehaviournotsupported' | translate }}</p>
<p>{{ quiz.preferredbehaviour }}</p>
</ion-item>

View File

@ -2,7 +2,12 @@ addon-mod-quiz-index {
.addon-mod_quiz-table {
.addon-mod_quiz-table-header .item-inner {
background-image: none;
font-size: 0.9em;
padding-right: 0;
ion-label {
margin-right: 0;
}
}
.item {

View File

@ -36,7 +36,7 @@
{{ 'addon.mod_quiz.review' | translate }}
</button>
</ion-item>
<ion-item text-wrap class="core-error-item" *ngIf="!quiz.showReviewColumn">
<ion-item text-wrap class="core-danger-item" *ngIf="!quiz.showReviewColumn">
<p>{{ 'addon.mod_quiz.noreviewattempt' | translate }}</p>
</ion-item>
</ion-list>

View File

@ -13,26 +13,32 @@
</ion-navbar>
</ion-header>
<ion-content>
<core-loading [hideUntil]="loaded">
<!-- Navigation arrows and time left. -->
<ion-toolbar *ngIf="loaded && endTime && questions && questions.length && !quizAborted && !showSummary" color="light" ion-fixed>
<ion-title>
<core-timer [endTime]="endTime" (finished)="timeUp()" [timerText]="'addon.mod_quiz.timeleft' | translate" align="center"></core-timer>
</ion-title>
<ion-buttons end>
<a ion-button icon-only *ngIf="previousPage >= 0" (click)="changePage(previousPage)" [title]="'core.previous' | translate">
<ion-icon name="arrow-back" md="ios-arrow-back"></ion-icon>
</a>
<a ion-button icon-only *ngIf="nextPage >= -1" (click)="changePage(nextPage)" [title]="'core.next' | translate">
<ion-icon name="arrow-forward" md="ios-arrow-forward"></ion-icon>
</a>
</ion-buttons>
</ion-toolbar>
<core-loading [hideUntil]="loaded" [class.core-has-fixed-timer]="endTime">
<!-- Navigation arrows and time left. -->
<div *ngIf="questions && questions.length && !quizAborted && !showSummary">
<ion-row align-items-center>
<ion-col col-2>
<a ion-button icon-only color="light" *ngIf="previousPage >= 0" (click)="changePage(previousPage)" [title]="'core.previous' | translate">
<ion-icon name="arrow-back" md="ios-arrow-back"></ion-icon>
</a>
</ion-col>
<ion-col col-8 text-center>
<core-timer *ngIf="endTime" [endTime]="endTime" (finished)="timeUp()" [timerText]="'addon.mod_quiz.timeleft' | translate" align="center"></core-timer>
</ion-col>
<ion-col col-2 text-right>
<a ion-button icon-only color="light" *ngIf="nextPage >= -1" (click)="changePage(nextPage)" [title]="'core.next' | translate">
<ion-icon name="arrow-forward" md="ios-arrow-forward"></ion-icon>
</a>
</ion-col>
</ion-row>
</div>
<ion-toolbar *ngIf="!endTime && questions && questions.length && !quizAborted && !showSummary" color="light">
<ion-buttons end>
<a ion-button icon-only *ngIf="previousPage >= 0" (click)="changePage(previousPage)" [title]="'core.previous' | translate">
<ion-icon name="arrow-back" md="ios-arrow-back"></ion-icon>
</a>
<a ion-button icon-only *ngIf="nextPage >= -1" (click)="changePage(nextPage)" [title]="'core.next' | translate">
<ion-icon name="arrow-forward" md="ios-arrow-forward"></ion-icon>
</a>
</ion-buttons>
</ion-toolbar>
<!-- Button to start attempting. -->
<div padding *ngIf="!attempt">
<button ion-button block (click)="start()">{{ 'addon.mod_quiz.startattempt' | translate }}</button>

View File

@ -0,0 +1,10 @@
page-addon-mod-quiz-player {
.toolbar {
padding-top: 0;
padding-bottom: 0;
}
.core-has-fixed-timer form {
padding-top: 56px;
}
}

View File

@ -20,6 +20,8 @@ import { AddonModResourceIndexComponent } from '../components/index/index';
import { CoreCourseModuleHandler, CoreCourseModuleHandlerData } from '@core/course/providers/module-delegate';
import { CoreCourseProvider } from '@core/course/providers/course';
import { CoreMimetypeUtilsProvider } from '@providers/utils/mimetype';
import { CoreCourseModulePrefetchDelegate } from '@core/course/providers/module-prefetch-delegate';
import { CoreConstants } from '@core/constants';
/**
* Handler to support resource modules.
@ -29,8 +31,12 @@ export class AddonModResourceModuleHandler implements CoreCourseModuleHandler {
name = 'AddonModResource';
modName = 'resource';
protected statusObserver;
constructor(protected resourceProvider: AddonModResourceProvider, private courseProvider: CoreCourseProvider,
protected mimetypeUtils: CoreMimetypeUtilsProvider, private resourceHelper: AddonModResourceHelperProvider) { }
protected mimetypeUtils: CoreMimetypeUtilsProvider, private resourceHelper: AddonModResourceHelperProvider,
protected prefetchDelegate: CoreCourseModulePrefetchDelegate) {
}
/**
* Check if the handler is enabled on a site level.
@ -50,6 +56,11 @@ export class AddonModResourceModuleHandler implements CoreCourseModuleHandler {
* @return {CoreCourseModuleHandlerData} Data to render the module.
*/
getData(module: any, courseId: number, sectionId: number): CoreCourseModuleHandlerData {
const updateStatus = (status: string): void => {
handlerData.buttons[0].hidden = status !== CoreConstants.DOWNLOADED ||
this.resourceHelper.isDisplayedInIframe(module);
};
const handlerData = {
icon: this.courseProvider.getModuleIconSrc('resource'),
title: module.name,
@ -58,8 +69,9 @@ export class AddonModResourceModuleHandler implements CoreCourseModuleHandler {
action(event: Event, navCtrl: NavController, module: any, courseId: number, options: NavOptions): void {
navCtrl.push('AddonModResourceIndexPage', {module: module, courseId: courseId}, options);
},
updateStatus: updateStatus.bind(this),
buttons: [ {
hidden: !this.resourceHelper.isDisplayedInIframe(module),
hidden: true,
icon: 'document',
label: 'addon.mod_resource.openthefile',
action: (event: Event, navCtrl: NavController, module: any, courseId: number): void => {
@ -92,7 +104,9 @@ export class AddonModResourceModuleHandler implements CoreCourseModuleHandler {
*/
protected hideOpenButton(module: any, courseId: number): Promise<boolean> {
return this.courseProvider.loadModuleContents(module, courseId).then(() => {
return this.resourceHelper.isDisplayedInIframe(module);
return this.prefetchDelegate.getModuleStatus(module, courseId).then((status) => {
return status !== CoreConstants.DOWNLOADED || this.resourceHelper.isDisplayedInIframe(module);
});
});
}

View File

@ -13,15 +13,6 @@ addon-mod-survey-index {
background-color: $white;
}
ion-select {
float: right;
max-width: none;
.select-text {
white-space: normal;
text-align: right;
}
}
.even {
background-color: $gray-light;
}

View File

@ -18,7 +18,7 @@
<!-- Input to enter the answer. -->
<ion-col>
<ion-input type="text" placeholder="{{ 'core.question.answer' | translate }}" [attr.name]="question.input.name" [value]="question.input.value" [disabled]="question.input.readOnly" [ngClass]='{"core-question-answer-correct": question.input.isCorrect === 1, "core-question-answer-incorrect": question.input.isCorrect === 0}' autocorrect="off">
<ion-input padding-left type="text" placeholder="{{ 'core.question.answer' | translate }}" [attr.name]="question.input.name" [value]="question.input.value" [disabled]="question.input.readOnly" [ngClass]='{"core-question-answer-correct": question.input.isCorrect === 1, "core-question-answer-incorrect": question.input.isCorrect === 0}' autocorrect="off">
</ion-input>
</ion-col>

View File

@ -18,7 +18,7 @@
<!-- Draft files not supported. -->
<ng-container *ngIf="question.textarea && question.hasDraftFiles">
<ion-item text-wrap class="core-error-item">
<ion-item text-wrap class="core-danger-item">
<p class="core-question-warning">{{ 'core.question.errorinlinefilesnotsupported' | translate }}</p>
</ion-item>
<ion-item text-wrap>
@ -27,7 +27,7 @@
</ng-container>
<!-- Attachments not supported in the app yet. -->
<ion-item text-wrap *ngIf="question.allowsAttachments" class="core-error-item">
<ion-item text-wrap *ngIf="question.allowsAttachments" class="core-danger-item">
<p class="core-question-warning">{{ 'core.question.errorattachmentsnotsupported' | translate }}</p>
</ion-item>

View File

@ -2,6 +2,6 @@
<ion-item text-wrap>
<p><core-format-text [component]="component" [componentId]="componentId" [text]="question.text"></core-format-text></p>
</ion-item>
<ion-input type="text" placeholder="{{ 'core.question.answer' | translate }}" [attr.name]="question.input.name" [value]="question.input.value" autocorrect="off" [disabled]="question.input.readOnly" [ngClass]='{"core-question-answer-correct": question.input.isCorrect === 1, "core-question-answer-incorrect": question.input.isCorrect === 0}'>
<ion-input padding-left type="text" placeholder="{{ 'core.question.answer' | translate }}" [attr.name]="question.input.name" [value]="question.input.value" autocorrect="off" [disabled]="question.input.readOnly" [ngClass]='{"core-question-answer-correct": question.input.isCorrect === 1, "core-question-answer-incorrect": question.input.isCorrect === 0}'>
</ion-input>
</section>

View File

@ -32,7 +32,7 @@
.img-responsive {
display: block;
max-width: 100%;
height: auto;
/* height: auto; */
}
.opacity-hide { opacity: 0; }
@ -77,6 +77,10 @@
opacity: 0.6;
}
.item-radio-checked {
background-color: $gray-lighter;
}
.core-oauth-icon, .item.core-oauth-icon, .list .item.core-oauth-icon {
min-height: 32px;
img, .label {
@ -337,6 +341,16 @@ ion-select {
position: relative
}
ion-col ion-select {
float: right;
max-width: none;
width: 100%;
.select-text {
white-space: normal;
text-align: right;
}
}
// File uploader.
// -------------------------
@ -430,7 +444,8 @@ ion-select {
color: $core-question-warning-color;
}
.questioncorrectnessicon {
.questioncorrectnessicon,
.fa.icon.questioncorrectnessicon {
font-size: 20px;
}
@ -588,14 +603,27 @@ textarea {
@extend .core-circle:before;
color: $color-base;
}
.text-#{$color-name} {
color: $color-base;
}
}
.accesshide {
position: absolute;
left: -10000px;
font-weight: normal;
font-size: 1em; }
font-size: 1em;
}
.core-monospaced {
font-family: Andale Mono,Monaco,Courier New,DejaVu Sans Mono,monospace;
}
.core-white-push-arrow .item-inner{
background-image: url("data:image/svg+xml;charset=utf-8,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2012%2020'><path%20d='M2,20l-2-2l8-8L0,2l2-2l10,10L2,20z'%20fill='%23FFFFFF'/></svg>") !important;
}
[ion-fixed] {
width: 100%;
}

46
src/app/fontawesome.scss vendored 100644
View File

@ -0,0 +1,46 @@
/** This file is intended to translate fontawesome to ionicons while the font is not supported */
.fa.icon {
@extend ion-icon;
}
/*.fa {
font-size: $button-icon-size;
width: $button-icon-size;
height: $button-icon-size;
}*/
/** Fixed width */
.fa-fw {
width: (18em / 14);
text-align: center;
}
/** Uncomment for dev purposes, it will show an asterisk in red where a missing icon is */
/*.fa:before {
color: red !important;
content: $ionicon-var-asterisk;
}*/
/** Icons translation */
.md {
.fa-search-plus:before { content: "\f375"; } // search
.fa-cog:before { content: "\f2cf"; } // cog
.fa-trash:before { content: "\f398"; } // trash
.fa-thumbs-up:before { content: "\f392"; } // thumbs-up
.fa-thumbs-down:before { content: "\f391"; } // thumbs-down
.fa-ban:before { content: "\f367"; } // remove-circle
.fa-remove:before { content: "\f2c0"; } // close
.fa-check:before { content: "\f2bc"; } // checkmark
}
.ios, .wp {
.fa-search-plus:before { content: "\f4a5"; } // search
.fa-cog:before { content: "\f412"; } // cog
.fa-trash:before { content: "\f4c5"; } // trash
.fa-thumbs-up:before { content: "\f256"; } // thumbs-up
.fa-thumbs-down:before { content: "\f254"; } // thumbs-down
.fa-ban:before { content: "\f1fb"; } // remove-circle
.fa-remove:before { content: "\f406"; } // close
.fa-check:before { content: "\f3ff"; } // checkmark
}

View File

@ -2,6 +2,7 @@ core-rich-text-editor {
height: 40vh;
overflow: hidden;
min-height: 30vh;
width: 100%;
> div {
height: 100%;

View File

@ -179,16 +179,12 @@ export class CoreTabsComponent implements OnInit, AfterViewInit, OnChanges {
* @param {any} e Scroll event.
*/
showHideTabs(e: any): void {
if (e.target.scrollTop < this.tabBarHeight) {
if (!this.tabsShown) {
this.tabBarElement.classList.remove('tabs-hidden');
this.tabsShown = true;
}
} else {
if (this.tabsShown) {
this.tabBarElement.classList.add('tabs-hidden');
this.tabsShown = false;
}
if (this.tabsShown && e.target.scrollTop - this.tabBarHeight > this.tabBarHeight) {
this.tabBarElement.classList.add('tabs-hidden');
this.tabsShown = false;
} else if (!this.tabsShown && e.target.scrollTop < this.tabBarHeight) {
this.tabBarElement.classList.remove('tabs-hidden');
this.tabsShown = true;
}
}

View File

@ -1,15 +1,20 @@
core-timer {
.item.item-block .item-inner {
border: 0;
}
.core-timer {
background-color: $core-timer-color;
background-color: transparent;
span {
font-weight: bold;
}
// Create the timer warning colors. Go from $core-timer-color to $core-timer-warn-color.
// Create the timer warning colors. Go to $core-timer-warn-color.
@for $i from 0 through $core-timer-iterations {
&.core-timer-timeleft-#{$i} {
background-color: mix($core-timer-color, $core-timer-warn-color, ($i / $core-timer-iterations) * 100);
background-color: rgba($core-timer-warn-color, 1 - ($i / $core-timer-iterations));
@if $i <= $core-timer-iterations / 2 {
label, span, ion-icon {
color: $white;

View File

@ -3,5 +3,6 @@ core-course-module-completion a {
padding: 5px;
width: 30px;
vertical-align: middle;
max-width: none;
}
}

View File

@ -150,6 +150,10 @@ export class CoreCourseModuleComponent implements OnInit, OnDestroy {
this.showDownload = status === CoreConstants.NOT_DOWNLOADED;
this.showRefresh = status === CoreConstants.OUTDATED ||
(!this.prefetchDelegate.canCheckUpdates() && status === CoreConstants.DOWNLOADED);
if (this.module.handlerData.updateStatus) {
this.module.handlerData.updateStatus(status);
}
}
}

View File

@ -107,6 +107,13 @@ export interface CoreCourseModuleHandlerData {
* @param {NavOptions} [options] Options for the navigation.
*/
action?(event: Event, navCtrl: NavController, module: any, courseId: number, options?: NavOptions): void;
/**
* Updates the status of the module.
*
* @param {string} status Module status.
*/
updateStatus?(status: string): void;
}
/**

View File

@ -12,7 +12,7 @@
<core-dynamic-component *ngFor="let componentClass of behaviourComponents" [component]="componentClass" [data]="data"></core-dynamic-component>
<!-- Question validation error. -->
<ion-item text-wrap class="core-error-item" *ngIf="question.validationError">
<ion-item text-wrap class="core-danger-item" *ngIf="question.validationError">
<p>{{ question.validationError }}</p>
</ion-item>

View File

@ -652,6 +652,8 @@ export class CoreQuestionHelperProvider {
icon.classList.add('questioncorrectnessicon');
if (span.innerHTML) {
icon.setAttribute('tappable', '');
// @TODO: addEventListener not working.
// There's a hidden feedback, show it when the icon is clicked.
icon.addEventListener('click', (event) => {
const title = this.translate.instant('core.question.feedback');

View File

@ -0,0 +1,5 @@
page-core-sitehome-index {
ion-header {
position: relative;
}
}

View File

@ -210,7 +210,6 @@ $core-toolbar-button-image-width: 32px;
// Timer variables.
$core-timer-warn-color: $red !default;
$core-timer-color: $white !default;
$core-timer-iterations: 15 !default;
// Question variables.