sebastiencarceles
c203a7a3fd
remove the confusing help ('nom@site.com')
...
closes #7727
2022-09-07 08:04:26 +02:00
sebastiencarceles
b643660017
'Choix parmi une liste' becomes 'Choix unique'
...
closes #7374
2022-09-06 11:26:30 +02:00
Martin
abbef510c6
fix(breadcrumb): update turbo usage with new breadcrumb "api"
2022-09-06 10:09:12 +02:00
Martin
ecbe51f928
feat(a11y): avoid wrong heading level
2022-09-06 10:09:12 +02:00
Martin
795f6ab29b
fix(header): add missing i18n
2022-09-06 10:09:12 +02:00
Martin
fb0e863efd
feat(header): migrate help button to dsfr
2022-09-06 10:09:12 +02:00
Martin
df3ef23f7e
fix(spec): 1. visit new_user_session_path instead of navigating to it. 2. change way to submit search according to dsfr html. 3. avoid nav without aria label. 4. various lint fixes
2022-09-06 10:09:12 +02:00
Martin
a48a8b6081
feat(title): avoid title issues
2022-09-06 10:09:12 +02:00
Martin
af00936aac
ui(header): refine to fit with olivier design
2022-09-06 10:09:12 +02:00
Martin
73f94b9635
feat(header): switch to DSFR translate component and dropdown component
2022-09-06 10:09:12 +02:00
Martin
96cdae0dd5
feat(DSFR.header): switch to DSFR header
2022-09-06 10:09:12 +02:00
Martin
549eda6fe3
feat(DSFR.breadcrumb): switch to DSFR breadcrumb style since it is part of new service UI
2022-09-06 10:09:12 +02:00
Colin Darie
3cb25e8393
fix(geopoint_field): no geoportail link without coordinates
2022-09-06 09:23:52 +02:00
Colin Darie
3c9b41e233
fix(manager/services): d'ont search in etablissement_adresse (this is not a schema field)
2022-09-06 09:23:52 +02:00
Colin Darie
3cda6b7d62
chore(graphql): expose service#siret
2022-09-06 09:23:52 +02:00
Colin Darie
91c735a219
chore(service): SIRET is required
2022-09-06 09:23:52 +02:00
Colin Darie
9d59a50cd4
chore(manager/services): show etablissement adresse & geopoint
2022-09-06 09:23:52 +02:00
Colin Darie
67cbc61e1e
chore(services): update etablissement adresse & geocode when siret changes
2022-09-06 09:23:52 +02:00
Colin Darie
8762acc0b5
chore(services): fetch etablissement adresse from API Entreprise
2022-09-06 09:23:52 +02:00
Colin Darie
7d39cc6b3e
chore(schema): +services#etablissement_{infos,geopoint}
...
- `etablissement_infos` est une représentation partielle en jsonb
de ce qui est renvoyé par l'API Entreprise.
(On ne conserve que l'adresse pour le moment, utilisée pour le geocodage)
- `etablissement_geopoint` est le point (x,y) issu du géocodage de
l'établissement
2022-09-06 09:23:52 +02:00
Colin Darie
b75cff2fc3
refactor: API Entreprise instancified, more flexible for various input params
...
En fonction des resources, l'API est appelée :
- dans le contexte d'une Procedure ou non
- avec ou sans token injecté
- avec ou sans siret/siren
- avec ou sans user
2022-09-06 09:23:52 +02:00
Colin Darie
c02f68083c
feat(manager/service): show SIRET number
2022-09-06 09:23:52 +02:00
Colin Darie
fd18f8b5f8
feat(services): serializer with siret
2022-09-06 09:23:52 +02:00
Colin Darie
ad52710c3c
fix(siret): don't add twice invalid format errors
2022-09-06 09:23:52 +02:00
Colin Darie
64ce2719ed
feat(services): accept an optional SIRET
...
Closes #7359
2022-09-06 09:23:52 +02:00
Colin Darie
a4d9a45280
chore(schema): +services#siret
2022-09-06 09:23:52 +02:00
Colin Darie
a9aab27589
fix(contact-admin): add missing invisible captcha
2022-09-05 17:41:17 +02:00
Colin Darie
be965e4fdd
fix(api_entreprise): don't fail with entreprise without date_creation
2022-09-05 15:52:06 +02:00
Colin Darie
4e3b063b87
feat(carte/export): list geo labels
2022-09-05 11:02:51 +02:00
simon lehericey
d612c39438
fix(admin procedure preview): redirect is procedure invalid
2022-09-05 10:18:33 +02:00
simon lehericey
e9677c37a1
fix(admin procedure preview): remove preview and continue buttons where procedure invalid
2022-09-05 10:17:05 +02:00
Martin
6114d1ea2f
fix(helpscout#1994272872): pdf export contains ? with telecharger_psj.
2022-09-05 09:54:22 +02:00
Paul Chavard
ab3404714a
fix(css): rename css file to fix legacy browsers
2022-09-02 19:07:10 +02:00
simon lehericey
8c884b4869
fix(migration): fix avis email notification migration
2022-09-02 17:23:04 +02:00
Kara Diaby
f7039bbb0a
layout
2022-09-02 16:23:27 +02:00
Kara Diaby
f8d4644f73
models
2022-09-02 16:23:27 +02:00
Kara Diaby
98f4250214
controller
2022-09-02 16:23:27 +02:00
Martin
4537d2149d
fix(service#index): caption absolute positionning does works well with long captions
2022-09-02 10:29:00 +02:00
Martin
ae1e8caf31
fix(dsfr): removed image on link
2022-09-02 09:36:58 +02:00
Martin
7a3dddf9de
fix(dsfr): side effect
2022-09-01 17:12:22 +02:00
simon lehericey
bad058891b
feat(conditional): block actions and hide revision details if procedure invalid
2022-09-01 15:07:18 +02:00
simon lehericey
f4b465a03f
add errors_summary component
2022-09-01 15:07:18 +02:00
Martin
17c7ae1904
fix(a11y): input issue
2022-09-01 14:54:38 +02:00
Paul Chavard
afefa2bfb4
fix(dossier): fix user form component migration errors
2022-09-01 12:43:24 +02:00
simon lehericey
994d73b426
move trad
2022-09-01 09:48:27 +02:00
simon lehericey
a3e8c09e71
component all the champ
2022-09-01 09:48:27 +02:00
Paul Chavard
ebfed21fa8
chore(npm): update dependencies
2022-09-01 09:32:50 +02:00
Colin Darie
b4f791b1f1
fix(rgaa): missing title on signin (8.6)
2022-08-31 17:46:04 +02:00
Colin Darie
ba70cae75a
fix(a11y/html): email input with autocomplete=email
2022-08-31 17:46:04 +02:00
Colin Darie
4535810ed4
fix(a11y/html): add role=main on main content
2022-08-31 17:46:04 +02:00
Colin Darie
f4c76ca677
fix(a11y/flash): add role=alert or status to flash messages
2022-08-31 17:46:04 +02:00
Colin Darie
3148266b49
refactor(rgaa/contact): inject invisible_captcha styles into head instead of div
2022-08-31 17:46:04 +02:00
Colin Darie
aab3e3a4be
fix(rgaa/layout): invalid button > label
2022-08-31 17:46:04 +02:00
Colin Darie
69fe333aad
refactor(rgaa/contact): question type as radio buttons for better rgaa compliance
...
On suit les recommandations de l'audit RGAA 2021, mais il y aurait encore
peut-être à redire…
2022-08-31 17:46:04 +02:00
Colin Darie
4f8391bc7c
fix(rgaa/html): locale dropdown with valid html
2022-08-31 17:46:04 +02:00
Colin Darie
baf88f97e3
fix(rgaa/contact): replace misuse of dl/dd with ul/li
...
(Critère 9.3)
2022-08-31 17:46:04 +02:00
Colin Darie
cc93beb89e
chore(rgaa/images): empty alt / aria hidden for non informative image
2022-08-31 17:46:04 +02:00
Colin Darie
88ceae8b7e
chore(views): remove obsolete partial
2022-08-31 17:46:04 +02:00
Colin Darie
b1e9dffbc6
chore(rubocop): enable on .prawn files
2022-08-31 16:52:00 +02:00
Colin Darie
d30f51af79
fix(dossier/attestation_pdf): don't overlap DS name over logo
...
Le logo contient déjà le nom "demarches-simplifiees.fr", donc inutile
de le redupliquer en texte.
A la place on reprend le layout utilisé sur d'autres PDF.
Closes #7698
2022-08-31 16:52:00 +02:00
Martin
cc2b9b95bf
clean(import): dsfr
2022-08-31 15:18:21 +02:00
Martin
14625c29d1
fix(lint): fixlint
2022-08-31 14:56:01 +02:00
Martin
f3ad8e2ead
clean(service.edit.html.haml): extract other services
2022-08-31 14:56:01 +02:00
Martin
39b328a984
ui(Administrateur::Procedure::Service): use ds-fr table and some ui refinements
2022-08-31 14:56:01 +02:00
Martin
2649cc477f
feat(Administrateur::Procedure::Service.form): resize inputs
2022-08-31 14:56:01 +02:00
Martin
edbff1ceb2
feat(Administrateur::Procedure::Service.form): add back link
2022-08-31 14:56:01 +02:00
Martin
d2b42dda2e
feat(Administrateur::Procedure::Service.form): enhance wording and styl
2022-08-31 14:56:00 +02:00
Martin
f086302455
feat(Administrateurs::Procedure::Service#form): wrap explanation within DSFR::CallOut
2022-08-31 14:56:00 +02:00
Martin
289b8f78b8
feat(Administrateur::Services#index): rework list of services
2022-08-31 14:56:00 +02:00
Martin
a2311b1b75
perf(dsfr): only include what alert and its dependencies as refered in README of each components
2022-08-31 14:56:00 +02:00
Martin
17d8c7a371
feat(Administrateurs::Procedure::Service#edit): update UI with new warning as well as DSFR ui
...
feat(Administrateur::Procedure::Service#edit): add warning message a la DSFR
2022-08-31 14:56:00 +02:00
Martin
1bdbf2a7d7
feat(DesignSysteme): add DSfr and switch to Marianne font
2022-08-31 14:56:00 +02:00
Martin
5f2b290407
feat(Procedure.clone): reset subject.duree_conservation_dossiers_dans_ds when procedure.duree_conservation_etendue_par_ds was extended. only extends it on demand otherwise admin could clone old procedure with higher duree_conservation_dossiers_dans_ds
2022-08-31 14:56:00 +02:00
Martin
51680b11c2
feat(Adminstrateur::Procedures#clone): redirect to home of procedure with special info regarding procedure presentation & service
2022-08-31 14:56:00 +02:00
Martin
6e31decc2d
feat(Procedure.clone): stop cloning procedure service which is confusing for some administrateurs
2022-08-31 14:56:00 +02:00
Paul Chavard
d1ae98b9a7
feat(css): add dsfr
2022-08-31 14:53:50 +02:00
Colin Darie
4ece7c2494
fix(champ): remove null byte before save
...
Les null bytes peuvent être injectés lors de c/c depuis certains documents,
et ne sont pas sauvegardables en base, rendant la sauvegarde d'un dossier impossible.
Closes #7656
https://sentry.io/organizations/demarches-simplifiees/issues/3194932607/activity/?project=1429550&query=is%3Aunresolved
2022-08-31 11:39:34 +02:00
Christian
63a4a13323
Graphql: Fix champs sort in repetition
2022-08-31 11:15:28 +02:00
Martin
69ef1d508d
fix(brouillon.edit.form): when their is a type de champs repetition having a child being mandatory ; the form being not validatable the browser does not block the submission
2022-08-24 15:18:05 +02:00
Martin
1a1f44c5e6
fix(rubocop): filter does not exists on strong parameter...
2022-08-24 15:03:36 +02:00
Martin
2f5528398f
feat(manager#outdated_procedure): allow super admin to enable procedure_expires_when_termine_enabled for old procedure
...
revew(typo): various typo, tx christophe :-)
fix(spec): due to typo fixes
2022-08-24 13:10:48 +02:00
Martin
748b8c9d64
fix(instructeurs/archives#create): missing renaming during refacto
2022-08-23 15:31:17 +02:00
Martin
e35da17ce8
bug(instructeurs/archives#create): month should not be nil
2022-08-23 15:31:17 +02:00
Christophe Robillard
d4cdf1fb96
add dolist link to manager
2022-08-23 15:05:20 +02:00
Christophe Robillard
efbec80af8
update saml controller and views
...
because of using another gem (saml_idp)
2022-08-23 15:05:20 +02:00
mfo
5fb2c45540
review(i18n): fix typo and enhance wording.
2022-08-23 13:28:10 +02:00
Martin
d30492a222
tech(clean): better naming
2022-08-23 13:28:10 +02:00
Martin
45e0c15eb0
feat(PurgeManagerAdministrateurSessionsJob): also purge instructeur assign_tos
2022-08-23 13:28:10 +02:00
Martin
dc524cf615
fix(spec): broken spec due to TDD and refacto on former code
2022-08-23 13:28:10 +02:00
Martin
711b2ee2e4
feat(ExportComponent): only render it when connected instructeur/administrateur is not from manager
2022-08-23 13:28:10 +02:00
Martin
25c0e91d87
feat(Administrateurs::GroupeInstructeur): ensure admin from super admin can not add an instructeur
2022-08-23 13:28:10 +02:00
Martin
d1544bc4ae
feat(Administrateurs::ProcedureAdministrateurs): ensure admin from super admin can not add administrateur
2022-08-23 13:28:10 +02:00
Martin
d1297bc1f5
tech(rubocopify): ... just clean up ...
2022-08-23 13:28:10 +02:00
Martin
5e8210b8f8
feat(Administrateur::ExportsController#*): prevent SuperAdmin to ask/download export
2022-08-23 13:28:10 +02:00
Martin
bfd0f3379f
feat(Instructeur::ArchivesController#*): prevent SuperAdmin to index/download archives
2022-08-23 13:28:10 +02:00
Martin
c2e0994e11
feat(Administrateur::ArchivesController#*): prevent SuperAdmin to index/download archives
2022-08-23 13:28:10 +02:00
Martin
ef67958324
feat(manager): add #add_administrateur_with_confirmation and #confirm_add_administrateur so SuperAdmin requires another SuperAdmin approval to add an administrator to a procedure. Add #add_administrateur_and_instructeur for SuperAdmin willing to be administrateur/instructeur for 24
2022-08-23 13:28:10 +02:00
Martin
f0a4cbb61e
feat(assign_tos): add manager column to assign_tos table. Same idea as administrateur_procedures.manager which flag a link between procedure/administrateur coming from a SuperAdmin [target: able to avoid SuperAdmin sec issues]
2022-08-23 13:28:10 +02:00
Martin
ed20951f14
fix(conditional): within section (dark blue bg) ; use white text
2022-08-23 09:23:42 +02:00
simon lehericey
adf194cc08
fix(editeur_de_champ): can join an pj template
2022-08-11 15:01:48 +02:00
Kara Diaby
58f2f6bd9d
Manager : permet au super admin de se retirer d'une démarche
2022-08-11 10:58:58 +02:00
simon lehericey
650c36e3e2
feat(conditional): add not eq operator
2022-08-10 11:59:09 +02:00
simon lehericey
00d0813292
ensure the mandatory star hint is always displayed
2022-08-09 10:29:41 +02:00
simon lehericey
898badb579
a champ is mandatory when visible with a mandatory tdc
2022-08-09 10:25:47 +02:00
Christophe Robillard
e087582f57
Can get dossier vide if procedure is closed
2022-08-05 16:00:08 +02:00
Paul Chavard
a24885c2ee
feat(champ): can condition on other option
2022-08-04 15:28:54 +02:00
Paul Chavard
bbca7344e5
fix(conditional): mandatory champs inside hidden repetition should not be validated
2022-08-04 14:48:40 +02:00
Colin Darie
adced0f33a
fix(revision): fix stable siblings order when there are multiple identical position
...
Ça arrive parfois dans les tests, et potentiellement en prod :
après avoir créé un nouveau `revision_type_de_champ`,
on se retrouve très momentanément avec 2
RTDC ayant le même position en attendant le renumérotation peu près.
https://github.com/betagouv/demarches-simplifiees.fr/blob/main/app/models/procedure_revision.rb#L55
Ceci conduisait à une renumérotation erronnée quand la db renvoyait
le nouveau RTDC créé *avant* les précédents.
2022-08-03 18:29:48 +02:00
Paul Chavard
cf315b7246
fix(autosave): on check condition requests do not send file inputs
2022-08-03 12:04:39 +02:00
Paul Chavard
fdbcdfd043
fix(utils): explicitly exclude file type from text inputs
2022-08-03 12:04:39 +02:00
Colin Darie
4a1325eadf
fix(view_component): replace form_with with unaffected buffer form_tag helper
...
form_with/form_for have buffer issues (at least with turbo).
form_tag seems not affected.
2022-08-03 11:57:26 +02:00
Colin Darie
bc7cdb6b8e
fix(contact): translate captcha honeypot label
2022-08-03 11:57:26 +02:00
Colin Darie
11a9a6f53f
feat(dossier_transfer/email): require email in browser side
2022-08-03 11:44:54 +02:00
Colin Darie
d53aba4d24
fix(dossier_transfer): require a valid email
...
Cf #7621
2022-08-03 11:44:54 +02:00
Colin Darie
a5d5f4307f
fix(dossier_transfer): avoid all transfers without valid email
...
Cf #7621
2022-08-03 11:44:54 +02:00
Colin Darie
8dc966feb4
fix(dossier_transfer): requires an actual email
...
Closes #7621
2022-08-03 11:44:54 +02:00
Colin Darie
707ea37b33
chore(sentry): tag dossier & procedure ids on dossier endpoints
2022-08-03 10:34:10 +02:00
Colin Darie
e8210e6c2b
fix(agent_connect): constant path
...
https://sentry.io/organizations/demarches-simplifiees/issues/3248516694/?project=1429550&query=is%3Aunresolved&statsPeriod=14d
2022-08-03 10:19:45 +02:00
Paul Chavard
f48048179c
fix(conditional): enable conditional per procedure
2022-08-03 09:16:10 +02:00
Paul Chavard
435a635b3d
fix(procedure_presentation): find last instance of type_de_champ through coordinates
2022-08-02 15:24:52 +02:00
Paul Chavard
48a4e8bec5
chore(db): remove already dropped ignored columns
2022-08-02 15:24:52 +02:00
Martin
7f1018c5b0
feat(Users::CommencerController#commencer): ensure to redirect to replaced_by_procedure when it exisits
2022-08-02 13:08:36 +02:00
Colin Darie
4284f14ad8
fix(services): can destroy with discarded procedures
...
Closes #7626
2022-08-02 11:45:16 +02:00
Kara Diaby
ec3118e82c
Add concern for Datagouv schedulable jobs
2022-07-29 12:25:27 +02:00
Kara Diaby
a156529394
modify export descriptif demarches job
2022-07-29 11:17:22 +02:00
Kara Diaby
d18d89b41b
modify Lib Datagouv API
2022-07-29 11:17:22 +02:00
Kara Diaby
181e237cf0
add generation csv service
2022-07-29 11:17:22 +02:00
Kara Diaby
882ee74f88
Comptes créés avec FC par mois : CRON Job
2022-07-29 11:17:22 +02:00
Kara Diaby
dc1d0ce071
Démarches supprimées par mois : CRON Job
2022-07-29 11:17:22 +02:00
Kara Diaby
4a29162c6c
Démarches closes par mois : CRON Job
2022-07-29 11:17:22 +02:00
Kara Diaby
999059269e
Instructeurs connectés par mois : CRON Job
2022-07-29 11:17:21 +02:00
Kara Diaby
8e9d1eeb6f
Nombre de comptes créés par mois : CRON
2022-07-29 11:17:21 +02:00
Kara Diaby
b48a48980a
Nombre de dossiers créés par mois : CRON
2022-07-29 11:17:21 +02:00
Kara Diaby
9fa54c3cc8
Nombre de démarches créés par mois : CRON
2022-07-29 11:17:21 +02:00
Kara Diaby
e0dc36926e
Nombre d'instructeurs créés par mois : CRON
2022-07-29 11:17:21 +02:00
Kara Diaby
a0a3c6c0ee
Administrateurs crées par mois : CRON Job
2022-07-29 11:17:20 +02:00
Paul Chavard
782af3322a
fix(patron): when rendering “patron” champs should have dossier
2022-07-28 12:10:32 +02:00
Paul Chavard
31d80d80bd
fix(dossier): prevent users from removing mandatory fiels after submission
2022-07-28 11:19:47 +02:00
Paul Chavard
b616a4c1e9
fix(stats): remove Helpscout from stats page
2022-07-27 18:26:25 +02:00
Colin Darie
197fa54ea4
fix(archives): purge stuck pending archives
...
Cf 0cb096b3d6440a4da05ca2902ed6fa72a93e6579
2022-07-27 15:26:59 +02:00
Colin Darie
f1957e51f8
fix(exports): purge stuck (pending) exports, not generated or failed
...
Avec l'autre PR, ça reproduit le comportement d'avant, c'est à dire
que quoiqu'il arrive un export est purgé :
- soit 16h après sa génération (on a 16h pour le télécharger)
- soit 12h après sa création, et qu'il est bloqué
Auparavant, tous les exports étaient purgés au bout de 3h quelle que soit
le statut.
2022-07-27 15:26:59 +02:00
Colin Darie
bd788ec6bf
fix(manager/archives): status => job_status
...
Closes #7614
2022-07-27 15:26:59 +02:00
Colin Darie
4699d15853
fix(archives): don't fail when there are no weight estimation
...
A priori ça peut arriver lorsqu'il n'y a pas de dossier terminé sur une procédure
Closes #7615
2022-07-27 15:12:18 +02:00
Christophe Robillard
c8abe092c1
display alert message when no email is given for an invite
...
no exception is raised anymore in this case
2022-07-27 15:05:00 +02:00
Colin Darie
d4f8f05dec
fix(admin/attestation): page layout because of too larger input#size attribute
2022-07-27 14:26:00 +02:00
Paul Chavard
8cba80116e
fix(types_de_champ): fix exception on validation errors
2022-07-26 18:17:48 +02:00
Colin Darie
67d2cb2061
chore(schema): add exports#job_status
...
Same behavior as Archive
On destroy tous les exports existants qui n'ont pas cette notion de status.
2022-07-26 17:53:24 +02:00
Colin Darie
6845b2ed08
fix(export): fix PurgeStaledExportsJob regression with stale
scope
...
cc #7547
2022-07-26 14:26:22 +02:00
Paul Chavard
c2091e0978
refactor(vite): use turbo-polyfills
2022-07-26 13:07:24 +02:00
Paul Chavard
0f9983e93a
feat(types_de_champ): allow siret in repetition blocks
2022-07-26 12:59:58 +02:00
Paul Chavard
03fbe506f6
perf(graphql): benchmark demarches_publiques query
2022-07-26 12:54:10 +02:00
simon lehericey
369141c7f7
Fix(procedure library): replace infinite list by a basic search
2022-07-26 12:38:05 +02:00
Paul Chavard
4276745338
fix(autosave): morph instead of replace to preserve controller instances
2022-07-26 11:15:10 +02:00
Paul Chavard
01c0b4350b
fix(autosave): error.message can be readonly
2022-07-26 11:02:15 +02:00
Colin Darie
cdbee11c2e
chore(patron): drop down list with other input
2022-07-25 13:45:37 +02:00
Colin Darie
9597b3b4b7
style(champ): remove placeholder of drop down other input, since it's not recommended anymore
2022-07-25 12:37:38 +02:00
Colin Darie
865c8c5af0
fix(champ): let auto input width in "other input" dropdown.
...
On unset explicitement l'attribut `size` pour ne pas que l'helper
`text_field` réutilise la valeur de maxlength et vienne faire déborder
l'input.
2022-07-25 12:36:37 +02:00
Colin Darie
2364e2dda5
feat(graphql): expose entreprise etat_adminitratif
2022-07-25 10:58:02 +02:00
Colin Darie
11cd73b4ac
feat(export/csv): list etablisement entreprise_etat_administratif
2022-07-25 10:58:02 +02:00
Colin Darie
e53b6e4e77
feat(export/pdf): list entreprise etat_administratif in "demandeur" section
2022-07-25 10:58:02 +02:00
Colin Darie
22fed3d9de
feat: show entreprise etat "en activité" | "fermé in entreprise summary
...
Closes #7505
2022-07-25 10:58:02 +02:00
Colin Darie
f05e9331a7
chore(entreprises): save etat_administratif from API
2022-07-25 10:58:02 +02:00
Colin Darie
e1d3d1f844
chore(schema): add entreprise_etat_administratif to etablissements
2022-07-25 10:58:02 +02:00
Martin
3e56fdd1d7
fix(export): when it takes more than 3 hours, exports are purge before being generated. make it possible to have an export that takes more than 3 hours and share this behaviour with kind of same class archive
2022-07-25 10:48:54 +02:00
simon lehericey
0d3856e84a
fix(conditional): handle incorrect user input
2022-07-22 15:55:43 +02:00
Christophe Robillard
e3206f3eec
rename datagouv env var
2022-07-21 21:54:15 +02:00
Christophe Robillard
906dd4b509
remove useless DATAGOUV_TMP_DIR env
2022-07-21 21:54:15 +02:00
Christophe Robillard
0e3e6eb62a
add schedulable? class method to cron jobs
2022-07-21 21:54:15 +02:00
Christophe Robillard
bed6167010
use specific namespace for datagouv cron jobs
2022-07-21 21:54:15 +02:00
Christophe Robillard
b6c96301ef
export and publish opendata demarches
2022-07-21 21:54:15 +02:00
Christophe Robillard
77a9a2ba12
can upload file to datagouv
2022-07-21 21:54:15 +02:00
Christophe Robillard
d294feabe3
gzip demarches publiques export
2022-07-21 21:27:27 +02:00
Paul Chavard
d9eea35ae8
fix(dossier): decoralate dropdown behaviour from autosave
2022-07-21 18:40:16 +02:00
Paul Chavard
7425744f9f
refactor(procedure): move cards to components
2022-07-21 18:07:56 +02:00
Paul Chavard
8532c71036
perf(dossier.pdf): use DossierPreloader to generate pdf
2022-07-21 15:02:29 +02:00
Paul Chavard
3e40b6d7bc
fix(graphql): handle annotations inside blocks
2022-07-21 14:54:14 +02:00
Paul Chavard
260d8d2fec
perf(graphql): add graphql benchmark
2022-07-21 12:29:08 +02:00
Paul Chavard
902dc678de
perf(graphql): improuve dossier loading
2022-07-21 12:29:08 +02:00
Paul Chavard
042703cead
refactor(dossier): extract dossier preloader
2022-07-21 12:29:08 +02:00
Paul Chavard
1fe82a956e
fix(dossier.pdf): load all types_de_champ (including repetitions)
2022-07-21 11:56:23 +02:00
simon lehericey
5d5f46b4d8
instances : prawn does not like svg
...
win 10% on pdf generation
2022-07-20 15:48:16 +02:00
simon lehericey
821fd2394b
small refactor
2022-07-20 15:48:16 +02:00
simon lehericey
ca8dc34196
preload all tdc once for all
2022-07-20 15:48:16 +02:00
simon lehericey
4dbd44d72a
includes stuff
2022-07-20 15:48:16 +02:00
simon lehericey
b9ad3bbce1
extract procedure
2022-07-20 15:48:16 +02:00
simon lehericey
9c73bf1932
batch it
2022-07-20 15:48:16 +02:00
Martin
87af7f3261
feat(exports): implement admin export
2022-07-20 14:08:33 +02:00
simon lehericey
72583f846b
champ value return nil if champ is hidden
2022-07-20 11:23:57 +02:00
Paul Chavard
e85fe71887
fix(champ): allow to submit when secondary options are empty
2022-07-20 10:49:07 +02:00
Paul Chavard
9fec11bfd0
refactor(dossier): use size and empty? instead of count
2022-07-19 11:11:46 +02:00
Paul Chavard
1657605ef1
fix(dossier): do not include preview dossiers in dossiers counts
2022-07-19 11:11:46 +02:00
Martin
850f9375b7
fix(ujs-error-handling): sometimes body is not yet ready,other calls regarding ajax namespace are wired on document, copy/paste
2022-07-19 10:52:55 +02:00
Martin
5932f2a1f6
fix(MutationObserver): IE 11 kind of silent error: https://stackoverflow.com/questions/50593385/mutationobserver-syntax-error-on-ie-11
2022-07-19 10:52:55 +02:00
simon lehericey
2d26ba3507
fix: binary operator computes false by default
2022-07-19 10:11:24 +02:00
Paul Chavard
0578f4f305
fix(champ): use safe_join in champ helpers
...
fix #7411
2022-07-18 16:29:41 +02:00
Paul Chavard
a45b76e63a
fix(gon): matomo key can be a number
2022-07-18 16:08:42 +02:00
simon lehericey
c0e8a07868
perf: 500 queries -> 250 procedure show (id: 34908)
2022-07-18 14:28:35 +02:00
simon lehericey
9cfa6205b5
perf: editor public 250 queries -> 15 queries
2022-07-18 14:28:35 +02:00
mfo
4b6ae888d2
Update app/views/administrateurs/procedures/_informations.html.haml
...
Co-authored-by: Paul Chavard <github@paul.chavard.net>
2022-07-18 14:08:53 +02:00
Martin
8ca3a9760b
feat(procedure/_information): show new policy regarding data retention [translated so other instances can adapt their support strategy]
2022-07-18 14:08:53 +02:00
Martin
05b6b462b6
feat(new_max_duree_conservation): make it configurable for other instances
2022-07-18 14:08:53 +02:00
Martin
24c8dc5829
feat(procedure.duree_conservation_dossiers_dans_ds): decrease max duree_conservation_dossiers_dans_ds from 36 to 12
2022-07-18 14:08:53 +02:00
Colin Darie
dea1ce40a9
feat(dossier): allows user to edit identity from a brouillon dossier
...
Closes #7386
2022-07-18 09:57:19 +02:00
Colin Darie
d3232a28cd
chore(api_entreprise): intercept token expiration for a more contextual frontend message
...
Auparavant le service échouait silencieusement et ne retournait rien,
ce qui dans les implémentations du front aboutissait au message que
l'établissement/l'entreprise n'a pas été trouvé.
Un type d'erreur spécifique sur l'expiration du token permet d'afficher
le message lié à un problème temporaire de récupération d'infos.
2022-07-18 09:57:19 +02:00
Colin Darie
1c96ca59dd
style(combo): better inputs sizes for pays/regions/departement/communes champs
2022-07-18 09:48:35 +02:00
Colin Darie
71e7f51753
style(champ): remove generic placeholders because new DSFR don't like placeholders in input
2022-07-18 09:48:35 +02:00
Colin Darie
bf20bcf476
style(champ): fix date input width on mobile
2022-07-18 09:48:35 +02:00
Colin Darie
7f7e192df9
style(champs): each composite inputs on its own line (cnaf, dgfip…) with standard width
2022-07-18 09:48:35 +02:00
Colin Darie
ac9313ac69
style: better invitation email width
2022-07-18 09:48:35 +02:00
Colin Darie
44823ddd32
style(champs): reduce width of small inputs
...
Closes #7427
Cf #7387
Quelques considérations :
- l'attribut `size` ne correspond pas exactement au nombre de caractères
qui peut être saisi (à moins d'utiliser une font monospace). On doit
donc utiliser une valeur légèrement supérieure pour être sûr que
les combinaisons navigateurs/police/taille soient suffisantes.
- on essaye d'harmoniser un peu les largeurs possibles, donc on utilise
un size=20 qui correspond bien à plusieurs champs concernés
- délicat d'harmoniser avec max-width car les champs de type number &
date ajoutent des outils/icones à droite de l'input
J'en ai profité pour définir de vrais placeholders pour les champs de
type number.
2022-07-18 09:48:35 +02:00
Colin Darie
b68a62f6b3
fix: CSS warning: float elements ignore display: inline-block
2022-07-18 09:48:35 +02:00
Paul Chavard
98a0bc8c71
refactor(condition): use dom_id with stable_id
2022-07-13 15:38:43 +02:00
Paul Chavard
0adfd92213
refactor(condition): use standard revision change ops
2022-07-13 15:32:25 +02:00
simon lehericey
2cad0e11d3
display condition change between version
2022-07-13 15:10:23 +02:00
simon lehericey
00c4076b32
conditions_component use stable_id
2022-07-13 12:38:52 +02:00
Paul Chavard
d00a91aea5
feat(dossier): check conditions on en construction dossier
2022-07-13 10:49:17 +02:00
Paul Chavard
e82f0fd0c8
feat(dossier): exclude conditionally invisible fields from instructeur interface
2022-07-12 17:33:42 +02:00
Paul Chavard
0f9d8b6a39
feat(dossier): exclude conditionally invisible fields from mandatory check
2022-07-12 17:33:42 +02:00
Paul Chavard
120b593015
feat(dossier): toggle conditional champs visibility
2022-07-12 17:33:42 +02:00
simon lehericey
53fe3c3dd8
fix: remove condition from annotations and children
2022-07-12 14:17:05 +02:00
simon lehericey
6f7fb9841c
fix: make edition annotation work again
2022-07-12 14:17:05 +02:00
Paul Chavard
24aae95c63
fix(react): prevent warning about controlled inputs
2022-07-12 11:47:33 +02:00
Paul Chavard
a4681d8832
refactor(autosave): improuve events handling
2022-07-12 11:47:33 +02:00
Colin Darie
d805114a72
Revert "feat(revision): list updated placeholder option for generic type de champ"
...
This reverts commit fe0282e904
.
Continue 2bd33ada45b036f73f3fc78150621092e0667693
2022-07-12 11:37:58 +02:00
Colin Darie
8c08d0295b
Revert "feat(champ): customizable placeholders for text & textarea champs"
...
This reverts commit 9e26ee932e
.
Finalement les champs génériques ne doivent pas avoir de placeholder
personnalisable, ce sera uniquement via la description.
2022-07-12 11:37:58 +02:00
Paul Chavard
1c8efea465
fix(preview): gon should not crash on preview pages
2022-07-12 11:16:41 +02:00
simon lehericey
9bd1d97ed7
add feature flag
2022-07-12 10:44:40 +02:00
simon lehericey
c4c0c275e1
fix: coordinate_and_tdc return nil if not found
2022-07-12 10:44:40 +02:00
simon lehericey
bd708a12a0
fix: missing traduction in conditions errors
2022-07-12 10:44:40 +02:00
simon lehericey
0179a0a826
update conditions_controller
2022-07-12 10:44:40 +02:00
simon lehericey
faa2797d80
fix: champ_value for tdc destroyed
2022-07-12 10:44:40 +02:00
simon lehericey
2fee0ddfd4
feature: type_de_champ_controller
2022-07-12 10:44:40 +02:00
simon lehericey
2da0aa6525
refactor: add draft helper
2022-07-12 10:44:40 +02:00
simon lehericey
c80a820054
expose properties after_all
2022-07-12 10:44:40 +02:00
simon lehericey
5bee34cc34
refactor: before_action
2022-07-12 10:44:40 +02:00
simon lehericey
2df9d8ba98
use condition_condition_component in editor
2022-07-12 10:44:40 +02:00
simon lehericey
256d4e4fda
refactor: reorder -> renumber
2022-07-12 10:44:40 +02:00
simon lehericey
64d82798a6
fix create_tdc after_stable_id
2022-07-12 10:16:22 +02:00
Paul Chavard
9867bc3947
fix(a11y): manu buttons should have unique ids
2022-07-12 08:43:17 +02:00
Paul Chavard
ad0e57a372
fix(a11y): search input should have a label
2022-07-12 08:43:17 +02:00
Paul Chavard
b8db929e62
fix(a11y): add id to drop_down_other
2022-07-12 08:43:17 +02:00
Colin Darie
ce67dd2d70
feat(admin): list procedures with updated_at & auto_archive_on
...
Closes #7392
2022-07-11 17:22:11 +02:00
Colin Darie
fe0282e904
feat(revision): list updated placeholder option for generic type de champ
2022-07-11 17:16:20 +02:00
Colin Darie
9e26ee932e
feat(champ): customizable placeholders for text & textarea champs
...
Closes #7429
2022-07-11 17:16:20 +02:00
Colin Darie
e26cee8d9d
style(champ): add default placeholders for text & textarea champs
...
cc #7429
2022-07-11 17:16:20 +02:00
Colin Darie
8c9464670c
style: normalize placeholder appearance between browsers
...
There was not enough contrast on Webkit browsers against value color,
so we're using good Firefox default opacity for everyone.
2022-07-11 17:16:19 +02:00
Colin Darie
e0c5608218
refactor(iban): i18n extraction of input title attribute
2022-07-11 17:16:19 +02:00
Colin Darie
9768f4e1c9
style(champ): add placeholders for email, iban, phone, siret champs
...
Closes #7428
2022-07-11 17:16:19 +02:00
Martin
4c0aac8e0c
fix(linked_dropdown/dropdown): for dropdown_list, drop blank option because rails add it when the field is required. kind of same behaviour for linked_dropdown_list [but requires to manage it on the front too]
2022-07-11 14:47:26 +02:00
Martin
8eceee54ff
fix(targeted_user_link): on invitation user are not always already created
2022-07-11 14:37:01 +02:00
Paul Chavard
4d48055158
feat(tags): expose used_type_de_champ_tags
2022-07-07 23:23:17 +02:00
simon lehericey
0ffa23c259
move under types_de_champ_editor namespace
2022-07-07 11:18:47 +02:00
simon lehericey
5ea8842294
more renaming
2022-07-07 10:57:12 +02:00
simon lehericey
4ac66f2b99
simplify negation and alert
2022-07-07 10:57:12 +02:00
simon lehericey
3fc3bb6d54
simplify fargets_for_select
2022-07-06 20:27:14 +02:00
simon lehericey
dfd63d4f75
renaming
2022-07-06 20:27:14 +02:00
simon lehericey
62b5bd974e
add comments
2022-07-06 20:27:14 +02:00
simon lehericey
01bc7aa29e
make it world wide
2022-07-06 20:27:14 +02:00
simon lehericey
bf0f43f0ec
fix: component preview
2022-07-06 20:27:14 +02:00
simon lehericey
1131a5c83e
condition component error
2022-07-06 20:27:14 +02:00
simon lehericey
cecf210503
style add row button
2022-07-06 20:27:14 +02:00
simon lehericey
bf27a5ffc4
style delete row button
2022-07-06 20:27:14 +02:00
simon lehericey
30859774e4
condition component manage invalid target
2022-07-06 20:27:14 +02:00
simon lehericey
db4b7fc344
condition component manage invalid value
2022-07-06 20:27:14 +02:00
simon lehericey
03e9e95d56
condition component manage invalid operator
2022-07-06 20:27:14 +02:00
simon lehericey
e2a236b73d
add condition_component
2022-07-06 20:27:14 +02:00
simon lehericey
61839ef1ac
add logic condition_split
2022-07-06 20:27:14 +02:00
Christophe Robillard
25a1129ae4
use internal_use instead of require_admin for graphql context
2022-07-06 17:59:03 +02:00
Christophe Robillard
e2348aa8f1
rename publiques scope to opendata
2022-07-06 17:59:03 +02:00
Christophe Robillard
49a77ddffe
[graphql] fine tune config to avoid timeout error
2022-07-06 17:59:03 +02:00
Christophe Robillard
886f595350
[graphql] add dossiersCount field
...
visible only for admin
2022-07-06 17:59:03 +02:00
Christophe Robillard
7684e97494
export demarches publiques
2022-07-06 17:59:03 +02:00
Christophe Robillard
fa1cbdc848
require admin context for demarchesPubliques field
2022-07-06 17:59:03 +02:00
Christophe Robillard
78d772441b
[graphql] add demarchesPubliques to query
2022-07-06 17:59:03 +02:00
Christophe Robillard
b56706b6b8
add scope publiques for procedures
2022-07-06 17:59:03 +02:00
Christophe Robillard
7a06230912
[graphql] add cadre juridique and deliberation fields
2022-07-06 17:59:03 +02:00
Christophe Robillard
cb7e8d8a6e
[graphql] Fix service field which can be nil
...
In `app/models/procedure.rb`, belongs_to service relation is optional.
To be consistent, service field in graphql has can be nil.
2022-07-06 17:59:03 +02:00
Paul Chavard
fb37f8c5a8
fix(dossier): fix some reset draft changes edge cases
2022-07-06 16:52:12 +02:00
simon lehericey
1751ddf713
add condition controller
2022-07-06 16:35:23 +02:00
simon lehericey
42488419b5
add condition form model
2022-07-06 16:35:23 +02:00
Paul Chavard
f5e75d5e8e
chore(stimulus): stimulus controllers can be lazy loaded
2022-07-06 14:26:17 +02:00
Paul Chavard
9b45dcea3f
feat(demarche): add possibility to reset draft revision
2022-07-06 14:18:01 +02:00
Martin
ddd67f1df2
fix(sentry/3394049118): apparently there is an attached_file without content_type nor file_size validation...
2022-07-06 13:53:16 +02:00
simon lehericey
b715d1f495
Revert "Add id to term"
...
This reverts commit 87385d03fd
.
2022-07-06 09:44:54 +02:00
simon lehericey
350d32c369
in serialization rename op to term
2022-07-05 14:47:49 +02:00
simon lehericey
87385d03fd
Add id to term
2022-07-05 14:47:49 +02:00
Paul Chavard
2c3503d7d0
test(js): add vitest
2022-07-05 13:38:00 +02:00
simon lehericey
d8454d9d47
remove text from managed_type_de_champ
2022-07-05 12:07:06 +02:00
simon lehericey
c631c5cd82
Logic add_empty_condition_to
2022-07-05 12:07:06 +02:00
simon lehericey
df7acf70c8
and empty_operator compute always true
2022-07-05 12:07:06 +02:00
simon lehericey
6e8206b8b4
add unmanaged champ value type
2022-07-05 12:07:06 +02:00
simon lehericey
144b522773
empty operator is no longer an error
2022-07-05 12:07:06 +02:00
simon lehericey
976e760045
empty has nil value
2022-07-05 12:07:06 +02:00
simon lehericey
04965ac35a
improve constant and empty to_s
2022-07-05 12:07:06 +02:00
simon lehericey
dda5bc35ed
extract champ value type
2022-07-05 12:07:06 +02:00
simon lehericey
809319f593
exposed champ value managed tdc
2022-07-05 12:07:06 +02:00
simon lehericey
a475515f3e
use params[:stable_id]
2022-07-05 11:53:18 +02:00
simon lehericey
7b02fa9353
typeDeChampIdValue -> typeDeChampStableIdValue
2022-07-05 11:53:18 +02:00
simon lehericey
5ebaf59fdb
parent_id -> parent_stable_id
2022-07-05 11:53:18 +02:00
simon lehericey
1342356651
after_id -> after_stable_id
2022-07-05 11:53:18 +02:00
Paul Chavard
3c46447851
chore(vite): add a coment with link to original legacy plugin code
2022-07-04 19:32:18 +02:00
Paul Chavard
9a6a8411d3
feat(export): add déparctement info to commune champ export
2022-07-04 16:30:16 +02:00
Martin
7fb85c97cb
feat(Administrateur::ArchivesControllers): add archives #index and #create for admin
2022-07-04 14:18:46 +02:00
simon lehericey
b4732053ea
fix weird outline in focus
2022-07-04 10:02:54 +02:00
simon lehericey
f8c7003192
fix drop down other
2022-07-01 16:05:31 +02:00
Paul Chavard
72636f3332
fix(vite): porte vite fallback logic from vite legacy plugin
2022-07-01 10:25:24 +02:00
Paul Chavard
23fe07bfbd
Revert "Merge pull request #7511 from betagouv/US/fix-dynamic-imports-on-ff-60-69"
...
This reverts commit d2fd5b83a9
, reversing
changes made to 183dc4eb2b
.
2022-07-01 10:07:39 +02:00
Martin
3c8a78dc7f
polyfills: fails ont custom relative path to polyfills/dataset
2022-07-01 09:54:46 +02:00
Martin
f85c97f96e
fix(js): dynamic import with import keyword does not work on ffx[60,68]
2022-07-01 09:54:46 +02:00
Paul Chavard
45472f2fe7
chore(axe-core): add a11y reports in dev environement
2022-06-30 10:54:32 +02:00
Paul Chavard
0e803b1f81
fix(vite): temporary use legacy build in all browsers
2022-06-30 10:34:06 +02:00
Paul Chavard
4844f27404
Revert "Merge pull request #7509 from betagouv/US/fix-dynamic-imports-on-ff-60-69"
...
This reverts commit 8e13015e85
, reversing
changes made to 3a16905d79
.
2022-06-30 09:34:08 +02:00
Martin
a736c8300a
fix(js): dynamic import with import keyword does not work on ffx[60,68]
2022-06-30 07:27:24 +02:00
simon lehericey
683cb54cca
Revert "Merge pull request #7506 from betagouv/brutally_fix_dynamic_import"
...
Bad idea, new browser do not get js anymore because of the nomodule attribute
2022-06-29 17:30:15 +02:00
Martin
54cc9de51e
feat(dubious): add RIB & IBAN and fix NRIPP istead of NIRPP
2022-06-29 17:07:00 +02:00
simon lehericey
ff592989c6
use vite_legacy_javascript to fix dynamic import for 60 <= ff < 66
2022-06-29 16:27:41 +02:00
Martin
4ec61e58ac
feat(EditComponent): add max_file_size and content_types to upload buttons inspired by dsfr
2022-06-28 17:44:35 +02:00
Martin
ea71908850
fix(ChampEditor): add missing drop_down_other for type_de_champ.drop_down_list_with_other?
2022-06-27 17:19:10 +02:00
Martin
22ab2a258c
fix(Rails.ujs): missing Rails.start
2022-06-27 14:06:47 +02:00
Paul Chavard
19da848206
chore(dossier): remove dead code
2022-06-27 12:23:44 +02:00
Paul Chavard
1ab609d108
refactor(react): eager load react components
2022-06-23 15:22:55 +02:00
Paul Chavard
2979d6ac2c
chore(vite): do not use legacy build in development
2022-06-23 15:22:55 +02:00
Paul Chavard
eba1973d5f
refactor(stimulus): eager load stimulus controllers
2022-06-23 15:22:55 +02:00
Paul Chavard
ea18c2b9ba
chore(build): use vitejs
2022-06-23 15:22:54 +02:00
Paul Chavard
7217fdef88
fix(graphql): DemarcheDescriptorType can ba a revision or a procedure
2022-06-23 14:52:21 +02:00
Christophe Robillard
fa3c6c3b61
opendata active only if feature flag
2022-06-23 14:11:09 +02:00
Christophe Robillard
6dd27ec7ed
reset opendata to true when procedure is cloned by another admin
2022-06-23 14:11:09 +02:00
Christophe Robillard
45d48bd269
administrators can specifiy if demarche's descriptive is opendata
2022-06-23 14:11:09 +02:00
Christophe Robillard
ea59f5f260
add opendata boolean attribute for procedure
...
when opendata is set to true, it means that descriptive's procedure can be
public
when opendata is set to false, ti means that descriptive's can not be
public, because the procedure is only available for public servants, not
citizens.
2022-06-23 14:11:09 +02:00
Kara Diaby
7695ad47cf
ETQ Usager, je veux entrer mon Iban de manière plus simple (avec espaces)
2022-06-22 15:07:31 +02:00
Martin
ab4d4c83a8
feat(GroupeInstructeurs.closed): add closed option to GroupeInstructeur in order to prevent usagers to submit dossier
2022-06-20 16:32:06 +02:00
Martin
274b5eab2e
feat(invite): wrap invitation with targeted_user_links
2022-06-17 16:44:37 +02:00
simon lehericey
9596dac508
force resync types_de_champ and types_de_champ_public/private
2022-06-17 14:54:21 +02:00
simon lehericey
0db27b8718
validate conditions on revision
2022-06-17 14:54:21 +02:00
simon lehericey
758933f6f9
tdc can have condition
2022-06-17 14:53:28 +02:00
simon lehericey
9f49e8c2ea
add ensure_compatibility_from_left
2022-06-17 14:53:27 +02:00
simon lehericey
5ac3049033
add champ_value for dropdown
2022-06-17 14:53:27 +02:00
simon lehericey
809d991819
add champ_value
2022-06-17 14:53:27 +02:00
simon lehericey
daaa54b6f0
add n_ary operators
2022-06-17 14:53:27 +02:00
simon lehericey
698eff0a50
add equal operator
2022-06-17 14:53:27 +02:00
simon lehericey
ebe95b83fa
add compatibility checks
2022-06-17 14:53:27 +02:00
simon lehericey
a98a6d6d1e
add binary operators
2022-06-17 14:53:27 +02:00
simon lehericey
6ebfc505c4
add empty
2022-06-17 14:53:27 +02:00
simon lehericey
58da4805fa
add constant
2022-06-17 14:53:27 +02:00
Paul Chavard
6ec6aebd53
fix(graphql): cleanup deprecation messages
2022-06-17 12:33:35 +02:00
Paul Chavard
350ed3a11a
feat(graphql): expose revision on demarche descriptor type
2022-06-17 12:33:35 +02:00
Paul Chavard
bbc44fe339
fix(export): no crash on empty repetitions
2022-06-17 11:33:48 +02:00
Paul Chavard
6801b04b7b
feat(type_de_champ): type_de_champ editor in stimulus/turbo
2022-06-17 11:04:09 +02:00
Paul Chavard
1573d20ee9
types_de_champ controller to use turbo
2022-06-17 11:04:09 +02:00
Paul Chavard
cf81e8ecd5
feat(turbo): add turbo:morph helper
2022-06-17 11:04:09 +02:00