53 lines
1.3 KiB
QML
53 lines
1.3 KiB
QML
import qs.components
|
|
import qs.components.controls
|
|
import qs.components.effects
|
|
import qs.config
|
|
import QtQuick
|
|
import QtQuick.Layouts
|
|
|
|
StyledRect {
|
|
id: root
|
|
|
|
property color onColor: Colours.palette.m3onSurface
|
|
property alias disabled: stateLayer.disabled
|
|
property alias text: label.text
|
|
property alias enabled: stateLayer.enabled
|
|
property string icon: ""
|
|
|
|
implicitWidth: rowLayout.implicitWidth + Appearance.padding.normal * 2
|
|
implicitHeight: rowLayout.implicitHeight + Appearance.padding.small
|
|
radius: Appearance.rounding.normal
|
|
|
|
StateLayer {
|
|
id: stateLayer
|
|
color: parent.onColor
|
|
function onClicked(): void {
|
|
if (parent.enabled !== false) {
|
|
parent.clicked();
|
|
}
|
|
}
|
|
}
|
|
|
|
RowLayout {
|
|
id: rowLayout
|
|
anchors.centerIn: parent
|
|
spacing: Appearance.spacing.small
|
|
|
|
MaterialIcon {
|
|
id: iconItem
|
|
visible: root.icon.length > 0
|
|
text: root.icon
|
|
color: root.onColor
|
|
font.pointSize: Appearance.font.size.large
|
|
}
|
|
|
|
StyledText {
|
|
id: label
|
|
Layout.leftMargin: root.icon.length > 0 ? Appearance.padding.smaller : 0
|
|
color: parent.parent.onColor
|
|
}
|
|
}
|
|
|
|
signal clicked
|
|
}
|
|
|