Compare commits

...

7 commits

Author SHA1 Message Date
Paul Chavard
a0b9587648
Merge pull request #8962 from mfo/US/fix-date-input-edge
ETQ usager utilisant microsoft Edge, les champs de type date sont mal alignés
2023-04-26 15:32:18 +00:00
Paul Chavard
15c1f992c2
Merge pull request #8963 from tchak/fix-revision-changes-delete-champs-message
ETQ administrateur, je veux être averti si des données seront supprimées sur les dossiers lors de la publication d’une nouvelle révision
2023-04-26 15:12:31 +00:00
Paul Chavard
b110cc378c
Merge pull request #8899 from demarches-simplifiees/8738-validate-adresse-electronique
ETQ usager, je veux que les champs de type adresse électronique soit validé
2023-04-26 15:04:43 +00:00
Paul Chavard
e16de77418
Update app/components/procedure/revision_changes_component.rb
Co-authored-by: Colin Darie <colin@darie.eu>
2023-04-26 15:01:46 +02:00
Martin
9c695cf39f correctif(ui.edge): les champs de type date etaient mal alignés 2023-04-26 07:15:51 +02:00
Paul Chavard
26798e8ed9 fix(revision): show a warning when champs will be deleted 2023-04-25 18:04:17 +02:00
krichtof
c2461f230c validate value for email champ 2023-04-20 18:27:02 +02:00
8 changed files with 72 additions and 21 deletions

View file

@ -61,7 +61,7 @@
}
input[type='date'] {
display: inline;
display: inline-block;
}
}

View file

@ -3,6 +3,7 @@ class Procedure::RevisionChangesComponent < ApplicationComponent
@changes = changes
@previous_revision = previous_revision
@public_move_changes, @private_move_changes = changes.filter { _1.op == :move }.partition { !_1.private? }
@delete_champ_warning = !total_dossiers.zero? && !@changes.all?(&:can_rebase?)
end
private

View file

@ -4,6 +4,9 @@ fr:
breaking_change:
one: Un dossier en cours de traitement nest pas compatible avec ce changement.
other: "%{count} dossiers en cours de traitement ne sont pas compatible avec ce changement."
delete_champ_html:
one: "Un dossier en cours de traitement porte ce champ. Les données associées à ce champ seront supprimées."
other: "%{count} dossiers en cours de traitement portent ce champ. Les <strong>données</strong> associées avec ce champ seront <strong>supprimées</strong>."
add_option: "ajoutés : %{items}"
remove_option: "supprimés : %{items}"
public:

View file

@ -12,11 +12,14 @@
- else
= t(".#{prefix}.add", label: change.label)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- when :remove
- list.with_item do
= t(".#{prefix}.remove", label: change.label)
- if @delete_champ_warning
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.delete_champ_html', count: total_dossiers)
- when :update
- case change.attribute
- when :libelle
@ -26,8 +29,8 @@
- list.with_item do
= t(".#{prefix}.update_type_champ", label: change.label, to: t("activerecord.attributes.type_de_champ.type_champs.#{change.to}"))
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- when :description
- list.with_item do
- if change.to.blank?
@ -45,14 +48,14 @@
- list.with_item do
= t(".public.enable_mandatory", label: change.label)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- else
- list.with_item do
= t(".public.disable_mandatory", label: change.label)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- when :piece_justificative_template
- list.with_item do
= t(".#{prefix}.update_piece_justificative_template", label: change.label)
@ -69,21 +72,21 @@
- list.with_item do
= t('.remove_option', items: removed.map{ |term| "« #{term.strip} »" }.join(", "))
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- when :drop_down_other
- if change.from == false
- list.with_item do
= t(".#{prefix}.enable_drop_down_other", label: change.label)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- else
- list.with_item do
= t(".#{prefix}.disable_drop_down_other", label: change.label)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- when :carte_layers
- added = change.to.sort - change.from.sort
- removed = change.from.sort - change.to.sort
@ -114,20 +117,20 @@
- list.with_item do
= t(".#{prefix}.add_condition", label: change.label, to: change.to)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- elsif change.to.nil?
- list.with_item do
= t(".#{prefix}.remove_condition", label: change.label)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- else
- list.with_item do
= t(".#{prefix}.update_condition", label: change.label, to: change.to)
- if !total_dossiers.zero? && !change.can_rebase?
%strong
= t('.breaking_change', count: total_dossiers)
.fr-alert.fr-alert--warning.fr-mt-1v
%p= t('.breaking_change', count: total_dossiers)
- if @public_move_changes.present?
- list.with_item do

View file

@ -21,4 +21,11 @@
# type_de_champ_id :integer
#
class Champs::EmailChamp < Champs::TextChamp
validates :value,
format: {
with: Devise.email_regexp,
message: I18n.t('invalid', scope: 'activerecord.errors.models.email_champ.attributes.value')
},
allow_nil: true,
if: -> { validation_context != :brouillon }
end

View file

@ -561,6 +561,10 @@ en:
attributes:
email:
taken: ': Invitation already sent'
email_champ:
attributes:
value:
invalid: "is invalid. Fill in a valid email address, example: john.doe@example.fr"
user:
attributes: &error_attributes

View file

@ -562,6 +562,10 @@ fr:
attributes:
email:
taken: ': Invitation déjà envoyée'
email_champ:
attributes:
value:
invalid: "est invalide. Saisir une adresse éléctronique valide, exemple : john.doe@exemple.fr"
user:
attributes: &error_attributes
reset_password_token:

View file

@ -0,0 +1,29 @@
describe Champs::EmailChamp do
subject { build(:champ_email, value: value).tap(&:valid?) }
describe '#valid?' do
context 'when the value is an email' do
let(:value) { 'jean@dupont.fr' }
it { is_expected.to be_valid }
end
context 'when the value is not an email' do
let(:value) { 'jean@' }
it { is_expected.to_not be_valid }
end
context 'when the value is blank' do
let(:value) { '' }
it { is_expected.to_not be_valid }
end
context 'when the value is nil' do
let(:value) { nil }
it { is_expected.to be_valid }
end
end
end