status-desktop/ui/imports/shared/popups/send/controls/SendRecipientInput.qml

85 lines
2.5 KiB
QML

import QtQuick 2.15
import QtQuick.Controls 2.15
import QtQuick.Layouts 1.15
import StatusQ 0.1
import StatusQ.Controls 0.1
import StatusQ.Components 0.1
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
StatusInput {
id: root
property bool interactive: true
property bool checkMarkVisible
property bool loading
signal clearClicked()
signal validateInputRequested()
placeholderText: qsTr("Enter an ENS name or address")
input.background.color: Theme.palette.indirectColor1
input.background.border.width: 0
input.implicitHeight: 64
rightPadding: 12
input.clearable: false // custom button below
input.edit.readOnly: !root.interactive
multiline: false
input.edit.textFormat: TextEdit.RichText
input.rightComponent: RowLayout {
StatusLoadingIndicator {
objectName: "loadingIndicator"
Layout.preferredWidth: 16
Layout.preferredHeight: 16
visible: root.input.edit.length !== 0 && root.loading
}
StatusButton {
objectName: "pasteButton"
font.weight: Font.Normal
borderColor: Theme.palette.primaryColor1
borderWidth: 1
size: StatusBaseButton.Size.Tiny
text: qsTr("Paste")
visible: root.input.edit.length === 0 && root.input.edit.canPaste
focusPolicy: Qt.NoFocus
onClicked: {
root.input.edit.forceActiveFocus()
root.text = ClipboardUtils.text // paste plain text
root.input.edit.cursorPosition = root.input.edit.length
root.validateInputRequested()
}
}
StatusIcon {
objectName: "checkmarkIcon"
Layout.preferredWidth: 16
Layout.preferredHeight: 16
icon: "tiny/checkmark"
color: Theme.palette.primaryColor1
visible: root.checkMarkVisible
}
StatusClearButton {
objectName: "clearButton"
visible: root.input.edit.length !== 0 && root.interactive
onClicked: {
root.input.edit.clear()
root.clearClicked()
}
}
}
Connections {
target: root.input
function onKeyPressed(event) {
if (event.matches(StandardKey.Paste)) {
event.accepted = true
root.text = ClipboardUtils.text // paste plain text
}
}
}
Keys.onTabPressed: event.accepted = true
Keys.onReleased: root.validateInputRequested()
}