Merge pull request #6496 from betagouv/main

2021-09-28-01
This commit is contained in:
Kara Diaby 2021-09-28 15:37:22 +02:00 committed by GitHub
commit 4a2bcb75e5
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
85 changed files with 694 additions and 226 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4 KiB

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M18.938 20.625C17.055 22.127 14.6 23.084 12 23.084c-2.614 0-5.015-.954-6.902-2.476l-.1-.943v-.831c0-2.33 4.67-3.5 7.002-3.5 2.33 0 6.999 1.17 6.999 3.5V20l-.063.625zM12 11.333a2.989 2.989 0 0 0 2.995-2.999c0-1.66-1.332-3-2.995-3a2.998 2.998 0 0 0-3.005 3A2.997 2.997 0 0 0 12 11.333z"/><path d="M23 12c0 6.075-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1s11 4.925 11 11z"/></g><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M18.938 20.625C17.055 22.127 14.6 23.084 12 23.084c-2.614 0-5.015-.954-6.902-2.476l-.1-.943v-.831c0-2.33 4.67-3.5 7.002-3.5 2.33 0 6.999 1.17 6.999 3.5V20l-.063.625zM12 11.333a2.989 2.989 0 0 0 2.995-2.999c0-1.66-1.332-3-2.995-3a2.998 2.998 0 0 0-3.005 3A2.997 2.997 0 0 0 12 11.333z"/><path d="M23 12c0 6.075-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1s11 4.925 11 11z"/></g><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 620 B

After

Width:  |  Height:  |  Size: 620 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M20.54 4.23l-1.391-1.68A1.447 1.447 0 0 0 18 2H6c-.471 0-.88.21-1.16.55L3.46 4.23C3.17 4.57 3 5.02 3 5.5V18c0 1.1.899 2 2 2h14c1.1 0 2-.9 2-2V5.5c0-.48-.17-.93-.46-1.27z"/><path d="M12.088 7.333h3.438c0-2 2.562-2 2.562-2h2l.842-.38a1.933 1.933 0 0 0-.385-.723l-1.39-1.68a1.448 1.448 0 0 0-1.15-.55h-12c-.47 0-.88.21-1.16.55l-1.38 1.68a1.913 1.913 0 0 0-.395.763l.018.34h3s2.562 0 2.562 2h3.438M9 13.868l3 3 3-3M12 16v-5"/></g><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M20.54 4.23l-1.391-1.68A1.447 1.447 0 0 0 18 2H6c-.471 0-.88.21-1.16.55L3.46 4.23C3.17 4.57 3 5.02 3 5.5V18c0 1.1.899 2 2 2h14c1.1 0 2-.9 2-2V5.5c0-.48-.17-.93-.46-1.27z"/><path d="M12.088 7.333h3.438c0-2 2.562-2 2.562-2h2l.842-.38a1.933 1.933 0 0 0-.385-.723l-1.39-1.68a1.448 1.448 0 0 0-1.15-.55h-12c-.47 0-.88.21-1.16.55l-1.38 1.68a1.913 1.913 0 0 0-.395.763l.018.34h3s2.562 0 2.562 2h3.438M9 13.868l3 3 3-3M12 16v-5"/></g><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 672 B

After

Width:  |  Height:  |  Size: 672 B

View file

@ -1 +1 @@
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m13.153 6.701-4.512 7.815a1.638 1.638 0 0 0 .604 2.237 1.638 1.638 0 0 0 2.24-.596l3.324-5.758 1.843-3.193a3.277 3.277 0 0 0 -1.207-4.475 3.277 3.277 0 0 0 -4.478 1.192l-3.325 5.758-.395.686-2.533 4.387a4.23 4.23 0 0 0 1.557 5.774l.458.265a4.229 4.229 0 0 0 5.779-1.539l6.464-11.196" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m0 0h24v24h-24z"/></g></svg>
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m13.153 6.701-4.512 7.815a1.638 1.638 0 0 0 .604 2.237 1.638 1.638 0 0 0 2.24-.596l3.324-5.758 1.843-3.193a3.277 3.277 0 0 0 -1.207-4.475 3.277 3.277 0 0 0 -4.478 1.192l-3.325 5.758-.395.686-2.533 4.387a4.23 4.23 0 0 0 1.557 5.774l.458.265a4.229 4.229 0 0 0 5.779-1.539l6.464-11.196" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m0 0h24v24h-24z"/></g></svg>

Before

Width:  |  Height:  |  Size: 530 B

After

Width:  |  Height:  |  Size: 530 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><path stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8.999A2.989 2.989 0 0 0 14.995 6c0-1.66-1.332-3-2.995-3a2.998 2.998 0 1 0 0 5.999zm0 4c-2.33 0-7 1.17-7 3.5v3.834h14v-3.834c0-2.33-4.67-3.5-7-3.5z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><path stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8.999A2.989 2.989 0 0 0 14.995 6c0-1.66-1.332-3-2.995-3a2.998 2.998 0 1 0 0 5.999zm0 4c-2.33 0-7 1.17-7 3.5v3.834h14v-3.834c0-2.33-4.67-3.5-7-3.5z"/></g></svg>

Before

Width:  |  Height:  |  Size: 396 B

After

Width:  |  Height:  |  Size: 396 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path style="text-indent:0;text-transform:none" d="M16 0C7.18 0 0 7.18 0 16s7.18 16 16 16 16-7.18 16-16S24.82 0 16 0zm0 2.91c7.247 0 13.09 5.843 13.09 13.09S23.248 29.09 16 29.09A13.069 13.069 0 0 1 2.91 16C2.91 8.753 8.752 2.91 16 2.91zm0 2.423c-.803 0-1.455.652-1.455 1.455V16c0 .402.161.767.425 1.03l5.833 5.834a1.459 1.459 0 0 0 2.06 0 1.459 1.459 0 0 0 0-2.061l-5.408-5.409V6.788c0-.803-.652-1.455-1.455-1.455z" overflow="visible" color="#000" fill="#0069cc"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path style="text-indent:0;text-transform:none" d="M16 0C7.18 0 0 7.18 0 16s7.18 16 16 16 16-7.18 16-16S24.82 0 16 0zm0 2.91c7.247 0 13.09 5.843 13.09 13.09S23.248 29.09 16 29.09A13.069 13.069 0 0 1 2.91 16C2.91 8.753 8.752 2.91 16 2.91zm0 2.423c-.803 0-1.455.652-1.455 1.455V16c0 .402.161.767.425 1.03l5.833 5.834a1.459 1.459 0 0 0 2.06 0 1.459 1.459 0 0 0 0-2.061l-5.408-5.409V6.788c0-.803-.652-1.455-1.455-1.455z" overflow="visible" color="#000" fill="#000091"/></svg>

Before

Width:  |  Height:  |  Size: 534 B

After

Width:  |  Height:  |  Size: 534 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="20"><path d="M11.5 8H15l-7 7-7-7h3.5V1h7zM1 19h14" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" fill="#fff" fill-opacity=".981" fill-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="20"><path d="M11.5 8H15l-7 7-7-7h3.5V1h7zM1 19h14" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" fill="#fff" fill-opacity=".981" fill-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 250 B

After

Width:  |  Height:  |  Size: 250 B

View file

@ -1 +1 @@
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><g stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="m11.999 7.104-2.2-2.25h-6.6c-1.21 0-2.189 1.014-2.189 2.25l-.011 13.5c0 1.238.99 2.25 2.2 2.25h17.6c1.21 0 2.2-1.012 2.2-2.25v-11.249c0-1.237-.99-2.25-2.2-2.25"/><path d="m20.877 6.871 1.829-1.829a.994.994 0 0 0 0-1.41l-2.339-2.34a.996.996 0 0 0 -1.41 0l-1.83 1.83-1.069 1.07-11.059 11.058v3.75h3.75l11.058-11.059zm-3.608-3.662 3.396 3.542"/></g><path d="m0 0h24v24h-24z"/></g></svg>
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><g stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="m11.999 7.104-2.2-2.25h-6.6c-1.21 0-2.189 1.014-2.189 2.25l-.011 13.5c0 1.238.99 2.25 2.2 2.25h17.6c1.21 0 2.2-1.012 2.2-2.25v-11.249c0-1.237-.99-2.25-2.2-2.25"/><path d="m20.877 6.871 1.829-1.829a.994.994 0 0 0 0-1.41l-2.339-2.34a.996.996 0 0 0 -1.41 0l-1.83 1.83-1.069 1.07-11.059 11.058v3.75h3.75l11.058-11.059zm-3.608-3.662 3.396 3.542"/></g><path d="m0 0h24v24h-24z"/></g></svg>

Before

Width:  |  Height:  |  Size: 594 B

After

Width:  |  Height:  |  Size: 594 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z"/><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2z"/><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 337 B

After

Width:  |  Height:  |  Size: 337 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><g fill="#0069cc"><path d="M19.733 4.406c-2.687 0-4.872 2.172-4.872 4.843 0 .628.51 1.136 1.142 1.136.632 0 1.143-.508 1.143-1.136a2.581 2.581 0 0 1 2.587-2.571 2.581 2.581 0 0 1 2.586 2.57c0 1.418-1.16 2.57-2.586 2.57-.632 0-1.143.508-1.143 1.137 0 .022.011.04.012.062 0 .023-.012.041-.012.064v2.364c0 .628.51 1.136 1.143 1.136.632 0 1.142-.508 1.142-1.136v-1.502c2.134-.515 3.73-2.416 3.73-4.693-.002-2.672-2.187-4.844-4.872-4.844zM19.733 17.01c-.632 0-1.143.507-1.143 1.135v.704c0 .628.51 1.136 1.143 1.136.632 0 1.142-.508 1.142-1.136v-.704a1.14 1.14 0 0 0-1.142-1.136z"/><path d="M19.733 0C12.968 0 7.464 5.47 7.464 12.195c0 3.006 1.105 5.755 2.926 7.883l-2.944 2.916c-1.27-.569-2.87-.363-3.883.644l-2.557 2.543A3.379 3.379 0 0 0 0 28.591c0 .912.358 1.768 1.003 2.41A3.419 3.419 0 0 0 3.43 32c.915 0 1.777-.356 2.424-.999L8.41 28.46a3.378 3.378 0 0 0 1.005-2.41 3.37 3.37 0 0 0-.342-1.459l2.951-2.92a12.248 12.248 0 0 0 7.707 2.722C26.497 24.39 32 18.919 32 12.195 32 5.47 26.497 0 19.733 0zM6.794 26.852l-2.557 2.543c-.436.428-1.184.43-1.616-.001a1.119 1.119 0 0 1-.335-.802c0-.304.119-.589.335-.803l2.557-2.543a1.143 1.143 0 0 1 1.616.001 1.129 1.129 0 0 1 0 1.605zm12.939-4.734c-5.504 0-9.982-4.45-9.982-9.922s4.476-9.924 9.982-9.924c5.505 0 9.981 4.451 9.981 9.923 0 5.471-4.477 9.923-9.981 9.923z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><g fill="#000091"><path d="M19.733 4.406c-2.687 0-4.872 2.172-4.872 4.843 0 .628.51 1.136 1.142 1.136.632 0 1.143-.508 1.143-1.136a2.581 2.581 0 0 1 2.587-2.571 2.581 2.581 0 0 1 2.586 2.57c0 1.418-1.16 2.57-2.586 2.57-.632 0-1.143.508-1.143 1.137 0 .022.011.04.012.062 0 .023-.012.041-.012.064v2.364c0 .628.51 1.136 1.143 1.136.632 0 1.142-.508 1.142-1.136v-1.502c2.134-.515 3.73-2.416 3.73-4.693-.002-2.672-2.187-4.844-4.872-4.844zM19.733 17.01c-.632 0-1.143.507-1.143 1.135v.704c0 .628.51 1.136 1.143 1.136.632 0 1.142-.508 1.142-1.136v-.704a1.14 1.14 0 0 0-1.142-1.136z"/><path d="M19.733 0C12.968 0 7.464 5.47 7.464 12.195c0 3.006 1.105 5.755 2.926 7.883l-2.944 2.916c-1.27-.569-2.87-.363-3.883.644l-2.557 2.543A3.379 3.379 0 0 0 0 28.591c0 .912.358 1.768 1.003 2.41A3.419 3.419 0 0 0 3.43 32c.915 0 1.777-.356 2.424-.999L8.41 28.46a3.378 3.378 0 0 0 1.005-2.41 3.37 3.37 0 0 0-.342-1.459l2.951-2.92a12.248 12.248 0 0 0 7.707 2.722C26.497 24.39 32 18.919 32 12.195 32 5.47 26.497 0 19.733 0zM6.794 26.852l-2.557 2.543c-.436.428-1.184.43-1.616-.001a1.119 1.119 0 0 1-.335-.802c0-.304.119-.589.335-.803l2.557-2.543a1.143 1.143 0 0 1 1.616.001 1.129 1.129 0 0 1 0 1.605zm12.939-4.734c-5.504 0-9.982-4.45-9.982-9.922s4.476-9.924 9.982-9.924c5.505 0 9.981 4.451 9.981 9.923 0 5.471-4.477 9.923-9.981 9.923z"/></g></svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.5 21h18M18.878 8.871l1.829-1.829a.994.994 0 0 0 0-1.41l-2.339-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83-1.069 1.07L3 17.25V21h3.75L17.808 9.941l1.07-1.07zm-3.609-3.662l3.396 3.542"/><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3.5 21h18M18.878 8.871l1.829-1.829a.994.994 0 0 0 0-1.41l-2.339-2.34a.996.996 0 0 0-1.41 0l-1.83 1.83-1.069 1.07L3 17.25V21h3.75L17.808 9.941l1.07-1.07zm-3.609-3.662l3.396 3.542"/><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 424 B

After

Width:  |  Height:  |  Size: 424 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0-2h24v24H0z"/><path d="M9 8.011h3M9.011 16.99h5.978M12 8v9" stroke="#0069cc" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M13 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0" fill="#0069cc"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0-2h24v24H0z"/><path d="M9 8.011h3M9.011 16.99h5.978M12 8v9" stroke="#000091" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M13 3.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0" fill="#0069cc"/></g></svg>

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 351 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><path d="M20 7V3a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v18c0 1.1.901 2 2 2h12c1.099 0 2-.9 2-2V7" stroke-linecap="round" stroke-linejoin="round" stroke="#0069CC" stroke-width="2"/></g><g fill="none" fill-rule="evenodd"><path d="M4.877 2.014h14.607V16.62H4.877z"/><path d="M8.563 12.523l2.977 3.385 3.944-6.903" stroke="#0069cc" stroke-width="1.9998924599999999" stroke-linecap="round" stroke-linejoin="round"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><path d="M20 7V3a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v18c0 1.1.901 2 2 2h12c1.099 0 2-.9 2-2V7" stroke-linecap="round" stroke-linejoin="round" stroke="#000091" stroke-width="2"/></g><g fill="none" fill-rule="evenodd"><path d="M4.877 2.014h14.607V16.62H4.877z"/><path d="M8.563 12.523l2.977 3.385 3.944-6.903" stroke="#000091" stroke-width="1.9998924599999999" stroke-linecap="round" stroke-linejoin="round"/></g></svg>

Before

Width:  |  Height:  |  Size: 534 B

After

Width:  |  Height:  |  Size: 534 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2z"/><path d="M2.292 5.033l9.667 6.675 9.666-6.75"/></g><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2z"/><path d="M2.292 5.033l9.667 6.675 9.666-6.75"/></g><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 383 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><g fill="none" fill-rule="evenodd"><path d="M11 6L9 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-6" stroke="#0069cc" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M0 0h24v24H0z"/></g><g transform="translate(8 -8)" fill="#0069cc"><rect ry="1" y="12" x="6" height="2" width="10"/><rect width="2" height="10" x="10" y="8" ry="1"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><g fill="none" fill-rule="evenodd"><path d="M11 6L9 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2v-6" stroke="#000091" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/><path d="M0 0h24v24H0z"/></g><g transform="translate(8 -8)" fill="#000091"><rect ry="1" y="12" x="6" height="2" width="10"/><rect width="2" height="10" x="10" y="8" ry="1"/></g></svg>

Before

Width:  |  Height:  |  Size: 446 B

After

Width:  |  Height:  |  Size: 446 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M10.666 11.042l1.426-2.137c.44-.662.45-1.524.023-2.194L7.845 0 2.762 1.694C.698 2.382-.476 4.595.184 6.668c1.148 3.61 3.787 9.355 9.79 15.356 6.002 6.004 11.747 8.642 15.36 9.792 2.072.66 4.285-.515 4.974-2.58L32 24.157l-6.71-4.27a2.008 2.008 0 0 0-2.195.023l-2.135 1.424a1.99 1.99 0 0 1-2.162.044 25.691 25.691 0 0 1-4.56-3.616 25.755 25.755 0 0 1-3.616-4.558 1.993 1.993 0 0 1 .044-2.161" fill="#0069cc" fill-rule="evenodd"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><path d="M10.666 11.042l1.426-2.137c.44-.662.45-1.524.023-2.194L7.845 0 2.762 1.694C.698 2.382-.476 4.595.184 6.668c1.148 3.61 3.787 9.355 9.79 15.356 6.002 6.004 11.747 8.642 15.36 9.792 2.072.66 4.285-.515 4.974-2.58L32 24.157l-6.71-4.27a2.008 2.008 0 0 0-2.195.023l-2.135 1.424a1.99 1.99 0 0 1-2.162.044 25.691 25.691 0 0 1-4.56-3.616 25.755 25.755 0 0 1-3.616-4.558 1.993 1.993 0 0 1 .044-2.161" fill="#000091" fill-rule="evenodd"/></svg>

Before

Width:  |  Height:  |  Size: 505 B

After

Width:  |  Height:  |  Size: 505 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><g data-name="Layer 78" transform="matrix(1.59996 0 0 1.57052 -3.2 -2.846)" fill="#0069cc"><circle cx="12" cy="12" r="2"/><path d="M21.92 11.62a10.74 10.74 0 0 0-19.84 0 .94.94 0 0 0 0 .76 10.74 10.74 0 0 0 19.84 0 .94.94 0 0 0 0-.76zM12 16a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="32" height="32"><g data-name="Layer 78" transform="matrix(1.59996 0 0 1.57052 -3.2 -2.846)" fill="#000091"><circle cx="12" cy="12" r="2"/><path d="M21.92 11.62a10.74 10.74 0 0 0-19.84 0 .94.94 0 0 0 0 .76 10.74 10.74 0 0 0 19.84 0 .94.94 0 0 0 0-.76zM12 16a4 4 0 1 1 4-4 4 4 0 0 1-4 4z"/></g></svg>

Before

Width:  |  Height:  |  Size: 345 B

After

Width:  |  Height:  |  Size: 345 B

View file

@ -1 +1 @@
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m0 0h24v24h-24z"/><path d="m3 8v7h18v-7zm0-2h18a2 2 0 0 1 2 2v7a2 2 0 0 1 -2 2h-18a2 2 0 0 1 -2-2v-7a2 2 0 0 1 2-2zm1 9v2h16v-2z" fill="#0069cc" fill-rule="nonzero"/><path d="m7 2h10a2 2 0 0 1 2 2v3h-14v-3a2 2 0 0 1 2-2z" stroke="#0069cc" stroke-width="2"/><g transform="translate(5 13)"><path d="m0 0h14v7a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2-2z" stroke="#0069cc" stroke-width="2"/><g fill="#0069cc" fill-rule="nonzero"><rect height="1.5" rx=".75" width="6" x="2" y="5"/><rect height="1.5" rx=".75" width="10" x="2" y="2.5"/></g></g></g></svg>
<svg height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m0 0h24v24h-24z"/><path d="m3 8v7h18v-7zm0-2h18a2 2 0 0 1 2 2v7a2 2 0 0 1 -2 2h-18a2 2 0 0 1 -2-2v-7a2 2 0 0 1 2-2zm1 9v2h16v-2z" fill="#000091" fill-rule="nonzero"/><path d="m7 2h10a2 2 0 0 1 2 2v3h-14v-3a2 2 0 0 1 2-2z" stroke="#000091" stroke-width="2"/><g transform="translate(5 13)"><path d="m0 0h14v7a2 2 0 0 1 -2 2h-10a2 2 0 0 1 -2-2z" stroke="#000091" stroke-width="2"/><g fill="#000091" fill-rule="nonzero"><rect height="1.5" rx=".75" width="6" x="2" y="5"/><rect height="1.5" rx=".75" width="10" x="2" y="2.5"/></g></g></g></svg>

Before

Width:  |  Height:  |  Size: 666 B

After

Width:  |  Height:  |  Size: 666 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M74.524 65.23l-3.498-5.592c-6.497-10.413-18.79-17.191-33.783-17.673l-.12 17.602c.1 1.265-1.002 1.856-1.744 1.346L3.101 32.538c-2.57-2.624 0-4.317 0-4.317L34.454 2.483c1.544-1.174 2.802-.77 2.801 1.16l-.112 17.33c20.69.868 37.013 18.232 37.281 37.996l.06 4.424zM4.76 30.905l28.786 23.912v-16.42h1.899c14.593 0 26.986 5.524 34.982 14.299-2.698-15.91-17.291-28.059-34.982-28.059h-1.9V8.535z" stroke-width="3.182" stroke-linejoin="round" transform="matrix(.31704 0 0 .3003 -.132 1.934)" fill="#0069cc" stroke="#0069cc"/></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><path d="M74.524 65.23l-3.498-5.592c-6.497-10.413-18.79-17.191-33.783-17.673l-.12 17.602c.1 1.265-1.002 1.856-1.744 1.346L3.101 32.538c-2.57-2.624 0-4.317 0-4.317L34.454 2.483c1.544-1.174 2.802-.77 2.801 1.16l-.112 17.33c20.69.868 37.013 18.232 37.281 37.996l.06 4.424zM4.76 30.905l28.786 23.912v-16.42h1.899c14.593 0 26.986 5.524 34.982 14.299-2.698-15.91-17.291-28.059-34.982-28.059h-1.9V8.535z" stroke-width="3.182" stroke-linejoin="round" transform="matrix(.31704 0 0 .3003 -.132 1.934)" fill="#000091" stroke="#000091"/></svg>

Before

Width:  |  Height:  |  Size: 594 B

After

Width:  |  Height:  |  Size: 594 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><switch transform="translate(0 -101)"><g fill="#0069cc"><path d="M21.406 118.453a1.422 1.422 0 0 0-.56-1.888c-.69-.372-1.298.088-1.67.778-.836 1.592-2.266 2.919-4.049 3.76-3.765 1.769-8.693.51-11.063-2.9-2.87-4.143-1.409-10.218 2.871-12.7 3.98-2.302 9.506-.862 11.925 3.05l-1.96 1.162c-.508.302-.502 1.049.036 1.323l5.798 2.966a.755.755 0 0 0 1.11-.659l.156-6.473c.016-.604-.637-.967-1.146-.664l-1.78 1.057c-3.384-5.589-10.81-7.243-16.272-3.434-4.541 3.2-6.107 9.354-3.633 14.358 2.977 5.956 10.364 8.071 16.004 4.72a11.39 11.39 0 0 0 4.233-4.456z"/></g></switch></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24"><switch transform="translate(0 -101)"><g fill="#000091"><path d="M21.406 118.453a1.422 1.422 0 0 0-.56-1.888c-.69-.372-1.298.088-1.67.778-.836 1.592-2.266 2.919-4.049 3.76-3.765 1.769-8.693.51-11.063-2.9-2.87-4.143-1.409-10.218 2.871-12.7 3.98-2.302 9.506-.862 11.925 3.05l-1.96 1.162c-.508.302-.502 1.049.036 1.323l5.798 2.966a.755.755 0 0 0 1.11-.659l.156-6.473c.016-.604-.637-.967-1.146-.664l-1.78 1.057c-3.384-5.589-10.81-7.243-16.272-3.434-4.541 3.2-6.107 9.354-3.633 14.358 2.977 5.956 10.364 8.071 16.004 4.72a11.39 11.39 0 0 0 4.233-4.456z"/></g></switch></svg>

Before

Width:  |  Height:  |  Size: 632 B

After

Width:  |  Height:  |  Size: 632 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M17 9A8 8 0 1 1 1 9a8 8 0 0 1 16 0zm-2.187 5.875l8 8" stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M17 9A8 8 0 1 1 1 9a8 8 0 0 1 16 0zm-2.187 5.875l8 8" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 298 B

After

Width:  |  Height:  |  Size: 298 B

View file

@ -1 +1 @@
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><g stroke-linecap="round" stroke-linejoin="round" stroke="#0069CC" stroke-width="2"><path d="M20.3 12H10m6.63 4L21 12l-4.37-4"/><path d="M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14c0 1.1.901 2 2 2h14c1.099 0 2-.9 2-2v-2"/></g></g></svg>
<svg width="24" height="24" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><g stroke-linecap="round" stroke-linejoin="round" stroke="#000091" stroke-width="2"><path d="M20.3 12H10m6.63 4L21 12l-4.37-4"/><path d="M21 7V5a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14c0 1.1.901 2 2 2h14c1.099 0 2-.9 2-2v-2"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 356 B

After

Width:  |  Height:  |  Size: 356 B

View file

@ -1 +1 @@
<svg height="25" viewBox="0 0 25 25" width="25" xmlns="http://www.w3.org/2000/svg"><path d="m20.37.5h-15.424l-4.246 5.69 12 18.31 12-18.31zm2.355 5.69-2.98 4.541c0-.006-.005-.011-.005-.011-.39-.975-.853-2.648-4.215-3.026 0 0-5.351.321-6.377-.563-1.025-.885-2.917-3.132 1.417-4.58 2.635-.885 5.716.377 5.998 3.887h3.488v-4.225zm-14.472 8.3a.148.148 0 0 0 -.021.034l-2.392-3.647.005-.01s.912.732 4.232.884c3.32.146 6.25.146 7.158 1.087.912.94-.769 2.704-4.791 2.462-.005 0-2.257-3.606-4.19-.811zm10.058-12.3s.21 1.578-.756 1.972c0 0-.084-.355-1.207-1.972zm-12.735 0h2.45c-.454.192-3.657 1.989-3.417 6.8v.023l-1.85-2.823zm4.073 14.496c.004 0 4.85.715 6.212-.186.059-.04.117-.079.18-.13l-3.299 5.031z" fill="#0069cc"/></svg>
<svg height="25" viewBox="0 0 25 25" width="25" xmlns="http://www.w3.org/2000/svg"><path d="m20.37.5h-15.424l-4.246 5.69 12 18.31 12-18.31zm2.355 5.69-2.98 4.541c0-.006-.005-.011-.005-.011-.39-.975-.853-2.648-4.215-3.026 0 0-5.351.321-6.377-.563-1.025-.885-2.917-3.132 1.417-4.58 2.635-.885 5.716.377 5.998 3.887h3.488v-4.225zm-14.472 8.3a.148.148 0 0 0 -.021.034l-2.392-3.647.005-.01s.912.732 4.232.884c3.32.146 6.25.146 7.158 1.087.912.94-.769 2.704-4.791 2.462-.005 0-2.257-3.606-4.19-.811zm10.058-12.3s.21 1.578-.756 1.972c0 0-.084-.355-1.207-1.972zm-12.735 0h2.45c-.454.192-3.657 1.989-3.417 6.8v.023l-1.85-2.823zm4.073 14.496c.004 0 4.85.715 6.212-.186.059-.04.117-.079.18-.13l-3.299 5.031z" fill="#000091"/></svg>

Before

Width:  |  Height:  |  Size: 720 B

After

Width:  |  Height:  |  Size: 720 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M11.595 11.813a2.319 2.319 0 0 0 2.323-2.327 2.319 2.319 0 0 0-2.323-2.326c-1.29 0-2.33 1.04-2.33 2.326a2.324 2.324 0 0 0 2.33 2.327zm-4.508 7.288V17.63c0-1.808 2.977-2.716 4.783-2.716 1.807 0 4.782.908 4.782 2.716v1.471l-.002.433a8.953 8.953 0 0 1-4.923 1.464A8.999 8.999 0 0 1 3.56 8.22m16.843 6.18A8.998 8.998 0 0 0 6.978 4.355"/><path d="M1 9.259l2.667-1.094 1.092 2.667m17.816 2.045l-2.154 1.606-1.607-2.152"/></g><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><g stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M11.595 11.813a2.319 2.319 0 0 0 2.323-2.327 2.319 2.319 0 0 0-2.323-2.326c-1.29 0-2.33 1.04-2.33 2.326a2.324 2.324 0 0 0 2.33 2.327zm-4.508 7.288V17.63c0-1.808 2.977-2.716 4.783-2.716 1.807 0 4.782.908 4.782 2.716v1.471l-.002.433a8.953 8.953 0 0 1-4.923 1.464A8.999 8.999 0 0 1 3.56 8.22m16.843 6.18A8.998 8.998 0 0 0 6.978 4.355"/><path d="M1 9.259l2.667-1.094 1.092 2.667m17.816 2.045l-2.154 1.606-1.607-2.152"/></g><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 665 B

After

Width:  |  Height:  |  Size: 665 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 66 KiB

After

Width:  |  Height:  |  Size: 5.3 KiB

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M6 18.857C6 20.037 6.749 21 7.667 21h8.666C17.25 21 18 20.037 18 18.857V6H6v12.857zM4 6h16M9 11v5m3-5v5m3-5v5M8.5 4.889c0-.858.696-1.89 1.556-1.89h3.888c.86 0 1.556 1.032 1.556 1.89" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M6 18.857C6 20.037 6.749 21 7.667 21h8.666C17.25 21 18 20.037 18 18.857V6H6v12.857zM4 6h16M9 11v5m3-5v5m3-5v5M8.5 4.889c0-.858.696-1.89 1.556-1.89h3.888c.86 0 1.556 1.032 1.556 1.89" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 427 B

After

Width:  |  Height:  |  Size: 427 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><g stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M23 12c0 6.076-4.924 11-11 11-6.074 0-11-4.924-11-11S5.926 1 12 1c6.076 0 11 4.924 11 11zM12 8v10"/><path d="M16 11l-4-4-4 4"/></g></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path d="M0 0h24v24H0z"/><g stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"><path d="M23 12c0 6.076-4.924 11-11 11-6.074 0-11-4.924-11-11S5.926 1 12 1c6.076 0 11 4.924 11 11zM12 8v10"/><path d="M16 11l-4-4-4 4"/></g></g></svg>

Before

Width:  |  Height:  |  Size: 377 B

After

Width:  |  Height:  |  Size: 377 B

View file

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 16.112v1.862C2 19.088 2.907 20 4.017 20h16.132c1.11 0 2.018-.912 2.018-2.026V7.85a2.028 2.028 0 0 0-2.018-2.025h-8.066L10.066 3.8h-6.05A2.02 2.02 0 0 0 2.01 5.825L2 8.015M3 12h7.467"/><path stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 9l-4 3 4 3"/><path d="M0 0h24v24H0z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><g fill="none" fill-rule="evenodd"><path stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M2 16.112v1.862C2 19.088 2.907 20 4.017 20h16.132c1.11 0 2.018-.912 2.018-2.026V7.85a2.028 2.028 0 0 0-2.018-2.025h-8.066L10.066 3.8h-6.05A2.02 2.02 0 0 0 2.01 5.825L2 8.015M3 12h7.467"/><path stroke="#0069CC" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 9l-4 3 4 3"/><path d="M0 0h24v24H0z"/></g></svg>

Before

Width:  |  Height:  |  Size: 536 B

After

Width:  |  Height:  |  Size: 536 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 5.7 KiB

View file

@ -1 +1 @@
<svg height="96" viewBox="0 0 94 96" width="94" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m17.334 12.334h39" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m26.09 7.316a2 2 0 1 1 -4.002-.001 2 2 0 0 1 4.002.001m6 0a2 2 0 1 1 -4.002-.001 2 2 0 0 1 4.002.001m6 0a2 2 0 1 1 -4.002-.001 2 2 0 0 1 4.002.001" fill="#0069cc"/><path d="m82.334 39.334h-55m55 9h-53m53 8h-47.339m47.339 9h-42.982m14.982-35h-27m31 44h-19.313m-1.687 20h52.773c1.506 0 2.227-2.268 2.227-3.773v-59.227m-31-29h-40.773c-1.506 0-3.227.174-3.227 1.68v43.32" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m62.284 30.249s2.225-6.485 2.104-6.69l-.033-.056a14.908 14.908 0 0 1 -2.019-7.503c0-8.284 6.715-15 14.998-15 8.285 0 15 6.716 15 15s-6.715 15-15 15c-3.072 0-5.926-.929-8.306-2.513.003.001.013.01.013.01z" fill="#d9e9fd"/><path d="m62.284 30.249s2.225-6.485 2.104-6.69l-.033-.056a14.908 14.908 0 0 1 -2.019-7.503c0-8.284 6.715-15 14.998-15 8.285 0 15 6.716 15 15s-6.715 15-15 15c-3.072 0-5.926-.929-8.306-2.513.003.001.013.01.013.01z" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m71.667 16.167a1.501 1.501 0 1 1 -3.002 0 1.501 1.501 0 0 1 3.002 0m7.086 0a1.501 1.501 0 1 1 -3.002 0 1.501 1.501 0 0 1 3.002 0m7.086 0a1.501 1.501 0 1 1 -3.002 0 1.501 1.501 0 0 1 3.002 0" fill="#0069cc"/><path d="m1 87.05c4.277 4.37 10.235 7.094 16.834 7.094s12.555-2.725 16.833-7.096c-1.229-4.143-4.164-8.141-10.997-8.141 0 0-2.18 2.123-5.836 2.123-3.659 0-5.836-2.123-5.836-2.123-6.834 0-9.768 3.998-10.998 8.143" fill="#d9e9fd"/><path d="m1 87.05c4.277 4.37 10.235 7.094 16.834 7.094s12.555-2.725 16.833-7.096c-1.229-4.143-4.164-8.141-10.997-8.141 0 0-2.18 2.123-5.836 2.123-3.659 0-5.836-2.123-5.836-2.123-6.834 0-9.768 3.998-10.998 8.143z" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m17.834 72.32c5.044 0 9.138-4.069 9.138-9.083 0-5.025-4.094-9.094-9.138-9.094s-9.138 4.07-9.138 9.094c0 5.014 4.096 9.082 9.138 9.082" fill="#d9e9fd"/><path d="m17.834 72.32c5.044 0 9.138-4.069 9.138-9.083 0-5.025-4.094-9.094-9.138-9.094s-9.138 4.07-9.138 9.094c0 5.014 4.096 9.082 9.138 9.082z" stroke="#0069cc" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></svg>
<svg height="96" viewBox="0 0 94 96" width="94" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><path d="m17.334 12.334h39" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m26.09 7.316a2 2 0 1 1 -4.002-.001 2 2 0 0 1 4.002.001m6 0a2 2 0 1 1 -4.002-.001 2 2 0 0 1 4.002.001m6 0a2 2 0 1 1 -4.002-.001 2 2 0 0 1 4.002.001" fill="#7F7FC8"/><path d="m82.334 39.334h-55m55 9h-53m53 8h-47.339m47.339 9h-42.982m14.982-35h-27m31 44h-19.313m-1.687 20h52.773c1.506 0 2.227-2.268 2.227-3.773v-59.227m-31-29h-40.773c-1.506 0-3.227.174-3.227 1.68v43.32" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m62.284 30.249s2.225-6.485 2.104-6.69l-.033-.056a14.908 14.908 0 0 1 -2.019-7.503c0-8.284 6.715-15 14.998-15 8.285 0 15 6.716 15 15s-6.715 15-15 15c-3.072 0-5.926-.929-8.306-2.513.003.001.013.01.013.01z" fill="#d9e9fd"/><path d="m62.284 30.249s2.225-6.485 2.104-6.69l-.033-.056a14.908 14.908 0 0 1 -2.019-7.503c0-8.284 6.715-15 14.998-15 8.285 0 15 6.716 15 15s-6.715 15-15 15c-3.072 0-5.926-.929-8.306-2.513.003.001.013.01.013.01z" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m71.667 16.167a1.501 1.501 0 1 1 -3.002 0 1.501 1.501 0 0 1 3.002 0m7.086 0a1.501 1.501 0 1 1 -3.002 0 1.501 1.501 0 0 1 3.002 0m7.086 0a1.501 1.501 0 1 1 -3.002 0 1.501 1.501 0 0 1 3.002 0" fill="#7F7FC8"/><path d="m1 87.05c4.277 4.37 10.235 7.094 16.834 7.094s12.555-2.725 16.833-7.096c-1.229-4.143-4.164-8.141-10.997-8.141 0 0-2.18 2.123-5.836 2.123-3.659 0-5.836-2.123-5.836-2.123-6.834 0-9.768 3.998-10.998 8.143" fill="#d9e9fd"/><path d="m1 87.05c4.277 4.37 10.235 7.094 16.834 7.094s12.555-2.725 16.833-7.096c-1.229-4.143-4.164-8.141-10.997-8.141 0 0-2.18 2.123-5.836 2.123-3.659 0-5.836-2.123-5.836-2.123-6.834 0-9.768 3.998-10.998 8.143z" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/><path d="m17.834 72.32c5.044 0 9.138-4.069 9.138-9.083 0-5.025-4.094-9.094-9.138-9.094s-9.138 4.07-9.138 9.094c0 5.014 4.096 9.082 9.138 9.082" fill="#d9e9fd"/><path d="m17.834 72.32c5.044 0 9.138-4.069 9.138-9.083 0-5.025-4.094-9.094-9.138-9.094s-9.138 4.07-9.138 9.094c0 5.014 4.096 9.082 9.138 9.082z" stroke="#000091" stroke-linecap="round" stroke-linejoin="round" stroke-width="2"/></g></svg>

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

@ -1,4 +1,3 @@
$blue: #0069CC;
$light-blue: #1C7EC9;
$lighter-blue: #C3D9FF;
$black: #333333;
@ -21,3 +20,8 @@ $orange: #F28900;
$orange-bg: lighten($orange, 35%);
$yellow: #FEF3B8;
$light-yellow: #FFFFDE;
$blue-france-700: #00006D;
$blue-france-500: #000091;
$blue-france-400: #7F7FC8;
$g700: #383838;

View file

@ -22,6 +22,6 @@
%outline {
&:active:not(:disabled),
&:focus {
outline: 3px solid $blue;
outline: 3px solid $blue-france-500;
}
}

View file

@ -20,26 +20,26 @@
&.active {
background-color: #FFFFFF;
border-top: 2px solid $blue;
border-top: 2px solid $blue-france-500;
border-left: 1px solid $border-grey;
border-right: 1px solid $border-grey;
a {
color: $blue;
color: $blue-france-500;
}
.badge {
color: $blue;
color: $blue-france-500;
}
}
&:hover {
a {
color: $blue;
color: $blue-france-500;
}
.badge {
color: $blue;
color: $blue-france-500;
}
}

View file

@ -19,7 +19,7 @@
}
&:last-child {
color: $blue;
color: $blue-france-500;
&::after {
content: none;

View file

@ -30,22 +30,22 @@
&.primary {
color: #FFFFFF;
border-color: $blue;
background-color: $blue;
border-color: $blue-france-700;
background-color: $blue-france-700;
&:hover:not(:disabled) {
background: $light-blue;
background: $blue-france-500;
}
}
&.secondary {
color: $blue;
border-color: $blue;
color: $blue-france-700;
border-color: $blue-france-700;
background-color: #FFFFFF;
&:hover:not(:disabled) {
color: #FFFFFF;
background: $light-blue;
background: $blue-france-700;
}
}
@ -160,7 +160,7 @@
&.icon-only {
&::after {
margin-left: 2px;
color: $blue;
color: $blue-france-500;
}
}
}
@ -223,7 +223,7 @@
cursor: default;
h4 {
color: $blue;
color: $blue-france-500;
}
}
@ -309,5 +309,5 @@
}
.link {
color: $blue;
color: $blue-france-500;
}

View file

@ -21,10 +21,10 @@
}
&.featured {
border-top: 8px solid $blue;
border-top: 8px solid $blue-france-500;
.card-title {
color: $blue;
color: $blue-france-500;
}
}

View file

@ -20,7 +20,7 @@
}
.card-admin-status-todo {
color: #246AC5;
color: $blue-france-500;
}
.card-admin-title {
@ -42,10 +42,10 @@
}
&:hover {
color: $blue;
color: $blue-france-500;
.button {
color: $blue;
color: $blue-france-500;
}
}
}

View file

@ -46,7 +46,7 @@ strong {
}
a {
color: $blue;
color: $blue-france-500;
}
a[target="_blank"]::after {

View file

@ -8,7 +8,7 @@
}
.text-info {
color: $blue;
color: $blue-france-500;
}
.text-warning {

View file

@ -215,8 +215,8 @@
}
&:focus {
border: 1px solid $blue;
box-shadow: 0px 0px 2px 1px $blue;
border: 1px solid $blue-france-500;
box-shadow: 0px 0px 2px 1px $blue-france-500;
}
// Hide the browser default invalidity indicator until the field is touched
@ -306,7 +306,7 @@
}
[data-reach-combobox-input]:focus {
border-color: $blue;
border-color: $blue-france-500;
}
[data-reach-combobox-token-list] {
@ -379,15 +379,15 @@
.header-section {
display: inline-block;
color: $blue;
color: $blue-france-500;
font-size: 30px;
margin-bottom: 3 * $default-padding;
border-bottom: 3px solid $blue;
border-bottom: 3px solid $blue-france-500;
}
.header-subsection {
font-size: 22px;
color: $blue;
color: $blue-france-500;
margin-bottom: $default-padding;
}

View file

@ -13,7 +13,7 @@
.help-dropdown-title {
font-size: 16px;
color: $blue;
color: $blue-france-500;
}
.dropdown-items li.help-dropdown-service {
@ -25,7 +25,7 @@
a {
display: inline;
color: $blue;
color: $blue-france-500;
}
}

View file

@ -13,8 +13,8 @@
&.instruction {
background-color: #FFFFFF;
color: $blue;
border: 1px solid $blue;
color: $blue-france-500;
border: 1px solid $blue-france-500;
}
&.en-instruction {

View file

@ -37,7 +37,7 @@ $landing-breakpoint: 1040px;
}
.hero-tagline-em {
color: $blue;
color: $blue-france-500;
font-size: 40px;
font-style: normal;
font-weight: bold;
@ -62,10 +62,11 @@ $landing-breakpoint: 1040px;
text-align: center;
margin-bottom: 40px;
margin-top: 0;
color: $g700;
}
.features-panel {
background-color: $blue;
background-color: $blue-france-500;
}
.features-panel-title {
@ -185,7 +186,7 @@ $landing-breakpoint: 1040px;
}
.number-value {
color: $blue;
color: $blue-france-500;
font-weight: bold;
font-size: 36px;
}
@ -193,6 +194,7 @@ $landing-breakpoint: 1040px;
.number-label {
font-weight: bold;
font-size: 20px;
color: $g700;
}
$users-breakpoint: 950px;
@ -248,7 +250,7 @@ $users-breakpoint: 950px;
}
.cta-panel {
background-color: $blue;
background-color: $blue-france-500;
color: #FFFFFF;
}
@ -293,11 +295,21 @@ $users-breakpoint: 950px;
font-size: 24px;
font-weight: bold;
margin-top: 13px;
color: #FFFFFF;
&.grey {
color: $g700;
}
}
.cta-panel-explanation {
font-size: 24px;
margin-bottom: 10px;
color: #FFFFFF;
&.grey {
color: $g700;
}
}
.role-panel-title {
@ -305,6 +317,7 @@ $users-breakpoint: 950px;
font-weight: bold;
line-height: 36px;
margin-bottom: 15px;
color: $g700;
}
.role-panel-explanation {
@ -374,12 +387,12 @@ $cta-panel-button-border-size: 2px;
.cta-panel-button-blue {
@include cta-panel-button;
border: $cta-panel-button-border-size solid $light-blue;
color: $light-blue;
border: $cta-panel-button-border-size solid $blue-france-700;
color: $blue-france-700;
&:hover {
color: #FFFFFF;
background-color: $light-blue;
background-color: $blue-france-500;
text-decoration: none;
&:focus {
@ -388,7 +401,7 @@ $cta-panel-button-border-size: 2px;
}
&:focus {
color: $light-blue;
color: $blue-france-500;
text-decoration: none;
}
}
@ -406,13 +419,13 @@ $cta-panel-button-border-size: 2px;
.role-panel-button-primary {
@include role-button;
background-color: $blue;
background-color: $blue-france-700;
color: #FFFFFF;
&:hover {
color: #FFFFFF;
text-decoration: none;
background-color: $light-blue;
background-color: $blue-france-500;
}
&:focus {
@ -423,9 +436,9 @@ $cta-panel-button-border-size: 2px;
.role-panel-button-secondary {
@include role-button;
border: $cta-panel-button-border-size solid $blue;
border: $cta-panel-button-border-size solid $blue-france-700;
line-height: 50px - 2 * $cta-panel-button-border-size;
color: $blue;
color: $blue-france-700;
margin-left: 10px;
@media (max-width: $users-breakpoint) {
@ -433,8 +446,8 @@ $cta-panel-button-border-size: 2px;
}
&:hover {
color: $light-blue;
border: $cta-panel-button-border-size solid $light-blue;
color: $blue-france-500;
border: $cta-panel-button-border-size solid $blue-france-500;
text-decoration: none;
}

View file

@ -97,7 +97,7 @@ footer {
&:hover,
&:focus {
color: $blue;
color: $blue-france-700;
text-decoration: none;
}
}

View file

@ -27,6 +27,7 @@ $header-mobile-breakpoint: 550px;
display: flex;
flex-wrap: wrap;
align-items: center;
color: $blue-france-500;
img {
margin-right: 10px;
@ -65,8 +66,8 @@ $header-mobile-breakpoint: 550px;
&.active,
&:hover {
color: $blue;
border-bottom: 2px solid $blue;
color: $blue-france-500;
border-bottom: 2px solid $blue-france-500;
&.contact-link {
position: relative;
@ -85,7 +86,7 @@ $header-mobile-breakpoint: 550px;
position: absolute;
left: -165px;
background: #FFFFFF;
border: 2px solid $blue;
border: 2px solid $blue-france-500;
border-radius: 5px;
padding: 15px;
width: 400px;
@ -115,7 +116,7 @@ $header-mobile-breakpoint: 550px;
&::before {
border-color: rgba(255, 255, 255, 0);
border-bottom-color: $blue;
border-bottom-color: $blue-france-500;
border-width: 18px;
margin-left: -18px;
}

View file

@ -6,7 +6,7 @@
}
.icon.download-white {
background-color: $blue;
box-shadow: 0px 0px 1px 2px $blue;
background-color: $blue-france-500;
box-shadow: 0px 0px 1px 2px $blue-france-500;
}
}

View file

@ -53,7 +53,7 @@
&.type-header-section {
&,
.head {
background-color: $blue;
background-color: $blue-france-500;
}
.head .icon {

View file

@ -18,7 +18,7 @@ $procedure-description-line-height: 22px;
.simple {
font-size: 24px;
color: $blue;
color: $blue-france-500;
font-weight: bold;
}
@ -61,7 +61,7 @@ $procedure-description-line-height: 22px;
}
.procedure-auto-archive-title {
border-bottom: 1px dotted $blue;
border-bottom: 1px dotted $blue-france-500;
}
.procedure-description {

View file

@ -105,7 +105,7 @@
}
[data-reach-combobox-input]:focus {
border-color: $blue;
border-color: $blue-france-500;
}
}
}

View file

@ -1,7 +1,6 @@
@import "colors";
$dark-grey: #333333;
$light-grey: #999999;
$blue: rgba(61, 149, 236, 1);
$blue-hover: rgba(61, 149, 236, 0.8);
$default-space: 15px;
@ -86,11 +85,11 @@ $segmented-control-item-border-radius: 2 * $default-space;
.segmented-control-item {
display: inline-block;
font-size: 15px;
border: 2px solid $blue;
border: 2px solid $blue-france-700;
margin-right: -2px;
padding-left: $segmented-control-item-horizontal-padding;
padding-right: $segmented-control-item-horizontal-padding;
color: $blue;
color: $blue-france-700;
&:first-of-type {
border-radius: $segmented-control-item-border-radius 0px 0px $segmented-control-item-border-radius;
@ -102,14 +101,14 @@ $segmented-control-item-border-radius: 2 * $default-space;
}
&:hover {
background-color: $blue-hover;
background-color: $blue-france-500;
color: #FFFFFF;
cursor: pointer;
}
}
.segmented-control-item-active {
background-color: $blue;
background-color: $blue-france-700;
color: #FFFFFF;
}
@ -146,11 +145,11 @@ $big-number-card-padding: 2 * $segmented-control-item-border-radius;
font-size: 90px;
line-height: 90px;
font-weight: bold;
color: $blue;
color: $blue-france-500;
}
.big-number-card-detail {
display: block;
text-align: center;
color: $blue;
color: $blue-france-500;
}

View file

@ -42,7 +42,7 @@
@include vertical-padding($default-spacer);
&.header-section {
color: $blue;
color: $blue-france-500;
font-size: 20px;
}
}

View file

@ -49,8 +49,8 @@ input:checked + .toggle-switch-control {
}
input:focus + .toggle-switch-control {
border-color: $blue;
box-shadow: 0px 0px 2px 1px $blue;
border-color: $blue-france-500;
box-shadow: 0px 0px 2px 1px $blue-france-500;
}
input:checked + .toggle-switch-control::before {

View file

@ -180,7 +180,6 @@ class ApplicationController < ActionController::Base
payload.merge!({
user_agent: request.user_agent,
user_id: current_user&.id,
user_email: current_user&.email,
user_roles: current_user_roles
}.compact)

View file

@ -122,6 +122,16 @@ module Instructeurs
.deleted_dossiers
.order(:dossier_id)
.page params[:page]
@a_suivre_count, @suivis_count, @traites_count, @tous_count, @archives_count = current_instructeur
.dossiers_count_summary(groupe_instructeur_ids)
.fetch_values('a_suivre', 'suivis', 'traites', 'tous', 'archives')
notifications = current_instructeur.notifications_for_groupe_instructeurs(groupe_instructeur_ids)
@has_en_cours_notifications = notifications[:en_cours].present?
@has_termine_notifications = notifications[:termines].present?
@statut = 'supprime'
end
def update_displayed_fields

View file

@ -196,6 +196,13 @@ module NewAdministrateur
notice: "Le routage est activé."
end
def update_instructeurs_self_management_enabled
procedure.update!(instructeurs_self_management_enabled_params)
redirect_to admin_procedure_groupe_instructeurs_path(procedure),
notice: "Lautogestion des instructeurs est #{procedure.instructeurs_self_management_enabled? ? "activée" : "désactivée"}."
end
def import
if !CSV_ACCEPTED_CONTENT_TYPES.include?(group_csv_file.content_type) && !CSV_ACCEPTED_CONTENT_TYPES.include?(marcel_content_type)
flash[:alert] = "Importation impossible : veuillez importer un fichier CSV"
@ -297,5 +304,9 @@ module NewAdministrateur
def marcel_content_type
Marcel::MimeType.for(group_csv_file.read, name: group_csv_file.original_filename, declared_type: group_csv_file.content_type)
end
def instructeurs_self_management_enabled_params
params.require(:procedure).permit(:instructeurs_self_management_enabled)
end
end
end

View file

@ -57,4 +57,15 @@ module ProcedureHelper
def procedure_auto_archive_datetime(procedure)
procedure_auto_archive_date(procedure) + ' ' + procedure_auto_archive_time(procedure)
end
def can_manage_groupe_instructeurs?(procedure)
procedure.routee? && current_administrateur&.owns?(procedure)
end
def can_send_groupe_message?(procedure)
procedure.dossiers
.state_brouillon
.includes(:groupe_instructeur)
.exists?(groupe_instructeur: current_instructeur.groupe_instructeurs)
end
end

View file

@ -2,6 +2,7 @@ class APIParticulier::API
include APIParticulier::Error
INTROSPECT_RESOURCE_NAME = "introspect"
COMPOSITION_FAMILIALE_RESOURCE_NAME = "v2/composition-familiale"
TIMEOUT = 20
@ -10,7 +11,13 @@ class APIParticulier::API
end
def scopes
get(INTROSPECT_RESOURCE_NAME)[:scopes]
get(INTROSPECT_RESOURCE_NAME)['scopes']
end
def composition_familiale(numero_allocataire, code_postal)
get(COMPOSITION_FAMILIALE_RESOURCE_NAME,
numeroAllocataire: numero_allocataire,
codePostal: code_postal)
end
private
@ -24,7 +31,7 @@ class APIParticulier::API
timeout: TIMEOUT)
if response.success?
JSON.parse(response.body, symbolize_names: true)
JSON.parse(response.body)
elsif response.code == 401
raise Unauthorized.new(response)
else

View file

@ -0,0 +1,47 @@
class APIParticulier::CNAFAdapter
class InvalidSchemaError < ::StandardError
def initialize(errors)
super(errors.map(&:to_json).join("\n"))
end
end
def initialize(api_particulier_token, numero_allocataire, code_postal, requested_sources)
@api = APIParticulier::API.new(api_particulier_token)
@numero_allocataire = numero_allocataire
@code_postal = code_postal
@requested_sources = requested_sources
end
def to_params
@api.composition_familiale(@numero_allocataire, @code_postal)
.tap { |d| ensure_valid_schema!(d) }
.then { |d| extract_requested_sources(d) }
end
private
def ensure_valid_schema!(data)
if !schemer.valid?(data)
errors = schemer.validate(data).to_a
raise InvalidSchemaError.new(errors)
end
end
def schemer
@schemer ||= JSONSchemer.schema(Rails.root.join('app/schemas/composition-familiale.json'))
end
def extract_requested_sources(data)
@requested_sources['cnaf']&.map do |(scope, sources)|
case scope
when 'enfants', 'allocataires'
{ scope => data[scope].map { |s| s.slice(*sources) } }
when 'quotient_familial'
{ scope => data.slice(*sources) }
else
{ scope => data[scope].slice(*sources) }
end
end
&.reduce(&:deep_merge) || {}
end
end

View file

@ -52,10 +52,10 @@ module APIParticulier
def providers
{
'cnaf' => {
'allocataires' => ['noms_prenoms', 'date_de_naissance', 'sexe'],
'enfants' => ['noms_prenoms', 'date_de_naissance', 'sexe'],
'adresse' => ['identite', 'complement_d_identite', 'complement_d_identite_geo', 'numero_et_rue', 'lieu_dit', 'code_postal_et_ville', 'pays'],
'quotient_familial' => ['quotient_familial', 'annee', 'mois']
'allocataires' => ['nomPrenom', 'dateDeNaissance', 'sexe'],
'enfants' => ['nomPrenom', 'dateDeNaissance', 'sexe'],
'adresse' => ['identite', 'complementIdentite', 'complementIdentiteGeo', 'numeroRue', 'lieuDit', 'codePostalVille', 'pays'],
'quotient_familial' => ['quotientFamilial', 'annee', 'mois']
}
}
end

View file

@ -25,6 +25,7 @@
# experts_require_administrateur_invitation :boolean default(FALSE)
# for_individual :boolean default(FALSE)
# hidden_at :datetime
# instructeurs_self_management_enabled :boolean
# juridique_required :boolean default(TRUE)
# libelle :string
# lien_demarche :string
@ -636,6 +637,10 @@ class Procedure < ApplicationRecord
routing_enabled? || groupe_instructeurs.size > 1
end
def instructeurs_self_management?
routee? || instructeurs_self_management_enabled?
end
def defaut_groupe_instructeur_for_new_dossier
if !routee? || feature_enabled?(:procedure_routage_api)
defaut_groupe_instructeur

View file

@ -291,16 +291,19 @@ class TypeDeChamp < ApplicationRecord
def self.type_de_champ_types_for(procedure, user)
has_legacy_number = (procedure.types_de_champ + procedure.types_de_champ_private).any?(&:legacy_number?)
type_champs.map do |type_champ|
[I18n.t("activerecord.attributes.type_de_champ.type_champs.#{type_champ.last}"), type_champ.first]
end.filter do |tdc|
if tdc.last == TypeDeChamp.type_champs.fetch(:number)
has_legacy_number
else
feature_name = FEATURE_FLAGS[tdc.last]
feature_name.blank? || Flipper.enabled?(feature_name, user)
end
show_number = -> (tdc) { tdc != TypeDeChamp.type_champs.fetch(:number) || has_legacy_number }
enabled_featured_champ = -> (tdc) do
feature_name = FEATURE_FLAGS[tdc]
feature_name.blank? || Flipper.enabled?(feature_name, user)
end
type_champs
.keys
.filter(&show_number)
.filter(&enabled_featured_champ)
.map { |tdc| [I18n.t("activerecord.attributes.type_de_champ.type_champs.#{tdc}"), tdc] }
.sort_by(&:first)
end
TYPES_DE_CHAMP_BASE = {

View file

@ -0,0 +1,70 @@
{
"$schema": "http://json-schema.org/draft-07/schema#",
"$id": "http://demarches-simplifiees.fr/composition-familiale.schema.json",
"title": "composition familiale",
"type": "object",
"properties": {
"adresse": {
"type": "object",
"properties": {
"codePostalVille": {
"type": "string"
},
"identite": {
"type": "string"
},
"complementIdentite": {
"type": "string"
},
"numeroRue": {
"type": "string"
},
"pays": {
"type": "string"
},
"complementIdentiteGeo": {
"type": "string"
},
"lieuDit": {
"type": "string"
}
}
},
"allocataires": {
"type": "array",
"items": { "$ref": "#/$defs/person" }
},
"enfants": {
"type": "array",
"items": { "$ref": "#/$defs/person" }
},
"quotientFamilial": {
"type": "integer"
},
"annee": {
"type": "integer"
},
"mois": {
"type": "integer",
"minimum": 1,
"maximum": 12
}
},
"$defs": {
"person": {
"type": "object",
"properties": {
"nomPrenom": {
"type": "string"
},
"dateDeNaissance": {
"type": "string",
"pattern": "^[0-9]{8}$"
},
"sexe": {
"enum": ["F", "M"]
}
}
}
}
}

View file

@ -1,12 +1,23 @@
- content_for(:title, "Instructeurs du groupe #{@groupe_instructeur.label}")
- if @procedure.routee?
- content_for(:title, "Instructeurs du groupe #{@groupe_instructeur.label}")
= render partial: 'new_administrateur/breadcrumbs',
locals: { steps: [link_to(@procedure.libelle, instructeur_procedure_path(@procedure)),
link_to('Groupes dinstructeurs', instructeur_groupes_path(@procedure)),
@groupe_instructeur.label] }
= render partial: 'new_administrateur/breadcrumbs',
locals: { steps: [link_to(@procedure.libelle, instructeur_procedure_path(@procedure)),
link_to('Groupes dinstructeurs', instructeur_groupes_path(@procedure)),
@groupe_instructeur.label] }
- else
- content_for(:title, "Instructeurs de la démarche #{@procedure.libelle}")
= render partial: 'new_administrateur/breadcrumbs',
locals: { steps: [link_to(@procedure.libelle, instructeur_procedure_path(@procedure)), 'Instructeurs'] }
.container.groupe-instructeur
%h1 Groupe « #{@groupe_instructeur.label} »
%h1
- if @procedure.routee?
Groupe « #{@groupe_instructeur.label} »
- else
Démarche « #{@procedure.libelle} »
.card.mt-2
.card-title Gestion des instructeurs
@ -27,10 +38,11 @@
- @instructeurs.each do |instructeur|
%tr
%td= instructeur.email
- confirmation_message = @procedure.routee? ? "Êtes-vous sûr de vouloir retirer linstructeur « #{instructeur.email} » du groupe « #{@groupe_instructeur.label} » ?" : "Êtes-vous sûr de vouloir retirer linstructeur « #{instructeur.email} » de la démarche ?"
%td.actions= button_to 'retirer',
{ action: :remove_instructeur },
{ method: :delete,
data: { confirm: "Êtes-vous sûr de vouloir retirer linstructeur « #{instructeur.email} » du groupe  « #{@groupe_instructeur.label} » ?" },
data: { confirm: confirmation_message },
params: { instructeur: { id: instructeur.id }},
class: 'button' }

View file

@ -0,0 +1,46 @@
.procedure-header
%h1= procedure_libelle procedure
= link_to 'gestion des notifications', email_notifications_instructeur_procedure_path(procedure), class: 'header-link'
|
= link_to 'statistiques', stats_instructeur_procedure_path(procedure), class: 'header-link'
- if procedure.instructeurs_self_management?
|
- if can_manage_groupe_instructeurs?(procedure)
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(procedure), class: 'header-link'
- elsif procedure.routee?
= link_to 'instructeurs', instructeur_groupes_path(procedure), class: 'header-link'
- else
= link_to 'instructeurs', instructeur_groupe_path(procedure, procedure.defaut_groupe_instructeur), class: 'header-link'
- if can_send_groupe_message?(procedure)
|
= link_to 'contacter les usagers (brouillon)', email_usagers_instructeur_procedure_path(procedure), class: 'header-link'
%ul.tabs
= tab_item('à suivre',
instructeur_procedure_path(procedure, statut: 'a-suivre'),
active: statut == 'a-suivre',
badge: number_with_html_delimiter(a_suivre_count))
= tab_item(t('pluralize.followed', count: suivis_count),
instructeur_procedure_path(procedure, statut: 'suivis'),
active: statut == 'suivis',
badge: number_with_html_delimiter(suivis_count),
notification: has_en_cours_notifications)
= tab_item(t('pluralize.processed', count: traites_count),
instructeur_procedure_path(procedure, statut: 'traites'),
active: statut == 'traites',
badge: number_with_html_delimiter(traites_count),
notification: has_termine_notifications)
= tab_item('au total',
instructeur_procedure_path(procedure, statut: 'tous'),
active: statut == 'tous',
badge: number_with_html_delimiter(tous_count))
= tab_item(t('pluralize.archived', count: archives_count),
instructeur_procedure_path(procedure, statut: 'archives'),
active: statut == 'archives',
badge: number_with_html_delimiter(archives_count))

View file

@ -7,35 +7,15 @@
.procedure-logo{ style: "background-image: url(#{@procedure.logo_url})",
role: 'img', 'aria-label': "logo de la démarche #{@procedure.libelle}" }
.procedure-header
%h1= procedure_libelle @procedure
= link_to 'gestion des notifications', email_notifications_instructeur_procedure_path(@procedure), class: 'header-link'
|
= link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link'
- if @procedure.routee?
|
- if current_administrateur.present? && current_administrateur.owns?(@procedure)
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(@procedure), class: 'header-link'
- else
= link_to 'instructeurs', instructeur_groupes_path(@procedure), class: 'header-link'
%ul.tabs
= tab_item('à suivre',
instructeur_procedure_path(@procedure, statut: 'a-suivre'))
= tab_item(t('pluralize.followed', count: 1),
instructeur_procedure_path(@procedure, statut: 'suivis'),
active: @statut == 'suivis')
= tab_item(t('pluralize.processed', count: 1),
instructeur_procedure_path(@procedure, statut: 'traites'))
= tab_item('tous les dossiers',
instructeur_procedure_path(@procedure, statut: 'tous'))
= tab_item(t('pluralize.archived', count: 1),
instructeur_procedure_path(@procedure, statut: 'archives'),
active: true)
= render partial: 'header', locals: { procedure: @procedure,
statut: @statut,
a_suivre_count: @a_suivre_count,
suivis_count: @suivis_count,
traites_count: @traites_count,
tous_count: @tous_count,
archives_count: @archives_count,
has_en_cours_notifications: @has_en_cours_notifications,
has_termine_notifications: @has_termine_notifications }
.container
%h1.titre-dossiers Dossiers supprimés

View file

@ -7,49 +7,15 @@
.procedure-logo{ style: "background-image: url(#{@procedure.logo_url})",
role: 'img', 'aria-label': "logo de la démarche #{@procedure.libelle}" }
.procedure-header
%h1= procedure_libelle @procedure
= link_to 'gestion des notifications', email_notifications_instructeur_procedure_path(@procedure), class: 'header-link'
|
= link_to 'statistiques', stats_instructeur_procedure_path(@procedure), class: 'header-link'
- if @procedure.routee?
|
- if current_administrateur.present? && current_administrateur.owns?(@procedure)
= link_to 'instructeurs', admin_procedure_groupe_instructeurs_path(@procedure), class: 'header-link'
- else
= link_to 'instructeurs', instructeur_groupes_path(@procedure), class: 'header-link'
- if @procedure.dossiers.state_brouillon.where(groupe_instructeur: current_instructeur.groupe_instructeur_ids).includes(:groupe_instructeur).present?
|
= link_to 'contacter les usagers (brouillon)', email_usagers_instructeur_procedure_path(@procedure), class: 'header-link'
%ul.tabs
= tab_item('à suivre',
instructeur_procedure_path(@procedure, statut: 'a-suivre'),
active: @statut == 'a-suivre',
badge: number_with_html_delimiter(@a_suivre_count))
= tab_item(t('pluralize.followed', count: @suivis_count),
instructeur_procedure_path(@procedure, statut: 'suivis'),
active: @statut == 'suivis',
badge: number_with_html_delimiter(@suivis_count),
notification: @has_en_cours_notifications)
= tab_item(t('pluralize.processed', count: @traites_count),
instructeur_procedure_path(@procedure, statut: 'traites'),
active: @statut == 'traites',
badge: number_with_html_delimiter(@traites_count),
notification: @has_termine_notifications)
= tab_item('au total',
instructeur_procedure_path(@procedure, statut: 'tous'),
active: @statut == 'tous',
badge: number_with_html_delimiter(@tous_count))
= tab_item(t('pluralize.archived', count: @archives_count),
instructeur_procedure_path(@procedure, statut: 'archives'),
active: @statut == 'archives',
badge: number_with_html_delimiter(@archives_count))
= render partial: 'header', locals: { procedure: @procedure,
statut: @statut,
a_suivre_count: @a_suivre_count,
suivis_count: @suivis_count,
traites_count: @traites_count,
tous_count: @tous_count,
archives_count: @archives_count,
has_en_cours_notifications: @has_en_cours_notifications,
has_termine_notifications: @has_termine_notifications }
.procedure-actions
= render partial: "download_dossiers", locals: { procedure: @procedure, exports: @exports, dossier_count: @tous_count + @archives_count }

View file

@ -2,4 +2,17 @@
.card-title Routage
%p.notice= t('.notice_html')
= link_to 'Activer le routage', update_routing_enabled_admin_procedure_groupe_instructeurs_path(procedure), class: 'button primary', method: 'patch'
= link_to t('.button.routing_enable'), update_routing_enabled_admin_procedure_groupe_instructeurs_path(procedure), class: 'button primary mt-1', method: 'patch'
.card-title.mt-4 Lautogestion des instructeurs
%p.notice= t('.self_managment_notice_html')
= form_for procedure,
method: :patch,
url: update_instructeurs_self_management_enabled_admin_procedure_groupe_instructeurs_path(procedure),
html: { class: 'form procedure-form__column--form no-background' } do |f|
%label.toggle-switch
= f.check_box :instructeurs_self_management_enabled, class: 'toggle-switch-checkbox', onchange: 'this.form.submit()'
%span.toggle-switch-control.round
%span.toggle-switch-label.on
%span.toggle-switch-label.off

View file

@ -8,14 +8,11 @@
Un service fourni par la
= link_to "DINUM", "https://numerique.gouv.fr/", title: "Direction Interministérielle au Numérique"
%br
et incubé par
= link_to "beta.gouv.fr", "https://beta.gouv.fr", title: "le site de Beta.gouv.fr"
%li
= link_to "https://numerique.gouv.fr/", title: "DINUM", 'aria-label': 'DINUM' do
%span.footer-logo.footer-logo-dinum{ role: 'img', 'aria-label': 'Logo DINUM' }
= link_to "https://beta.gouv.fr", title: "le site de Beta.gouv.fr", 'aria-label': 'beta.gouv.fr' do
%span.footer-logo.footer-logo-beta-gouv-fr{ role: 'img', 'aria-label': 'Logo beta.gouv.fr' }
%span.footer-logo.footer-logo-france{ role: 'img', 'aria-label': 'République Française' }
%li.footer-column
%ul.footer-links

View file

@ -87,8 +87,8 @@
.container
.cta-panel-wrapper
%div
%h2.cta-panel-title Administration : vous voulez dématerialiser ?
%p.cta-panel-explanation Proposez à vos usagers de remplir leurs dossiers en ligne
%h2.cta-panel-title.grey Administration : vous voulez dématerialiser ?
%p.cta-panel-explanation.grey Proposez à vos usagers de remplir leurs dossiers en ligne
%div
= link_to "Découvrez notre outil",
administration_path,

View file

@ -43,7 +43,7 @@
.chart-container
.chart
= pie_chart @dossiers_states_for_pie,
colors: ["rgba(222, 238, 265, 1)", "rgba(191, 220, 249, 1)", "rgba(113, 176, 239, 1)", "rgba(61, 149, 236, 1)"]
colors: ["#000091", "#7F7FC8", "#9A9AFF", "#00006D"]
.stat-card.stat-card-half.pull-left
%ul.segmented-control.pull-right

View file

@ -1,7 +1,7 @@
Chartkick.options = {
content_for: :charts_js,
defer: true,
colors: ["rgba(61, 149, 236, 1)"],
colors: ["#000091"],
thousands: ' ',
decimal: ','
}

View file

@ -14,6 +14,7 @@ ActiveSupport::Inflector.inflections(:en) do |inflect|
inflect.acronym 'JSON'
inflect.acronym 'RNA'
inflect.acronym 'URL'
inflect.acronym 'CNAF'
inflect.irregular 'type_de_champ', 'types_de_champ'
inflect.irregular 'type_de_champ_private', 'types_de_champ_private'
inflect.irregular 'procedure_revision_type_de_champ', 'procedure_revision_types_de_champ'

View file

@ -5,8 +5,8 @@ fr:
libelle: Caisse dallocations familiales (CAF)
scopes:
personne: &personne
noms_prenoms: noms et prénoms
date_de_naissance: date de naissance
nomPrenom: noms et prénoms
dateDeNaissance: date de naissance
sexe: genre
allocataires:
libelle: allocataires
@ -17,14 +17,14 @@ fr:
adresse:
libelle: adresse
identite: identité
complement_d_identite: complément didentité
complement_d_identite_geo: complément didentité géographique
numero_et_rue: numéro et rue
lieu_dit: lieu-dit
code_postal_et_ville: code postal et ville
complementIdentite: complément didentité
complementIdentiteGeo: complément didentité géographique
numeroRue: numéro et rue
lieuDit: lieu-dit
codePostalVille: code postal et ville
pays: pays
quotient_familial:
libelle: quotient familial
quotient_familial: quotient familial
quotientFamilial: quotient familial
mois: mois
annee: année

View file

@ -39,3 +39,8 @@ fr:
Cette fonctionnalité permet dacheminer les dossier vers chaque groupe, et de ne plus avoir besoin de filtrer ses dossiers parmi une grande quantité de demandes. Elle est donc particulièrement adaptée pour les démarches nationales instruites localement.
<br><br>
Les instructeurs ne voient que les dossiers les concernant, et nont donc pas accès aux données extérieures à leur périmètre.
self_managment_notice_html: |
Lautogestion des instructeurs permet aux instructeurs de gérer eux-mêmes la liste des instructeurs de la démarche.
button:
routing_enable: Activer le routage
self_managment_toggle: Activer lautogestion des instructeurs

View file

@ -424,6 +424,7 @@ Rails.application.routes.draw do
collection do
patch 'update_routing_criteria_name'
patch 'update_routing_enabled'
patch 'update_instructeurs_self_management_enabled'
post 'import'
end
end

View file

@ -0,0 +1,5 @@
class AddInstructeursSelfManagementEnabledToProcedures < ActiveRecord::Migration[6.1]
def change
add_column :procedures, :instructeurs_self_management_enabled, :boolean
end
end

View file

@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 2021_09_15_170019) do
ActiveRecord::Schema.define(version: 2021_09_23_083416) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -621,6 +621,7 @@ ActiveRecord::Schema.define(version: 2021_09_15_170019) do
t.string "encrypted_api_particulier_token"
t.text "api_particulier_scopes", default: [], array: true
t.jsonb "api_particulier_sources", default: {}
t.boolean "instructeurs_self_management_enabled"
t.index ["api_particulier_sources"], name: "index_procedures_on_api_particulier_sources", using: :gin
t.boolean "routing_enabled"
t.index ["declarative_with_state"], name: "index_procedures_on_declarative_with_state"

View file

@ -62,7 +62,6 @@ describe ApplicationController, type: :controller do
expect(payload).to eq({
user_agent: 'Rails Testing',
user_id: current_user.id,
user_email: current_user.email,
user_roles: 'User'
})
end
@ -86,7 +85,6 @@ describe ApplicationController, type: :controller do
expect(payload).to eq({
user_agent: 'Rails Testing',
user_id: current_user.id,
user_email: current_user.email,
user_roles: 'User, Instructeur, Administrateur, SuperAdmin'
})
end

View file

@ -40,7 +40,7 @@ describe NewAdministrateur::JetonParticulierController, type: :controller do
context "and the api response is a success" do
let(:cassette) { "api_particulier/success/introspect" }
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_sources: { cnaf: { allocataires: ['noms_prenoms'] } }) }
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_sources: { cnaf: { allocataires: ['nomPrenom'] } }) }
it 'saves the jeton' do
expect(flash.alert).to be_nil

View file

@ -4,18 +4,18 @@ describe NewAdministrateur::SourcesParticulierController, type: :controller do
before { sign_in(admin.user) }
describe "#show" do
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_scopes: ['cnaf_enfants'], api_particulier_sources: { cnaf: { enfants: ['noms_prenoms'] } }) }
let(:procedure) { create(:procedure, administrateur: admin, api_particulier_scopes: ['cnaf_enfants'], api_particulier_sources: { cnaf: { enfants: ['nomPrenom'] } }) }
render_views
subject { get :show, params: { procedure_id: procedure.id } }
it 'renders the sources form' do
expect(subject.body).to include(I18n.t('api_particulier.providers.cnaf.scopes.enfants.date_de_naissance'))
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=noms_prenoms][checked=checked]")
expect(subject.body).to include(I18n.t('api_particulier.providers.cnaf.scopes.enfants.dateDeNaissance'))
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=nomPrenom][checked=checked]")
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=date_de_naissance]")
expect(subject.body).not_to have_selector("input#api_particulier_sources_cnaf_enfants_[value=date_de_naissance][checked=checked]")
expect(subject.body).to have_selector("input#api_particulier_sources_cnaf_enfants_[value=dateDeNaissance]")
expect(subject.body).not_to have_selector("input#api_particulier_sources_cnaf_enfants_[value=dateDeNaissance][checked=checked]")
end
end
@ -47,12 +47,12 @@ describe NewAdministrateur::SourcesParticulierController, type: :controller do
context 'when an authorized source is requested' do
let(:requested_sources) do
{
api_particulier_sources: { cnaf: { enfants: ['noms_prenoms'] } }
api_particulier_sources: { cnaf: { enfants: ['nomPrenom'] } }
}
end
it 'saves the source' do
expect(procedure.api_particulier_sources).to eq("cnaf" => { "enfants" => ["noms_prenoms"] })
expect(procedure.api_particulier_sources).to eq("cnaf" => { "enfants" => ["nomPrenom"] })
expect(flash.notice).to eq(I18n.t(".new_administrateur.sources_particulier.update.sources_ok"))
end
end

View file

@ -0,0 +1,79 @@
---
http_interactions:
- request:
method: get
uri: https://particulier-test.api.gouv.fr/api/v2/composition-familiale?codePostal=92110&numeroAllocataire=5843972
body:
encoding: US-ASCII
string: ''
headers:
User-Agent:
- demarches-simplifiees.fr
Accept:
- application/json
X-Api-Key:
- 29eb50b65f64e8e00c0847a8bbcbd150e1f847
Content-Type:
- text/html; charset=utf-8
Expect:
- ''
response:
status:
code: 200
message: ''
headers:
Server:
- nginx
Date:
- Mon, 20 Sep 2021 20:01:39 GMT
Content-Type:
- application/json; charset=utf-8
Content-Length:
- '387'
X-Powered-By:
- Express
Vary:
- Origin
Etag:
- W/"183-5m9o/ng+PfdMOPeC0VBn5lqbziQ"
Strict-Transport-Security:
- max-age=15724800; includeSubdomains
body:
encoding: UTF-8
string: '
{
"adresse": {
"codePostalVille": "92110 Clichy",
"identite": "Mr SNOW Eric",
"complementIdentite": "ne connait rien",
"numeroRue": "109 rue La Boétie",
"pays": "FRANCE",
"complementIdentiteGeo": "au nord de paris",
"lieuDit": "glagla"
},
"allocataires": [
{
"nomPrenom": "ERIC SNOW",
"dateDeNaissance": "07011991",
"sexe": "M"
},
{
"nomPrenom": "SANSA SNOW",
"dateDeNaissance": "15011992",
"sexe": "F"
}
],
"enfants": [
{
"nomPrenom": "PAUL SNOW",
"dateDeNaissance": "04012018",
"sexe": "M"
}
],
"quotientFamilial": 1856,
"annee": 2021,
"mois": 6
}
'
recorded_at: Mon, 20 Sep 2021 20:01:39 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,79 @@
---
http_interactions:
- request:
method: get
uri: https://particulier-test.api.gouv.fr/api/v2/composition-familiale?codePostal=92110&numeroAllocataire=5843972
body:
encoding: US-ASCII
string: ''
headers:
User-Agent:
- demarches-simplifiees.fr
Accept:
- application/json
X-Api-Key:
- 29eb50b65f64e8e00c0847a8bbcbd150e1f847
Content-Type:
- text/html; charset=utf-8
Expect:
- ''
response:
status:
code: 200
message: ''
headers:
Server:
- nginx
Date:
- Mon, 20 Sep 2021 20:01:39 GMT
Content-Type:
- application/json; charset=utf-8
Content-Length:
- '387'
X-Powered-By:
- Express
Vary:
- Origin
Etag:
- W/"183-5m9o/ng+PfdMOPeC0VBn5lqbziQ"
Strict-Transport-Security:
- max-age=15724800; includeSubdomains
body:
encoding: UTF-8
string: '
{
"adresse": {
"codePostalVille": "92110 Clichy",
"identite": "Mr SNOW Eric",
"complementIdentite": "ne connait rien",
"numeroRue": "109 rue La Boétie",
"pays": "FRANCE",
"complementIdentiteGeo": "au nord de paris",
"lieuDit": "glagla"
},
"allocataires": [
{
"nomPrenom": "ERIC SNOW",
"dateDeNaissance": "07011991",
"sexe": "M"
},
{
"nomPrenom": "SANSA SNOW",
"dateDeNaissance": "15011992",
"sexe": "F"
}
],
"enfants": [
{
"nomPrenom": "PAUL SNOW",
"dateDeNaissance": "04012018",
"sexe": "M"
}
],
"quotientFamilial": 1856,
"annee": 2021,
"mois": 13
}
'
recorded_at: Mon, 20 Sep 2021 20:01:39 GMT
recorded_with: VCR 6.0.0

View file

@ -0,0 +1,35 @@
{
"allocataires": [
{
"dateDeNaissance": "07011991",
"nomPrenom": "ERIC SNOW",
"sexe": "M"
},
{
"dateDeNaissance": "15011992",
"nomPrenom": "SANSA SNOW",
"sexe": "F"
}
],
"enfants": [
{
"nomPrenom": "PAUL SNOW",
"dateDeNaissance": "04012018",
"sexe": "M"
}
],
"quotient_familial" : {
"quotientFamilial": 1856,
"annee": 2021,
"mois": 6
},
"adresse": {
"codePostalVille": "92110 Clichy",
"identite": "Mr SNOW Eric",
"complementIdentite": "ne connait rien",
"numeroRue": "109 rue La Boétie",
"pays": "FRANCE",
"complementIdentiteGeo": "au nord de paris",
"lieuDit": "glagla"
}
}

View file

@ -0,0 +1,70 @@
describe APIParticulier::CNAFAdapter do
let(:adapter) { described_class.new(api_particulier_token, numero_allocataire, code_postal, requested_sources) }
before { stub_const("API_PARTICULIER_URL", "https://particulier-test.api.gouv.fr/api") }
describe '#to_params' do
let(:api_particulier_token) { '29eb50b65f64e8e00c0847a8bbcbd150e1f847' }
let(:numero_allocataire) { '5843972' }
let(:code_postal) { '92110' }
subject { VCR.use_cassette(cassette) { adapter.to_params } }
context 'when the api answer is valid' do
let(:cassette) { "api_particulier/success/composition_familiale" }
context 'when the token has all the cnaf scopes' do
context 'and all the sources are requested' do
let(:requested_sources) do
{
'cnaf' => {
'allocataires' => ['nomPrenom', 'dateDeNaissance', 'sexe'],
'enfants' => ['nomPrenom', 'dateDeNaissance', 'sexe'],
'adresse' => ['identite', 'complementIdentite', 'complementIdentiteGeo', 'numeroRue', 'lieuDit', 'codePostalVille', 'pays'],
'quotient_familial' => ['quotientFamilial', 'annee', 'mois']
}
}
end
let(:result) { JSON.parse(File.read('spec/fixtures/files/api_particulier/composition_familiale.json')) }
it { is_expected.to eq(result) }
end
context 'when no sources is requested' do
let(:requested_sources) { {} }
it { is_expected.to eq({}) }
end
context 'when a scalar is requested' do
let(:requested_sources) { { 'cnaf' => { 'adresse' => ['pays'] } } }
it { is_expected.to eq({ "adresse" => { "pays" => "FRANCE" } }) }
end
context 'when a quotient_familial is requested' do
let(:requested_sources) { { 'cnaf' => { 'quotient_familial' => ['annee'] } } }
it { is_expected.to eq({ "quotient_familial" => { "annee" => 2021 } }) }
end
context 'when a vector is requested' do
let(:requested_sources) { { 'cnaf' => { 'allocataires' => ['nomPrenom'] } } }
it { is_expected.to eq({ "allocataires" => [{ "nomPrenom" => "ERIC SNOW" }, { "nomPrenom" => "SANSA SNOW" }] }) }
end
end
end
context 'when the api answer is valid' do
let(:cassette) { "api_particulier/success/composition_familiale_invalid" }
context 'when no sources is requested' do
let(:requested_sources) { {} }
it { expect { subject }.to raise_error(APIParticulier::CNAFAdapter::InvalidSchemaError) }
end
end
end
end

View file

@ -23,8 +23,8 @@ describe APIParticulier::Services::SourcesService do
let(:cnaf_allocataires_and_enfants) do
{
'cnaf' => {
'allocataires' => ['noms_prenoms', 'date_de_naissance', 'sexe'],
'enfants' => ['noms_prenoms', 'date_de_naissance', 'sexe']
'allocataires' => ['nomPrenom', 'dateDeNaissance', 'sexe'],
'enfants' => ['nomPrenom', 'dateDeNaissance', 'sexe']
}
}
end
@ -40,7 +40,7 @@ describe APIParticulier::Services::SourcesService do
let(:requested_sources) do
{
'cnaf' => {
'allocataires' => ['noms_prenoms', 'forbidden_sources', { 'weird_object' => 1 }],
'allocataires' => ['nomPrenom', 'forbidden_sources', { 'weird_object' => 1 }],
'forbidden_scope' => ['any_source'],
'adresse' => { 'weird_object' => 1 }
},
@ -48,6 +48,6 @@ describe APIParticulier::Services::SourcesService do
}
end
it { is_expected.to eq({ 'cnaf' => { 'allocataires' => ['noms_prenoms'] } }) }
it { is_expected.to eq({ 'cnaf' => { 'allocataires' => ['nomPrenom'] } }) }
end
end