Noelia 92f77e5fd9 feat(MintTokens): Add mint failure flow
- It updates `CommunityCollectibleView` to display minting failure state.
- It updates `CommunityMintedTokensView` to display minting failure state.
- It exposes subtitle color property in `CollectibleView`.
- It updates `storybook` with more options to display minting failure state.

Closes #10620
2023-05-18 17:06:25 +02:00

124 lines
3.5 KiB
QML

import QtQuick 2.13
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.13
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
import StatusQ.Controls 0.1
import utils 1.0
Control {
id: root
property string title: ""
property string subTitle: ""
property alias subTitleColor: subTitleItem.customColor
property string backgroundColor: "transparent"
property url mediaUrl : ""
property string mediaType: ""
property url fallbackImageUrl : ""
property bool isLoading: false
property bool navigationIconVisible: false
signal clicked
implicitHeight: 225
implicitWidth: 176
background: Rectangle {
radius: 8
color: Theme.palette.baseColor2
visible: !root.isLoading && mouse.containsMouse
}
contentItem: ColumnLayout {
spacing: 0
StatusRoundedMedia {
id: image
Layout.alignment: Qt.AlignHCenter
Layout.margins: Style.current.halfPadding
Layout.fillWidth: true
Layout.preferredHeight: width
radius: 8
mediaUrl: root.mediaUrl
mediaType: root.mediaType
fallbackImageUrl: root.fallbackImageUrl
border.color: Theme.palette.baseColor2
border.width: 1
showLoadingIndicator: true
color: root.isLoading ? "transparent": root.backgroundColor
Loader {
anchors.fill: parent
active: root.isLoading
sourceComponent: LoadingComponent {radius: image.radius}
}
}
RowLayout {
Layout.leftMargin: Style.current.halfPadding
Layout.rightMargin: Layout.leftMargin
Layout.fillWidth: !root.isLoading
Layout.preferredWidth: root.isLoading ? 134 : width
StatusTextWithLoadingState {
Layout.alignment: Qt.AlignLeft
Layout.fillWidth: true
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
font.pixelSize: 15
customColor: Theme.palette.directColor1
font.weight: Font.DemiBold
elide: Text.ElideRight
text: root.isLoading ? Constants.dummyText : root.title
loading: root.isLoading
}
StatusIcon {
Layout.alignment: Qt.AlignVCenter
visible: root.navigationIconVisible
icon: "next"
color: Theme.palette.baseColor1
}
}
StatusTextWithLoadingState {
id: subTitleItem
Layout.alignment: Qt.AlignLeft
Layout.leftMargin: Style.current.halfPadding
Layout.rightMargin: Layout.leftMargin
Layout.fillWidth: !root.isLoading
Layout.preferredWidth: root.isLoading ? 88 : width
horizontalAlignment: Text.AlignLeft
verticalAlignment: Text.AlignVCenter
font.pixelSize: 13
customColor: Theme.palette.baseColor1
elide: Text.ElideRight
text: root.isLoading? Constants.dummyText : root.subTitle
loading: root.isLoading
}
// Filler
Item {
Layout.fillHeight: true
}
}
MouseArea {
id: mouse
anchors.fill: parent
hoverEnabled: true
cursorShape: Qt.PointingHandCursor
onClicked: {
if (!root.isLoading) {
root.clicked()
}
}
}
}