Compare commits
No commits in common. "64400b512c2a809a41c5437c59106cb7f30de2e9" and "c995a064342fa11b9951f6aec4e61a288b11b7d8" have entirely different histories.
64400b512c
...
c995a06434
685 changed files with 2732 additions and 12988 deletions
42
.github/workflows/rails_schema_check.yml
vendored
42
.github/workflows/rails_schema_check.yml
vendored
|
@ -1,42 +0,0 @@
|
|||
name: Rails Schema Check
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'db/migrate/**'
|
||||
- 'db/schema.rb'
|
||||
pull_request:
|
||||
branches: [main]
|
||||
paths:
|
||||
- 'db/migrate/**'
|
||||
- 'db/schema.rb'
|
||||
|
||||
jobs:
|
||||
check-migration-and-schema:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v3
|
||||
with:
|
||||
fetch-depth: 2 # Fetch the last 2 commits to be able to compare with the base branch
|
||||
|
||||
- name: Check for migration and schema.rb changes
|
||||
run: |
|
||||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
latest_migration_file=$(ls -v db/migrate/*.rb | tail -n 1)
|
||||
latest_migration_version=$(basename $latest_migration_file | grep -oE '^[0-9]+')
|
||||
|
||||
# Get the schema version, without underscores
|
||||
schema_version=$(grep -oE 'define.version: [0-9_]+' db/schema.rb | cut -d ' ' -f 2 | tr -d _)
|
||||
|
||||
if [ "$latest_migration_version" != "$schema_version" ]; then
|
||||
echo "schema.rb version does not match the latest migration version. Have you forgotten to update the schema.rb?"
|
||||
echo " SCHEMA VERSION = $schema_version (config/schema.rb)"
|
||||
echo " LATEST MIGRATION VERSION = $latest_migration_version ($latest_migration_file)"
|
||||
exit 1
|
||||
fi
|
||||
|
5
Gemfile
5
Gemfile
|
@ -4,6 +4,7 @@ gem 'rails', '~> 7.0.5' # allows update to security fixes at any time
|
|||
|
||||
gem 'aasm'
|
||||
gem 'acsv'
|
||||
gem 'active_link_to' # Automatically set a class on active links
|
||||
gem 'active_model_serializers'
|
||||
gem 'activestorage-openstack'
|
||||
gem 'active_storage_validations'
|
||||
|
@ -11,7 +12,6 @@ gem 'addressable'
|
|||
gem 'administrate'
|
||||
gem 'administrate-field-enum' # Allow using Field::Enum in administrate
|
||||
gem 'after_party'
|
||||
gem 'ancestry'
|
||||
gem 'anchored'
|
||||
gem 'bcrypt'
|
||||
gem 'bootsnap', '>= 1.4.4', require: false # Reduces boot times through caching; required in config/boot.rb
|
||||
|
@ -58,7 +58,6 @@ gem 'listen' # Required by ActiveSupport::EventedFileUpdateChecker
|
|||
gem 'lograge'
|
||||
gem 'logstash-event'
|
||||
gem 'mailjet', require: false
|
||||
gem 'maintenance_tasks'
|
||||
gem 'matrix' # needed by prawn and not default in ruby 3.1
|
||||
gem 'mini_magick'
|
||||
gem 'net-imap', require: false # See https://github.com/mikel/mail/pull/1439
|
||||
|
@ -84,9 +83,7 @@ gem 'sassc-rails' # Use SCSS for stylesheets
|
|||
gem 'sentry-delayed_job'
|
||||
gem 'sentry-rails'
|
||||
gem 'sentry-ruby'
|
||||
gem 'sentry-sidekiq'
|
||||
gem 'sib-api-v3-sdk'
|
||||
gem 'sidekiq'
|
||||
gem 'skylight'
|
||||
gem 'spreadsheet_architect'
|
||||
gem 'strong_migrations' # lint database migrations
|
||||
|
|
60
Gemfile.lock
60
Gemfile.lock
|
@ -49,6 +49,9 @@ GEM
|
|||
erubi (~> 1.4)
|
||||
rails-dom-testing (~> 2.0)
|
||||
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
||||
active_link_to (1.0.5)
|
||||
actionpack
|
||||
addressable
|
||||
active_model_serializers (0.10.13)
|
||||
actionpack (>= 4.1, < 7.1)
|
||||
activemodel (>= 4.1, < 7.1)
|
||||
|
@ -97,8 +100,6 @@ GEM
|
|||
administrate (~> 0.12)
|
||||
aes_key_wrap (1.1.0)
|
||||
after_party (1.11.2)
|
||||
ancestry (4.3.3)
|
||||
activerecord (>= 5.2.6)
|
||||
anchored (1.1.0)
|
||||
ast (2.4.2)
|
||||
attr_required (1.0.1)
|
||||
|
@ -116,7 +117,7 @@ GEM
|
|||
axlsx_styler (1.1.0)
|
||||
activesupport (>= 3.1)
|
||||
caxlsx (>= 2.0.2)
|
||||
bcrypt (3.1.19)
|
||||
bcrypt (3.1.18)
|
||||
benchmark-ips (2.12.0)
|
||||
better_html (1.0.16)
|
||||
actionview (>= 4.0)
|
||||
|
@ -158,7 +159,7 @@ GEM
|
|||
nokogiri (~> 1.10, >= 1.10.4)
|
||||
rubyzip (>= 1.3.0, < 3)
|
||||
charlock_holmes (0.7.7)
|
||||
chartkick (5.0.4)
|
||||
chartkick (4.1.3)
|
||||
choice (0.2.0)
|
||||
chunky_png (1.4.0)
|
||||
clamav-client (3.2.0)
|
||||
|
@ -191,7 +192,7 @@ GEM
|
|||
sinatra (>= 1.4.4)
|
||||
descendants_tracker (0.0.4)
|
||||
thread_safe (~> 0.3, >= 0.3.1)
|
||||
devise (4.9.3)
|
||||
devise (4.9.2)
|
||||
bcrypt (~> 3.0)
|
||||
orm_adapter (~> 0.1)
|
||||
railties (>= 4.1.0)
|
||||
|
@ -237,7 +238,7 @@ GEM
|
|||
excon (0.102.0)
|
||||
factory_bot (6.1.0)
|
||||
activesupport (>= 5.0.0)
|
||||
ffi (1.16.3)
|
||||
ffi (1.16.2)
|
||||
ffi-compiler (1.0.1)
|
||||
ffi (>= 1.0.0)
|
||||
rake
|
||||
|
@ -269,7 +270,7 @@ GEM
|
|||
et-orbi (~> 1.1, >= 1.1.8)
|
||||
raabro (~> 1.4)
|
||||
geo_coord (0.2.0)
|
||||
geocoder (1.8.2)
|
||||
geocoder (1.6.5)
|
||||
globalid (1.2.1)
|
||||
activesupport (>= 6.1)
|
||||
gon (6.4.0)
|
||||
|
@ -277,7 +278,7 @@ GEM
|
|||
i18n (>= 0.7)
|
||||
multi_json
|
||||
request_store (>= 1.0)
|
||||
graphql (2.0.24)
|
||||
graphql (2.0.15)
|
||||
graphql-batch (0.5.1)
|
||||
graphql (>= 1.10, < 3)
|
||||
promise.rb (~> 0.7.2)
|
||||
|
@ -290,8 +291,8 @@ GEM
|
|||
bundler (>= 1.14)
|
||||
graphql (>= 1.10, < 3.0)
|
||||
thor (>= 0.19, < 2.0)
|
||||
groupdate (6.4.0)
|
||||
activesupport (>= 6.1)
|
||||
groupdate (5.2.2)
|
||||
activesupport (>= 5)
|
||||
haml (6.0.5)
|
||||
temple (>= 0.8.2)
|
||||
thor
|
||||
|
@ -347,8 +348,6 @@ GEM
|
|||
ruby-vips (>= 2.0.17, < 3)
|
||||
invisible_captcha (2.0.0)
|
||||
rails (>= 5.0)
|
||||
job-iteration (1.4.1)
|
||||
activejob (>= 5.2)
|
||||
jquery-rails (4.5.1)
|
||||
rails-dom-testing (>= 1, < 3)
|
||||
railties (>= 4.2.0)
|
||||
|
@ -397,7 +396,7 @@ GEM
|
|||
railties (>= 4)
|
||||
request_store (~> 1.0)
|
||||
logstash-event (1.2.02)
|
||||
loofah (2.22.0)
|
||||
loofah (2.21.3)
|
||||
crass (~> 1.0.2)
|
||||
nokogiri (>= 1.12.0)
|
||||
mail (2.8.1)
|
||||
|
@ -409,12 +408,6 @@ GEM
|
|||
activesupport (>= 3.1.0)
|
||||
rack (>= 1.4.0)
|
||||
rest-client (>= 2.0.0)
|
||||
maintenance_tasks (2.3.2)
|
||||
actionpack (>= 6.0)
|
||||
activejob (>= 6.0)
|
||||
activerecord (>= 6.0)
|
||||
job-iteration (>= 1.3.6)
|
||||
railties (>= 6.0)
|
||||
marcel (1.0.2)
|
||||
matrix (0.4.2)
|
||||
memory_profiler (1.0.0)
|
||||
|
@ -427,7 +420,7 @@ GEM
|
|||
rake
|
||||
mini_magick (4.11.0)
|
||||
mini_mime (1.1.5)
|
||||
mini_portile2 (2.8.5)
|
||||
mini_portile2 (2.8.4)
|
||||
minitest (5.20.0)
|
||||
msgpack (1.4.2)
|
||||
multi_json (1.15.0)
|
||||
|
@ -444,7 +437,7 @@ GEM
|
|||
net-protocol
|
||||
netrc (0.11.0)
|
||||
nio4r (2.5.9)
|
||||
nokogiri (1.15.5)
|
||||
nokogiri (1.15.4)
|
||||
mini_portile2 (~> 2.8.2)
|
||||
racc (~> 1.4)
|
||||
open4 (1.3.4)
|
||||
|
@ -497,7 +490,7 @@ GEM
|
|||
pundit (2.2.0)
|
||||
activesupport (>= 3.0.0)
|
||||
raabro (1.4.0)
|
||||
racc (1.7.3)
|
||||
racc (1.7.1)
|
||||
rack (2.2.8)
|
||||
rack-attack (6.5.0)
|
||||
rack (>= 1.0, < 3)
|
||||
|
@ -559,7 +552,7 @@ GEM
|
|||
thor (~> 1.0)
|
||||
zeitwerk (~> 2.5)
|
||||
rainbow (3.1.1)
|
||||
rake (13.1.0)
|
||||
rake (13.0.6)
|
||||
rake-progressbar (0.0.5)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.10.1)
|
||||
|
@ -567,12 +560,12 @@ GEM
|
|||
redcarpet (3.6.0)
|
||||
redis (5.0.6)
|
||||
redis-client (>= 0.9.0)
|
||||
redis-client (0.18.0)
|
||||
redis-client (0.14.1)
|
||||
connection_pool
|
||||
regexp_parser (2.8.1)
|
||||
request_store (1.5.0)
|
||||
rack (>= 1.4)
|
||||
responders (3.1.1)
|
||||
responders (3.1.0)
|
||||
actionpack (>= 5.2)
|
||||
railties (>= 5.2)
|
||||
rest-client (2.1.0)
|
||||
|
@ -682,19 +675,11 @@ GEM
|
|||
sentry-ruby (~> 5.9.0)
|
||||
sentry-ruby (5.9.0)
|
||||
concurrent-ruby (~> 1.0, >= 1.0.2)
|
||||
sentry-sidekiq (5.9.0)
|
||||
sentry-ruby (~> 5.9.0)
|
||||
sidekiq (>= 3.0)
|
||||
shoulda-matchers (4.5.1)
|
||||
activesupport (>= 4.2.0)
|
||||
sib-api-v3-sdk (7.4.0)
|
||||
json (~> 2.1, >= 2.1.0)
|
||||
typhoeus (~> 1.0, >= 1.0.1)
|
||||
sidekiq (7.2.0)
|
||||
concurrent-ruby (< 2)
|
||||
connection_pool (>= 2.3.0)
|
||||
rack (>= 2.2.4)
|
||||
redis-client (>= 0.14.0)
|
||||
simple_xlsx_reader (1.0.4)
|
||||
nokogiri
|
||||
rubyzip
|
||||
|
@ -731,7 +716,7 @@ GEM
|
|||
temple (0.8.2)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
thor (1.3.0)
|
||||
thor (1.2.2)
|
||||
thread_safe (0.3.6)
|
||||
tilt (2.0.11)
|
||||
timecop (0.9.4)
|
||||
|
@ -800,7 +785,7 @@ GEM
|
|||
nokogiri (~> 1.11)
|
||||
xpath (3.2.0)
|
||||
nokogiri (~> 1.8)
|
||||
zeitwerk (2.6.12)
|
||||
zeitwerk (2.6.11)
|
||||
zip_tricks (5.6.0)
|
||||
zipline (1.4.1)
|
||||
actionpack (>= 6.0, < 8.0)
|
||||
|
@ -814,6 +799,7 @@ PLATFORMS
|
|||
DEPENDENCIES
|
||||
aasm
|
||||
acsv
|
||||
active_link_to
|
||||
active_model_serializers
|
||||
active_storage_validations
|
||||
activestorage-openstack
|
||||
|
@ -821,7 +807,6 @@ DEPENDENCIES
|
|||
administrate
|
||||
administrate-field-enum
|
||||
after_party
|
||||
ancestry
|
||||
anchored
|
||||
axe-core-rspec
|
||||
bcrypt
|
||||
|
@ -879,7 +864,6 @@ DEPENDENCIES
|
|||
lograge
|
||||
logstash-event
|
||||
mailjet
|
||||
maintenance_tasks
|
||||
matrix
|
||||
memory_profiler
|
||||
mina
|
||||
|
@ -924,10 +908,8 @@ DEPENDENCIES
|
|||
sentry-delayed_job
|
||||
sentry-rails
|
||||
sentry-ruby
|
||||
sentry-sidekiq
|
||||
shoulda-matchers
|
||||
sib-api-v3-sdk
|
||||
sidekiq
|
||||
simple_xlsx_reader
|
||||
skylight
|
||||
spreadsheet_architect
|
||||
|
|
|
@ -19,11 +19,6 @@ Vous souhaitez y apporter des changements ou des améliorations ? Lisez notre [
|
|||
- postgresql
|
||||
- imagemagick et gsfonts pour générer les filigranes sur les titres d'identité.
|
||||
|
||||
nous sommes en cours de migration de delayed_job vers sidekiq pour le traitement des jobs asynchrones.
|
||||
pour faire tourner sidekiq, vous aurez besoin de
|
||||
|
||||
- redis
|
||||
|
||||
#### Développement
|
||||
|
||||
- rbenv : voir https://github.com/rbenv/rbenv-installer#rbenv-installer--doctor-scripts
|
||||
|
|
|
@ -4,5 +4,3 @@
|
|||
//= link administrate/application.css
|
||||
//= link administrate/application.js
|
||||
//= link manager.css
|
||||
//= link attestation.css
|
||||
//= link_tree ../../../node_modules/@gouvfr/dsfr/dist/artwork
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 5.5 KiB |
1
app/assets/images/icons/move-handle.svg
Normal file
1
app/assets/images/icons/move-handle.svg
Normal file
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-prefix="fas" data-icon="arrows-alt-v" class="svg-inline--fa fa-arrows-alt-v fa-w-8 fa-lg" width="32" height="32"><path d="M19.04 20.763h-1.656v-9.526h1.656c.768 0 2.494.242.61-1.6l-3.094-3.362a.815.815 0 0 0-1.22 0l-3.093 3.361c-1.643 1.831-.159 1.6.61 1.6h1.655v9.527h-1.655c-.769 0-2.235-.244-.61 1.6l3.093 3.362a.815.815 0 0 0 1.22 0l3.094-3.361c1.884-1.795.158-1.6-.61-1.6z" fill="currentColor"/><rect width="9" height="2" y="11" ry=".402"/><rect ry=".402" y="19" height="2" width="9"/><rect width="9" height="2" y="15" ry=".402"/><rect ry=".402" y="11" x="23" height="2" width="9"/><rect width="9" height="2" x="23" y="19" ry=".402"/><rect ry=".402" y="15" x="23" height="2" width="9"/></svg>
|
After Width: | Height: | Size: 761 B |
|
@ -1,71 +0,0 @@
|
|||
<svg xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 252 90'>
|
||||
<defs>
|
||||
<symbol id='a' viewBox='0 0 11 15.5'>
|
||||
<path d='M10.4 5.3C11.9 1.5 10.1 0 7.9 0 4.2 0 0 6.5 0 11.7c0 2.5 1.2 3.8 3 3.8 2.1 0 4.3-2 6.2-5.5h-1c-1.2 1.5-2.6 2.6-3.9 2.6-1.3 0-2-.8-2-2.6a10.7 10.7 0 01.3-2.2zm-4-3.1c1.1 0 2 .8 1.5 2.6L3.1 6.1c.8-2.2 2.2-4 3.4-4z' />
|
||||
</symbol>
|
||||
<symbol id='b' viewBox='0 0 12.4 21.8'>
|
||||
<use width='11' height='15.5' y='6.4' href='#a' />
|
||||
<path d='M7.9 4.7L12.4.6V0h-3L6.7 4.7H8z' />
|
||||
</symbol>
|
||||
<symbol id='c' viewBox='0 0 11.5 19'>
|
||||
<path d='M1.7 5.7h2.6L.1 17.1a1.3 1.3 0 001.2 2c3 0 6.4-2.6 7.8-6.2h-.7a9.4 9.4 0 01-5.1 3.5L7 5.7H11l.5-1.6H7.7L9 0H7.6L4.9 4.1l-3.2.4v1.2z' />
|
||||
</symbol>
|
||||
<symbol id='d' viewBox='0 0 9.8 21.9'>
|
||||
<path d='M7.6 8c.3-1-.4-1.6-1-1.6-2.2 0-5 2.1-6 5h.7A5.6 5.6 0 014.4 9L.1 20.3a1.1 1.1 0 001 1.6c2.2 0 4.7-2 5.8-5H6A5.6 5.6 0 013 19.5zM8 3.7a1.8 1.8 0 001.8-1.8A1.8 1.8 0 008 0a1.8 1.8 0 00-1.8 1.8A1.8 1.8 0 008 3.6' />
|
||||
</symbol>
|
||||
<symbol id='e' viewBox='0 0 14.8 15.5'>
|
||||
<path d='M3.3 3.1c.7 0 1 1 0 3.4l-3 6.8c-.7 1.3 0 2.2 1.2 2.2a1.3 1.3 0 001.5-1l3-8C7.4 4.8 10 3 11 3s.8.6.3 1.6l-4.6 9a1.3 1.3 0 001.1 1.9c2.3 0 5-2 6-5h-.6A5.6 5.6 0 0110 13l4-8a6.1 6.1 0 00.8-2.8A2 2 0 0012.6 0c-2 0-3.6 2.2-6 5V2.8C6.6 1.4 6.1 0 4.8 0 3.2 0 1.8 2.5.7 4.9h.7c.7-1.1 1.3-1.8 2-1.8' />
|
||||
</symbol>
|
||||
<symbol id='f' viewBox='0 0 12 15.5'>
|
||||
<path d='M11.8 3.5c.5-1.9.2-3.5-1.2-3.5-1.8 0-2.3 1.2-4 5V2.8C6.5 1.3 6 0 4.6 0 3.1 0 1.7 2.5.5 5h.8C2 3.7 2.8 3 3.3 3c.7 0 1 1 0 3.4l-3 6.8c-.7 1.3 0 2.1 1.2 2.1a1.3 1.3 0 001.5-1l3-8a50.3 50.3 0 012.6-3h3.2z' />
|
||||
</symbol>
|
||||
<symbol id='g' viewBox='0 0 14.7 16.2'>
|
||||
<path d='M10.5 13.1c-.6 0-1-1 0-3.4L14.6.1 13.4 0l-1.3 1.3h-.3C6.1 1.3 0 8.6 0 14.2a2 2 0 002.1 2.1c1.7 0 3.3-2.4 5.2-5l-.1 1c-.3 2.6.6 4 2 4 1.5 0 3-2.4 4-4.9h-.7c-.7 1.1-1.5 1.8-2 1.8zM7.9 9.8c-1.3 1.6-3.4 3.5-4.3 3.5-.5 0-.9-.5-.9-1.6 0-3.5 4-8.2 6-8.2a4.2 4.2 0 011.4.2z' />
|
||||
</symbol>
|
||||
<symbol id='h' viewBox='0 0 21.9 19.8'>
|
||||
<path d='M11.2 19.8l.3-.9c-3.8-.7-4.3-.7-2.7-4.8l1.4-3.9h3c1.9 0 1.9.9 1.6 3h1l2.6-6.9h-1c-1 1.6-1.8 2.9-3.8 2.9h-3l2-5.6c.8-2 1.1-2.4 3.7-2.4h.7c2.6 0 3 .7 3 3.5h1l.9-4.7H7.3L7 .9c3 .6 3.3.9 2 4.8L5.7 14c-1.5 3.9-2 4.2-5.5 4.8l-.3.9z' />
|
||||
</symbol>
|
||||
<symbol id='i' viewBox='0 0 10.1 21.9'>
|
||||
<path d='M2.9 19.4L10.1.3 9.8 0l-5 .6v.6l1 .7c.9.7.6 1.3-.2 3.4L.2 19.9a1.3 1.3 0 001.1 2c2.3 0 4.7-2.1 5.8-5h-.7a6.5 6.5 0 01-3.5 2.5' />
|
||||
</symbol>
|
||||
<symbol id='j' viewBox='0 0 18 22'>
|
||||
<path d='M18 .6h-4.3a3.8 3.8 0 00-2.1-.6A6.6 6.6 0 005 6.5a3.3 3.3 0 003 3.6c-1.9.8-3 1.8-3 2.9a1.7 1.7 0 00.9 1.5c-4.3 1.3-6 2.8-6 4.7 0 2 2.6 2.8 5.6 2.8 5.3 0 9.6-2.7 9.6-5.1 0-1.8-1.6-2.5-4.3-3.3-2.2-.7-3.2-.8-3.2-1.6A2.4 2.4 0 019 10.2a6.6 6.6 0 006.1-6.5 4.5 4.5 0 00-.2-1.5h2.5zM9.8 16.2c2.1.7 3 1 3 1.6 0 1.4-2 2.5-5.6 2.5-2.7 0-4-.6-4-2 0-1.5 1.4-2.5 3.5-3.3a21.5 21.5 0 003 1.2zM9 9c-1 0-1.3-.8-1.3-1.7 0-2.8 1.4-6.2 3.5-6.2 1 0 1.3.8 1.3 1.6 0 2.9-1.4 6.3-3.5 6.3z' />
|
||||
</symbol>
|
||||
<symbol id='k' viewBox='0 0 23 25.1'>
|
||||
<path d='M14.3 15.6c1.9 0 2 .8 1.6 2.8H17l2.5-6.8h-1c-1 1.6-1.7 2.9-3.8 2.9h-4.1l2-5.6c.7-2 1-2.4 3.7-2.4H18c2.6 0 3 .7 3 3.5h1l.9-4.7H7.3l-.3.9c3 .6 3.3.9 2 4.8l-3.2 8.4c-1.5 3.9-2 4.2-5.6 4.8l-.2 1h17.4l3.2-5h-1.2c-2 2-4 3.8-8 3.8-4.7 0-4.3-.3-2.7-4.6l1.4-3.8h4.2zm2.3-11.8L21 .6V0h-3l-2.6 3.9h1.2v-.1z' />
|
||||
</symbol>
|
||||
<symbol id='l' viewBox='0 0 13.6 21.8'>
|
||||
<path d='M11.4 6.4c-2 0-4 2.2-5.8 4.8L9.6.3 9.4 0l-5 .6V1l1 .8c.9.7.6 1.3-.2 3.4L.8 16.8A13.9 13.9 0 000 19c0 1.4 1.8 2.7 3.5 2.7 3.8 0 10-6.9 10-12.2 0-2.3-.5-3.2-2.1-3.2zM4.8 19.5c-.8 0-1.9-.7-1.9-1.3a15.5 15.5 0 01.8-2.2L5 12.7C6.3 11 8.4 9.3 9.6 9.3c.7 0 1.2.4 1.2 1.5 0 3.1-2.9 8.7-6 8.7z' />
|
||||
</symbol>
|
||||
<symbol id='m' viewBox='0 0 19.2 19.9'>
|
||||
<path d='M17.6 0H7.3L7 .9c3 .6 3.3.9 2 4.8l-3.2 8.5c-1.5 3.9-2 4.2-5.5 4.8L0 20h15.7l3.5-6H18c-2 2-4.2 4.8-7.7 4.8-2.7 0-3-.5-1.6-4.5l3.1-8.5c1.4-3.9 2-4.2 5.5-4.8z' />
|
||||
</symbol>
|
||||
<symbol id='n' viewBox='0 0 126 90'>
|
||||
<use width='12.4' height='21.8' x='112.7' y='66.1' xlink:href='#b' />
|
||||
<use width='11.5' height='19' x='102.2' y='69' xlink:href='#c' />
|
||||
<use width='9.8' height='21.9' x='93.6' y='66.1' xlink:href='#d' />
|
||||
<use width='14.8' height='15.5' x='77.2' y='72.5' xlink:href='#e' />
|
||||
<use width='12' height='15.5' x='65.7' y='72.5' xlink:href='#f' />
|
||||
<use width='11' height='15.5' x='54.3' y='72.5' xlink:href='#a' />
|
||||
<use width='11.5' height='19' x='43.7' y='69' xlink:href='#c' />
|
||||
<use width='14.7' height='16.2' x='28.9' y='71.8' xlink:href='#g' />
|
||||
<use width='12' height='15.5' x='19.6' y='72.5' xlink:href='#f' />
|
||||
<use width='21.9' height='19.8' y='67.6' xlink:href='#h' />
|
||||
<use width='12.4' height='21.8' x='77.3' y='33.1' xlink:href='#b' />
|
||||
<use width='11.5' height='19' x='66.8' y='36' xlink:href='#c' />
|
||||
<use width='9.8' height='21.9' x='58.2' y='33' xlink:href='#d' />
|
||||
<use width='10.1' height='21.9' x='49.4' y='33.1' xlink:href='#i' />
|
||||
<use width='14.7' height='16.2' x='34.9' y='38.8' xlink:href='#g' />
|
||||
<use width='18' height='22' x='18.6' y='39.4' xlink:href='#j' />
|
||||
<use width='23' height='25.1' y='29.3' xlink:href='#k' />
|
||||
<use width='12.4' height='21.8' x='76.8' y='.1' xlink:href='#b' />
|
||||
<use width='11.5' height='19' x='66.2' y='2.9' xlink:href='#c' />
|
||||
<use width='12' height='15.5' x='54.8' y='6.5' xlink:href='#f' />
|
||||
<use width='11' height='15.5' x='43.4' y='6.4' xlink:href='#a' />
|
||||
<use width='13.6' height='21.8' x='29.4' y='.1' xlink:href='#l' />
|
||||
<use width='9.8' height='21.9' x='20.6' xlink:href='#d' />
|
||||
<use width='19.2' height='19.9' y='1.4' xlink:href='#m' />
|
||||
</symbol>
|
||||
</defs>
|
||||
<use fill='#161616' width='126' height='90' x='0' y='0' href='#n' />
|
||||
</svg>
|
Before Width: | Height: | Size: 5.8 KiB |
|
@ -1,112 +0,0 @@
|
|||
@font-face {
|
||||
font-family: "Marianne";
|
||||
src: url("marianne-regular.ttf");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Marianne";
|
||||
src: url("marianne-bold.ttf");
|
||||
font-weight: bold;
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@font-face {
|
||||
font-family: "Marianne";
|
||||
src: url("marianne-thin.ttf");
|
||||
font-weight: 100; // weasy print n"accepte pas lighter
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
@page {
|
||||
size: A4;
|
||||
margin: 17mm 17mm 34mm; // add margin at the bottom to add address
|
||||
|
||||
@bottom-center {
|
||||
font-size: 8pt;
|
||||
content: counter(page) " / " counter(pages);
|
||||
margin-top: 17mm;
|
||||
}
|
||||
|
||||
@bottom-left {
|
||||
content: element(footer);
|
||||
}
|
||||
}
|
||||
|
||||
#attestation {
|
||||
@media screen {
|
||||
max-width: 21cm;
|
||||
padding: 17mm;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
font-family: Marianne;
|
||||
|
||||
.header {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
.right {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
.bloc-marque {
|
||||
margin-bottom: 14mm;
|
||||
}
|
||||
|
||||
.marianne {
|
||||
height: 4.25mm;
|
||||
margin-bottom: 1mm;
|
||||
}
|
||||
|
||||
.intitule {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
margin: 0 0 1mm;
|
||||
}
|
||||
|
||||
.devise {
|
||||
height: 8.5mm;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.issuer {
|
||||
font-size: 10pt;
|
||||
margin: 0 0 14mm; // pas sur, pour mettre une marge si issuer plus bas que date
|
||||
}
|
||||
|
||||
.direction {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
margin: 0 0 23.3mm;
|
||||
}
|
||||
|
||||
.date {
|
||||
font-size: 8pt;
|
||||
margin: 0 0 14mm;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-size: 12pt;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
margin: 0 0 12.6mm;
|
||||
}
|
||||
|
||||
.main {
|
||||
font-size: 10pt;
|
||||
}
|
||||
|
||||
.notice {
|
||||
font-size: 10pt;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.footer {
|
||||
position: running(footer);
|
||||
font-size: 7pt;
|
||||
font-weight: 100;
|
||||
}
|
||||
}
|
|
@ -1,16 +0,0 @@
|
|||
#attestation-edit {
|
||||
.mention {
|
||||
border: 1px solid var(--text-default-grey);
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.selected {
|
||||
border: 1px solid #000000;
|
||||
}
|
||||
|
||||
.tiptap {
|
||||
padding: 8px;
|
||||
|
||||
min-height: 300px;
|
||||
}
|
||||
}
|
|
@ -7,6 +7,7 @@
|
|||
}
|
||||
|
||||
.autosave-explanation {
|
||||
color: $dark-grey;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
|
|
|
@ -174,27 +174,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
[data-fr-theme="dark"] .dropdown-content {
|
||||
border: none;
|
||||
background: var(--background-action-low-blue-france);
|
||||
}
|
||||
|
||||
[data-fr-theme="dark"] .dropdown-items {
|
||||
li {
|
||||
&:not(.inactive) {
|
||||
&:hover,
|
||||
&.selected {
|
||||
background: var(--background-action-low-blue-france-hover);
|
||||
}
|
||||
}
|
||||
|
||||
&.form-inside {
|
||||
background-color: var(--background-action-low-blue-france);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.dropdown-content {
|
||||
border: 1px solid $border-grey;
|
||||
background: #FFFFFF;
|
||||
|
@ -247,6 +226,7 @@ ul.dropdown-items {
|
|||
li {
|
||||
display: flex;
|
||||
padding: $default-padding;
|
||||
color: $dark-grey;
|
||||
border-bottom: 1px solid $border-grey;
|
||||
font-size: 12px;
|
||||
min-width: 300px;
|
||||
|
@ -313,6 +293,7 @@ ul.dropdown-items {
|
|||
|
||||
h4 {
|
||||
font-size: 14px;
|
||||
color: $black;
|
||||
margin-bottom: $default-spacer;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,12 +1,6 @@
|
|||
@import "colors";
|
||||
@import "constants";
|
||||
|
||||
|
||||
[data-fr-theme="dark"] .card {
|
||||
background: none;
|
||||
border: 1px solid var(--background-action-low-blue-france);
|
||||
}
|
||||
|
||||
.card {
|
||||
padding: ($default-spacer * 3) ($default-spacer * 2);
|
||||
border: 1px solid $border-grey;
|
||||
|
@ -14,6 +8,7 @@
|
|||
background: #FFFFFF;
|
||||
|
||||
.card-title {
|
||||
color: $black;
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
line-height: 1.5rem;
|
||||
|
|
|
@ -3,11 +3,6 @@
|
|||
|
||||
$dossier-actions-bar-border-width: 1px;
|
||||
|
||||
[data-fr-theme="dark"] .dossier-edit .dossier-edit-sticky-footer {
|
||||
background-color: var(--background-action-low-blue-france);
|
||||
border: none;
|
||||
}
|
||||
|
||||
.dossier-header {
|
||||
.fr-container {
|
||||
padding-bottom: $default-padding;
|
||||
|
|
|
@ -4,18 +4,21 @@
|
|||
.dossier-container {
|
||||
.sub-header {
|
||||
h1 {
|
||||
color: $black;
|
||||
font-size: 22px;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: $dark-grey;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.header-actions {
|
||||
margin-bottom: $default-spacer;
|
||||
display: flex;
|
||||
|
||||
justify-content: flex-end;
|
||||
column-gap: $default-spacer * 2;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -51,26 +54,3 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 48em) {
|
||||
.dossier-container {
|
||||
.header-actions {
|
||||
flex-direction: row;
|
||||
justify-content: flex-end;
|
||||
gap: 0 $default-spacer * 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 48em) {
|
||||
.dossier-container .header-actions {
|
||||
flex-direction: column;
|
||||
justify-content: stretch;
|
||||
gap: $default-spacer * 2 0;
|
||||
|
||||
.dropdown-button {
|
||||
min-width: 100%;
|
||||
white-space: normal;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,15 @@ ol.fr-ol-content--override {
|
|||
}
|
||||
}
|
||||
|
||||
// override default transparent background on inputs & font-size to 16px by default
|
||||
input,
|
||||
textarea,
|
||||
select,
|
||||
// FIXME when DSFR is DONE
|
||||
.form-ds-fr-white .fr-input {
|
||||
background: $white;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
// with Marianne font, weight of font is less bolder, so bold it up
|
||||
.button.primary {
|
||||
|
@ -20,33 +29,6 @@ trix-editor.fr-input {
|
|||
max-height: none;
|
||||
}
|
||||
|
||||
.fr-label + .fr-ds-combobox { // same as .fr-label + .fr-input
|
||||
margin-top: 0.5rem;
|
||||
}
|
||||
|
||||
|
||||
.fr-ds-combobox {
|
||||
.fr-menu {
|
||||
width: 100%;
|
||||
|
||||
.fr-menu__list {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 62em) {
|
||||
.fr-ds-combobox .fr-menu .fr-menu__list {
|
||||
z-index: calc(var(--ground) + 1000);
|
||||
background-color: var(--background-default-grey);
|
||||
--idle: transparent;
|
||||
--hover: var(--background-overlap-grey-hover);
|
||||
--active: var(--background-overlap-grey-active);
|
||||
filter: drop-shadow(var(--overlap-shadow));
|
||||
box-shadow: inset 0 1px 0 0 var(--border-open-blue-france);
|
||||
}
|
||||
}
|
||||
|
||||
// Fix firefox < 80, Safari < 15.4, Chrome < 83 not supporting "appearance: auto" on inputs
|
||||
// This rule was set by DSFR for DSFR design, but broke our legacy forms.
|
||||
// scss-lint:disable DuplicateProperty
|
||||
|
@ -138,25 +120,3 @@ button.fr-tag-bug {
|
|||
align-items: flex-end;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// improve readability in Windows High Contrast Mode
|
||||
@media screen and (forced-colors: active) {
|
||||
.fr-input,
|
||||
.fr-select,
|
||||
.fr-btn {
|
||||
border: 2px solid var(--border-action-high-grey);
|
||||
}
|
||||
|
||||
.fr-radio-group input[type="radio"] {
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.fr-tabs__tab[aria-selected=true]:not(:disabled) {
|
||||
border: 5px solid var(--border-action-high-grey);
|
||||
}
|
||||
|
||||
.fr-tabs__tab {
|
||||
border: 2px solid var(--border-action-high-grey);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -252,7 +252,7 @@
|
|||
}
|
||||
}
|
||||
|
||||
input[type=text]:not(.fr-input):not(.fr-select) {
|
||||
input[type=text]:not([data-address='true']) {
|
||||
border: solid 1px $border-grey;
|
||||
padding: $default-padding;
|
||||
|
||||
|
@ -293,7 +293,7 @@
|
|||
input[type=number],
|
||||
input[type=datetime-local],
|
||||
textarea,
|
||||
input[type=tel] {
|
||||
input[type=tel], {
|
||||
@media (max-width: $two-columns-breakpoint) {
|
||||
width: 100%;
|
||||
}
|
||||
|
@ -386,6 +386,7 @@
|
|||
|
||||
[data-reach-combobox-token] button {
|
||||
border: solid 1px $border-grey;
|
||||
color: $black;
|
||||
border-radius: 4px;
|
||||
padding: $default-spacer;
|
||||
margin-right: $default-spacer;
|
||||
|
@ -448,6 +449,22 @@
|
|||
margin-bottom: $default-padding;
|
||||
}
|
||||
|
||||
.explication-libelle {
|
||||
font-weight: bold;
|
||||
font-size: 20px;
|
||||
margin-bottom: $default-padding;
|
||||
}
|
||||
|
||||
.explication {
|
||||
margin-bottom: $default-fields-spacer;
|
||||
padding: $default-spacer;
|
||||
background-color: $light-grey;
|
||||
|
||||
p:not(:last-child) {
|
||||
margin-bottom: $default-padding;
|
||||
}
|
||||
}
|
||||
|
||||
.send-wrapper {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
|
@ -521,17 +538,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
.type-de-champ-expression-reguliere {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
font-weight: bold;
|
||||
content: "/";
|
||||
}
|
||||
}
|
||||
|
||||
[data-react-component-value^="ComboMultiple"] {
|
||||
margin-bottom: $default-fields-spacer;
|
||||
|
||||
|
@ -606,15 +612,6 @@
|
|||
outline-color: $light-blue;
|
||||
}
|
||||
|
||||
[data-fr-theme="dark"] [data-reach-combobox-popover] {
|
||||
border: none;
|
||||
background: var(--background-action-low-blue-france);
|
||||
}
|
||||
|
||||
[data-fr-theme="dark"] [data-reach-combobox-option]:hover {
|
||||
background: var(--background-action-low-blue-france-hover);
|
||||
}
|
||||
|
||||
[data-reach-combobox-popover] {
|
||||
z-index: 20;
|
||||
}
|
||||
|
@ -631,32 +628,14 @@ textarea::placeholder {
|
|||
color: $dark-grey;
|
||||
}
|
||||
|
||||
@media (max-width: 62em) {
|
||||
|
||||
.padded-fixed-footer {
|
||||
padding-top: 120px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 62em) {
|
||||
|
||||
.padded-fixed-footer {
|
||||
padding-top: 60px;
|
||||
}
|
||||
}
|
||||
|
||||
[data-fr-theme="dark"] .fixed-footer {
|
||||
border-top: 2px solid var(--background-action-low-blue-france-hover);
|
||||
background-color: var(--background-action-low-blue-france);
|
||||
}
|
||||
|
||||
.fixed-footer {
|
||||
.sticky-action-footer {
|
||||
border-top: 2px solid $blue-france-500;
|
||||
position: fixed;
|
||||
position: sticky;
|
||||
// scss-lint:disable VendorPrefix
|
||||
position: -webkit-sticky; // This is needed on Safari (tested on 12.1)
|
||||
// scss-lint:enable VendorPrefix
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
padding-top: $default-padding;
|
||||
padding: $default-padding 0;
|
||||
background-color: $white;
|
||||
z-index: 2;
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
}
|
||||
|
||||
.help-dropdown-title {
|
||||
font-weight: bold;
|
||||
color: $blue-france-500;
|
||||
}
|
||||
|
||||
.dropdown-items li.help-dropdown-service {
|
||||
|
|
|
@ -170,6 +170,10 @@
|
|||
background-image: image-url("icons/trash.svg");
|
||||
}
|
||||
|
||||
&.move-handle {
|
||||
background-image: image-url("icons/move-handle.svg");
|
||||
}
|
||||
|
||||
&.mandatory {
|
||||
width: 10px;
|
||||
}
|
||||
|
|
|
@ -3,6 +3,10 @@
|
|||
@import "mixins";
|
||||
@import "placeholders";
|
||||
|
||||
.landing-panel {
|
||||
@include vertical-padding(60px);
|
||||
}
|
||||
|
||||
$landing-breakpoint: 1040px;
|
||||
|
||||
.hero-wrapper {
|
||||
|
@ -23,6 +27,16 @@ $landing-breakpoint: 1040px;
|
|||
}
|
||||
}
|
||||
|
||||
.hero-tagline {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.hero-tagline-em {
|
||||
color: $blue-france-500;
|
||||
font-style: normal;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.hero-illustration {
|
||||
max-width: 500px;
|
||||
|
||||
|
@ -60,6 +74,7 @@ $landing-breakpoint: 1040px;
|
|||
}
|
||||
|
||||
.feature-text {
|
||||
color: #FFFFFF;
|
||||
font-size: 20px;
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -124,7 +139,17 @@ $landing-breakpoint: 1040px;
|
|||
font-weight: bold;
|
||||
}
|
||||
|
||||
.usagers-panel,
|
||||
.numbers-panel,
|
||||
.cta-panel-2 {
|
||||
background-color: var(--background-alt-blue-france);
|
||||
}
|
||||
|
||||
|
||||
.landing {
|
||||
.more-info {
|
||||
background-color: #FFFFFF;
|
||||
}
|
||||
|
||||
.numbers {
|
||||
@extend %horizontal-list;
|
||||
|
@ -204,6 +229,15 @@ $users-breakpoint: 950px;
|
|||
height: 180px;
|
||||
}
|
||||
|
||||
.cta-panel {
|
||||
background-color: $blue-france-500;
|
||||
color: #FFFFFF;
|
||||
|
||||
.fr-btn {
|
||||
box-shadow: inset 0 0 0 1px var(--text-inverted-blue-france);
|
||||
}
|
||||
}
|
||||
|
||||
.role-panel-wrapper {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
|
@ -240,6 +274,25 @@ $users-breakpoint: 950px;
|
|||
}
|
||||
}
|
||||
|
||||
.cta-panel-title {
|
||||
font-size: 24px;
|
||||
font-weight: bold;
|
||||
margin-top: 13px;
|
||||
color: #FFFFFF;
|
||||
|
||||
&.grey {
|
||||
color: $g700;
|
||||
}
|
||||
}
|
||||
|
||||
.cta-panel-explanation {
|
||||
font-size: 22px;
|
||||
margin-bottom: 10px;
|
||||
|
||||
&.grey {
|
||||
color: $g700;
|
||||
}
|
||||
}
|
||||
|
||||
.role-administrations-image {
|
||||
text-align: right;
|
||||
|
|
|
@ -3,9 +3,10 @@
|
|||
@import "placeholders";
|
||||
|
||||
.two-columns {
|
||||
background-color: $white;
|
||||
|
||||
@media (min-width: $two-columns-breakpoint) {
|
||||
background: linear-gradient(to right, transparent 0%, transparent 50%, var(--background-alt-blue-france) 50%, var(--background-alt-blue-france) 100%);
|
||||
background: linear-gradient(to right, #FFFFFF 0%, #FFFFFF 50%, $light-grey 50%, $light-grey 100%);
|
||||
}
|
||||
|
||||
.columns-container { // TODO: https://github.com/betagouv/demarches-simplifiees.fr/issues/7882, once implemented, we won't need container anymore
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
.form [data-reach-combobox-token] button {
|
||||
border: solid 1px #CCCCCC;
|
||||
background-color: transparent;
|
||||
color: #333333;
|
||||
border-radius: 4px;
|
||||
padding: 8px;
|
||||
margin-right: 8px;
|
||||
|
|
|
@ -1,64 +0,0 @@
|
|||
@import "colors";
|
||||
|
||||
$dep-nothing: #E3E3FD; // blue-france-925
|
||||
$dep-small: #CACAFB; // blue-france-850
|
||||
$dep-medium: #8585F6; // blue-france-625
|
||||
$dep-large: #313178; // blue-france-200
|
||||
$dep-xlarge: #272747; // blue-france-125
|
||||
|
||||
#map-svg {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
#map-infos {
|
||||
min-width: 328px;
|
||||
}
|
||||
|
||||
.departement.nothing {
|
||||
fill: $dep-nothing;
|
||||
}
|
||||
|
||||
.departement.small {
|
||||
fill: $dep-small;
|
||||
}
|
||||
|
||||
.departement.medium {
|
||||
fill: $dep-medium;
|
||||
}
|
||||
|
||||
.departement.large {
|
||||
fill: $dep-large;
|
||||
}
|
||||
|
||||
.departement.xlarge {
|
||||
fill: $dep-xlarge;
|
||||
}
|
||||
|
||||
.legends {
|
||||
.legend {
|
||||
width: 60px;
|
||||
height: 10px;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.nothing {
|
||||
background-color: $dep-nothing;
|
||||
}
|
||||
|
||||
.small {
|
||||
background-color: $dep-small;
|
||||
}
|
||||
|
||||
.medium {
|
||||
background-color: $dep-medium;
|
||||
}
|
||||
|
||||
.large {
|
||||
background-color: $dep-large;
|
||||
}
|
||||
|
||||
.xlarge {
|
||||
background-color: $dep-xlarge;
|
||||
}
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
@import "colors";
|
||||
|
||||
.menu-component-header {
|
||||
color: $dark-grey;
|
||||
font-size: 12px;
|
||||
|
||||
a {
|
||||
|
|
|
@ -1,21 +1,12 @@
|
|||
@import "colors";
|
||||
@import "constants";
|
||||
|
||||
|
||||
[data-fr-theme="dark"] .message {
|
||||
background: var(--background-action-low-blue-france);
|
||||
|
||||
&.inverted-background {
|
||||
background: var(--background-action-low-blue-france);
|
||||
}
|
||||
}
|
||||
|
||||
.message {
|
||||
display: flex;
|
||||
align-items: flex-start;
|
||||
margin-bottom: $default-padding;
|
||||
padding: $default-padding;
|
||||
background: $light-grey;
|
||||
background: #FFFFFF;
|
||||
border-radius: 3px;
|
||||
|
||||
&.inverted-background {
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
max-height: 350px;
|
||||
overflow-y: scroll;
|
||||
border: 1px solid $border-grey;
|
||||
background: $light-grey;
|
||||
padding: 2 * $default-spacer;
|
||||
margin-bottom: $default-spacer;
|
||||
border-radius: 4px;
|
||||
|
|
|
@ -7,20 +7,3 @@ span.notifications {
|
|||
border-radius: 4px;
|
||||
background-color: $orange;
|
||||
}
|
||||
|
||||
.fr-tabs__list span.notifications {
|
||||
z-index: 2;
|
||||
top: 5px;
|
||||
right: 8px;
|
||||
}
|
||||
|
||||
.fr-nav {
|
||||
&__notifiable {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.notifications {
|
||||
top: 1rem;
|
||||
right: 0.25rem;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
|
||||
[data-reach-combobox-token] button {
|
||||
border: solid 1px $border-grey;
|
||||
color: $black;
|
||||
margin-top: 0.5 * $default-padding;
|
||||
margin-bottom: 0.5 * $default-padding;
|
||||
margin-right: 0.5 * $default-padding;
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
.types-de-champ-editor {
|
||||
> .types-de-champ-block {
|
||||
padding-bottom: 50px;
|
||||
padding-left: 0;
|
||||
|
||||
.types-de-champ-errors {
|
||||
|
@ -25,9 +26,15 @@
|
|||
box-shadow: 0px 2px 4px -4px;
|
||||
}
|
||||
|
||||
.handle {
|
||||
.handle.icon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
background-size: 32px;
|
||||
margin-left: 7px;
|
||||
margin-right: 16px;
|
||||
align-self: center;
|
||||
cursor: grab;
|
||||
opacity: 0.8;
|
||||
|
||||
&:hover {
|
||||
opacity: 0.4;
|
||||
|
@ -69,6 +76,10 @@
|
|||
display: none;
|
||||
}
|
||||
|
||||
&.last .type-de-champ-add-button.root {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.head {
|
||||
select {
|
||||
margin-bottom: 0px;
|
||||
|
@ -114,6 +125,13 @@
|
|||
}
|
||||
}
|
||||
|
||||
.bottom-container {
|
||||
position: fixed;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
}
|
||||
|
||||
.buttons {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
.procedure-form__column--form {
|
||||
flex: 10;
|
||||
padding: 0 $default-padding;
|
||||
background-color: $light-grey;
|
||||
|
||||
input[type=file] {
|
||||
background-color: transparent; // Remove white bg set by DSFR
|
||||
|
@ -66,11 +67,6 @@
|
|||
}
|
||||
}
|
||||
|
||||
[data-fr-theme="dark"] .procedure-form__actions {
|
||||
background: var(--background-action-low-blue-france);
|
||||
border-top: 1px solid var(--background-action-low-blue-france-hover);
|
||||
}
|
||||
|
||||
.procedure-form__actions {
|
||||
display: flex;
|
||||
padding: $default-spacer $default-padding;
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
|
||||
.stats-legend {
|
||||
font-size: 12px;
|
||||
color: $dark-grey;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -56,6 +56,7 @@
|
|||
|
||||
[data-reach-combobox-token] button {
|
||||
border: solid 1px $border-grey;
|
||||
color: $black;
|
||||
margin: 0.25 * $default-padding;
|
||||
border-radius: 2px;
|
||||
padding: 0.25 * $default-padding;
|
||||
|
|
26
app/assets/stylesheets/sources_particulier_form.scss
Normal file
26
app/assets/stylesheets/sources_particulier_form.scss
Normal file
|
@ -0,0 +1,26 @@
|
|||
@import "constants";
|
||||
|
||||
#sources-particulier-form {
|
||||
h2 {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
h3 {
|
||||
margin-top: 2 * $default-padding;
|
||||
}
|
||||
|
||||
.explication {
|
||||
padding: $default-padding;
|
||||
|
||||
ul {
|
||||
list-style-type: circle;
|
||||
list-style-position: inside;
|
||||
padding-left: $default-padding;
|
||||
margin-bottom: $default-padding;
|
||||
}
|
||||
}
|
||||
|
||||
.form input[type="checkbox"] {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
|
@ -146,11 +146,10 @@ $big-number-card-padding: 2 * $segmented-control-item-border-radius;
|
|||
.big-number-card-number {
|
||||
display: block;
|
||||
text-align: center;
|
||||
font-size: 80px;
|
||||
line-height: 1em;
|
||||
font-size: 90px;
|
||||
line-height: 90px;
|
||||
font-weight: bold;
|
||||
color: $blue-france-500;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.big-number-card-detail {
|
||||
|
|
|
@ -56,17 +56,6 @@
|
|||
width: calc(100vw);
|
||||
}
|
||||
|
||||
|
||||
[data-fr-theme="dark"] .fr-table--bordered {
|
||||
.table {
|
||||
&.hoverable {
|
||||
tbody tr:hover {
|
||||
background-color: var(--background-action-low-blue-france);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.fr-table--bordered {
|
||||
.table {
|
||||
&.hoverable {
|
||||
|
|
57
app/assets/stylesheets/tabs.scss
Normal file
57
app/assets/stylesheets/tabs.scss
Normal file
|
@ -0,0 +1,57 @@
|
|||
@import "colors";
|
||||
@import "mixins";
|
||||
|
||||
.tabs {
|
||||
ul {
|
||||
margin-bottom: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
line-height: 36px;
|
||||
position: relative;
|
||||
text-align: center;
|
||||
font-size: 14px;
|
||||
border-radius: 3px 3px 0 0;
|
||||
border: 1px solid transparent;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding-left: 20px;
|
||||
padding-right: 20px;
|
||||
color: $black;
|
||||
background-image: none;
|
||||
}
|
||||
|
||||
&.active {
|
||||
background-color: #FFFFFF;
|
||||
border-top: 2px solid $blue-france-500;
|
||||
border-left: 1px solid $border-grey;
|
||||
border-right: 1px solid $border-grey;
|
||||
|
||||
a {
|
||||
color: $blue-france-500;
|
||||
}
|
||||
|
||||
.badge {
|
||||
color: $blue-france-500;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover {
|
||||
a {
|
||||
color: $blue-france-500;
|
||||
}
|
||||
|
||||
.badge {
|
||||
color: $blue-france-500;
|
||||
}
|
||||
}
|
||||
|
||||
.notifications {
|
||||
top: 3px;
|
||||
right: 3px;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -2,8 +2,6 @@ class ApplicationComponent < ViewComponent::Base
|
|||
include ViewComponent::Translatable
|
||||
include FlipperHelper
|
||||
|
||||
delegate :rich_text_area_tag, to: :helpers
|
||||
|
||||
def current_user
|
||||
controller.current_user
|
||||
end
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
%li{ id: dom_id(attachment) }
|
||||
= render Attachment::EditComponent.new(champ:, attached_file:, attachment:, index:, as_multiple: true, view_as:, user_can_destroy:, user_can_replace:, form_object_name:)
|
||||
|
||||
%div{ id: empty_component_id, class: class_names("hidden": !can_attach_next?), data: { turbo_force: :server } }
|
||||
%div{ id: empty_component_id, class: class_names("hidden": !can_attach_next?) }
|
||||
= render Attachment::EditComponent.new(champ:, attached_file:, attachment: nil, index: attachments_count, user_can_destroy:, user_can_replace:, form_object_name:)
|
||||
|
||||
// single poll and refresh message for all attachments
|
||||
|
|
|
@ -1,44 +0,0 @@
|
|||
class Conditions::ChampsConditionsComponent < Conditions::ConditionsComponent
|
||||
def initialize(tdc:, upper_tdcs:, procedure_id:)
|
||||
@tdc, @condition, @source_tdcs = tdc, tdc.condition, upper_tdcs
|
||||
@procedure_id = procedure_id
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def logic_conditionnel_button
|
||||
html_class = 'fr-btn fr-btn--tertiary fr-btn--sm'
|
||||
|
||||
if @condition.nil?
|
||||
submit_tag(
|
||||
t('.enable_conditionnel'),
|
||||
formaction: add_condition_path,
|
||||
class: html_class
|
||||
)
|
||||
else
|
||||
submit_tag(
|
||||
t('.disable_conditionnel'),
|
||||
formmethod: 'delete',
|
||||
formnovalidate: true,
|
||||
data: { confirm: t('.disable_conditionnel_alert') },
|
||||
class: html_class
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
def add_condition_path
|
||||
add_row_admin_procedure_condition_path(@procedure_id, @tdc.stable_id)
|
||||
end
|
||||
|
||||
def delete_condition_path(row_index)
|
||||
delete_row_admin_procedure_condition_path(@procedure_id, @tdc.stable_id, row_index: row_index)
|
||||
end
|
||||
|
||||
def input_id_for(name, row_index)
|
||||
"#{@tdc.stable_id}-#{name}-#{row_index}"
|
||||
end
|
||||
|
||||
def input_prefix
|
||||
'type_de_champ[condition_form]'
|
||||
end
|
||||
end
|
|
@ -1,28 +0,0 @@
|
|||
class Conditions::RoutingRulesComponent < Conditions::ConditionsComponent
|
||||
include Logic
|
||||
|
||||
def initialize(groupe_instructeur:)
|
||||
@groupe_instructeur = groupe_instructeur
|
||||
@condition = groupe_instructeur.routing_rule || empty_operator(empty, empty)
|
||||
@procedure_id = groupe_instructeur.procedure_id
|
||||
@source_tdcs = groupe_instructeur.procedure.active_revision.types_de_champ_public
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def add_condition_path
|
||||
add_row_admin_procedure_routing_rule_path(@procedure_id, @groupe_instructeur.id)
|
||||
end
|
||||
|
||||
def delete_condition_path(row_index)
|
||||
delete_row_admin_procedure_routing_rule_path(@procedure_id, @groupe_instructeur.id, row_index: row_index)
|
||||
end
|
||||
|
||||
def input_id_for(name, row_index)
|
||||
"#{@groupe_instructeur.id}-#{name}-#{row_index}"
|
||||
end
|
||||
|
||||
def input_prefix
|
||||
'groupe_instructeur[condition_form]'
|
||||
end
|
||||
end
|
|
@ -1,6 +0,0 @@
|
|||
---
|
||||
fr:
|
||||
display_if: Router si
|
||||
select: Sélectionner
|
||||
add_condition: Ajouter une règle de routage
|
||||
remove_a_row: Supprimer la ligne
|
|
@ -1,31 +0,0 @@
|
|||
.flex.justify-start.section{ id: dom_id(@groupe_instructeur, :routing_rule) }
|
||||
= form_tag admin_procedure_routing_rule_path(@procedure_id, @groupe_instructeur.id),
|
||||
method: :patch,
|
||||
data: { turbo: true, controller: 'autosave' },
|
||||
class: 'form width-100' do
|
||||
.conditionnel.mt-2.width-100
|
||||
.flex
|
||||
- if @groupe_instructeur.invalid_rule?
|
||||
%p.fr-mb-1w.fr-badge.fr-badge--warning.fr-badge--sm règle invalide
|
||||
- elsif @groupe_instructeur.non_unique_rule?
|
||||
%p.fr-mb-1w.fr-badge.fr-badge--warning.fr-badge--sm règle déjà attribuée à #{@groupe_instructeur.groups_with_same_rule}
|
||||
|
||||
= render Conditions::ConditionsErrorsComponent.new(conditions: condition_per_row, source_tdcs: @source_tdcs)
|
||||
|
||||
%table.condition-table.mt-2
|
||||
%thead
|
||||
%tr
|
||||
%th.far-left
|
||||
%th.target Champ Cible
|
||||
%th.operator Opérateur
|
||||
%th.value Valeur
|
||||
%th.delete-column
|
||||
%tbody
|
||||
- rows.each.with_index do |(targeted_champ, operator_name, value), row_index|
|
||||
%tr
|
||||
%td.far-left= far_left_tag(row_index)
|
||||
%td.target= left_operand_tag(targeted_champ, row_index)
|
||||
%td.operator= operator_tag(operator_name, targeted_champ, row_index)
|
||||
%td.value= right_operand_tag(targeted_champ, value, row_index)
|
||||
%td.delete-column= delete_condition_tag(row_index)
|
||||
.flex.justify-end.mt-2= add_condition_tag
|
|
@ -48,8 +48,6 @@
|
|||
= render partial: "shared/champs/regions/show", locals: { champ: champ }
|
||||
- when TypeDeChamp.type_champs.fetch(:rna)
|
||||
= render partial: "shared/champs/rna/show", locals: { champ: champ, profile: @profile }
|
||||
- when TypeDeChamp.type_champs.fetch(:rnf)
|
||||
= render partial: "shared/champs/rnf/show", locals: { champ: champ, profile: @profile }
|
||||
- when TypeDeChamp.type_champs.fetch(:epci)
|
||||
= render partial: "shared/champs/epci/show", locals: { champ: champ }
|
||||
- when TypeDeChamp.type_champs.fetch(:cojo)
|
||||
|
@ -62,3 +60,4 @@
|
|||
%p= helpers.number_with_html_delimiter(champ.to_s)
|
||||
- else
|
||||
= helpers.format_text_value(champ.to_s.strip) # format already wrap in p
|
||||
|
||||
|
|
|
@ -12,18 +12,12 @@ class Dossiers::ErrorsFullMessagesComponent < ApplicationComponent
|
|||
formated_errors = @errors.to_enum # ActiveModel::Errors.to_a is an alias to full_messages, we don't want that
|
||||
.to_a # but enum.to_a gives back an array
|
||||
.uniq { |error| [error.inner_error.base] } # dedup cumulated errors from dossier.champs, dossier.champs_public, dossier.champs_private which run the validator one time per association
|
||||
.map { |error| to_error_descriptor(error) }
|
||||
.map { |error| to_error_descriptor(error.message, error.inner_error.base) }
|
||||
yield(Array(formated_errors[0..2]), Array(formated_errors[3..]))
|
||||
end
|
||||
|
||||
def to_error_descriptor(error)
|
||||
model = error.inner_error.base
|
||||
|
||||
if model.respond_to?(:libelle) # a Champ or something acting as a Champ
|
||||
ErrorDescriptor.new("##{model.labelledby_id}", model.libelle.truncate(200), error.message)
|
||||
else
|
||||
ErrorDescriptor.new("##{model.model_name.singular}_#{error.attribute}", model.class.human_attribute_name(error.attribute), error.message)
|
||||
end
|
||||
def to_error_descriptor(str_error, model)
|
||||
ErrorDescriptor.new("##{model.labelledby_id}", model.libelle.truncate(200), str_error)
|
||||
end
|
||||
|
||||
def render?
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
- elsif commentaire.sent_by_system?
|
||||
= sanitize(commentaire.body, scrubber: Sanitizers::MailScrubber.new)
|
||||
- else
|
||||
= render SimpleFormatComponent.new(commentaire.body, allow_a: false, allow_autolink: commentaire.sent_by_instructeur?)
|
||||
= render SimpleFormatComponent.new(commentaire.body, allow_a: false)
|
||||
|
||||
|
||||
.message-extras.flex.justify-start
|
||||
|
|
|
@ -1,28 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class Dossiers::PendingCorrectionCheckboxComponent < ApplicationComponent
|
||||
attr_reader :dossier
|
||||
|
||||
# Pass the editing fork origin, ie. dossier en construction holding the correction
|
||||
def initialize(dossier:)
|
||||
@dossier = dossier
|
||||
end
|
||||
|
||||
def render?
|
||||
return false unless dossier.procedure.sva_svr_enabled?
|
||||
|
||||
dossier.pending_correction?
|
||||
end
|
||||
|
||||
def error? = dossier.errors.include?(:pending_correction)
|
||||
|
||||
def error_message
|
||||
dossier.errors.generate_message(:pending_correction, :blank)
|
||||
end
|
||||
|
||||
def check_box_aria_attributes
|
||||
return unless error?
|
||||
|
||||
{ describedby: :dossier_pending_correction_error_messages }
|
||||
end
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
---
|
||||
en:
|
||||
confirm_label: I certify that I have made all corrections requested by the administration.
|
|
@ -1,3 +0,0 @@
|
|||
---
|
||||
fr:
|
||||
confirm_label: Je certifie avoir effectué toutes les corrections demandées par l’administration.
|
|
@ -1,10 +0,0 @@
|
|||
.fr-checkbox-group.fr-my-3w{ class: class_names("fr-checkbox-group--error" => error?) }
|
||||
= check_box_tag field_name(:dossier, :pending_correction), "1", false, form: "form-submit-en-construction", required: true, aria: check_box_aria_attributes
|
||||
%label.fr-label{ for: :dossier_pending_correction }
|
||||
= t('.confirm_label')
|
||||
= render EditableChamp::AsteriskMandatoryComponent.new
|
||||
|
||||
- if error?
|
||||
#dossier_pending_correction_error_messages.fr-messages-group{ aria: { live: "assertlive" } }
|
||||
%p.fr-message.fr-message--error= error_message
|
||||
|
|
@ -1,2 +1,2 @@
|
|||
= render Dsfr::ComboboxComponent.new form: @form, name: :value, url: data_sources_data_source_adresse_path, selected: @champ.value, id: @champ.input_id, class: 'fr-select', describedby: @champ.describedby_id, allows_custom_value: true do
|
||||
= render Dsfr::ComboboxComponent.new form: @form, name: :value, url: data_sources_data_source_adresse_path, selected: @champ.value, id: @champ.input_id, class: 'fr-select', describedby: @champ.describedby_id do
|
||||
= @form.hidden_field :external_id, data: { value_slot: 'value' }
|
||||
|
|
|
@ -1,3 +1,21 @@
|
|||
class EditableChamp::CommunesComponent < EditableChamp::EditableChampBaseComponent
|
||||
include ApplicationHelper
|
||||
|
||||
def dsfr_champ_container
|
||||
:fieldset
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def commune_options
|
||||
@champ.communes.map { ["#{_1[:name]} (#{_1[:postal_code]})", _1[:code]] }
|
||||
end
|
||||
|
||||
def code_postal_input_id
|
||||
"#{@champ.input_id}-code_postal"
|
||||
end
|
||||
|
||||
def commune_select_options
|
||||
{ selected: @champ.selected }.merge(@champ.mandatory? ? { prompt: '' } : { include_blank: '' })
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
en:
|
||||
postal_code: "Enter <strong>the postal code</strong>"
|
||||
commune: "Select <strong>the municipality</strong> from the list"
|
||||
not_found: No municipality found for postal code %{postal_code}. Please check that you haven't made any mistakes.
|
|
@ -0,0 +1,5 @@
|
|||
---
|
||||
fr:
|
||||
postal_code: "Renseignez le <strong>code postal</strong>"
|
||||
commune: "Sélectionnez la commune dans la liste"
|
||||
not_found: Aucune commune trouvée pour le code postal %{postal_code}. Verifiez que vous n'avez pas fait d’erreur.
|
|
@ -1,2 +1,23 @@
|
|||
= render Dsfr::ComboboxComponent.new form: @form, name: :external_id, url: data_sources_data_source_commune_path, selected: [@champ.to_s, @champ.selected], id: @champ.input_id, class: 'fr-select', describedby: @champ.describedby_id do
|
||||
= @form.hidden_field :code_postal, data: { value_slot: 'data:string' }
|
||||
.fr-fieldset__element.fr-mb-0
|
||||
.fr-input-group
|
||||
= @form.label :code_postal, t('.postal_code').html_safe, class: 'fr-label', for: code_postal_input_id
|
||||
= @form.text_field :code_postal, required: @champ.required?, id: code_postal_input_id, class: "width-33-desktop width-100-mobile small-margin fr-input"
|
||||
- if @champ.code_postal?
|
||||
- if commune_options.empty?
|
||||
.fr-error-text.mb-4= t('.not_found', postal_code: @champ.code_postal)
|
||||
|
||||
.fr-fieldset__element.fr-mb-0
|
||||
- if commune_options.empty?
|
||||
-# noop
|
||||
- elsif commune_options.size <= 3
|
||||
%fieldset.fr-fieldset
|
||||
.fr-fieldset__legend--regular.fr-fieldset__legend= t('.commune').html_safe
|
||||
|
||||
- commune_options.each.with_index do |(option, value), index|
|
||||
.fr-fieldset__element
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, value, checked: @champ.selected == value, id: "#{code_postal_input_id}-#{value.parameterize}"
|
||||
= @form.label :value, option, for: "#{code_postal_input_id}-#{value.parameterize}", class: 'fr-label'
|
||||
- else
|
||||
= @form.label :value, t('.commune').html_safe, for: @champ.input_id, class: 'fr-label'
|
||||
= @form.select :value, commune_options, commune_select_options, required: @champ.required?, id: @champ.input_id, aria: { describedby: @champ.describedby_id }, class: "width-33-desktop width-100-mobile fr-select"
|
||||
|
|
|
@ -1 +1 @@
|
|||
= @form.text_field(:value, input_opts(id: @champ.input_id, aria: { describedby: @champ.describedby_id }, required: @champ.required?, pattern: "-?[0-9]+([\.,][0-9]{1,3})?", inputmode: :decimal, data: { controller: 'format', format: :decimal }))
|
||||
= @form.text_field(:value, input_opts(id: @champ.input_id, aria: { describedby: @champ.describedby_id }, required: @champ.required?, pattern: "-?[0-9]+([\.,][0-9]{1,3})?", inputmode: :decimal, data: { controller: 'format decimal-number-input', format: :decimal }))
|
||||
|
|
|
@ -1,8 +1,4 @@
|
|||
class EditableChamp::DropDownListComponent < EditableChamp::EditableChampBaseComponent
|
||||
def render?
|
||||
@champ.options?
|
||||
end
|
||||
|
||||
def select_class_names
|
||||
class_names('width-100': contains_long_option?, 'fr-select': true)
|
||||
end
|
||||
|
@ -15,12 +11,8 @@ class EditableChamp::DropDownListComponent < EditableChamp::EditableChampBaseCom
|
|||
@champ.render_as_radios? ? :fieldset : :div
|
||||
end
|
||||
|
||||
def other_element_class_names
|
||||
class_names("fr-fieldset__element" => dsfr_champ_container == :fieldset)
|
||||
end
|
||||
|
||||
def contains_long_option?
|
||||
max_length = 100
|
||||
@champ.enabled_non_empty_options.any? { _1.size > max_length }
|
||||
@champ.options.any? { _1.size > max_length }
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
- if @champ.render_as_radios?
|
||||
.fr-fieldset__content
|
||||
- @champ.enabled_non_empty_options.each_with_index do |option, index|
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, option, id: "#{@champ.id}_radio_option_#{index}"
|
||||
%label.fr-label{ for: "#{@champ.id}_radio_option_#{index}" }
|
||||
= option
|
||||
- if @champ.options?
|
||||
- if @champ.render_as_radios?
|
||||
.fr-fieldset__content
|
||||
- @champ.enabled_non_empty_options.each_with_index do |option, index|
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, option, id: "#{@champ.id}_radio_option_#{index}"
|
||||
%label.fr-label{ for: "#{@champ.id}_radio_option_#{index}" }
|
||||
= option
|
||||
|
||||
- if !@champ.mandatory?
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, '', checked: @champ.value.blank? && !@champ.other?, id: "#{@champ.id}_radio_option_blank"
|
||||
%label.fr-label{ for: "#{@champ.id}_radio_option_blank" }
|
||||
Non renseigné
|
||||
- if !@champ.mandatory?
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, '', checked: @champ.value.blank? && !@champ.other?, id: "#{@champ.id}_radio_option_blank"
|
||||
%label.fr-label{ for: "#{@champ.id}_radio_option_blank" }
|
||||
Non renseigné
|
||||
|
||||
- if @champ.drop_down_other?
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, Champs::DropDownListChamp::OTHER, checked: @champ.other?, id: "#{@champ.id}_radio_option_other"
|
||||
%label.fr-label{ for: "#{@champ.id}_radio_option_other" }
|
||||
= t('shared.champs.drop_down_list.other')
|
||||
- elsif @champ.render_as_combobox?
|
||||
= render Dsfr::ComboboxComponent.new form: @form, name: :value, options: @champ.enabled_non_empty_options(other: true), selected: @champ.selected, id: @champ.input_id, class: select_class_names, describedby: @champ.describedby_id
|
||||
- else
|
||||
= @form.select :value,
|
||||
@champ.enabled_non_empty_options(other: true),
|
||||
{ selected: @champ.selected, include_blank: true },
|
||||
required: @champ.required?,
|
||||
id: @champ.input_id,
|
||||
class: select_class_names,
|
||||
aria: { describedby: @champ.describedby_id }
|
||||
- if @champ.drop_down_other?
|
||||
.fr-radio-group
|
||||
= @form.radio_button :value, Champs::DropDownListChamp::OTHER, checked: @champ.other?, id: "#{@champ.id}_radio_option_other"
|
||||
%label.fr-label{ for: "#{@champ.id}_radio_option_other" }
|
||||
Autre
|
||||
- elsif @champ.render_as_combobox?
|
||||
= render Dsfr::ComboboxComponent.new form: @form, name: :value, options: @champ.enabled_non_empty_options, selected: @champ.selected, id: @champ.input_id, class: select_class_names, describedby: @champ.describedby_id
|
||||
- else
|
||||
= @form.select :value,
|
||||
@champ.options.compact_blank,
|
||||
{ selected: @champ.selected, include_blank: true },
|
||||
required: @champ.required?,
|
||||
id: @champ.input_id,
|
||||
class: select_class_names,
|
||||
aria: { describedby: @champ.describedby_id }
|
||||
|
||||
- if @champ.drop_down_other?
|
||||
%div{ class: other_element_class_names }
|
||||
- if @champ.drop_down_other?
|
||||
= render EditableChamp::DropDownOtherInputComponent.new(form: @form, champ: @champ)
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
class EditableChamp::EngagementJuridiqueComponent < EditableChamp::EditableChampBaseComponent
|
||||
end
|
|
@ -1,2 +0,0 @@
|
|||
---
|
||||
en:
|
|
@ -1 +0,0 @@
|
|||
= @form.text_field(:value, input_opts(id: @champ.input_id, required: @champ.required?, aria: { describedby: @champ.describedby_id }))
|
|
@ -1,2 +0,0 @@
|
|||
---
|
||||
fr:
|
|
@ -8,7 +8,7 @@ class EditableChamp::EpciComponent < EditableChamp::EditableChampBaseComponent
|
|||
private
|
||||
|
||||
def departement_options
|
||||
APIGeoService.departements.filter(&method(:departement_with_epci?)).map { ["#{_1[:code]} – #{_1[:name]}", _1[:code]] }
|
||||
APIGeoService.departements.filter { _1[:code] != '99' }.map { ["#{_1[:code]} – #{_1[:name]}", _1[:code]] }
|
||||
end
|
||||
|
||||
def epci_options
|
||||
|
@ -26,9 +26,4 @@ class EditableChamp::EpciComponent < EditableChamp::EditableChampBaseComponent
|
|||
def epci_select_options
|
||||
{ selected: @champ.code }.merge(@champ.mandatory? ? { prompt: '' } : { include_blank: '' })
|
||||
end
|
||||
|
||||
def departement_with_epci?(departement)
|
||||
code = departement[:code]
|
||||
!code.start_with?('98') && !code.in?(['99', '975', '977', '978'])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
class EditableChamp::ExpressionReguliereComponent < EditableChamp::EditableChampBaseComponent
|
||||
def dsfr_input_classname
|
||||
'fr-input'
|
||||
end
|
||||
end
|
|
@ -1 +0,0 @@
|
|||
= @form.text_field(:value, input_opts(id: @champ.input_id, placeholder: @champ.expression_reguliere_exemple_text, required: @champ.required?, aria: { describedby: @champ.describedby_id }))
|
|
@ -1,5 +1,5 @@
|
|||
%fieldset
|
||||
%legend.fr-h5{ legend_params }= @champ.libelle
|
||||
%legend.header-subsection{ legend_params }= @champ.libelle
|
||||
- if @champ.description.present?
|
||||
.notice{ notice_params }= render SimpleFormatComponent.new(@champ.description, allow_a: true)
|
||||
|
||||
|
|
|
@ -1,2 +0,0 @@
|
|||
class EditableChamp::RNFComponent < EditableChamp::EditableChampBaseComponent
|
||||
end
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
en:
|
||||
rnf_info_error: No foundation found
|
||||
rnf_info_pending: RNF verification pending
|
||||
rnf_info_success: "This RNF matches %{title}"
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
fr:
|
||||
rnf_info_error: Aucune fondation trouvée
|
||||
rnf_info_pending: Vérification du RNF en cours
|
||||
rnf_info_success: "Ce RNF correspond à %{title}"
|
|
@ -1,9 +0,0 @@
|
|||
= @form.text_field :external_id, required: @champ.required?, class: "width-33-desktop fr-input small-margin", id: @champ.input_id
|
||||
|
||||
.rnf-info{ id: dom_id(@champ, :rnf_info) }
|
||||
- if @champ.fetch_external_data_error?
|
||||
%p.fr-error-text= t('.rnf_info_error')
|
||||
- elsif @champ.fetch_external_data_pending?
|
||||
%p.fr-info-text= t('.rnf_info_pending')
|
||||
- elsif @champ.data?
|
||||
%p.fr-info-text= t('.rnf_info_success', title: @champ.title)
|
|
@ -1,5 +0,0 @@
|
|||
class GroupeGestionnaire::Card::ChildrenComponent < ApplicationComponent
|
||||
def initialize(groupe_gestionnaire:)
|
||||
@groupe_gestionnaire = groupe_gestionnaire
|
||||
end
|
||||
end
|
|
@ -1,5 +0,0 @@
|
|||
---
|
||||
fr:
|
||||
title:
|
||||
one: Groupe enfants
|
||||
other: Groupes enfants
|
|
@ -1,10 +0,0 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||
= link_to gestionnaire_groupe_gestionnaire_children_path(@groupe_gestionnaire), id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%p.fr-tag= @groupe_gestionnaire.children.size
|
||||
%h3.fr-h6
|
||||
= t('.title', count: @groupe_gestionnaire.children.size)
|
||||
%p.fr-btn.fr-btn--tertiary= t('views.shared.actions.edit')
|
|
@ -1,10 +1,13 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||
= link_to gestionnaire_groupe_gestionnaire_gestionnaires_path(@groupe_gestionnaire), id: 'gestionnaires', class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%p.fr-tag= @groupe_gestionnaire.gestionnaires.size
|
||||
%h3.fr-h6
|
||||
= t('.title', count: @groupe_gestionnaire.gestionnaires.size)
|
||||
%p.fr-tile-subtitle Gestion de la démarche
|
||||
%p.fr-btn.fr-btn--tertiary= t('views.shared.actions.edit')
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
class GroupeGestionnaire::GroupeGestionnaireChildren::ChildComponent < ApplicationComponent
|
||||
include ApplicationHelper
|
||||
|
||||
def initialize(groupe_gestionnaire:, child:)
|
||||
@groupe_gestionnaire = groupe_gestionnaire
|
||||
@child = child
|
||||
end
|
||||
|
||||
def name
|
||||
@child.name
|
||||
end
|
||||
|
||||
def created_at
|
||||
try_format_datetime(@child.created_at)
|
||||
end
|
||||
end
|
|
@ -1,4 +0,0 @@
|
|||
%tr{ id: dom_id(@child) }
|
||||
%td
|
||||
= link_to name, gestionnaire_groupe_gestionnaire_path(@child)
|
||||
%td= created_at
|
|
@ -1,24 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class MainNavigation::AnnouncesLinkComponent < ApplicationComponent
|
||||
def render?
|
||||
# also see app/controllers/release_notes_controller.rb#ensure_access_allowed!
|
||||
return false if !helpers.instructeur_signed_in? && !helpers.administrateur_signed_in? && !helpers.expert_signed_in?
|
||||
|
||||
@most_recent_released_on = load_most_recent_released_on
|
||||
|
||||
@most_recent_released_on.present?
|
||||
end
|
||||
|
||||
def something_new?
|
||||
return true if current_user.announces_seen_at.nil?
|
||||
|
||||
@most_recent_released_on.after? current_user.announces_seen_at
|
||||
end
|
||||
|
||||
def load_most_recent_released_on
|
||||
categories = helpers.infer_default_announce_categories
|
||||
|
||||
ReleaseNote.most_recent_announce_date_for_categories(categories)
|
||||
end
|
||||
end
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
en:
|
||||
news: News
|
||||
something_new: New informations about the website may be of interest to you.
|
|
@ -1,4 +0,0 @@
|
|||
---
|
||||
fr:
|
||||
news: Nouveautés
|
||||
something_new: De nouvelles informations à propos du site pourraient vous intéresser.
|
|
@ -1,4 +0,0 @@
|
|||
%li.fr-nav__item.fr-nav__notifiable
|
||||
= link_to t('.news'), release_notes_path, class: "fr-nav__link",'aria-current': current_page?(release_notes_path) ? 'page' : nil
|
||||
- if something_new?
|
||||
%span.notifications{ 'aria-label': t('.something_new') }
|
|
@ -1,26 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
|
||||
class MainNavigation::InstructeurExpertNavigationComponent < ApplicationComponent
|
||||
def instructeur?
|
||||
helpers.instructeur_signed_in?
|
||||
end
|
||||
|
||||
def expert?
|
||||
helpers.expert_signed_in?
|
||||
end
|
||||
|
||||
def aria_current_for(page)
|
||||
{ current: page == current_page ? :page : nil }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def current_page
|
||||
case controller_name
|
||||
when 'avis'
|
||||
:avis
|
||||
when 'procedures', 'dossiers'
|
||||
:procedure
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,14 +0,0 @@
|
|||
%nav#header-navigation.fr-nav{ role: :navigation, "aria-label" => t('main_menu', scope: [:layouts, :header]) }
|
||||
%ul.fr-nav__list
|
||||
- if instructeur?
|
||||
%li.fr-nav__item
|
||||
= link_to Procedure.model_name.human(count: 10), instructeur_procedures_path, class: 'fr-nav__link', aria: aria_current_for(:procedure)
|
||||
|
||||
- if expert?
|
||||
%li.fr-nav__item
|
||||
= link_to expert_all_avis_path, class: 'fr-nav__link', aria: aria_current_for(:avis) do
|
||||
= Avis.model_name.human(count: 10)
|
||||
- if helpers.current_expert.avis_summary[:unanswered] > 0
|
||||
%span.badge.warning= helpers.current_expert.avis_summary[:unanswered]
|
||||
|
||||
= render MainNavigation::AnnouncesLinkComponent.new
|
|
@ -1,7 +1,9 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||
= link_to admin_procedure_administrateurs_path(@procedure), id: 'administrateurs', class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%p.fr-tag= @procedure.administrateurs.size
|
||||
|
|
|
@ -6,9 +6,13 @@
|
|||
%span.icon.refuse
|
||||
%p.fr-tile-status-error À modifier
|
||||
- elsif @count == 0
|
||||
%p.fr-badge.fr-badge--info À configurer
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À configurer
|
||||
- else
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%p.fr-tag= @count
|
||||
|
|
|
@ -2,9 +2,13 @@
|
|||
= link_to jeton_admin_procedure_path(@procedure), class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
- if @procedure.api_entreprise_token.present?
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
- else
|
||||
%p.fr-badge.fr-badge--info À configurer
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À configurer
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= t('.title')
|
||||
%p.fr-tile-subtitle Configurer le jeton API entreprise
|
||||
|
|
|
@ -2,9 +2,13 @@
|
|||
= link_to admin_procedure_api_particulier_path(@procedure), class: 'fr-tile fr-enlarge-link', id: 'api-particulier' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
- if @procedure.api_particulier_token.present?
|
||||
%p.fr-badge.fr-badge--success= t('.ready')
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept= t('.ready')
|
||||
- else
|
||||
%p.fr-badge.fr-badge--info= t('.needs_configuration')
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo= t('.needs_configuration')
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= Procedure.human_attribute_name(:api_particulier_token)
|
||||
%p.fr-tile-subtitle= t('.configure_api_particulier_token')
|
||||
|
|
|
@ -4,11 +4,15 @@
|
|||
- if @procedure.attestation_template&.activated?
|
||||
%div
|
||||
- if error_messages.present?
|
||||
%p.fr-badge.fr-badge--warning À modifier
|
||||
%span.icon.refuse
|
||||
%p.fr-tile-status-error À modifier
|
||||
- else
|
||||
%p.fr-badge.fr-badge--success Activée
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Activée
|
||||
- else
|
||||
%p.fr-badge Désactivée
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo Désactivée
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= t('.title')
|
||||
%p.fr-tile-subtitle Délivrance automatique pour les dossiers acceptés
|
||||
|
|
|
@ -6,9 +6,13 @@
|
|||
%span.icon.refuse
|
||||
%p.fr-tile-status-error À modifier
|
||||
- elsif @count == 0
|
||||
%p.fr-badge.fr-badge--warning À faire
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À faire
|
||||
- else
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%p.fr-tag= @count
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
class Procedure::Card::ChorusComponent < ApplicationComponent
|
||||
def initialize(procedure:)
|
||||
@procedure = procedure
|
||||
end
|
||||
|
||||
def render?
|
||||
@procedure.chorusable?
|
||||
end
|
||||
|
||||
def complete?
|
||||
@procedure.chorus_configuration.complete?
|
||||
end
|
||||
end
|
|
@ -1,12 +0,0 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3.chorus-component
|
||||
= link_to edit_admin_procedure_chorus_path(@procedure), class: 'fr-tile fr-enlarge-link', title: 'Configurer le cadre budgetaire Chorus' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
- if !@procedure.chorus_configuration.complete?
|
||||
%p.fr-badge.fr-badge--warning À compléter
|
||||
- else
|
||||
%p.fr-badge.fr-badge--success Configuré
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v
|
||||
Connecteur Chorus
|
||||
%p.fr-tile-subtitle Vous traitez des données de subvention d'état ?
|
||||
%p.fr-btn.fr-btn--tertiary Configurer
|
|
@ -2,9 +2,13 @@
|
|||
= link_to edit_admin_procedure_dossier_submitted_message_path(@procedure), class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
- if @procedure.active_dossier_submitted_message.present?
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
- else
|
||||
%p.fr-badge.fr-badge--info À configurer
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À configurer
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= t('.title')
|
||||
%p.fr-tile-subtitle Orienter l'usager suite à l'envoi de son dossier
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
class Procedure::Card::EmailsComponent < ApplicationComponent
|
||||
CUSTOMIZABLE_COUNT = 6
|
||||
CUSTOMIZABLE_COUNT = 5
|
||||
|
||||
def initialize(procedure:)
|
||||
@procedure = procedure
|
||||
|
@ -31,8 +31,7 @@ class Procedure::Card::EmailsComponent < ApplicationComponent
|
|||
@procedure.received_mail,
|
||||
@procedure.closed_mail,
|
||||
@procedure.refused_mail,
|
||||
@procedure.without_continuation_mail,
|
||||
@procedure.re_instructed_mail
|
||||
@procedure.without_continuation_mail
|
||||
].map { |mail| mail&.updated_at }.compact.size
|
||||
end
|
||||
end
|
||||
|
|
|
@ -3,11 +3,14 @@
|
|||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%div
|
||||
- if error_messages.present?
|
||||
%p.fr-badge.fr-badge--warning À modifier
|
||||
%span.icon.refuse
|
||||
%p.fr-tile-status-error À modifier
|
||||
- elsif fully_customized?
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-todo Validé
|
||||
- else
|
||||
%p.fr-badge.fr-badge--info À configurer
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À configurer
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%p.fr-tag= customized_progress
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||
= link_to admin_procedure_experts_path(@procedure), class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%p.fr-badge.fr-badge--info À configurer
|
||||
%div
|
||||
%span.icon.preview
|
||||
%p.fr-tile-status-todo À configurer
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= t('.title')
|
||||
%p.fr-tile-subtitle Gérer les avis des experts invités
|
||||
|
|
|
@ -2,9 +2,13 @@
|
|||
= link_to admin_procedure_groupe_instructeurs_path(@procedure), id: 'groupe-instructeurs', class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
- if @procedure.routing_enabled? || @procedure.instructeurs.present?
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
- else
|
||||
%p.fr-badge.fr-badge--warning À faire
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À faire
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
- if @procedure.routing_enabled?
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||
= link_to modifications_admin_procedure_path(@procedure), id: 'modifications', class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%p.fr-badge.fr-badge--success Activée
|
||||
%div
|
||||
.line-count.fr-my-1w
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Activée
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v
|
||||
%p.fr-tag= @procedure.revisions_count
|
||||
%h3.fr-h6
|
||||
= t('.title', count: @procedure.revisions_count)
|
||||
|
||||
%p.fr-tile-subtitle Historique des modifications du formulaire
|
||||
|
|
|
@ -2,9 +2,13 @@
|
|||
= link_to monavis_admin_procedure_path(@procedure), class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
- if @procedure.monavis_embed.present?
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
- else
|
||||
%p.fr-badge.fr-badge--info À configurer
|
||||
%div
|
||||
%span.icon.clock
|
||||
%p.fr-tile-status-todo À configurer
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= t('.title')
|
||||
%p.fr-tile-subtitle Avis des usagers sur votre démarche
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
.fr-col-6.fr-col-md-4.fr-col-lg-3
|
||||
= link_to edit_admin_procedure_path(@procedure), id: 'presentation', class: 'fr-tile fr-enlarge-link' do
|
||||
.fr-tile__body.flex.column.align-center.justify-between
|
||||
%p.fr-badge.fr-badge--success Validé
|
||||
%div
|
||||
%span.icon.accept
|
||||
%p.fr-tile-status-accept Validé
|
||||
%div
|
||||
%h3.fr-h6.fr-mt-10v= t('.title')
|
||||
%p.fr-tile-subtitle Logo, nom, description
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue