import QtQuick 2.15 import QtQuick.Layouts 1.15 import QtQuick.Controls 2.15 import StatusQ.Controls 0.1 import StatusQ.Core 0.1 import StatusQ.Core.Theme 0.1 import StatusQ.Popups 0.1 import utils 1.0 import shared.controls 1.0 Control { id: root property var model property string tokenName property bool isSelectorMode: false signal selfDestructAmountChanged(string walletAddress, int amount) signal selfDestructRemoved(string walletAddress) bottomPadding: 16 TokenHoldersProxyModel { id: filteredModel sourceModel: root.model searchText: searcher.text sortBy: holdersList.sortBy sortOrder: holdersList.sortOrder ? Qt.DescendingOrder : Qt.AscendingOrder } contentItem: ColumnLayout { id: column anchors.fill: parent anchors.topMargin: Theme.padding spacing: 0 StatusBaseText { id: txtLabel Layout.fillWidth: true Layout.leftMargin: Theme.padding Layout.rightMargin: Theme.padding wrapMode: Text.Wrap font.pixelSize: Theme.primaryTextFontSize color: Theme.palette.baseColor1 text: qsTr("%1 token hodlers").arg(root.tokenName) } SearchBox { id: searcher Layout.fillWidth: true Layout.topMargin: 12 Layout.leftMargin: Theme.padding Layout.rightMargin: Theme.padding visible: !root.empty topPadding: 0 bottomPadding: 0 minimumHeight: 36 // by design maximumHeight: minimumHeight placeholderText: qsTr("Search hodlers") } StatusBaseText { id: anotherLabel Layout.fillWidth: true Layout.topMargin: 12 Layout.leftMargin: Theme.padding Layout.rightMargin: Theme.padding wrapMode: Text.Wrap font.pixelSize: Theme.primaryTextFontSize color: Theme.palette.baseColor1 visible: (searcher.text.length > 0 && filteredModel.count === 0) text: visible ? qsTr("No hodlers found") : "" } TokenHoldersList { id: holdersList Layout.fillWidth: true Layout.fillHeight: true Layout.topMargin: 12 isSelectorMode: root.isSelectorMode model: filteredModel onSelfDestructRemoved: root.selfDestructRemoved(walletAddress) onSelfDestructAmountChanged: root.selfDestructAmountChanged( walletAddress, amount) } Rectangle { Layout.fillWidth: true Layout.preferredHeight: 4 Layout.alignment: Qt.AlignBottom color: Theme.palette.baseColor2 opacity: holdersList.bottomSeparatorVisible ? 1.0 : 0.0 } } }