6
6
:resizable =" false"
7
7
:placeholder =" placeholder"
8
8
:message =" message"
9
+ :disable-label-focus =" isSingleRecipient"
9
10
auto-height
10
11
enter-submit
11
12
@update:modelValue =" ($event: any) => inputValue = $event"
12
13
@submit =" handleEnter"
13
14
>
15
+ <template
16
+ v-if =" isSingleRecipient "
17
+ #default
18
+ >
19
+ <Truncate
20
+ class =" truncated-text"
21
+ :class =" {
22
+ error: (hasError && messageAsObject?.text?.includes(selectedAddresses[0].address)),
23
+ warning: (hasWarning && messageAsObject?.text?.includes(selectedAddresses[0].address)),
24
+ }"
25
+ :str =" selectedAddresses[0].name"
26
+ />
27
+ <AddressTruncated
28
+ v-if =" !isNameValid(selectedAddresses[0].address)
29
+ && isAccountAddressValid(selectedAddresses[0].address)"
30
+ :address =" selectedAddresses[0].address"
31
+ :protocol =" protocol"
32
+ :class =" {
33
+ error: (hasError && messageAsObject?.text?.includes(selectedAddresses[0].address)),
34
+ warning: (hasWarning && messageAsObject?.text?.includes(selectedAddresses[0].address)),
35
+ }"
36
+ />
37
+ </template >
14
38
<template #after >
15
39
<BtnIcon
16
40
v-if =" !hideClearIcon && (selectedAddresses.length || inputValue.length)"
@@ -166,7 +190,9 @@ export default defineComponent({
166
190
},
167
191
readonly: Boolean ,
168
192
hideClearIcon: Boolean ,
193
+ singleRecipient: Boolean ,
169
194
singleDefaultFormat: Boolean ,
195
+ isTipUrlEnabled: Boolean ,
170
196
protocol: { type: String as PropType <Protocol >, default: null },
171
197
},
172
198
emits: [' update:modelValue' , ' submit' ],
@@ -208,6 +234,18 @@ export default defineComponent({
208
234
() => (messageAsObject .value ?.status === INPUT_MESSAGE_STATUSES .warning ),
209
235
);
210
236
237
+ function isAccountAddressValid(value : string ) {
238
+ return ProtocolAdapterFactory
239
+ .getAdapter (props .protocol )
240
+ .isAccountAddressValid (value , activeNetwork .value ?.type );
241
+ }
242
+
243
+ const isSingleRecipient = computed (() => !! (
244
+ props .singleDefaultFormat
245
+ && selectedAddresses .value .length
246
+ && (! props .isTipUrlEnabled || isAccountAddressValid (selectedAddresses .value [0 ].address ))
247
+ ));
248
+
211
249
function clearAddress(idx : number ) {
212
250
selectedAddresses .value .splice (idx , 1 );
213
251
emit (' update:modelValue' , selectedAddresses .value .map ((account ) => account .address ));
@@ -230,12 +268,6 @@ export default defineComponent({
230
268
isDropdownOpen .value = false ;
231
269
}
232
270
233
- function isAccountAddressValid(value : string ) {
234
- return ProtocolAdapterFactory
235
- .getAdapter (props .protocol )
236
- .isAccountAddressValid (value , activeNetwork .value ?.type );
237
- }
238
-
239
271
function handleEnter() {
240
272
inputValue .value += ' ,' ;
241
273
}
@@ -267,7 +299,7 @@ export default defineComponent({
267
299
protocol: props .protocol ,
268
300
};
269
301
}) || [];
270
- if (selectedAddresses .value .length === 1 && props .singleDefaultFormat ) {
302
+ if (selectedAddresses .value .length === 1 && props .isTipUrlEnabled ) {
271
303
inputValue .value = selectedAddresses .value [0 ].address ;
272
304
}
273
305
} else {
@@ -279,7 +311,7 @@ export default defineComponent({
279
311
watch (inputValue , () => {
280
312
isDropdownOpen .value = inputValue .value .length >= 2
281
313
&& filteredOptions .value .length > 0 ;
282
- if (props .singleDefaultFormat ) {
314
+ if (props .isTipUrlEnabled ) {
283
315
emit (' update:modelValue' , [inputValue .value ]);
284
316
return ;
285
317
}
@@ -322,6 +354,7 @@ export default defineComponent({
322
354
isDropdownOpen ,
323
355
isNameValid ,
324
356
isAccountAddressValid ,
357
+ isSingleRecipient ,
325
358
CircleCloseIcon ,
326
359
TrashIcon ,
327
360
};
0 commit comments