Skip to content

Commit d032960

Browse files
feat: ui improvement on single recipient
1 parent f8358ae commit d032960

File tree

2 files changed

+43
-9
lines changed

2 files changed

+43
-9
lines changed

src/popup/components/TransferSend/TransferSendRecipient.vue

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
show-help
99
show-message-help
1010
is-recipient
11-
:single-default-format="isUrlTippingEnabled"
11+
:single-default-format="maxRecipients === 1"
12+
:is-tip-url-enabled="isUrlTippingEnabled"
1213
:protocol="protocol"
1314
:label="$t('modals.send.recipientLabel')"
1415
:placeholder="placeholder"

src/popup/components/form/FormAccountInput.vue

+41-8
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,35 @@
66
:resizable="false"
77
:placeholder="placeholder"
88
:message="message"
9+
:disable-label-focus="isSingleRecipient"
910
auto-height
1011
enter-submit
1112
@update:modelValue="($event: any) => inputValue = $event"
1213
@submit="handleEnter"
1314
>
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>
1438
<template #after>
1539
<BtnIcon
1640
v-if="!hideClearIcon && (selectedAddresses.length || inputValue.length)"
@@ -166,7 +190,9 @@ export default defineComponent({
166190
},
167191
readonly: Boolean,
168192
hideClearIcon: Boolean,
193+
singleRecipient: Boolean,
169194
singleDefaultFormat: Boolean,
195+
isTipUrlEnabled: Boolean,
170196
protocol: { type: String as PropType<Protocol>, default: null },
171197
},
172198
emits: ['update:modelValue', 'submit'],
@@ -208,6 +234,18 @@ export default defineComponent({
208234
() => (messageAsObject.value?.status === INPUT_MESSAGE_STATUSES.warning),
209235
);
210236
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+
211249
function clearAddress(idx: number) {
212250
selectedAddresses.value.splice(idx, 1);
213251
emit('update:modelValue', selectedAddresses.value.map((account) => account.address));
@@ -230,12 +268,6 @@ export default defineComponent({
230268
isDropdownOpen.value = false;
231269
}
232270
233-
function isAccountAddressValid(value: string) {
234-
return ProtocolAdapterFactory
235-
.getAdapter(props.protocol)
236-
.isAccountAddressValid(value, activeNetwork.value?.type);
237-
}
238-
239271
function handleEnter() {
240272
inputValue.value += ',';
241273
}
@@ -267,7 +299,7 @@ export default defineComponent({
267299
protocol: props.protocol,
268300
};
269301
}) || [];
270-
if (selectedAddresses.value.length === 1 && props.singleDefaultFormat) {
302+
if (selectedAddresses.value.length === 1 && props.isTipUrlEnabled) {
271303
inputValue.value = selectedAddresses.value[0].address;
272304
}
273305
} else {
@@ -279,7 +311,7 @@ export default defineComponent({
279311
watch(inputValue, () => {
280312
isDropdownOpen.value = inputValue.value.length >= 2
281313
&& filteredOptions.value.length > 0;
282-
if (props.singleDefaultFormat) {
314+
if (props.isTipUrlEnabled) {
283315
emit('update:modelValue', [inputValue.value]);
284316
return;
285317
}
@@ -322,6 +354,7 @@ export default defineComponent({
322354
isDropdownOpen,
323355
isNameValid,
324356
isAccountAddressValid,
357+
isSingleRecipient,
325358
CircleCloseIcon,
326359
TrashIcon,
327360
};

0 commit comments

Comments
 (0)