Merge
@ -30,7 +30,11 @@
|
|||||||
"styles": [
|
"styles": [
|
||||||
"src/styles.scss"
|
"src/styles.scss"
|
||||||
],
|
],
|
||||||
"scripts": []
|
"scripts": [
|
||||||
|
"node_modules/marked/lib/marked.js",
|
||||||
|
"node_modules/prismjs/prism.js",
|
||||||
|
"node_modules/prismjs/components/prism-css.min.js"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"configurations": {
|
"configurations": {
|
||||||
"production": {
|
"production": {
|
||||||
|
127
package-lock.json
generated
@ -126,9 +126,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/animations": {
|
"@angular/animations": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/animations/-/animations-8.2.13.tgz",
|
||||||
"integrity": "sha512-+E2KWj798sgby1hnC2LmK380jCZ7JLcxs5X4pM+kwJzS4T8spPTBecHRqz19C2Ea4AOSou4S1Oxs/4CCmVnj2w==",
|
"integrity": "sha512-ZE4UZsQ6HDW1ZIj9tL45PVosCcG4Ke7ihV7eWCE1VgLZKDDxTOPbLf1UeEiszUYptMLGH3eGMNBKo85mOlkH8w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
@ -183,17 +183,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/common": {
|
"@angular/common": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/common/-/common-8.2.13.tgz",
|
||||||
"integrity": "sha512-CVewkkFswELDQ1qx2G7m2pj0IqDbSIY6O6wZtNvYCDrLXRVDwSXcQsjNP1pSWuD37dHT/nifimchfLiVuisPyg==",
|
"integrity": "sha512-I9cTcjUi88L+Mb/a/ZzUrdDcn3YgFFK9LubxaPjAfr6+G7IZ//MY5HuvG8Y41yKprXVVvQCbQ1yQD+GGRSCkaA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/compiler": {
|
"@angular/compiler": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-8.2.13.tgz",
|
||||||
"integrity": "sha512-kOGNh0K4k7vEIMLlEyG1A+UxPOIMp2b3IT0vBq5isRjXxGzEnahyBYtXwGI7G6ox+OoNKy1OZOPaK473fcO8zg==",
|
"integrity": "sha512-u2NWCvEn4SjbMvn2PG6sYcf+rR5u3aYMv3/mNQ9k+2UmCIu3yJrcuCzebjo5SdlDVqKD2vzbyMZnr8VB9OcceQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
@ -974,17 +974,17 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/core": {
|
"@angular/core": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/core/-/core-8.2.13.tgz",
|
||||||
"integrity": "sha512-BMyLo/iOZ/eRR25CggWT3cexzfOnoey13NPeqYRtsO5dQUeVQPT1RH/bIWZ6yIPFSlBm6zUi/QqE1rjDautK5A==",
|
"integrity": "sha512-W8HN0lUQV4Sq85l17nhRIXeIfcw1ZdpgGm6to98pl0y9l/1srfzWfTnofuwCJC7gedt5AMrYJGUaNiDbByosFw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/forms": {
|
"@angular/forms": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/forms/-/forms-8.2.13.tgz",
|
||||||
"integrity": "sha512-KcB652QBup+VWKDZICtpznr0a+v82oG0BowWetfkMgZAQj655uEMkkEtCTnfWnft4MLYlRr9ZoxQXc575TcZmA==",
|
"integrity": "sha512-l7lHD4kbWK70KY0Xp4IpSa106ZzSgPMwRYMFKd9qhYaJ7v0Y7Shh7Z/ZDCOP730maj9WULnpy5X4eeozWXgvgg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
@ -996,25 +996,25 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"@angular/platform-browser": {
|
"@angular/platform-browser": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-8.2.13.tgz",
|
||||||
"integrity": "sha512-mzaXsHNTN3lBu3+H02GrRRu8Zo5R4GQiAb+MKdqiQMJ8hjnAmKJTYIVEbEnk/dJYbMZWvhxRGLmRIcntpYF38g==",
|
"integrity": "sha512-1lPbeLQIbbafjq9ul3IA8s2fMJ/EXeMJ74ouTolVXoPPur9ZPRLX9FqBAO1K4QzkAWhRlyf6qIC+mDZfJILwZw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/platform-browser-dynamic": {
|
"@angular/platform-browser-dynamic": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-8.2.13.tgz",
|
||||||
"integrity": "sha512-9tdpvEXFCgbMUeyVvIklyDPyg39cRN6MOrQihObAoBKOkcko9MKJIxDPCv8o/5FBrlBcu0VhREPK56aVD0g6UQ==",
|
"integrity": "sha512-KP5psUKujAO8jZKHi6LRC+N7hE/epiGOhYZxdher1sCi81sYoZmqrEWkVZ4VKhov/4aC409CocDXcF7nmHV8tg==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@angular/router": {
|
"@angular/router": {
|
||||||
"version": "8.2.1",
|
"version": "8.2.13",
|
||||||
"resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/@angular/router/-/router-8.2.13.tgz",
|
||||||
"integrity": "sha512-CIhwBmRoVaZmfvGjuUomiyWn7OdHqzKbHq0poI3jlNJZCmzuBicYFctjCeqG6L2BIN0eVuJUJNeQ0OrcicP52w==",
|
"integrity": "sha512-9CqnachtdASnEmRMtrG/R3c5nDCjjlCU4n0W/xt5+LlveyuUVvAT/CFUC38km4Df3lIvqap8mSpxzGaEzCL+wQ==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tslib": "^1.9.0"
|
"tslib": "^1.9.0"
|
||||||
}
|
}
|
||||||
@ -1266,6 +1266,11 @@
|
|||||||
"@types/jasmine": "*"
|
"@types/jasmine": "*"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"@types/marked": {
|
||||||
|
"version": "0.6.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/marked/-/marked-0.6.5.tgz",
|
||||||
|
"integrity": "sha512-6kBKf64aVfx93UJrcyEZ+OBM5nGv4RLsI6sR1Ar34bpgvGVRoyTgpxn4ZmtxOM5aDTAaaznYuYUH8bUX3Nk3YA=="
|
||||||
|
},
|
||||||
"@types/minimatch": {
|
"@types/minimatch": {
|
||||||
"version": "3.0.3",
|
"version": "3.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
"resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz",
|
||||||
@ -2620,6 +2625,17 @@
|
|||||||
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
|
"integrity": "sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"clipboard": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==",
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"good-listener": "^1.2.2",
|
||||||
|
"select": "^1.1.2",
|
||||||
|
"tiny-emitter": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"cliui": {
|
"cliui": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz",
|
||||||
@ -2752,8 +2768,7 @@
|
|||||||
"commander": {
|
"commander": {
|
||||||
"version": "2.20.0",
|
"version": "2.20.0",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
|
||||||
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
|
"integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ=="
|
||||||
"dev": true
|
|
||||||
},
|
},
|
||||||
"commondir": {
|
"commondir": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
@ -3254,6 +3269,12 @@
|
|||||||
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
"integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"delegate": {
|
||||||
|
"version": "3.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
|
||||||
|
"integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"depd": {
|
"depd": {
|
||||||
"version": "1.1.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
"resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz",
|
||||||
@ -4313,6 +4334,15 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"good-listener": {
|
||||||
|
"version": "1.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
|
||||||
|
"integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
|
||||||
|
"optional": true,
|
||||||
|
"requires": {
|
||||||
|
"delegate": "^3.1.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
"graceful-fs": {
|
"graceful-fs": {
|
||||||
"version": "4.2.1",
|
"version": "4.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.1.tgz",
|
||||||
@ -6263,6 +6293,14 @@
|
|||||||
"source-map-support": "^0.5.5"
|
"source-map-support": "^0.5.5"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"katex": {
|
||||||
|
"version": "0.11.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/katex/-/katex-0.11.1.tgz",
|
||||||
|
"integrity": "sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==",
|
||||||
|
"requires": {
|
||||||
|
"commander": "^2.19.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"killable": {
|
"killable": {
|
||||||
"version": "1.0.1",
|
"version": "1.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
|
||||||
@ -6546,6 +6584,11 @@
|
|||||||
"object-visit": "^1.0.0"
|
"object-visit": "^1.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"marked": {
|
||||||
|
"version": "0.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/marked/-/marked-0.7.0.tgz",
|
||||||
|
"integrity": "sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg=="
|
||||||
|
},
|
||||||
"md5.js": {
|
"md5.js": {
|
||||||
"version": "1.3.5",
|
"version": "1.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
|
||||||
@ -6950,6 +6993,18 @@
|
|||||||
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
|
"integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"ngx-markdown": {
|
||||||
|
"version": "8.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/ngx-markdown/-/ngx-markdown-8.2.1.tgz",
|
||||||
|
"integrity": "sha512-59LG8rEoOwDsZyyJckp+QDnW/c5wMaRpNkb6TWktlBVTfQKyAYHr6BuSskVbZ4y8nsj54UQg0CDFLBOfUiqOwA==",
|
||||||
|
"requires": {
|
||||||
|
"@types/marked": "^0.6.5",
|
||||||
|
"katex": "^0.11.1",
|
||||||
|
"marked": "^0.7.0",
|
||||||
|
"prismjs": "^1.16.0",
|
||||||
|
"tslib": "^1.9.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"nice-try": {
|
"nice-try": {
|
||||||
"version": "1.0.5",
|
"version": "1.0.5",
|
||||||
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
"resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
|
||||||
@ -7810,6 +7865,14 @@
|
|||||||
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
|
"integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"prismjs": {
|
||||||
|
"version": "1.17.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.17.1.tgz",
|
||||||
|
"integrity": "sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==",
|
||||||
|
"requires": {
|
||||||
|
"clipboard": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"process": {
|
"process": {
|
||||||
"version": "0.11.10",
|
"version": "0.11.10",
|
||||||
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
"resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
|
||||||
@ -8595,6 +8658,12 @@
|
|||||||
"ajv-keywords": "^3.1.0"
|
"ajv-keywords": "^3.1.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"select": {
|
||||||
|
"version": "1.1.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
|
||||||
|
"integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"select-hose": {
|
"select-hose": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz",
|
||||||
@ -9727,6 +9796,12 @@
|
|||||||
"setimmediate": "^1.0.4"
|
"setimmediate": "^1.0.4"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"tiny-emitter": {
|
||||||
|
"version": "2.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
|
||||||
|
"integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==",
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
"tmp": {
|
"tmp": {
|
||||||
"version": "0.0.33",
|
"version": "0.0.33",
|
||||||
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz",
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
"@ngx-translate/core": "^11.0.1",
|
"@ngx-translate/core": "^11.0.1",
|
||||||
"@ngx-translate/http-loader": "^4.0.0",
|
"@ngx-translate/http-loader": "^4.0.0",
|
||||||
"chart.js": "^2.8.0",
|
"chart.js": "^2.8.0",
|
||||||
|
"ngx-markdown": "^8.2.1",
|
||||||
"rxjs": "~6.4.0",
|
"rxjs": "~6.4.0",
|
||||||
"tslib": "^1.10.0",
|
"tslib": "^1.10.0",
|
||||||
"zone.js": "~0.9.1"
|
"zone.js": "~0.9.1"
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
import {BrowserModule} from '@angular/platform-browser';
|
import {BrowserModule} from '@angular/platform-browser';
|
||||||
import {NgModule} from '@angular/core';
|
import {LOCALE_ID, NgModule} from '@angular/core';
|
||||||
|
|
||||||
import {AppRoutingModule} from './app-routing.module';
|
import {AppRoutingModule} from './app-routing.module';
|
||||||
import {AppComponent} from './app.component';
|
import {AppComponent} from './app.component';
|
||||||
@ -27,7 +27,9 @@ import {VotingGraphComponent} from './pages/voting-graph/voting-graph.component'
|
|||||||
import {VotingChoiceComponent} from './pages/voting-choice/voting-choice.component';
|
import {VotingChoiceComponent} from './pages/voting-choice/voting-choice.component';
|
||||||
import {PasswordComponent} from './pages/password/password.component';
|
import {PasswordComponent} from './pages/password/password.component';
|
||||||
import {HomeComponent} from './pages/home/home.component';
|
import {HomeComponent} from './pages/home/home.component';
|
||||||
|
import {VoteChoiceComponent} from './vote-choice/vote-choice.component';
|
||||||
import {HttpClient, HttpClientModule} from '@angular/common/http';
|
import {HttpClient, HttpClientModule} from '@angular/common/http';
|
||||||
|
import { MarkdownModule } from 'ngx-markdown';
|
||||||
import {
|
import {
|
||||||
MissingTranslationHandler,
|
MissingTranslationHandler,
|
||||||
MissingTranslationHandlerParams,
|
MissingTranslationHandlerParams,
|
||||||
@ -73,12 +75,14 @@ export function HttpLoaderFactory(http: HttpClient) {
|
|||||||
PasswordComponent,
|
PasswordComponent,
|
||||||
HomeComponent,
|
HomeComponent,
|
||||||
PollGraphicComponent,
|
PollGraphicComponent,
|
||||||
|
VoteChoiceComponent,
|
||||||
|
|
||||||
],
|
],
|
||||||
imports: [
|
imports: [
|
||||||
CommonModule,
|
CommonModule,
|
||||||
BrowserModule,
|
BrowserModule,
|
||||||
AppRoutingModule,
|
AppRoutingModule,
|
||||||
|
MarkdownModule.forRoot(),
|
||||||
TranslateModule.forRoot({
|
TranslateModule.forRoot({
|
||||||
missingTranslationHandler: {
|
missingTranslationHandler: {
|
||||||
provide: MissingTranslationHandler,
|
provide: MissingTranslationHandler,
|
||||||
|
@ -5,6 +5,25 @@ export interface DateOption {
|
|||||||
literal: string;
|
literal: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export const timeOfDay = [{literal: 'matin'},
|
||||||
|
{literal: 'midi'},
|
||||||
|
{literal: 'après-midi'},
|
||||||
|
{literal: 'soirée'}];
|
||||||
|
export const defaultDates = [
|
||||||
|
{
|
||||||
|
literal: `${new Date().getDate()}-${new Date().getMonth()}-${new Date().getFullYear()}`,
|
||||||
|
timeList: [{literal: 'matin'}, {literal: 'midi'}, {literal: 'soir'}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
literal: `${new Date().getDate() + 1}-${new Date().getMonth()}-${new Date().getFullYear()}`,
|
||||||
|
timeList: [{literal: 'matin'}, {literal: 'midi'}, {literal: 'soir'}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
literal: `${new Date().getDate() + 2}-${new Date().getMonth()}-${new Date().getFullYear()}`,
|
||||||
|
timeList: [{literal: 'matin'}, {literal: 'midi'}, {literal: 'soir'}]
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* configuration of the poll, add new fields at will
|
* configuration of the poll, add new fields at will
|
||||||
*/
|
*/
|
||||||
@ -17,8 +36,9 @@ export class PollConfig {
|
|||||||
myName = '';
|
myName = '';
|
||||||
visibility = 'link_only';
|
visibility = 'link_only';
|
||||||
// date specific poll
|
// date specific poll
|
||||||
allowSeveralHours = false;
|
allowSeveralHours = 'true';
|
||||||
dateList: DateOption[] = [];
|
dateList: DateOption[] = defaultDates; // sets of days as strings
|
||||||
|
timeList: DateOption[] = timeOfDay; // ranges of time expressed as strings
|
||||||
answers: any = [{
|
answers: any = [{
|
||||||
id: 0,
|
id: 0,
|
||||||
text: 'réponse de démo 1'
|
text: 'réponse de démo 1'
|
||||||
|
@ -9,6 +9,7 @@ import { CreateOrRetrieveComponent } from "../pages/create-or-retrieve/create-or
|
|||||||
import { BaseComponent } from "../pages/base-page/base.component";
|
import { BaseComponent } from "../pages/base-page/base.component";
|
||||||
import { HomeComponent } from "../pages/home/home.component";
|
import { HomeComponent } from "../pages/home/home.component";
|
||||||
import { PollGraphicComponent } from '../poll-graphic/poll-graphic.component';
|
import { PollGraphicComponent } from '../poll-graphic/poll-graphic.component';
|
||||||
|
import {VoteChoiceComponent} from "../vote-choice/vote-choice.component";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* each step in the form is a component
|
* each step in the form is a component
|
||||||
@ -26,4 +27,5 @@ export const Routes = [
|
|||||||
{ path: "step/resume", component: ResumeComponent },
|
{ path: "step/resume", component: ResumeComponent },
|
||||||
{ path: "step/end", component: EndConfirmationComponent },
|
{ path: "step/end", component: EndConfirmationComponent },
|
||||||
{ path: "graphic/:poll", component: PollGraphicComponent },
|
{ path: "graphic/:poll", component: PollGraphicComponent },
|
||||||
|
{ path: 'votechoice', component: VoteChoiceComponent}
|
||||||
];
|
];
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
<div class="well debug">
|
<div class="well debug">
|
||||||
|
|
||||||
<strong>
|
<strong>
|
||||||
<h2 i18n>
|
<h2 i18n>
|
||||||
infos de debug
|
infos de debug
|
||||||
@ -27,8 +26,41 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<span i18n>
|
||||||
|
Choix cornélien syncronisé:
|
||||||
|
</span>
|
||||||
|
<!-- todo: factoriser les boutons-->
|
||||||
<button
|
<button
|
||||||
class="btn"
|
(click)="config.set('pollType' , 'classic')"
|
||||||
|
[class.active]="config.pollType == 'classic'"
|
||||||
|
[disabled]="!formIsValid"
|
||||||
|
class="btn btn--primary next"
|
||||||
|
>
|
||||||
|
<span i18n>
|
||||||
|
sondage classique
|
||||||
|
</span>
|
||||||
|
<span *ngIf="config.pollType == 'classic'">
|
||||||
|
[x]
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
(click)="selectOption('pollType' ,'dates')"
|
||||||
|
[class.active]="config.pollType == 'dates'"
|
||||||
|
[disabled]="!formIsValid"
|
||||||
|
class="btn btn--primary next"
|
||||||
|
>
|
||||||
|
<span i18n>
|
||||||
|
sondage spécial date
|
||||||
|
</span>
|
||||||
|
<span *ngIf="config.pollType == 'dates'">
|
||||||
|
[x]
|
||||||
|
</span>
|
||||||
|
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="btn btn--primary"
|
||||||
i18n
|
i18n
|
||||||
(click)="config.sendForm()"
|
(click)="config.sendForm()"
|
||||||
>
|
>
|
||||||
|
@ -4,28 +4,38 @@
|
|||||||
</h1>
|
</h1>
|
||||||
|
|
||||||
<p class="subtitle" i18n>
|
<p class="subtitle" i18n>
|
||||||
vous pouvez utiliser la syntaxe markdown
|
Vous pouvez utiliser la syntaxe markdown
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ol>
|
<ol>
|
||||||
<li #answers *ngFor="let answer of config.answers; index as i;trackBy trackFunction"
|
<li #answers *ngFor="let answer of config.answers; index as i;trackBy trackFunction"
|
||||||
class="answer-item">
|
class="answer-item">
|
||||||
<input
|
<input
|
||||||
[(ngModel)]="answer.text"
|
|
||||||
class="answer"
|
|
||||||
placeholder="réponse"
|
|
||||||
type="text"
|
type="text"
|
||||||
|
class="answer"
|
||||||
|
[(ngModel)]="answer.text"
|
||||||
|
placeholder="réponse"
|
||||||
>
|
>
|
||||||
<button (click)="config.answers.splice(i,1)">X</button>
|
<button (click)="config.answers.splice(i,1)">X</button>
|
||||||
</li>
|
</li>
|
||||||
</ol>
|
</ol>
|
||||||
|
|
||||||
<button
|
<button
|
||||||
|
class="btn btn--primary btn--outline"
|
||||||
(click)="addAnswer()"
|
(click)="addAnswer()"
|
||||||
class="btn-outline btn-block"
|
i18n
|
||||||
i18n>
|
>
|
||||||
Ajouter
|
Ajouter une proposition
|
||||||
</button>
|
</button>
|
||||||
|
<br>
|
||||||
<a [routerLink]="'/step/resume'" class="btn btn-block" i18n>Voyons ce que ça donne</a>
|
<button
|
||||||
|
[routerLink]="'/step/resume'"
|
||||||
|
class="btn btn--primary"
|
||||||
|
i18n
|
||||||
|
>
|
||||||
|
Voyons ce que ça donne
|
||||||
|
</button>
|
||||||
|
<a class="prev" i18n>
|
||||||
|
Retour
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<section class="recuperation">
|
<section class="recuperation">
|
||||||
<h1>
|
<h1>
|
||||||
{{"config.find_my_polls"|translate}}
|
{{"config.find_my_polls"|translate}}
|
||||||
|
@ -24,27 +24,88 @@
|
|||||||
<button
|
<button
|
||||||
class="btn btn-primary"
|
class="btn btn-primary"
|
||||||
(click)="addDate()"
|
(click)="addDate()"
|
||||||
i18n
|
id="add_date_button"
|
||||||
>
|
>
|
||||||
{{"dates.add"|translate}}
|
{{"dates.add"|translate}}
|
||||||
</button>
|
</button>
|
||||||
|
<button
|
||||||
|
class="btn btn-primary"
|
||||||
|
(click)="addtime()"
|
||||||
|
id="add_time_button"
|
||||||
|
>
|
||||||
|
{{"dates.addTime"|translate}}
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button
|
||||||
|
class="btn btn-warning"
|
||||||
|
(click)="emptyAll()"
|
||||||
|
id="empty_button"
|
||||||
|
>{{"dates.empty"|translate}}
|
||||||
|
</button>
|
||||||
<div class="dates-list">
|
<div class="dates-list">
|
||||||
{{config.dateList.length}}
|
{{config.dateList.length}}
|
||||||
<span i18n>
|
<span>
|
||||||
|
{{"dates.count_dates"|translate}}
|
||||||
|
</span>
|
||||||
|
<div
|
||||||
|
class="identical-dates"
|
||||||
|
*ngIf="'false'==config.allowSeveralHours"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="time-choice"
|
||||||
|
*ngFor="let choice of config.timeList; index as id"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="timeChoices_{{id}}"
|
||||||
|
[(ngModel)]="choice.literal"
|
||||||
|
>
|
||||||
|
<button (click)="config.timeList.splice(id, 1)">X</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<hr>
|
||||||
|
<span>
|
||||||
{{"dates.count_dates"|translate}}
|
{{"dates.count_dates"|translate}}
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div
|
<div
|
||||||
*ngFor="let choice of config.dateList; index as id"
|
*ngFor="let choice of config.dateList; index as id"
|
||||||
class="date-choice"
|
class="date-choice"
|
||||||
>
|
>
|
||||||
<input
|
<input
|
||||||
type="text"
|
type="text"
|
||||||
name="dateChoices[]"
|
name="dateChoices_{{id}}"
|
||||||
[(ngModel)]="choice.literal"
|
[(ngModel)]="choice.literal"
|
||||||
>
|
>
|
||||||
|
<button
|
||||||
<button (click)="config.dateList.splice(id, 1)">X</button>
|
class="btn btn-warning"
|
||||||
|
(click)="config.dateList.splice(id, 1)"
|
||||||
|
>X
|
||||||
|
</button>
|
||||||
|
<button
|
||||||
|
class="btn btn-primary"
|
||||||
|
(click)="addTimetoDate(choice, id)"
|
||||||
|
> Ajouter un choix d'heure
|
||||||
|
</button>
|
||||||
|
<div
|
||||||
|
class="several-times"
|
||||||
|
*ngIf="'true'==config.allowSeveralHours"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="time-choice"
|
||||||
|
*ngFor="let time of choice.timeList; index as idTime"
|
||||||
|
>
|
||||||
|
<input
|
||||||
|
type="text"
|
||||||
|
name="dateTime_{{id}}_Choices_{{idTime}}"
|
||||||
|
[(ngModel)]="time.literal"
|
||||||
|
>
|
||||||
|
<button
|
||||||
|
class="btn btn-warning"
|
||||||
|
(click)="config.timeList.splice(idTime, 1)"
|
||||||
|
>X
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -0,0 +1,7 @@
|
|||||||
|
.several-times {
|
||||||
|
padding-left: 1em;
|
||||||
|
|
||||||
|
input {
|
||||||
|
margin-right: 1em;
|
||||||
|
}
|
||||||
|
}
|
@ -1,4 +1,4 @@
|
|||||||
import {Component, OnInit} from '@angular/core';
|
import {ChangeDetectorRef, Component, OnInit} from '@angular/core';
|
||||||
import {ConfigService} from '../../config.service';
|
import {ConfigService} from '../../config.service';
|
||||||
import {BaseComponent} from '../base-page/base.component';
|
import {BaseComponent} from '../base-page/base.component';
|
||||||
|
|
||||||
@ -8,7 +8,7 @@ import {BaseComponent} from '../base-page/base.component';
|
|||||||
styleUrls: ['./dates.component.scss']
|
styleUrls: ['./dates.component.scss']
|
||||||
})
|
})
|
||||||
export class DatesComponent extends BaseComponent implements OnInit {
|
export class DatesComponent extends BaseComponent implements OnInit {
|
||||||
constructor(public config: ConfigService) {
|
constructor(public config: ConfigService, private cd: ChangeDetectorRef) {
|
||||||
super(config);
|
super(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -18,4 +18,31 @@ export class DatesComponent extends BaseComponent implements OnInit {
|
|||||||
addDate() {
|
addDate() {
|
||||||
this.config.dateList.push({literal: ''});
|
this.config.dateList.push({literal: ''});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addtime() {
|
||||||
|
this.config.timeList.push({literal: ''});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* add a time period to a specific date choice,
|
||||||
|
* focus on the new input
|
||||||
|
* @param config
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
addTimetoDate(config: any, id: number) {
|
||||||
|
config.timeList.push({literal: ''});
|
||||||
|
let selector = '[ng-reflect-name="dateTime_' + id + '_Choices_' + (config.timeList.length - 1) + '"]';
|
||||||
|
console.log('selector', selector);
|
||||||
|
this.cd.detectChanges();
|
||||||
|
const elem = document.querySelector(selector);
|
||||||
|
if (elem) {
|
||||||
|
//this.elem.focus();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
emptyAll() {
|
||||||
|
this.config.dateList.forEach(element => {
|
||||||
|
element.literal = '';
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,4 +3,4 @@
|
|||||||
</h1>
|
</h1>
|
||||||
<h2 i18n>{{"resume.admins"|translate}}</h2>
|
<h2 i18n>{{"resume.admins"|translate}}</h2>
|
||||||
<h2 i18n>{{"resume.users"|translate}}</h2>
|
<h2 i18n>{{"resume.users"|translate}}</h2>
|
||||||
<h2 i18n>{{"resume.link_mail"|translate}}</h2>
|
<h2 i18n>{{"resume.links_mail"|translate}}</h2>
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
<div class="description">
|
<div class="description">
|
||||||
|
|
||||||
<router-outlet></router-outlet>
|
<router-outlet></router-outlet>
|
||||||
<h1 i18n>
|
<h1 i18n>
|
||||||
{{"creation.title"|translate}}
|
{{"creation.title"|translate}}
|
||||||
@ -23,8 +22,10 @@
|
|||||||
{{"creation.kind.classic"|translate}}
|
{{"creation.kind.classic"|translate}}
|
||||||
</option>
|
</option>
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<span class="post-selector">
|
<span class="post-selector">
|
||||||
</span>
|
</span>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
|
||||||
<label
|
<label
|
||||||
@ -38,11 +39,11 @@
|
|||||||
type="text"
|
type="text"
|
||||||
id="poll_title"
|
id="poll_title"
|
||||||
name="poll_title"
|
name="poll_title"
|
||||||
placeholder="titre"
|
placeholder="{{'creation.choose_title_placeholder'|translate}}"
|
||||||
[(ngModel)]="config.title"
|
[(ngModel)]="config.title"
|
||||||
>
|
>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<label for="my_name">
|
<label for="my_name">
|
||||||
{{"creation.name"|translate}} :
|
{{"creation.name"|translate}} :
|
||||||
@ -51,12 +52,12 @@
|
|||||||
type="text"
|
type="text"
|
||||||
name="my_name"
|
name="my_name"
|
||||||
id="my_name"
|
id="my_name"
|
||||||
placeholder="mon nom"
|
placeholder="{{'creation.name_placeholder'|translate}}"
|
||||||
[(ngModel)]="config.myName"
|
[(ngModel)]="config.myName"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
|
|
||||||
|
<div>
|
||||||
<label
|
<label
|
||||||
for="poll_description"
|
for="poll_description"
|
||||||
class="title-label"
|
class="title-label"
|
||||||
@ -72,15 +73,21 @@
|
|||||||
cols="50"
|
cols="50"
|
||||||
lines="5"
|
lines="5"
|
||||||
></textarea>
|
></textarea>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<a
|
<button
|
||||||
[routerLink]="'/step/answers'"
|
[routerLink]="'/step/answers'"
|
||||||
class="btn btn-block"
|
class="btn btn-block"
|
||||||
i18n
|
i18n
|
||||||
>
|
>
|
||||||
Continuer
|
Continuer
|
||||||
|
</button>
|
||||||
|
<a
|
||||||
|
[routerLink]="'/step/answers'"
|
||||||
|
class="prev"
|
||||||
|
i18n
|
||||||
|
>
|
||||||
|
Retour
|
||||||
</a>
|
</a>
|
||||||
<hr>
|
<hr>
|
||||||
</div>
|
</div>
|
||||||
|
@ -1,4 +1,262 @@
|
|||||||
<h1>page de démo</h1>
|
<h1>page de démo</h1>
|
||||||
<p>cette étape est en cours de développement. <br> S'inspirer de la page de Home pour réaliser d'autres pages
|
<p>cette étape est en cours de développement. <br> S'inspirer de la page de Home pour réaliser d'autres pages
|
||||||
</p>
|
</p>
|
||||||
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">C'est parfait!</a>
|
<a [routerLink]="'/step/end'" class="btn btn--primary" i18n="@@confirm">C'est parfait!</a>
|
||||||
|
<h1>Atoms</h1>
|
||||||
|
<section>
|
||||||
|
<article>
|
||||||
|
<h2>Headings</h2>
|
||||||
|
|
||||||
|
<h1>Ceci est un h1</h1>
|
||||||
|
<h2>Ceci est un h2</h2>
|
||||||
|
<h3>Ceci est un h3</h3>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Links</h2>
|
||||||
|
<div>
|
||||||
|
<a [routerLink]="'/home'" class="next">
|
||||||
|
<span class="text" i18n>
|
||||||
|
C'est parti !
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<div>
|
||||||
|
<a [routerLink]="'/home'" class="prev">
|
||||||
|
<span class="text" i18n>
|
||||||
|
C'est parti !
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Buttons</h2>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary">
|
||||||
|
primary - default
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--small">
|
||||||
|
primary - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<a href="#" class="btn btn--primary btn--outline">
|
||||||
|
primary - outline - default
|
||||||
|
</a>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--outline btn--small">
|
||||||
|
primary - outline - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<input type="submit" class="btn btn--alert" value="alert - default">
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--small">
|
||||||
|
alert - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--outline">
|
||||||
|
alert - outline - default
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--outline btn--small">
|
||||||
|
alert - outline - small
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<br><br>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--full">
|
||||||
|
primary - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--primary btn--outline btn--full">
|
||||||
|
primary - outline - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--full">
|
||||||
|
alert - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<button type="submit" class="btn btn--alert btn--outline btn--full">
|
||||||
|
alert - outline - full
|
||||||
|
</button>
|
||||||
|
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Forms element</h2>
|
||||||
|
|
||||||
|
<h3>Labels</h3>
|
||||||
|
|
||||||
|
<label for="">Un label pour les labelliser tous</label>
|
||||||
|
|
||||||
|
<h3>Input text</h3>
|
||||||
|
<input type="text" name="" id=""><br>
|
||||||
|
<input type="text" name="" id="" value="texte">
|
||||||
|
|
||||||
|
<h3>Input email</h3>
|
||||||
|
<input type="email" name="" id=""><br>
|
||||||
|
<input type="email" name="" id="" value="adresse@email.com">
|
||||||
|
|
||||||
|
<h3>Input password</h3>
|
||||||
|
<input type="password" name="" id=""><br>
|
||||||
|
<input type="password" name="" id="" value="password">
|
||||||
|
|
||||||
|
<h3>Input date</h3>
|
||||||
|
<input type="date" name="" id=""><br>
|
||||||
|
<input type="date" name="" id="" value="1985-11-23">
|
||||||
|
|
||||||
|
<h3>Select</h3>
|
||||||
|
<select name="" id="">
|
||||||
|
<option value="">
|
||||||
|
1
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
2
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
3
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
|
||||||
|
<h3>Textarea</h3>
|
||||||
|
<textarea name="" id="" cols="30" rows="10"></textarea>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Paragraphs</h2>
|
||||||
|
|
||||||
|
<p>Lorem, ipsum dolor sit amet consectetur adipisicing elit. Magnam perspiciatis minus libero error dolores.
|
||||||
|
Corrupti repellat vero repellendus reiciendis assumenda minus. Nobis, quaerat ut nihil minima sed animi
|
||||||
|
delectus beatae!</p>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Lists</h2>
|
||||||
|
|
||||||
|
<h3>Unordered list</h3>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h3>Ordered list</h3>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
plop
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Images</h2>
|
||||||
|
<img src="http://placekitten.com/200/300" alt="">
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h1>Molecules</h1>
|
||||||
|
<framadate-vote-choice></framadate-vote-choice>
|
||||||
|
<article>
|
||||||
|
<h2>Useful classes</h2>
|
||||||
|
|
||||||
|
<h3>Align right</h3>
|
||||||
|
<div class="align-right">
|
||||||
|
<a [routerLink]="'/home'" class="next">
|
||||||
|
<span class="text" i18n>
|
||||||
|
C'est parti !
|
||||||
|
</span>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Label + input text</h2>
|
||||||
|
<label for="test-text">Ceci est un label un peu long mais pas trop</label>
|
||||||
|
<input type="text" name="test-text" id="test-text">
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Label + select</h2>
|
||||||
|
<label for="test-select">Ceci est un label un peu long mais pas trop</label>
|
||||||
|
<select name="test-select" id="test-select">
|
||||||
|
<option value="">
|
||||||
|
1
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
2
|
||||||
|
</option>
|
||||||
|
<option value="">
|
||||||
|
3
|
||||||
|
</option>
|
||||||
|
</select>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Input text with info</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/MAl5q7">like here</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Commentaries</h2>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h1>Components</h1>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Images list</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/bQA9wj">that</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Calendar</h2>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Modale</h2>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Way to vote</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/Ol0598">that</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Voted</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/OlJZo2">that</a>
|
||||||
|
</article>
|
||||||
|
|
||||||
|
<article>
|
||||||
|
<h2>Graphics</h2>
|
||||||
|
<a href="https://sketch.cloud/s/00A80/a/megprw">that</a>
|
||||||
|
</article>
|
||||||
|
</section>
|
||||||
|
@ -0,0 +1,22 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
section {
|
||||||
|
&:not(:last-of-type) {
|
||||||
|
border-bottom: 6px solid #000;
|
||||||
|
}
|
||||||
|
|
||||||
|
& + & {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
article {
|
||||||
|
padding: 2rem 0;
|
||||||
|
border-top: 3px solid #ffb92c;
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
&:not(:first-of-type) {
|
||||||
|
margin-top: 2rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -2,5 +2,5 @@
|
|||||||
<h1 i18n>
|
<h1 i18n>
|
||||||
Images
|
Images
|
||||||
</h1>
|
</h1>
|
||||||
<a [routerLink]="'/step/visibility'" class="btn btn-block">ok</a>
|
<a [routerLink]="'/step/visibility'" class="btn btn--primary">ok</a>
|
||||||
|
|
||||||
|
@ -2,9 +2,9 @@
|
|||||||
Résumé avant validation
|
Résumé avant validation
|
||||||
</h1>
|
</h1>
|
||||||
<section>
|
<section>
|
||||||
TODO
|
<div markdown *ngFor="let questions of config.answers">
|
||||||
<pre>
|
{{questions.id+1}}. {{questions.text}}
|
||||||
{{config |json}}
|
</div>
|
||||||
</pre>
|
<button [routerLink]="'/step/answers'" class="btn btn-info">Retour</button>
|
||||||
</section>
|
</section>
|
||||||
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">C'est parfait!</a>
|
<button [routerLink]="'/step/end'" class="btn btn--primary" i18n="@@confirm">C'est parfait!</button>
|
||||||
|
@ -11,4 +11,4 @@
|
|||||||
<h1 i18n>
|
<h1 i18n>
|
||||||
{{"visibility.access"|translate}}
|
{{"visibility.access"|translate}}
|
||||||
</h1>
|
</h1>
|
||||||
<a [routerLink]="'/step/end'" class="btn btn-block" i18n="@@confirm">C'est parfait!</a>
|
<a [routerLink]="'/step/end'" class="btn btn--primary" i18n="@@confirm">C'est parfait!</a>
|
||||||
|
85
src/app/vote-choice/vote-choice.component.html
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
<div class="choicebox"><!-- add .choicebox--active to most voted -->
|
||||||
|
|
||||||
|
<div class="choicebox__subject">
|
||||||
|
|
||||||
|
<!-- TEXT CASE --><!--
|
||||||
|
<p class="choicebox__txt">
|
||||||
|
Lorem ipsum dolor sit amet consectetur, adipisicing elit. Nulla nobis nam culpa !
|
||||||
|
</p>
|
||||||
|
--><!-- TEXT CASE -->
|
||||||
|
|
||||||
|
<!-- IMG CASE --><!--
|
||||||
|
<img class="choicebox__img" src="https://picsum.photos/200" alt="">
|
||||||
|
--><!-- IMG CASE -->
|
||||||
|
|
||||||
|
<!-- DATE CASE -->
|
||||||
|
<div class="choicebox__date" *ngIf="choice.date">
|
||||||
|
{{choice.date | date:'EEE'}} <span class="choicebox__day">{{choice.date | date:'dd'}}</span> {{choice.date | date:'LLL'}}
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__hour">
|
||||||
|
08:00
|
||||||
|
</div>
|
||||||
|
<!-- DATE CASE -->
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="choicebox__actions">
|
||||||
|
<!-- show only the yes check if the config is set to simpleAnswer -->
|
||||||
|
<!-- add .choicebox__btn--active to selected <button> -->
|
||||||
|
<button class="choicebox__btn choicebox__btn--yes" type="button">
|
||||||
|
<img src="../../assets/img/check.svg" (click)="setAnswserTo('yes')" alt="">
|
||||||
|
</button>
|
||||||
|
<button class="choicebox__btn choicebox__btn--maybe" type="button">
|
||||||
|
<img src="../../assets/img/check-2.svg" (click)="setAnswserTo('maybe')" alt="" *ngIf="!choice.simpleAnswer">
|
||||||
|
</button>
|
||||||
|
<button class="choicebox__btn choicebox__btn--no" type="button">
|
||||||
|
<img src="../../assets/img/croix.svg" (click)="setAnswserTo('no')" alt="" *ngIf="!choice.simpleAnswer">
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="choicebox__count">
|
||||||
|
<button type="button" aria-describedby="choicebox-tooltip" class="choicebox__votes">
|
||||||
|
<div class="choicebox__vote">
|
||||||
|
{{choice.votesCount.yes}}
|
||||||
|
<img width="20px" height="21px" src="../../assets/img/votant-sur.svg" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__vote">
|
||||||
|
{{choice.votesCount.maybe}}
|
||||||
|
<img width="22px" height="24px" src="../../assets/img/votant-pas-sur.svg" alt="">
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__tooltip" id="choicebox-tooltip">
|
||||||
|
<div class="choicebox__tooltiplist">
|
||||||
|
<div class="choicebox__tooltipttl">
|
||||||
|
<img width="20px" height="21px" src="../../assets/img/votant-sur.svg" alt="">
|
||||||
|
{{choice.votesCount.yes}} "Oui"
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li>Lorem</li>
|
||||||
|
<li>Ipsum dolor</li>
|
||||||
|
<li>Sit amet</li>
|
||||||
|
<li>Consectetur</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div class="choicebox__tooltiplist">
|
||||||
|
<div class="choicebox__tooltipttl">
|
||||||
|
<img width="22px" height="24px" src="../../assets/img/votant-pas-sur.svg" alt="">
|
||||||
|
{{choice.votesCount.maybe}} "Peut-être"
|
||||||
|
</div>
|
||||||
|
<ul>
|
||||||
|
<li>Lorem</li>
|
||||||
|
<li>Ipsum dolor</li>
|
||||||
|
<li>Sit amet</li>
|
||||||
|
<li>Consectetur</li>
|
||||||
|
<li>Lorem</li>
|
||||||
|
<li>Ipsum dolor</li>
|
||||||
|
<li>Sit amet</li>
|
||||||
|
<li>Consectetur</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</button>
|
||||||
|
<div class="choicebox__countxt">
|
||||||
|
Choix ayant reçu le plus de votes
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
288
src/app/vote-choice/vote-choice.component.scss
Normal file
@ -0,0 +1,288 @@
|
|||||||
|
// ---------------------------------------------------------
|
||||||
|
// -- VOTE CHOICE COMPONENT
|
||||||
|
// ---------------------------------------------------------
|
||||||
|
|
||||||
|
// -- IMPORTS
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
@import "../../assets/scss/variables";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- VARIABLES
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
$box-padding : 2rem;
|
||||||
|
$box-border-width : .6rem;
|
||||||
|
$btn-size : 5rem;
|
||||||
|
$btn-margin-x : 1rem;
|
||||||
|
$btn-margin-y : 1.5rem;
|
||||||
|
$btn-wrap-size : calc(2 * #{$btn-size} + 4 * #{$btn-margin-x});
|
||||||
|
$img-maxheight : 12rem;
|
||||||
|
$breakpoint-responsive : 640px; // à définir
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- GLOBAL
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox {
|
||||||
|
position: relative;
|
||||||
|
min-width: 32rem;
|
||||||
|
min-height: 16rem;
|
||||||
|
padding: $box-padding $box-padding $box-padding calc(#{$box-padding} - #{$box-border-width});
|
||||||
|
border-left: $box-border-width solid transparent;
|
||||||
|
background-color: $white;
|
||||||
|
box-shadow: 0 0 .6rem 0 rgba($black, .2);
|
||||||
|
&--active {
|
||||||
|
padding-left: $box-padding;
|
||||||
|
border-left-color: $primary_color;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: space-between;
|
||||||
|
min-height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__subject {
|
||||||
|
margin-bottom: 3rem;
|
||||||
|
padding-right: $btn-wrap-size;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- DATE
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__date {
|
||||||
|
font-size: 1.8rem;
|
||||||
|
margin-bottom: .5rem;
|
||||||
|
white-space: nowrap;
|
||||||
|
text-transform: capitalize;
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__day {
|
||||||
|
font-size: 2.4rem;
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- IMG
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__img {
|
||||||
|
max-width: 100%;
|
||||||
|
max-height: $img-maxheight;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- TXT
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__txt {
|
||||||
|
margin: 0;
|
||||||
|
font-size: 1.8rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- VOTE BTNS
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__actions {
|
||||||
|
position: absolute;
|
||||||
|
z-index: 1;
|
||||||
|
display: flex;
|
||||||
|
max-width: $btn-wrap-size;
|
||||||
|
top: 50%;
|
||||||
|
right: $box-padding;
|
||||||
|
flex-flow: row-reverse wrap;
|
||||||
|
transform: translateY(-50%);
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
position: static;
|
||||||
|
max-width: none;
|
||||||
|
flex-flow: row nowrap;
|
||||||
|
transform: none;
|
||||||
|
margin: 0 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__btn {
|
||||||
|
display: flex;
|
||||||
|
width: $btn-size;
|
||||||
|
height: $btn-size;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
margin: $btn-margin-y $btn-margin-x;
|
||||||
|
border: .1rem solid $primary_color;
|
||||||
|
background-color: transparent;
|
||||||
|
border-radius: 50%;
|
||||||
|
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-top: 0;
|
||||||
|
margin-bottom: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
&:focus,
|
||||||
|
&:hover,
|
||||||
|
&:active {
|
||||||
|
border-color: #ccc9c9;
|
||||||
|
background-color: #f7f7f7;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--maybe {
|
||||||
|
position: relative;
|
||||||
|
top: calc( (#{$btn-size} + 2 * #{$btn-margin-y}) / 2 );
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
top: auto;
|
||||||
|
left: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
&--active {
|
||||||
|
border-width: .3rem;
|
||||||
|
border-color: #bf83c2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- VOTE COUNT
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__count {
|
||||||
|
position: relative;
|
||||||
|
padding-right: $btn-wrap-size;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
flex-shrink: 0;
|
||||||
|
text-align: right;
|
||||||
|
padding-right: 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__votes {
|
||||||
|
border: 0;
|
||||||
|
padding: 0;
|
||||||
|
line-height: normal;
|
||||||
|
background-color: transparent;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
padding: 1.5rem;
|
||||||
|
&:focus,
|
||||||
|
&:hover,
|
||||||
|
&:active {
|
||||||
|
& .choicebox__tooltip {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__vote {
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
& + .choicebox__vote {
|
||||||
|
margin-left: 1.5rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__countxt {
|
||||||
|
display: none;
|
||||||
|
margin-top: .5rem;
|
||||||
|
.choicebox--active & {
|
||||||
|
display: block;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// -- TOOLTIP
|
||||||
|
// ----------------------------
|
||||||
|
|
||||||
|
.choicebox__tooltip {
|
||||||
|
display: none;
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
position: absolute;
|
||||||
|
min-width: 18rem;
|
||||||
|
font-weight: normal;
|
||||||
|
top: 5rem;
|
||||||
|
left: 50%;
|
||||||
|
z-index: 1;
|
||||||
|
padding: 2rem;
|
||||||
|
border: .1rem solid rgba($black, .1);
|
||||||
|
background-color: $white;
|
||||||
|
text-align: left;
|
||||||
|
transform: translateX(-50%);
|
||||||
|
&::after,
|
||||||
|
&::before {
|
||||||
|
position: absolute;
|
||||||
|
width: 0;
|
||||||
|
height: 0;
|
||||||
|
bottom: 100%;
|
||||||
|
left: 50%;
|
||||||
|
content: " ";
|
||||||
|
pointer-events: none;
|
||||||
|
border: solid transparent;
|
||||||
|
}
|
||||||
|
&::after {
|
||||||
|
margin-left: -1.5rem;
|
||||||
|
border-width: 1.5rem;
|
||||||
|
border-color: rgba($white, 0);
|
||||||
|
border-bottom-color: #fff;
|
||||||
|
}
|
||||||
|
&::before {
|
||||||
|
margin-left: -1.6rem;
|
||||||
|
border-width: 1.6rem;
|
||||||
|
border-color: rgba($black, 0);
|
||||||
|
border-bottom-color: rgba($black, .1);
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
list-style: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__tooltiplist {
|
||||||
|
& + .choicebox__tooltiplist {
|
||||||
|
padding-left: 3rem;
|
||||||
|
}
|
||||||
|
ul {
|
||||||
|
max-height: 11rem;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.choicebox__tooltipttl {
|
||||||
|
@media (min-width: $breakpoint-responsive) {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
font-size: 1.6rem;
|
||||||
|
font-weight: bold;
|
||||||
|
white-space: nowrap;
|
||||||
|
img {
|
||||||
|
margin-right: .5rem;
|
||||||
|
vertical-align: sub;
|
||||||
|
}
|
||||||
|
& ~ .choicebox__tooltipttl {
|
||||||
|
margin-top: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
25
src/app/vote-choice/vote-choice.component.spec.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { VoteChoiceComponent } from './vote-choice.component';
|
||||||
|
|
||||||
|
describe('VoteChoiceComponent', () => {
|
||||||
|
let component: VoteChoiceComponent;
|
||||||
|
let fixture: ComponentFixture<VoteChoiceComponent>;
|
||||||
|
|
||||||
|
beforeEach(async(() => {
|
||||||
|
TestBed.configureTestingModule({
|
||||||
|
declarations: [ VoteChoiceComponent ]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
}));
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
fixture = TestBed.createComponent(VoteChoiceComponent);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
58
src/app/vote-choice/vote-choice.component.ts
Normal file
@ -0,0 +1,58 @@
|
|||||||
|
import {Component, Input} from '@angular/core';
|
||||||
|
|
||||||
|
interface VoteChoice {
|
||||||
|
votesCount: {
|
||||||
|
yes: number
|
||||||
|
no: number
|
||||||
|
maybe: number
|
||||||
|
notAnswered: number
|
||||||
|
};
|
||||||
|
text?: string;
|
||||||
|
date?: Date;
|
||||||
|
answer: 'yes' | 'no' | 'maybe' | null;
|
||||||
|
simpleAnswer: boolean; // enable if we display only a togglable "yes"
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* each vote choice takes a configuration from the container of all choices.
|
||||||
|
* this component is used to select a date choice, or a text answer
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'framadate-vote-choice',
|
||||||
|
templateUrl: './vote-choice.component.html',
|
||||||
|
styleUrls: ['./vote-choice.component.scss']
|
||||||
|
})
|
||||||
|
export class VoteChoiceComponent {
|
||||||
|
|
||||||
|
@Input() choice: VoteChoice = {
|
||||||
|
date: new Date(),
|
||||||
|
text: 'description ',
|
||||||
|
votesCount: {
|
||||||
|
yes: 0,
|
||||||
|
no: 0,
|
||||||
|
maybe: 0,
|
||||||
|
notAnswered: 0
|
||||||
|
},
|
||||||
|
simpleAnswer: false,
|
||||||
|
answer: null
|
||||||
|
};
|
||||||
|
|
||||||
|
constructor() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
setAnswserTo(newAnswer: 'yes' | 'no' | 'maybe' | null) {
|
||||||
|
if (this.choice.simpleAnswer) {
|
||||||
|
// only toggle yes to no
|
||||||
|
if (this.choice.answer && this.choice.answer === 'yes') {
|
||||||
|
this.choice.answer = 'no';
|
||||||
|
} else {
|
||||||
|
this.choice.answer = 'yes';
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
this.choice.answer = newAnswer;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -10,7 +10,7 @@
|
|||||||
"continue": "Continuer",
|
"continue": "Continuer",
|
||||||
"perfect": "C'est parfait",
|
"perfect": "C'est parfait",
|
||||||
"title": "Créer un sondage",
|
"title": "Créer un sondage",
|
||||||
"letsgo": "C'est parti'",
|
"letsgo": "C'est parti !",
|
||||||
"description": "Planifiez des rendez-vous avec vos amis ou votre famille ou créez un sondage avec du texte, des images ou des liens… un sondage quoi !",
|
"description": "Planifiez des rendez-vous avec vos amis ou votre famille ou créez un sondage avec du texte, des images ou des liens… un sondage quoi !",
|
||||||
"find_my_polls": "Où sont mes sondages ?",
|
"find_my_polls": "Où sont mes sondages ?",
|
||||||
"find_helper": "Je cherche les sondages qui correspondent à mon mail",
|
"find_helper": "Je cherche les sondages qui correspondent à mon mail",
|
||||||
@ -38,6 +38,8 @@
|
|||||||
"different": "possiblement différentes"
|
"different": "possiblement différentes"
|
||||||
},
|
},
|
||||||
"add": "Ajouter une plage de dates",
|
"add": "Ajouter une plage de dates",
|
||||||
|
"addTime": "Ajouter une plage d'heure",
|
||||||
|
"empty": "Vider",
|
||||||
"count_dates": "choix de dates"
|
"count_dates": "choix de dates"
|
||||||
},
|
},
|
||||||
"choices": {
|
"choices": {
|
||||||
@ -51,9 +53,9 @@
|
|||||||
},
|
},
|
||||||
"resume": {
|
"resume": {
|
||||||
"title": "Et c'est tout pour nous !",
|
"title": "Et c'est tout pour nous !",
|
||||||
"admins": "Coté administrateur-ice-eux",
|
"admins": "Côté administrateur-ice-eux",
|
||||||
"users": "Coté sondés",
|
"users": "Côté sondés",
|
||||||
"links_mail": "recevoir les liens par e-mail"
|
"links_mail": "Recevoir les liens par e-mail"
|
||||||
},
|
},
|
||||||
"visibility": {
|
"visibility": {
|
||||||
"title": "Visibilité des réponses",
|
"title": "Visibilité des réponses",
|
||||||
|
0
src/assets/img/.gitkeep
Normal file
6
src/assets/img/check-2.svg
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="19" height="15" viewBox="0 0 19 15">
|
||||||
|
<g fill="#F5A623" fill-rule="evenodd">
|
||||||
|
<path d="M13.412 0C16.749 1.504 19 4.347 19 7.607c0 3.11-2.051 5.843-5.14 7.393l-.053-1.766c2.095-1.366 3.353-3.41 3.353-5.627 0-2.34-1.402-4.484-3.696-5.841L13.412 0zM5.588 0C2.251 1.504 0 4.347 0 7.607 0 10.717 2.051 13.45 5.14 15l.053-1.766C3.098 11.868 1.84 9.824 1.84 7.607c0-2.34 1.402-4.484 3.696-5.841L5.588 0z"/>
|
||||||
|
<path d="M8.326 12.692L4.648 8.588a.891.891 0 0 1 .038-1.114.681.681 0 0 1 .999-.043l2.641 2.947 4.989-5.565a.681.681 0 0 1 .999.043.891.891 0 0 1 .038 1.114l-6.026 6.722z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 656 B |
3
src/assets/img/check.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="12" viewBox="0 0 16 12">
|
||||||
|
<path fill="#429A00" fill-rule="evenodd" d="M6.133 12L.281 5.903a1.257 1.257 0 0 1 .062-1.656 1.136 1.136 0 0 1 1.589-.064l4.201 4.378L14.068.293a1.136 1.136 0 0 1 1.59.064c.432.45.458 1.172.06 1.656L6.134 12z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 308 B |
3
src/assets/img/croix.svg
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 12 12">
|
||||||
|
<path fill="#CD0000" fill-rule="evenodd" d="M7.314 6.05l4.465-4.461A.918.918 0 0 0 10.484.294L6.018 4.71 1.525.22A.92.92 0 0 0 .229 1.516l4.484 4.536-4.392 4.333a.918.918 0 1 0 1.296 1.295L6 7.299l4.355 4.353a.92.92 0 0 0 1.295-1.295L7.314 6.05z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 344 B |
BIN
src/assets/img/fleche_bas.png
Normal file
After Width: | Height: | Size: 158 B |
7
src/assets/img/fleche_bas.svg
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg" width="9px" height="8px" viewBox="0 0 90 80" preserveAspectRatio="xMidYMid meet">
|
||||||
|
<g id="layer101" fill="#000000" stroke="none">
|
||||||
|
<path d="M20 48 c-11 -18 -20 -36 -20 -40 0 -5 20 -8 45 -8 25 0 45 3 45 8 0 10 -39 72 -45 72 -3 0 -14 -15 -25 -32z"/>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
</svg>
|
After Width: | Height: | Size: 426 B |
10
src/assets/img/votant-pas-sur.svg
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" width="22" height="24" viewBox="0 0 22 24">
|
||||||
|
<g fill="none" fill-rule="evenodd">
|
||||||
|
<path fill="#4A4A4A" fill-rule="nonzero" d="M16.556 13.749a10.963 10.963 0 0 0-16.112 0 .965.965 0 0 0-.25.639v3.833a.958.958 0 0 0 .959.946h14.694c.53 0 .959-.43.959-.959v-3.833a.965.965 0 0 0-.25-.626z"/>
|
||||||
|
<circle cx="8.5" cy="4.472" r="4.472" fill="#4A4A4A" fill-rule="nonzero"/>
|
||||||
|
<path fill="#FFF" fill-rule="nonzero" stroke="#FFF" stroke-width="4" d="M14.067 20.083l-2.926-3.048a.629.629 0 0 1 .03-.828.568.568 0 0 1 .795-.032l2.1 2.189 3.968-4.134a.568.568 0 0 1 .795.032c.216.225.23.586.03.828l-4.792 4.993z"/>
|
||||||
|
<path fill="#F5A623" fill-rule="nonzero" d="M14.067 20.083l-2.926-3.048a.629.629 0 0 1 .03-.828.568.568 0 0 1 .795-.032l2.1 2.189 3.968-4.134a.568.568 0 0 1 .795.032c.216.225.23.586.03.828l-4.792 4.993zM19 12.083c1.792.903 3 2.609 3 4.564 0 1.867-1.101 3.506-2.76 4.436l-.028-1.06c1.125-.819 1.8-2.046 1.8-3.376 0-1.403-.753-2.69-1.984-3.504L19 12.083z"/>
|
||||||
|
<path fill="#FFF" fill-rule="nonzero" stroke="#FFF" stroke-width="3" d="M10 12.083c-1.792.903-3 2.609-3 4.564 0 1.867 1.101 3.506 2.76 4.436l.028-1.06c-1.125-.819-1.8-2.046-1.8-3.376 0-1.403.753-2.69 1.984-3.504l.028-1.06z"/>
|
||||||
|
<path fill="#F5A623" fill-rule="nonzero" d="M10 12.083c-1.792.903-3 2.609-3 4.564 0 1.867 1.101 3.506 2.76 4.436l.028-1.06c-1.125-.819-1.8-2.046-1.8-3.376 0-1.403.753-2.69 1.984-3.504l.028-1.06z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.4 KiB |
9
src/assets/img/votant-sur.svg
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="20" height="21" viewBox="0 0 20 21">
|
||||||
|
<defs>
|
||||||
|
<path id="a" d="M8.667 10.205c2.13-.029 4.221.541 6.03 1.638l.336.212-4.56 5.008L7.9 14.338a1.887 1.887 0 0 0-2.017-.472 1.84 1.84 0 0 0-1.216 1.653c-.024.44.114.873.385 1.22l.108.126 2.047 2.165H1.493a1.325 1.325 0 0 1-1.286-1.18L.2 17.718v-3.537a.65.65 0 0 1 .133-.4 10.822 10.822 0 0 1 7.655-3.573l.339-.007zm8.466 5.046v2.468c0 .71-.572 1.291-1.293 1.312h-2.127l3.42-3.78zM8.66.361c2.507 0 4.54 2 4.54 4.469 0 2.468-2.033 4.47-4.54 4.47S4.12 7.297 4.12 4.83 6.153.36 8.66.36z"/>
|
||||||
|
</defs>
|
||||||
|
<g fill="none" fill-rule="nonzero">
|
||||||
|
<use fill="#4A4A4A" xlink:href="#a"/>
|
||||||
|
<path fill="#429A00" d="M19.18 10.25a.673.673 0 0 0-.947.053l-7.746 8.531-3.467-3.668a.67.67 0 0 0-.94-.072.651.651 0 0 0 0 .932l4.453 4.725 8.694-9.595a.649.649 0 0 0-.047-.905z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 933 B |
@ -1,68 +1,47 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
a {
|
@mixin btnTheme ($color) {
|
||||||
color: $black;
|
background-color: $color;
|
||||||
|
color: $white;
|
||||||
.icon {
|
&.btn--outline {
|
||||||
font-size: 1.5em;
|
background-color: transparent;
|
||||||
&.right{
|
border-color: $color;
|
||||||
float: right;
|
color: $font-color;
|
||||||
display: inline-block;
|
}
|
||||||
margin: -0.3em 0.4em;
|
&:focus,
|
||||||
|
&:hover,
|
||||||
|
&:active {
|
||||||
|
background-color: rgba($color, .8);
|
||||||
|
&.btn--outline {
|
||||||
|
background-color: rgba($color, .2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// buttons
|
|
||||||
.btn {
|
.btn {
|
||||||
display: inline-block;
|
margin: .5rem 0;
|
||||||
padding: 1em;
|
padding: 1rem 1.5rem;
|
||||||
border-radius: 0.25em;
|
font-size: 1.6rem;
|
||||||
background: $primary_color;
|
line-height: normal;
|
||||||
// color: $light;
|
border: .2rem solid transparent;
|
||||||
border: 0;
|
border-radius: .3rem;
|
||||||
margin: 1em;
|
font-weight: normal;
|
||||||
min-height: 1.5rem;
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
&:hover {
|
&--primary {
|
||||||
background-color: $dusty-orange;
|
@include btnTheme($primary_color);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-block {
|
&--alert {
|
||||||
|
@include btnTheme($red);
|
||||||
|
}
|
||||||
|
|
||||||
|
&--small {
|
||||||
|
padding: .75rem 1.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
&--full {
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: 600;
|
min-width: 100%;
|
||||||
font-size: 1.25em;
|
|
||||||
text-align: center;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-outline {
|
|
||||||
background: $white;
|
|
||||||
border: solid 1px $primary_color;
|
|
||||||
}
|
|
||||||
|
|
||||||
.btn-next {
|
|
||||||
@extend .striked;
|
|
||||||
text-align: right;
|
|
||||||
width: 100%;
|
|
||||||
padding: 1em 2em;
|
|
||||||
|
|
||||||
a {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
.striked {
|
|
||||||
&::after {
|
|
||||||
content: "";
|
|
||||||
display: block;
|
|
||||||
width: 12ch;
|
|
||||||
height: 4px;
|
|
||||||
margin-top: -0.7em;
|
|
||||||
margin-right: 0;
|
|
||||||
margin-left: auto;
|
|
||||||
background-color: $primary_color;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -61,7 +61,3 @@ h5,
|
|||||||
h6 {
|
h6 {
|
||||||
font-family: $title_font, "Brie Light", "Arial", "DejaVu Sans Mono";
|
font-family: $title_font, "Brie Light", "Arial", "DejaVu Sans Mono";
|
||||||
}
|
}
|
||||||
p{
|
|
||||||
font-family: $default_font;
|
|
||||||
font-size:14px;
|
|
||||||
}
|
|
||||||
|
@ -1,31 +1,45 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
// form inputs
|
input,
|
||||||
.funky-box {
|
select,
|
||||||
//background: $white;
|
textarea {
|
||||||
padding: 1em;
|
padding: 1rem;
|
||||||
border-radius: 0.25em;
|
border: 1px solid $secondary_color;
|
||||||
border-bottom: 3px solid $primary_color;
|
border-bottom: 3px solid $primary_color;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input,
|
input,
|
||||||
textarea,
|
select {
|
||||||
select,
|
display: inline-block;
|
||||||
{
|
margin-bottom:10px;
|
||||||
@extend .funky-box;
|
margin-left:5px;
|
||||||
border:none;
|
|
||||||
border-bottom:2px solid $primary_color;
|
|
||||||
color:$black;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input[type="text"],input[type="email"],input[type="password"]{
|
|
||||||
width: 219px;
|
|
||||||
height: 36px;
|
|
||||||
}
|
|
||||||
textarea {
|
textarea {
|
||||||
margin-top: 1em;
|
width: 100%;
|
||||||
border-left: 3px solid $primary_color;
|
}
|
||||||
|
|
||||||
|
select,
|
||||||
|
option {
|
||||||
|
// delete default display
|
||||||
|
-webkit-appearance : none;
|
||||||
|
-moz-appearance : none;
|
||||||
|
|
||||||
|
background: none;
|
||||||
|
border-radius: 0;
|
||||||
|
|
||||||
|
background-color: transparent;
|
||||||
|
background-image: url("./assets/img/fleche_bas.svg");
|
||||||
|
padding-right:1.5rem;
|
||||||
|
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-size: 9px 8px;
|
||||||
|
background-position: right 1rem center;
|
||||||
|
|
||||||
|
background-clip: border-box;
|
||||||
|
|
||||||
|
// TODO -> check what angular can do
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
|
@ -9,3 +9,7 @@ h1 {
|
|||||||
font-size: 2rem;
|
font-size: 2rem;
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
}
|
}
|
||||||
|
h1::after{
|
||||||
|
background-color: $primary_color;
|
||||||
|
height:2px;
|
||||||
|
}
|
||||||
|
@ -21,11 +21,13 @@ a {
|
|||||||
&.next::before,
|
&.next::before,
|
||||||
&.prev::after {
|
&.prev::after {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
bottom: 0.7rem;
|
top: 0;
|
||||||
|
bottom: 0;
|
||||||
display: block;
|
display: block;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
height: 0.6rem;
|
height: 0.6rem;
|
||||||
background-color: $primary_color;
|
margin: auto;
|
||||||
|
background-color: $secondary_color;
|
||||||
z-index: -1;
|
z-index: -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +54,8 @@ a {
|
|||||||
&:hover {
|
&:hover {
|
||||||
&.next::before,
|
&.next::before,
|
||||||
&.prev::after {
|
&.prev::after {
|
||||||
background-color: $secondary_color;
|
background-color: rgba($primary_color,0.7);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,9 +1,11 @@
|
|||||||
@charset "UTF-8";
|
@charset "UTF-8";
|
||||||
|
|
||||||
main {
|
main {
|
||||||
max-width: 500px; // to look like the styleguide, to remove when we will have full width views
|
|
||||||
width: 100%;
|
|
||||||
display: block;
|
display: block;
|
||||||
|
width: 100%;
|
||||||
|
//max-width: 320px; // to look like the styleguide, to remove when we will have full width views
|
||||||
|
max-width: 800px;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 0 1.2rem;
|
padding: 0 2rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
12
src/assets/scss/molecules/_flex-line.scss
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
@charset "UTF-8";
|
||||||
|
|
||||||
|
.flex-line {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
flex-wrap: wrap;
|
||||||
|
|
||||||
|
& > input,
|
||||||
|
& > select {
|
||||||
|
flex-grow: 1;
|
||||||
|
}
|
||||||
|
}
|
6
src/assets/scss/useful_classes.scss
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
@charset "UTF_8";
|
||||||
|
|
||||||
|
.align-right {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
|
}
|
@ -3,19 +3,26 @@
|
|||||||
// colors from styleguide https://app.zeplin.io/project/5d4d83d68866d6522ff2ff10/styleguide/colors?cid=5d502bb032e23e3516af8154
|
// colors from styleguide https://app.zeplin.io/project/5d4d83d68866d6522ff2ff10/styleguide/colors?cid=5d502bb032e23e3516af8154
|
||||||
$camo: #839546;
|
$camo: #839546;
|
||||||
$black: #000000;
|
$black: #000000;
|
||||||
$sun-yellow: #ffd52c;
|
$ugly-purple: #b24eb7;
|
||||||
|
$lavender-pink : #e9bdeb;
|
||||||
$white: #ffffff;
|
$white: #ffffff;
|
||||||
$dark-lavender: #7d6c99;
|
$dark-lavender: #7d6c99;
|
||||||
$dusty-orange: #f18647;
|
$dusty-orange: #f18647;
|
||||||
$mango: #ffb92c;
|
|
||||||
$violet: #bd10e0;
|
$violet: #bd10e0;
|
||||||
|
$red: #cd0000;
|
||||||
|
$cool-grey: #aeafb1;
|
||||||
|
$warm-grey:#807e7e;
|
||||||
|
$wisteria:#bf83c2;
|
||||||
|
|
||||||
// interpretations in app
|
// interpretations in app
|
||||||
$primary_color: $sun-yellow;
|
$primary_color: $ugly-purple;
|
||||||
$secondary_color: $mango;
|
$secondary_color: $lavender-pink;
|
||||||
$font_color: $black;
|
$font_color: $black;
|
||||||
$logo_color: $dark-lavender;
|
$logo_color: $dark-lavender;
|
||||||
$logo_color_2: $camo;
|
$logo_color_2: $camo;
|
||||||
|
$choice_select_border_color: $cool-grey;
|
||||||
|
$hover-color:$warm-grey;
|
||||||
|
$clicked-color:$wisteria;
|
||||||
|
|
||||||
// FONT
|
// FONT
|
||||||
$default_font : "pt_sans";
|
$default_font : "pt_sans";
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
/* You can add global styles to this file, and also import other style files */
|
/* You can add global styles to this file, and also import other style files */
|
||||||
@import "assets/scss/variables";
|
@import "assets/scss/variables";
|
||||||
@import "assets/scss/default";
|
@import "assets/scss/default";
|
||||||
|
@import "assets/scss/useful_classes";
|
||||||
|
|
||||||
@import "assets/scss/atoms/main";
|
@import "assets/scss/atoms/main";
|
||||||
@import "assets/scss/atoms/section";
|
@import "assets/scss/atoms/section";
|
||||||
@ -14,3 +15,4 @@
|
|||||||
|
|
||||||
@import "assets/scss/molecules/logo";
|
@import "assets/scss/molecules/logo";
|
||||||
@import "assets/scss/molecules/debug";
|
@import "assets/scss/molecules/debug";
|
||||||
|
@import "assets/scss/molecules/flex-line";
|
||||||
|
85
yarn.lock
@ -309,6 +309,20 @@
|
|||||||
tree-kill "1.2.1"
|
tree-kill "1.2.1"
|
||||||
webpack-sources "1.3.0"
|
webpack-sources "1.3.0"
|
||||||
|
|
||||||
|
"@ngx-translate/core@^11.0.1":
|
||||||
|
version "11.0.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ngx-translate/core/-/core-11.0.1.tgz#cecefad41f06368f5859dac48fec8fcc4485615f"
|
||||||
|
integrity sha512-nBCa1ZD9fAUY/3eskP3Lql2fNg8OMrYIej1/5GRsfcutx9tG/5fZLCv9m6UCw1aS+u4uK/vXjv1ctG/FdMvaWg==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.9.0"
|
||||||
|
|
||||||
|
"@ngx-translate/http-loader@^4.0.0":
|
||||||
|
version "4.0.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/@ngx-translate/http-loader/-/http-loader-4.0.0.tgz#8a555248ad4b7d513460fcec9da25b0447962f1d"
|
||||||
|
integrity sha512-x8LumqydWD7eX9yQTAVeoCM9gFUIGVTUjZqbxdAUavAA3qVnk9wCQux7iHLPXpydl8vyQmLoPQR+fFU+DUDOMA==
|
||||||
|
dependencies:
|
||||||
|
tslib "^1.9.0"
|
||||||
|
|
||||||
"@schematics/angular@8.2.2":
|
"@schematics/angular@8.2.2":
|
||||||
version "8.2.2"
|
version "8.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.2.2.tgz#ad606789a016e540facd44b81bff9aac874afb25"
|
resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-8.2.2.tgz#ad606789a016e540facd44b81bff9aac874afb25"
|
||||||
@ -362,6 +376,11 @@
|
|||||||
dependencies:
|
dependencies:
|
||||||
"@types/jasmine" "*"
|
"@types/jasmine" "*"
|
||||||
|
|
||||||
|
"@types/marked@^0.6.5":
|
||||||
|
version "0.6.5"
|
||||||
|
resolved "https://registry.yarnpkg.com/@types/marked/-/marked-0.6.5.tgz#3cf2a56ef615dad24aaf99784ef90a9eba4e29d8"
|
||||||
|
integrity sha512-6kBKf64aVfx93UJrcyEZ+OBM5nGv4RLsI6sR1Ar34bpgvGVRoyTgpxn4ZmtxOM5aDTAaaznYuYUH8bUX3Nk3YA==
|
||||||
|
|
||||||
"@types/minimatch@*":
|
"@types/minimatch@*":
|
||||||
version "3.0.3"
|
version "3.0.3"
|
||||||
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
resolved "https://registry.yarnpkg.com/@types/minimatch/-/minimatch-3.0.3.tgz#3dca0e3f33b200fc7d1139c0cd96c1268cadfd9d"
|
||||||
@ -1521,6 +1540,15 @@ cli-width@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639"
|
||||||
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
|
integrity sha1-/xnt6Kml5XkyQUewwR8PvLq+1jk=
|
||||||
|
|
||||||
|
clipboard@^2.0.0:
|
||||||
|
version "2.0.4"
|
||||||
|
resolved "https://registry.yarnpkg.com/clipboard/-/clipboard-2.0.4.tgz#836dafd66cf0fea5d71ce5d5b0bf6e958009112d"
|
||||||
|
integrity sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==
|
||||||
|
dependencies:
|
||||||
|
good-listener "^1.2.2"
|
||||||
|
select "^1.1.2"
|
||||||
|
tiny-emitter "^2.0.0"
|
||||||
|
|
||||||
cliui@^4.0.0:
|
cliui@^4.0.0:
|
||||||
version "4.1.0"
|
version "4.1.0"
|
||||||
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
|
resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49"
|
||||||
@ -1612,6 +1640,11 @@ commander@^2.11.0, commander@^2.12.1, commander@^2.20.0, commander@~2.20.0:
|
|||||||
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422"
|
||||||
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
|
integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==
|
||||||
|
|
||||||
|
commander@^2.19.0:
|
||||||
|
version "2.20.3"
|
||||||
|
resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
|
||||||
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
||||||
|
|
||||||
commondir@^1.0.1:
|
commondir@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b"
|
||||||
@ -2055,6 +2088,11 @@ delayed-stream@~1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
|
||||||
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
integrity sha1-3zrhmayt+31ECqrgsp4icrJOxhk=
|
||||||
|
|
||||||
|
delegate@^3.1.2:
|
||||||
|
version "3.2.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
|
||||||
|
integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
|
||||||
|
|
||||||
delegates@^1.0.0:
|
delegates@^1.0.0:
|
||||||
version "1.0.0"
|
version "1.0.0"
|
||||||
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
|
||||||
@ -2911,6 +2949,13 @@ globby@^7.1.1:
|
|||||||
pify "^3.0.0"
|
pify "^3.0.0"
|
||||||
slash "^1.0.0"
|
slash "^1.0.0"
|
||||||
|
|
||||||
|
good-listener@^1.2.2:
|
||||||
|
version "1.2.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
|
||||||
|
integrity sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=
|
||||||
|
dependencies:
|
||||||
|
delegate "^3.1.2"
|
||||||
|
|
||||||
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6:
|
||||||
version "4.2.2"
|
version "4.2.2"
|
||||||
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
|
resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02"
|
||||||
@ -3921,6 +3966,13 @@ karma@~4.1.0:
|
|||||||
tmp "0.0.33"
|
tmp "0.0.33"
|
||||||
useragent "2.3.0"
|
useragent "2.3.0"
|
||||||
|
|
||||||
|
katex@^0.11.1:
|
||||||
|
version "0.11.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/katex/-/katex-0.11.1.tgz#df30ca40c565c9df01a466a00d53e079e84ffaa2"
|
||||||
|
integrity sha512-5oANDICCTX0NqYIyAiFCCwjQ7ERu3DQG2JFHLbYOf+fXaMoH8eg/zOq5WSYJsKMi/QebW+Eh3gSM+oss1H/bww==
|
||||||
|
dependencies:
|
||||||
|
commander "^2.19.0"
|
||||||
|
|
||||||
killable@^1.0.1:
|
killable@^1.0.1:
|
||||||
version "1.0.1"
|
version "1.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
|
resolved "https://registry.yarnpkg.com/killable/-/killable-1.0.1.tgz#4c8ce441187a061c7474fb87ca08e2a638194892"
|
||||||
@ -4133,6 +4185,11 @@ map-visit@^1.0.0:
|
|||||||
dependencies:
|
dependencies:
|
||||||
object-visit "^1.0.0"
|
object-visit "^1.0.0"
|
||||||
|
|
||||||
|
marked@^0.7.0:
|
||||||
|
version "0.7.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/marked/-/marked-0.7.0.tgz#b64201f051d271b1edc10a04d1ae9b74bb8e5c0e"
|
||||||
|
integrity sha512-c+yYdCZJQrsRjTPhUx7VKkApw9bwDkNbHUKo1ovgcfDjb2kc8rLuRbIFyXL5WOEUwzSSKo3IXpph2K6DqB/KZg==
|
||||||
|
|
||||||
md5.js@^1.3.4:
|
md5.js@^1.3.4:
|
||||||
version "1.3.5"
|
version "1.3.5"
|
||||||
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
resolved "https://registry.yarnpkg.com/md5.js/-/md5.js-1.3.5.tgz#b5d07b8e3216e3e27cd728d72f70d1e6a342005f"
|
||||||
@ -4420,6 +4477,17 @@ neo-async@^2.5.0, neo-async@^2.6.0:
|
|||||||
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c"
|
||||||
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==
|
||||||
|
|
||||||
|
ngx-markdown@^8.2.1:
|
||||||
|
version "8.2.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/ngx-markdown/-/ngx-markdown-8.2.1.tgz#53bafde382aa69ae6787abf0d72bf63bc028105a"
|
||||||
|
integrity sha512-59LG8rEoOwDsZyyJckp+QDnW/c5wMaRpNkb6TWktlBVTfQKyAYHr6BuSskVbZ4y8nsj54UQg0CDFLBOfUiqOwA==
|
||||||
|
dependencies:
|
||||||
|
"@types/marked" "^0.6.5"
|
||||||
|
katex "^0.11.1"
|
||||||
|
marked "^0.7.0"
|
||||||
|
prismjs "^1.16.0"
|
||||||
|
tslib "^1.9.0"
|
||||||
|
|
||||||
nice-try@^1.0.4:
|
nice-try@^1.0.4:
|
||||||
version "1.0.5"
|
version "1.0.5"
|
||||||
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366"
|
||||||
@ -5094,6 +5162,13 @@ prepend-http@^1.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
resolved "https://registry.yarnpkg.com/prepend-http/-/prepend-http-1.0.4.tgz#d4f4562b0ce3696e41ac52d0e002e57a635dc6dc"
|
||||||
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
integrity sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=
|
||||||
|
|
||||||
|
prismjs@^1.16.0:
|
||||||
|
version "1.17.1"
|
||||||
|
resolved "https://registry.yarnpkg.com/prismjs/-/prismjs-1.17.1.tgz#e669fcbd4cdd873c35102881c33b14d0d68519be"
|
||||||
|
integrity sha512-PrEDJAFdUGbOP6xK/UsfkC5ghJsPJviKgnQOoxaDbBjwc8op68Quupwt1DeAFoG8GImPhiKXAvvsH7wDSLsu1Q==
|
||||||
|
optionalDependencies:
|
||||||
|
clipboard "^2.0.0"
|
||||||
|
|
||||||
process-nextick-args@~2.0.0:
|
process-nextick-args@~2.0.0:
|
||||||
version "2.0.1"
|
version "2.0.1"
|
||||||
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
|
||||||
@ -5700,6 +5775,11 @@ select-hose@^2.0.0:
|
|||||||
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
|
||||||
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
|
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
|
||||||
|
|
||||||
|
select@^1.1.2:
|
||||||
|
version "1.1.2"
|
||||||
|
resolved "https://registry.yarnpkg.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
|
||||||
|
integrity sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=
|
||||||
|
|
||||||
selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1:
|
selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1:
|
||||||
version "3.6.0"
|
version "3.6.0"
|
||||||
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc"
|
resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc"
|
||||||
@ -6466,6 +6546,11 @@ timers-browserify@^2.0.4:
|
|||||||
dependencies:
|
dependencies:
|
||||||
setimmediate "^1.0.4"
|
setimmediate "^1.0.4"
|
||||||
|
|
||||||
|
tiny-emitter@^2.0.0:
|
||||||
|
version "2.1.0"
|
||||||
|
resolved "https://registry.yarnpkg.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
|
||||||
|
integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
|
||||||
|
|
||||||
tmp@0.0.30:
|
tmp@0.0.30:
|
||||||
version "0.0.30"
|
version "0.0.30"
|
||||||
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
|
resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed"
|
||||||
|