Votre côtisation détaillée | 56 ||||
---|---|---|---|
% | 59 |Montant | 60 |Tranche | 61 |
├── .gitignore ├── CSS ├── 1-Grilles │ ├── README.md │ └── solution │ │ ├── README.md │ │ ├── app.css │ │ └── index.html └── 2-Mosaic │ ├── README.md │ ├── base │ ├── app.css │ └── index.html │ └── screenshot.jpg └── JS ├── 1-Spanify └── README.md ├── 2-Impot.fr ├── README.md ├── Solution │ ├── app.js │ ├── app.test.js │ ├── babel.config.js │ ├── index.html │ ├── jest.config.js │ ├── package.json │ ├── ui.js │ └── yarn.lock ├── TheCaliban │ ├── assets │ │ ├── css │ │ │ └── style.css │ │ └── js │ │ │ └── app.js │ └── index.html └── rgermain │ ├── calcul.js │ ├── index.html │ ├── init.js │ ├── main.js │ └── style.css ├── 3-DockMacOS ├── .gitignore ├── README.md ├── favicon.svg ├── index.html ├── package.json ├── public │ └── images │ │ ├── appstore.png │ │ ├── finder.png │ │ ├── mail.png │ │ ├── messages.png │ │ ├── systempreferences.png │ │ ├── terminal.png │ │ └── trashbin.png ├── src │ ├── main.ts │ ├── style.css │ └── vite-env.d.ts ├── tsconfig.json └── yarn.lock ├── 4-2FAInput ├── .gitignore ├── README.md ├── cypress.config.js ├── cypress │ ├── component │ │ └── CodeInput.cy.js │ └── support │ │ ├── component-index.html │ │ └── component.js ├── example.html ├── index.html ├── package.json ├── pnpm-lock.yaml ├── screenshot.png ├── src │ ├── example.js │ └── source.js ├── style.css └── vite.config.js └── 5-Calendar ├── .gitignore ├── README.md ├── bun.lockb ├── example.html ├── index.html ├── package.json ├── screenshot.jpg ├── src ├── data.js ├── example │ ├── date.js │ ├── main.js │ └── style.css ├── main.js ├── reset.css ├── style.css └── vite-env.d.ts └── tsconfig.json /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules -------------------------------------------------------------------------------- /CSS/1-Grilles/README.md: -------------------------------------------------------------------------------- 1 | # Utilisation des Grilles & Flexbox 2 | 3 | L'objectif de cet exercice est de réfléchir sur la structure à adopter pour créer un formulaire en gardant une structure simple et facilement extensible. 4 | 5 | 6 | ## Scénario 7 | 8 | Le designer vous a fourni une maquette pour un formulaire sur le logiciel Figma : https://www.figma.com/file/CgKcMZLE29Nzqx4vNhlbnL/ChallengeForm?node-id=0%3A1 . Le designer n'a en revanche pas fourni de direction pour la partie responsive et vous devez improviser l'affichage sur les différents périphériques. 9 | 10 | - On se concentre ici sur la structure du formulaire plus que sur le style des éléments. 11 | - L'intégration doit être responsive. 12 | - L'utilisation de framework est autorisée. 13 | 14 | ## Pour participer 15 | 16 | Vous pouvez éditer ce fichier directement sur github en mettant votre pseudo suivi d'un lien codesandbox/jsfiddle ou autre permettant de voir cotre réponse 17 | 18 | ## Vos solutions 19 | 20 | - Pseudo - https://grafikart.fr/exemple-de-lien 21 | 22 | ### Grille 23 | 24 | - Dim - https://jsfiddle.net/dimitri_bouteille/awzvq6uh/ ⭐ 25 | - L4rks - https://codesandbox.io/s/divine-monad-l32vi ⭐ 26 | - MalikH - https://webdevproformation.github.io/grafikart-challenges/flex.html ⭐ (autofill) 27 | - Bowser65 - https://codesandbox.io/s/grafikart-challenge-1-whp3t 28 | - Roman R - https://codepen.io/romanryckebusch/pen/abvjJxw?editors=1100 (autofill, A11Y) 29 | - Bokad - https://jsfiddle.net/veq0Lf6y/ 30 | - BaptouFou - https://repl.it/repls/WorthwhileSeashellIrc 31 | - Yann - https://codepen.io/yann-marec/pen/VwvBbYB 32 | - HugoWit - https://jsfiddle.net/Hugowit/6qud1yrp/8/ 33 | - Choulss (grid+flex) - https://codesandbox.io/s/heuristic-cherry-4t3xk?file=/style.css (bonne gestion du format tablette) 34 | - PhiSyX - https://jsfiddle.net/PhiSyX/Lrzyvepd/ (bonne gestion du format tablette) 35 | - Gwen.L - https://codepen.io/gwenlacosse/pen/oNjMbzW (template area) 36 | - Papa Mouhamadou DIOP - https://codesandbox.io/s/bold-water-xvj6i 37 | - stephcache - https://jsfiddle.net/stephcache/6rasvc5e/24/ 38 | - JeanBon - https://codepen.io/felixdorn/pen/QWjBgqQ 39 | - Guillaume ASTIER - https://codesandbox.io/embed/spooky-challenge-grafikart-css-1-kp3pi?fontsize=14&hidenavigation=1&theme=dark&view=preview 40 | - Voltra - https://codesandbox.io/s/grille-flex-pzpy0?file=/main.css 41 | - Glioburd - https://codesandbox.io/s/grid-form-ufi2z (grid-area, fullscreen : https://ufi2z.csb.app/) 42 | - Chewbathra - https://codesandbox.io/s/wonderful-panini-f1clh ⭐ 43 | - Taro - https://codesandbox.io/s/vigorous-williamson-mlzwi?file=/style.css 44 | - akbak - https://codesandbox.io/s/xenodochial-cerf-3f0z0 45 | - Florian - https://jsfiddle.net/7sbvw8an/2/ 46 | - Matteo - https://codesandbox.io/s/funny-morning-pkq3i (template area) 47 | - itsadeki - https://codesandbox.io/s/challenge-css-grille-gnic0 48 | - AnttonDev - https://codesandbox.io/s/grafikartchallenge-by-anttondev-yi8ss 49 | - Ugo.P - https://codepen.io/Ugo_P/pen/BaoOoJW 50 | - georges - https://jsfiddle.net/dan_georges/opds19wm/ (template area) 51 | - Tatal - https://jsfiddle.net/ametthey/gL7qy5us/68/ (template area) 52 | - avallete - https://codesandbox.io/s/grafikart-css-challenge-01-bppic 53 | - gturpin - https://codepen.io/ThPrGanesha/pen/VwvGYMW?editors=1100 (grid + flex) 54 | 55 | ### Flex 56 | 57 | - Norem - https://codepen.io/Norem/pen/GRpGbVO 58 | - Vscool - https://codesandbox.io/s/fragrant-brook-8evnd?file=/index.html 59 | - Couapy - https://codesandbox.io/s/nervous-shannon-vih2g?file=/style.css 60 | - Jayson - https://codepen.io/burke9/pen/pojZyoy 61 | - Jordan L. - https://codesandbox.io/s/challenge-grafikart-formulaire-responsive-wsk8v 62 | - whiskey92 - https://codepen.io/jl92000/pen/pojZZzW 63 | - m-vann - https://codesandbox.io/s/m-vann-u6rcu?file=/index.html 64 | - ARNOLD - https://codepen.io/arnold2020/pen/gOajazR 65 | - Jayson Mourier - https://codepen.io/burke9/pen/pojZyoy 66 | - Roger Carter - https://codesandbox.io/s/eloquent-fog-wl3ji?file=/index.html 67 | - Jam83 - https://codesandbox.io/s/agitated-dew-8gnl4?file=/index.html (avec position absolute) 68 | - celtak - https://codepen.io/Celtak/pen/WNQKQrZ 69 | - Darth_Judge - https://codesandbox.io/s/loving-star-mpnsd 70 | - jam83 - https://codesandbox.io/s/agitated-dew-8gnl4 71 | - stevar - https://jsfiddle.net/stevar/ck3sq2Lw/2/#&togetherjs=6fJUkr3Ulj (pb d'alignement de champs & tabulation) 72 | - Nicolas41 - https://codesandbox.io/s/tender-pine-1thci 73 | - Jam8310 - https://codesandbox.io/s/agitated-dew-8gnl4 74 | - cissoko23 - https://jsfiddle.net/cissoko23/xsLb6v83/1/ 75 | 76 | ## Float 77 | 78 | - Farouk - https://jsfiddle.net/Roukfa/t8epz9o0/8/ 79 | 80 | ### Framework CSS 81 | 82 | - rherault - https://codepen.io/romaixn/pen/vYNrPag (tailwind) 83 | - Amiega - https://codepen.io/fdfd/pen/KKdeEvB 84 | - Art29 - https://codesandbox.io/s/challengeform-fr1v9 (bootstrap) 85 | - olivier49 - https://codepen.io/olivier49/pen/WNQKjwv 86 | - JulienKit - https://codesandbox.io/s/julienkit-grafikart-challenge-css-mai-2020-b4tiq (bootstrap) 87 | - Maxime - https://codesandbox.io/s/morning-mountain-qcvdx?file=/index.html (bootstrap) 88 | - Quentin Geeraert - https://codesandbox.io/s/grafikart-challenge-b84xt?file=/index.html (bootstrap) 89 | -------------------------------------------------------------------------------- /CSS/1-Grilles/solution/README.md: -------------------------------------------------------------------------------- 1 | ## A propos de la solution 2 | 3 | Pour cet exercice on a plusieurs solutions possibles mais les critères importants sont : 4 | 5 | - Le code HTMLuniux doit rester simple et extensible (pouvoir rajouter des champs facilement plus tard par exemple, et éviter une structure trop en lien avec le design). 6 | - Faire en sorte que la tabulation sélectionne les champs dans le bon ordre. 7 | - Faire en sorte que le responsive gère un maximum de cas (ne pas oublier les tablettes). 8 | - Gérer convenablement les espaces entre les champs quelquesoit la résolution. 9 | 10 | Les quelques points clefs de la solution proposée : 11 | 12 | - `grid-template-columns: repeat(auto-fill, minmax(297px, 1fr));` permet de faire en sorte que le navigateur crée automatiquement les colonnes ce qui permet de simplifier le responsive sans avoir à créer des breakpoint. 13 | - `align-content`, `align-self`, `align-items` permettent de gérer convenablement les alignements, surtout si un champs à un message en dessous 14 | - Pour que le champs textarea prenne toute la hauteur on utilise `align-content: stretch;` 15 | -------------------------------------------------------------------------------- /CSS/1-Grilles/solution/app.css: -------------------------------------------------------------------------------- 1 | * { 2 | box-sizing: border-box; 3 | } 4 | 5 | body { 6 | color: #374151; 7 | margin: 0; 8 | font-family: sans-serif; 9 | background-color: #E5E5E5; 10 | } 11 | 12 | .page { 13 | display: flex; 14 | width: 100%; 15 | align-items: center; 16 | min-height: 100vh; 17 | } 18 | 19 | .card { 20 | border-radius: 4px; 21 | width: 1028px; 22 | max-width: calc(100% - 20px); 23 | margin-left: auto; 24 | margin-right: auto; 25 | padding: 40px; 26 | background-color: #FFF; 27 | box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1); 28 | } 29 | 30 | .card-title { 31 | font-size: 24px; 32 | font-weight: bold; 33 | color: #000; 34 | padding-bottom: 8px; 35 | border-bottom: 1px solid #D7DBDF; 36 | margin-bottom: 30px; 37 | } 38 | 39 | /** 40 | * Flex 41 | */ 42 | .flex { 43 | display: flex; 44 | } 45 | .flex > * + * { 46 | margin-left: 8px; 47 | } 48 | .flex-end { 49 | justify-content: flex-end; 50 | } 51 | 52 | /** 53 | * Grille 54 | */ 55 | .grid { 56 | display: grid; 57 | grid-template-columns: repeat(auto-fill, minmax(297px, 1fr)); 58 | grid-gap: 24px; 59 | align-items: stretch; 60 | } 61 | 62 | @media only screen and (max-width: 600px) { 63 | .grid { 64 | grid-template-columns: 1fr; 65 | } 66 | .card { 67 | padding: 24px; 68 | } 69 | } 70 | 71 | .grid .full { 72 | grid-column:1 / -1; 73 | } 74 | 75 | .grid .form-group-textarea { 76 | grid-row-end: span 2; 77 | height: 100%; 78 | align-content: stretch; 79 | } 80 | 81 | .grid .btn-primary { 82 | justify-self: flex-end; 83 | grid-column-end: -1; 84 | } 85 | 86 | /** 87 | * Style générique des formulaires 88 | */ 89 | .form-group { 90 | display: grid; 91 | grid-template-columns: 1fr; 92 | align-content: flex-start; 93 | grid-template-rows: min-content; 94 | grid-gap: 8px; 95 | } 96 | 97 | .form-control { 98 | display: block; 99 | width: 100%; 100 | border: 1px solid #D2D6DB; 101 | border-radius: 6px; 102 | font-size: 16px; 103 | padding: 14px 10px; 104 | } 105 | 106 | .form-check { 107 | cursor: pointer; 108 | display: flex; 109 | align-items: center; 110 | } 111 | 112 | .form-check-label { 113 | cursor: pointer; 114 | } 115 | 116 | .form-check-input { 117 | margin-right: 8px; 118 | } 119 | 120 | .btn { 121 | border: none; 122 | color: #FFF; 123 | font-weight: 500; 124 | padding: 15px 25px; 125 | border-radius: 6px; 126 | font-size: 16px; 127 | cursor: pointer; 128 | } 129 | 130 | .btn-primary { 131 | background-color: #5850EB; 132 | } 133 | 134 | .btn-secondary { 135 | background-color: grey; 136 | } 137 | 138 | .form-checkboxes { 139 | display: flex; 140 | flex-direction: column; 141 | margin-left: -16px; 142 | margin-top: -16px; 143 | } 144 | 145 | .form-checkboxes > * { 146 | margin-top: 16px; 147 | margin-left: 16px; 148 | } 149 | 150 | @media only screen and (min-width: 760px) { 151 | .form-checkboxes { 152 | flex-direction: row; 153 | } 154 | } 155 | -------------------------------------------------------------------------------- /CSS/1-Grilles/solution/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 |
4 | 5 | 6 |Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores blanditiis commodi enim esse eveniet facilis 81 | fugit id impedit iste itaque, laboriosam laudantium, maiores nobis optio temporibus ullam velit veniam vero!
82 | 87 |Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores blanditiis commodi enim esse eveniet facilis 92 | fugit id impedit iste itaque, laboriosam laudantium, maiores nobis optio temporibus ullam velit veniam vero!
93 | 98 |Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores blanditiis commodi enim esse eveniet facilis 103 | fugit id impedit iste itaque, laboriosam laudantium, maiores nobis optio temporibus ullam velit veniam vero!
104 | 109 |Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores blanditiis commodi enim esse eveniet facilis 114 | fugit id impedit iste itaque, laboriosam laudantium, maiores nobis optio temporibus ullam velit veniam vero!
115 | 120 |Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores blanditiis commodi enim esse eveniet facilis 125 | fugit id impedit iste itaque, laboriosam laudantium, maiores nobis optio temporibus ullam velit veniam vero!
126 | 131 |Lorem ipsum dolor sit amet, consectetur adipisicing elit. Asperiores blanditiis commodi enim esse eveniet facilis 136 | fugit id impedit iste itaque, laboriosam laudantium, maiores nobis optio temporibus ullam velit veniam vero!
137 | 142 |Votre côtisation détaillée | 56 ||||
---|---|---|---|
% | 59 |Montant | 60 |Tranche | 61 |
${dayFormatter.format(addDays(start, k))} | `, 45 | ).join("")} 46 |
---|