feat: dashboard show on hover, media and weather tabs added
This commit is contained in:
@@ -0,0 +1,85 @@
|
||||
pragma ComponentBehavior: Bound
|
||||
|
||||
import QtQuick
|
||||
import QtQuick.Layouts
|
||||
import ZShell.Config
|
||||
import qs.Components
|
||||
import qs.Services
|
||||
|
||||
ConnectedRect {
|
||||
id: root
|
||||
|
||||
property alias label: label.text
|
||||
property string subtext
|
||||
property string value
|
||||
property alias placeholderText: input.placeholderText
|
||||
property string errorText
|
||||
property alias maximumLength: input.maximumLength
|
||||
property alias validate: input.validate
|
||||
property alias validator: input.validator
|
||||
property bool smallField
|
||||
readonly property alias field: input
|
||||
|
||||
signal valueEdited(value: string)
|
||||
signal editingFinished(value: string)
|
||||
|
||||
function clear(): void {
|
||||
input.clear();
|
||||
}
|
||||
|
||||
Component.onDestruction: {
|
||||
if (value !== input.text)
|
||||
editingFinished(input.text);
|
||||
}
|
||||
|
||||
Layout.fillWidth: true
|
||||
implicitHeight: rowLayout.implicitHeight + Tokens.padding.medium + Math.max(0, Tokens.padding.large - input.verticalPadding) * 2
|
||||
|
||||
RowLayout {
|
||||
id: rowLayout
|
||||
|
||||
anchors.left: parent.left
|
||||
anchors.right: parent.right
|
||||
anchors.verticalCenter: parent.verticalCenter
|
||||
anchors.leftMargin: Tokens.padding.largeIncreased
|
||||
anchors.rightMargin: Tokens.padding.largeIncreased
|
||||
spacing: Tokens.spacing.medium
|
||||
|
||||
ColumnLayout {
|
||||
Layout.fillWidth: true
|
||||
spacing: 0
|
||||
|
||||
CustomText {
|
||||
id: label
|
||||
|
||||
Layout.fillWidth: true
|
||||
font: Tokens.font.body.small
|
||||
elide: Text.ElideRight
|
||||
}
|
||||
|
||||
CustomText {
|
||||
Layout.fillWidth: true
|
||||
visible: root.subtext
|
||||
text: input.isError && root.errorText ? root.errorText : root.subtext
|
||||
color: input.isError && root.errorText ? Colors.palette.m3error : Colors.palette.m3outline
|
||||
font.pointSize: Tokens.font.size.small
|
||||
elide: Text.ElideRight
|
||||
animate: root.errorText
|
||||
}
|
||||
}
|
||||
|
||||
CustomTextField {
|
||||
id: input
|
||||
|
||||
Layout.preferredWidth: root.smallField ? Tokens.sizes.nexus.smallTextFieldWidth : Tokens.sizes.nexus.textFieldWidth
|
||||
Layout.maximumWidth: root.width / 2
|
||||
Layout.alignment: Qt.AlignVCenter
|
||||
verticalPadding: Tokens.padding.small
|
||||
|
||||
text: root.value
|
||||
|
||||
onTextEdited: root.valueEdited(text)
|
||||
onEditingFinished: root.editingFinished(text)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user