88 lines
1.6 KiB
QML
88 lines
1.6 KiB
QML
import QtQuick
|
|
import ZShell.Config
|
|
import qs.Components
|
|
import qs.Services
|
|
|
|
TextAreaBase {
|
|
id: root
|
|
|
|
readonly property alias bg: bg
|
|
readonly property alias sendIcon: sendIcon
|
|
|
|
signal sendPressed
|
|
|
|
bottomPadding: Tokens.padding.large
|
|
leftPadding: Tokens.padding.extraLarge
|
|
rightPadding: sendIcon.width + sendIcon.anchors.rightMargin + Tokens.spacing.small
|
|
topPadding: Tokens.padding.large
|
|
wrapMode: TextAreaBase.Wrap
|
|
|
|
background: CustomRect {
|
|
id: bg
|
|
|
|
anchors.fill: parent
|
|
color: Colors.tPalette.m3surfaceContainer
|
|
radius: Tokens.rounding.extraLarge
|
|
|
|
StateLayer {
|
|
id: stateLayer
|
|
|
|
cursorShape: Qt.IBeamCursor
|
|
enabled: !root.activeFocus
|
|
manualPressOverride: tapHandler.pressed
|
|
|
|
onClicked: root.forceActiveFocus()
|
|
}
|
|
}
|
|
|
|
onPressed: {
|
|
if (stateLayer.enabled)
|
|
stateLayer.press(stateLayer.mouseX, stateLayer.mouseY);
|
|
}
|
|
|
|
CustomText {
|
|
id: placeholder
|
|
|
|
anchors.left: parent.left
|
|
anchors.leftMargin: root.leftPadding
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
color: root.placeholderTextColor
|
|
font: root.font
|
|
opacity: root.text ? 0 : 1
|
|
text: root.placeholderText
|
|
|
|
Behavior on opacity {
|
|
Anim {
|
|
type: Anim.DefaultEffects
|
|
}
|
|
}
|
|
}
|
|
|
|
IconButton {
|
|
id: sendIcon
|
|
|
|
anchors.right: parent.right
|
|
anchors.rightMargin: Tokens.padding.small
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
enabled: root.text
|
|
icon: "upward_arrow"
|
|
opacity: root.text ? 1 : 0
|
|
radius: Tokens.rounding.full
|
|
radiusMorph: false
|
|
stateLayer.hoverEnabled: enabled
|
|
type: IconButton.Text
|
|
|
|
Behavior on opacity {
|
|
Anim {
|
|
type: Anim.DefaultEffects
|
|
}
|
|
}
|
|
|
|
onClicked: root.sendPressed()
|
|
}
|
|
|
|
TapHandler {
|
|
id: tapHandler
|
|
}
|
|
}
|