feat(storybook/JoinCommunityViewPage): Created new storybook page

Created new storybook page for `JoinCommunityView` component.
This commit is contained in:
Noelia 2023-02-01 18:33:56 +01:00 committed by Alexandra Betouni
parent 8e45d6c50e
commit b777e20bff
3 changed files with 233 additions and 0 deletions

View File

@ -65,6 +65,10 @@ ListModel {
title: "CommunityColumnHeaderPanel"
section: "Panels"
}
ListElement {
title: "JoinPermissionsOverlayPanel"
section: "Panels"
}
ListElement {
title: "InviteFriendsToCommunityPopup"
section: "Popups"

View File

@ -93,5 +93,10 @@
],
"JoinPermissionsOverlayPanel": [
"https://www.figma.com/file/17fc13UBFvInrLgNUKJJg5/Kuba%E2%8E%9CDesktop?node-id=2365%3A291788&t=UOvsb3QLi26KmVrk-0"
],
"JoinCommunityView": [
"https://www.figma.com/file/17fc13UBFvInrLgNUKJJg5/Kuba%E2%8E%9CDesktop?node-id=2365%3A317901&t=05yQWHWBWOs2DUTp-0",
"https://www.figma.com/file/17fc13UBFvInrLgNUKJJg5/Kuba%E2%8E%9CDesktop?node-id=2698%3A380426&t=UOvsb3QLi26KmVrk-0",
"https://www.figma.com/file/17fc13UBFvInrLgNUKJJg5/Kuba%E2%8E%9CDesktop?node-id=2365%3A291788&t=UOvsb3QLi26KmVrk-0"
]
}

View File

@ -0,0 +1,224 @@
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
import AppLayouts.Chat.views.communities 1.0
import Storybook 1.0
import Models 1.0
import utils 1.0
SplitView {
QtObject {
id: d
// General properties:
property string name: "Uniswap"
property string communityDesc: "General channel for the community"
property color color: "orchid"
property string channelName: joinCommunity ? "general" : "#vip"
property string channelDesc: "VIP members only"
property bool joinCommunity: true // Otherwise it means join channel action
// Overlay component:
property bool requirementsMet: true
property bool isInvitationPending: false
property bool isJoinRequestRejected: false
property bool requiresRequest: false
property var communityHoldings: PermissionsModel.shortPermissionsModel
property var viewOnlyHoldings: PermissionsModel.shortPermissionsModel
property var viewAndPostHoldings: PermissionsModel.shortPermissionsModel
property var moderateHoldings: PermissionsModel.shortPermissionsModel
// Blur background:
property int membersCount: 184
property bool amISectionAdmin: false
property url image: Style.png("tokens/UNI")
property var communityItemsModel: model1
property string chatDateTimeText: "Dec 31, 2020"
property string listUsersText: "simon, Mark Cuban "
readonly property ListModel model1: ListModel {
ListElement { name: "welcome"; selected: false; notificationsCount: 0; hasUnreadMessages: false}
ListElement { name: "general"; selected: false; notificationsCount: 0; hasUnreadMessages: true}
ListElement { name: "design"; selected: true; notificationsCount: 3; hasUnreadMessages: true}
ListElement { name: "random"; selected: false; notificationsCount: 0; hasUnreadMessages: false}
ListElement { name: "vip"; selected: false; notificationsCount: 0; hasUnreadMessages: true}
}
readonly property ListModel model2: ListModel {
ListElement { name: "general"; selected: false; notificationsCount: 3; hasUnreadMessages: false}
ListElement { name: "blockchain"; selected: true; notificationsCount: 3; hasUnreadMessages: true}
ListElement { name: "faq"; selected: false; notificationsCount: 0; hasUnreadMessages: false}
}
readonly property var messagesModel: ListModel {
ListElement {
timestamp: 1656937930
senderDisplayName: "simon"
contentType: StatusMessage.ContentType.Text
message: "Hello, this is awesome! Feels like decentralized Discord!"
isContact: true
trustIndicator: StatusContactVerificationIcons.TrustedType.Verified
colorId: 4
}
ListElement {
timestamp: 1657937930
senderDisplayName: "Mark Cuban"
contentType: StatusMessage.ContentType.Text
message: "I know a lot of you really seem to get off or be validated by arguing with strangers online but please know it's a complete waste of your time and energy"
isContact: false
trustIndicator: StatusContactVerificationIcons.TrustedType.Untrustworthy
colorId: 2
}
}
}
Logs { id: logs }
SplitView {
orientation: Qt.Vertical
SplitView.fillWidth: true
Rectangle {
SplitView.fillWidth: true
SplitView.fillHeight: true
color: Theme.palette.statusAppLayout.rightPanelBackgroundColor
clip: true
JoinCommunityView {
anchors.fill: parent
anchors.margins: 50
// General properties:
name: d.name
communityDesc: d.communityDesc
color: d.color
channelName: d.channelName
channelDesc: d.channelDesc
joinCommunity: d.joinCommunity
// Blur background properties:
membersCount: d.membersCount
image: d.image
amISectionAdmin: d.amISectionAdmin
openCreateChat: false
communityItemsModel: d.communityItemsModel
chatDateTimeText: d.chatDateTimeText
listUsersText: d.listUsersText
messagesModel: d.messagesModel
// Permissions properties
requirementsMet: d.requirementsMet
isInvitationPending: d.isInvitationPending
isJoinRequestRejected: d.isJoinRequestRejected
requiresRequest: d.requiresRequest
communityHoldings: d.communityHoldings
viewOnlyHoldings: d.viewOnlyHoldings
viewAndPostHoldings: d.viewAndPostHoldings
moderateHoldings: d.moderateHoldings
onInfoButtonClicked: logs.logEvent("JoinCommunityView::onInfoButtonClicked()")
onAdHocChatButtonClicked: {
logs.logEvent("JoinCommunityView::store.openCloseCreateChatView(): " + openCreateChat.toString())
openCreateChat = !openCreateChat
}
onNotificationButtonClicked: logs.logEvent("JoinCommunityView::onNotificationButtonClicked()")
onRevealAddressClicked: logs.logEvent("JoinCommunityView::onRevealAddressClicked()")
onInvitationPendingClicked: logs.logEvent("JoinCommunityView::onInvitationPendingClicked()")
}
}
LogsAndControlsPanel {
id: logsAndControlsPanel
SplitView.minimumHeight: 100
SplitView.preferredHeight: 150
logsView.logText: logs.logText
}
}
Pane {
SplitView.minimumWidth: 300
SplitView.preferredWidth: 300
ScrollView {
anchors.fill: parent
ColumnLayout {
spacing: 16
// Blur info editor:
Label {
Layout.fillWidth: true
text: "BLUR INFO EDITOR"
font.bold: true
font.pixelSize: 18
}
CommunityInfoEditor {
name: d.name
membersCount: d.membersCount
amISectionAdmin: d.amISectionAdmin
color: d.color
image: d.image
colorVisible: true
onNameChanged: d.name = name
onMembersCountChanged: d.membersCount = membersCount
onAmISectionAdminChanged: d.amISectionAdmin = amISectionAdmin
onColorChanged: d.color = color
onImageChanged: d.image = image
}
ColumnLayout {
Label {
Layout.fillWidth: true
text: "Community items model:"
}
RadioButton {
checked: true
text: qsTr("Model 1")
onCheckedChanged: if(checked) d.communityItemsModel = d.model1
}
RadioButton {
text: qsTr("Model 2")
onCheckedChanged: if(checked) d.communityItemsModel = d.model2
}
}
// Join community overlay editor:
Label {
Layout.fillWidth: true
text: "JOIN HOLDINGS EDITOR"
font.bold: true
font.pixelSize: 18
}
JoinCommunityPermissionsEditor {
channelName: d.chanelName
joinCommunity: d.joinCommunity
requirementsMet: d.requirementsMet
isInvitationPending: d.isInvitationPending
isJoinRequestRejected: d.isJoinRequestRejected
requiresRequest: d.requiresRequest
onChannelNameChanged: d.channelName = channelName
onJoinCommunityChanged: d.joinCommunity = joinCommunity
onRequirementsMetChanged: d.requirementsMet = requirementsMet
onIsInvitationPendingChanged: d.isInvitationPending = isInvitationPending
onIsJoinRequestRejectedChanged: d.isJoinRequestRejected = isJoinRequestRejected
onRequiresRequestChanged: d.requiresRequest = requiresRequest
onCommunityHoldingsChanged: d.communityHoldings = communityHoldings
onViewOnlyHoldingsChanged: d.viewOnlyHoldings = viewOnlyHoldings
onViewAndPostHoldingsChanged: d.viewAndPostHoldings = viewAndPostHoldings
onModerateHoldingsChanged: d.moderateHoldings = moderateHoldings
}
}
}
}
}