feat(StatusQ.Controls): Introduce `StatusPasswordStrengthIndicator`
Create a password strength indicator component with the corresponding variation. Create a base StatusProgressBar component. Add new miscColor12. Closes #528
This commit is contained in:
parent
ea9556948b
commit
626695da25
|
@ -196,4 +196,11 @@ GridLayout {
|
||||||
type: StatusBanner.Type.Danger
|
type: StatusBanner.Type.Danger
|
||||||
statusText: "Banner"
|
statusText: "Banner"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
StatusProgressBar {
|
||||||
|
id: progressBar
|
||||||
|
text: "Weak"
|
||||||
|
value: 0.5
|
||||||
|
fillColor : Theme.palette.pinColor1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -201,6 +201,11 @@ StatusWindow {
|
||||||
selected: viewLoader.source.toString().includes(title)
|
selected: viewLoader.source.toString().includes(title)
|
||||||
onClicked: mainPageView.page(title);
|
onClicked: mainPageView.page(title);
|
||||||
}
|
}
|
||||||
|
StatusNavigationListItem {
|
||||||
|
title: "StatusPasswordStrengthIndicator"
|
||||||
|
selected: viewLoader.source.toString().includes(title)
|
||||||
|
onClicked: mainPageView.page(title);
|
||||||
|
}
|
||||||
StatusListSectionHeadline { text: "StatusQ.Components" }
|
StatusListSectionHeadline { text: "StatusQ.Components" }
|
||||||
StatusNavigationListItem {
|
StatusNavigationListItem {
|
||||||
title: "StatusAddress"
|
title: "StatusAddress"
|
||||||
|
|
|
@ -0,0 +1,38 @@
|
||||||
|
import QtQuick.Layouts 1.14
|
||||||
|
import StatusQ.Controls 0.1
|
||||||
|
|
||||||
|
GridLayout {
|
||||||
|
columns: 1
|
||||||
|
columnSpacing: 5
|
||||||
|
rowSpacing: 5
|
||||||
|
|
||||||
|
StatusPasswordStrengthIndicator {
|
||||||
|
id: veryweakPw
|
||||||
|
strength: StatusPasswordStrengthIndicator.Strength.VeryWeak
|
||||||
|
value: 0.75
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusPasswordStrengthIndicator {
|
||||||
|
id: weakPw
|
||||||
|
strength: StatusPasswordStrengthIndicator.Strength.Weak
|
||||||
|
value: 0.5
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusPasswordStrengthIndicator {
|
||||||
|
id: sosoPw
|
||||||
|
strength: StatusPasswordStrengthIndicator.Strength.SoSo
|
||||||
|
value: 0.25
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusPasswordStrengthIndicator {
|
||||||
|
id: goodPw
|
||||||
|
strength: StatusPasswordStrengthIndicator.Strength.Good
|
||||||
|
value: 1
|
||||||
|
}
|
||||||
|
|
||||||
|
StatusPasswordStrengthIndicator {
|
||||||
|
id: greatPw
|
||||||
|
strength: StatusPasswordStrengthIndicator.Strength.Great
|
||||||
|
value: 0.3
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,8 +1,6 @@
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/">
|
<qresource prefix="/">
|
||||||
<file>main.qml</file>
|
<file>main.qml</file>
|
||||||
<file>DemoApp.qml</file>
|
|
||||||
<file>ThemeSwitch.qml</file>
|
|
||||||
<file>pages/StatusAccountSelectorPage.qml</file>
|
<file>pages/StatusAccountSelectorPage.qml</file>
|
||||||
<file>pages/StatusAddressPage.qml</file>
|
<file>pages/StatusAddressPage.qml</file>
|
||||||
<file>pages/StatusAssetSelectorPage.qml</file>
|
<file>pages/StatusAssetSelectorPage.qml</file>
|
||||||
|
@ -18,6 +16,7 @@
|
||||||
<file>pages/StatusTabSwitchPage.qml</file>
|
<file>pages/StatusTabSwitchPage.qml</file>
|
||||||
<file>pages/StatusWalletColorButtonPage.qml</file>
|
<file>pages/StatusWalletColorButtonPage.qml</file>
|
||||||
<file>pages/StatusWalletColorSelectPage.qml</file>
|
<file>pages/StatusWalletColorSelectPage.qml</file>
|
||||||
|
<file>pages/StatusPasswordStrengthIndicatorPage.qml</file>
|
||||||
<file>controls/Buttons.qml</file>
|
<file>controls/Buttons.qml</file>
|
||||||
<file>controls/Controls.qml</file>
|
<file>controls/Controls.qml</file>
|
||||||
<file>controls/Icons.qml</file>
|
<file>controls/Icons.qml</file>
|
||||||
|
|
|
@ -0,0 +1,54 @@
|
||||||
|
import QtQuick 2.14
|
||||||
|
import QtQuick.Controls 2.14
|
||||||
|
|
||||||
|
import StatusQ.Core.Theme 0.1
|
||||||
|
import StatusQ.Core 0.1
|
||||||
|
|
||||||
|
StatusProgressBar {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
property var strength
|
||||||
|
property string labelVeryWeak: "Very weak"
|
||||||
|
property string labelWeak: "Weak"
|
||||||
|
property string labelSoso: "So-so"
|
||||||
|
property string labelGood: "Good"
|
||||||
|
property string labelGreat: "Great"
|
||||||
|
|
||||||
|
enum Strength {
|
||||||
|
VeryWeak, // 0
|
||||||
|
Weak, // 1
|
||||||
|
SoSo, // 2
|
||||||
|
Good, // 3
|
||||||
|
Great // 4
|
||||||
|
}
|
||||||
|
|
||||||
|
// Behavior:
|
||||||
|
states: [
|
||||||
|
// Strength states definition:
|
||||||
|
State {
|
||||||
|
when: control.strength === StatusPasswordStrengthIndicator.Strength.VeryWeak
|
||||||
|
PropertyChanges { target: control; fillColor : Theme.palette.dangerColor1}
|
||||||
|
PropertyChanges { target: control; text: labelVeryWeak}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
when: control.strength === StatusPasswordStrengthIndicator.Strength.Weak
|
||||||
|
PropertyChanges { target: control; fillColor : Theme.palette.pinColor1}
|
||||||
|
PropertyChanges { target: control; text: labelWeak}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
when: control.strength === StatusPasswordStrengthIndicator.Strength.SoSo
|
||||||
|
PropertyChanges { target: control; fillColor : Theme.palette.miscColor7}
|
||||||
|
PropertyChanges { target: control; text: labelSoso}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
when: control.strength === StatusPasswordStrengthIndicator.Strength.Good
|
||||||
|
PropertyChanges { target: control; fillColor : Theme.palette.miscColor12}
|
||||||
|
PropertyChanges { target: control; text: labelGood}
|
||||||
|
},
|
||||||
|
State {
|
||||||
|
when: control.strength === StatusPasswordStrengthIndicator.Strength.Great
|
||||||
|
PropertyChanges { target: control; fillColor : Theme.palette.successColor1}
|
||||||
|
PropertyChanges { target: control; text: labelGreat}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
import QtQuick 2.14
|
||||||
|
import QtQuick.Controls 2.14
|
||||||
|
|
||||||
|
import StatusQ.Core.Theme 0.1
|
||||||
|
import StatusQ.Core 0.1
|
||||||
|
|
||||||
|
ProgressBar {
|
||||||
|
id: control
|
||||||
|
|
||||||
|
property string text
|
||||||
|
property color fillColor
|
||||||
|
property color backgroundColor: Theme.palette.directColor8
|
||||||
|
|
||||||
|
width: 416
|
||||||
|
height: 16
|
||||||
|
clip: true
|
||||||
|
|
||||||
|
background: Rectangle {
|
||||||
|
implicitWidth: parent.width
|
||||||
|
implicitHeight: parent.height
|
||||||
|
color: control.backgroundColor
|
||||||
|
radius: 5
|
||||||
|
}
|
||||||
|
contentItem: Item {
|
||||||
|
implicitHeight: parent.height
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: bar
|
||||||
|
width: control.visualPosition * parent.width
|
||||||
|
height: parent.height
|
||||||
|
color: control.fillColor
|
||||||
|
radius: 5
|
||||||
|
|
||||||
|
StatusBaseText {
|
||||||
|
anchors.centerIn: parent
|
||||||
|
text: control.text
|
||||||
|
font.pixelSize: 12
|
||||||
|
color: Theme.palette.indirectColor1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -24,6 +24,8 @@ StatusSelect 0.1 StatusSelect.qml
|
||||||
StatusBaseInput 0.1 StatusBaseInput.qml
|
StatusBaseInput 0.1 StatusBaseInput.qml
|
||||||
StatusInput 0.1 StatusInput.qml
|
StatusInput 0.1 StatusInput.qml
|
||||||
StatusPickerButton 0.1 StatusPickerButton.qml
|
StatusPickerButton 0.1 StatusPickerButton.qml
|
||||||
|
StatusProgressBar 0.1 StatusProgressBar.qml
|
||||||
|
StatusPasswordStrengthIndicator 0.1 StatusPasswordStrengthIndicator.qml
|
||||||
StatusSwitchTabButton 0.1 StatusSwitchTabButton.qml
|
StatusSwitchTabButton 0.1 StatusSwitchTabButton.qml
|
||||||
StatusSwitchTabBar 0.1 StatusSwitchTabBar.qml
|
StatusSwitchTabBar 0.1 StatusSwitchTabBar.qml
|
||||||
StatusSelectableText 0.1 StatusSelectableText.qml
|
StatusSelectableText 0.1 StatusSelectableText.qml
|
||||||
|
|
|
@ -31,6 +31,8 @@ QtObject {
|
||||||
'green2': '#7CDA00',
|
'green2': '#7CDA00',
|
||||||
'green3': '#60C370',
|
'green3': '#60C370',
|
||||||
'green4': '#93DB33',
|
'green4': '#93DB33',
|
||||||
|
'green5': '#9EA85D',
|
||||||
|
'green6': '#AFB551',
|
||||||
|
|
||||||
'grey': '#F0F2F5',
|
'grey': '#F0F2F5',
|
||||||
'grey2': '#F6F8FA',
|
'grey2': '#F6F8FA',
|
||||||
|
|
|
@ -145,6 +145,7 @@ ThemePalette {
|
||||||
miscColor9: getColor('moss2')
|
miscColor9: getColor('moss2')
|
||||||
miscColor10: getColor('brown3')
|
miscColor10: getColor('brown3')
|
||||||
miscColor11: getColor('yellow2')
|
miscColor11: getColor('yellow2')
|
||||||
|
miscColor12: getColor('green6')
|
||||||
|
|
||||||
accountColors: [
|
accountColors: [
|
||||||
getColor('blue5'),
|
getColor('blue5'),
|
||||||
|
|
|
@ -143,6 +143,7 @@ ThemePalette {
|
||||||
miscColor9: getColor('moss')
|
miscColor9: getColor('moss')
|
||||||
miscColor10: getColor('brown')
|
miscColor10: getColor('brown')
|
||||||
miscColor11: getColor('brown2')
|
miscColor11: getColor('brown2')
|
||||||
|
miscColor12: getColor('green5')
|
||||||
|
|
||||||
accountColors: [
|
accountColors: [
|
||||||
getColor('blue'),
|
getColor('blue'),
|
||||||
|
|
|
@ -88,6 +88,7 @@ QtObject {
|
||||||
property color miscColor9
|
property color miscColor9
|
||||||
property color miscColor10
|
property color miscColor10
|
||||||
property color miscColor11
|
property color miscColor11
|
||||||
|
property color miscColor12
|
||||||
|
|
||||||
property var accountColors: []
|
property var accountColors: []
|
||||||
|
|
||||||
|
|
|
@ -316,5 +316,7 @@
|
||||||
<file>src/assets/img/icons/tiny/tribute-to-talk.svg</file>
|
<file>src/assets/img/icons/tiny/tribute-to-talk.svg</file>
|
||||||
<file>src/assets/img/icons/tiny/warning.svg</file>
|
<file>src/assets/img/icons/tiny/warning.svg</file>
|
||||||
<file>src/StatusQ/Controls/StatusBanner.qml</file>
|
<file>src/StatusQ/Controls/StatusBanner.qml</file>
|
||||||
|
<file>src/StatusQ/Controls/StatusProgressBar.qml</file>
|
||||||
|
<file>src/StatusQ/Controls/StatusPasswordStrengthIndicator.qml</file>
|
||||||
</qresource>
|
</qresource>
|
||||||
</RCC>
|
</RCC>
|
||||||
|
|
Loading…
Reference in New Issue