feat(commercial) : saisie manuelle de l'adresse si la BAN ne trouve rien (ERP-119)
Le champ Adresse (MalioInputAutocomplete) passe en allow-create : le texte saisi est conserve au blur/Entree meme sans suggestion BAN (sinon il etait efface). Message « Adresse introuvable ? Saisissez-la directement. » dans la liste vide. La ville reste pilotee par le code postal.
This commit is contained in:
@@ -180,6 +180,7 @@
|
|||||||
"postalCode": "Code postal",
|
"postalCode": "Code postal",
|
||||||
"city": "Ville",
|
"city": "Ville",
|
||||||
"street": "Adresse",
|
"street": "Adresse",
|
||||||
|
"streetNotFound": "Adresse introuvable ? Saisissez-la directement.",
|
||||||
"streetComplement": "Adresse complémentaire",
|
"streetComplement": "Adresse complémentaire",
|
||||||
"sites": "Sites",
|
"sites": "Sites",
|
||||||
"contacts": "Contact(s) rattaché(s)",
|
"contacts": "Contact(s) rattaché(s)",
|
||||||
|
|||||||
@@ -123,10 +123,10 @@
|
|||||||
<div class="col-span-2">
|
<div class="col-span-2">
|
||||||
<!-- Adresse : saisie assistee (BAN) en edition ; champ texte simple
|
<!-- Adresse : saisie assistee (BAN) en edition ; champ texte simple
|
||||||
seulement en lecture seule (MalioInputAutocomplete ne reaffiche pas
|
seulement en lecture seule (MalioInputAutocomplete ne reaffiche pas
|
||||||
sa valeur liee, il n'afficherait rien en readonly). Une erreur BAN
|
sa valeur liee, il n'afficherait rien en readonly). allow-create :
|
||||||
ne bascule PAS en saisie libre : l'autocompletion reste montee et
|
si la BAN ne propose rien (ou erreur), le texte saisi est CONSERVE au
|
||||||
chaque frappe relance la recherche (l'utilisateur peut aussi taper
|
blur/Entree (saisie manuelle) — sinon il serait efface. La ville reste
|
||||||
une rue librement). -->
|
pilotee par le code postal ; choisir une suggestion remplit rue+ville+CP. -->
|
||||||
<MalioInputAutocomplete
|
<MalioInputAutocomplete
|
||||||
v-if="!readonly"
|
v-if="!readonly"
|
||||||
:model-value="model.street"
|
:model-value="model.street"
|
||||||
@@ -137,6 +137,8 @@
|
|||||||
:readonly="readonly"
|
:readonly="readonly"
|
||||||
:required="true"
|
:required="true"
|
||||||
:error="errors?.street"
|
:error="errors?.street"
|
||||||
|
:allow-create="true"
|
||||||
|
:no-results-text="t('commercial.clients.form.address.streetNotFound')"
|
||||||
@update:model-value="(v: string | number | null) => update('street', v === null ? null : String(v))"
|
@update:model-value="(v: string | number | null) => update('street', v === null ? null : String(v))"
|
||||||
@search="onAddressSearch"
|
@search="onAddressSearch"
|
||||||
@select="onAddressSelect"
|
@select="onAddressSelect"
|
||||||
|
|||||||
@@ -36,6 +36,7 @@ const MalioInputAutocompleteStub = defineComponent({
|
|||||||
minSearchLength: { type: Number, default: 0 },
|
minSearchLength: { type: Number, default: 0 },
|
||||||
label: { type: String, default: '' },
|
label: { type: String, default: '' },
|
||||||
readonly: { type: Boolean, default: false },
|
readonly: { type: Boolean, default: false },
|
||||||
|
allowCreate: { type: Boolean, default: false },
|
||||||
},
|
},
|
||||||
emits: ['update:modelValue', 'search', 'select'],
|
emits: ['update:modelValue', 'search', 'select'],
|
||||||
setup(props) {
|
setup(props) {
|
||||||
@@ -78,6 +79,14 @@ describe('ClientAddressBlock — affichage de l\'adresse persistee', () => {
|
|||||||
|
|
||||||
expect(values).toContain('8 Boulevard du Port')
|
expect(values).toContain('8 Boulevard du Port')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// ERP-119 : saisie manuelle possible quand la BAN ne trouve rien -> allow-create
|
||||||
|
// (sans cette prop, MalioInputAutocomplete efface le texte non selectionne au blur).
|
||||||
|
it('active allow-create sur le champ Adresse (saisie manuelle libre)', () => {
|
||||||
|
const wrapper = mountBlock(null)
|
||||||
|
|
||||||
|
expect(wrapper.findComponent(MalioInputAutocompleteStub).props('allowCreate')).toBe(true)
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user