Add fields in ApplicantForm

This commit is contained in:
Yuri Becker
2025-04-08 11:23:16 +02:00
parent ddf35a55a8
commit a720dfebeb
13 changed files with 531 additions and 377 deletions

View File

@@ -7,10 +7,22 @@ ColumnLayout {
spacing: Dimensions.l spacing: Dimensions.l
ApplicantForm { ApplicantForm {
Layout.alignment: Qt.AlignTop
Layout.fillHeight: true Layout.fillHeight: true
Layout.verticalStretchFactor: 1 Layout.verticalStretchFactor: 1
} }
RowLayout { RowLayout {
spacing: Dimensions.l spacing: Dimensions.l
Layout.alignment: Qt.AlignRight
Button {
icon.source: "qrc:/images/ArrowLeftCircle-Outline.svg"
text: qsTr("Verwerfen")
}
Button {
icon.source: "qrc:/images/CheckCircle.svg"
text: qsTr("Speichern")
}
} }
} }

View File

@@ -4,16 +4,164 @@ import QtQuick.Layouts
import TeroStyle import TeroStyle
ColumnLayout { ColumnLayout {
readonly property int fieldM: 235
readonly property int fieldS: 110
spacing: Dimensions.l spacing: Dimensions.l
IconLabel { IconLabel {
color: Colors.foreground color: Colors.foreground
font: Typography.h2 font: Typography.h2
spacing: Dimensions.m icon.color: Colors.foreground
icon.color: color icon.height: Typography.h2.pixelSize
icon.source: "qrc:/images/UserCircle" icon.source: "qrc:/images/UserCircle"
icon.width: font.pixelSize icon.width: Typography.h2.pixelSize
icon.height: font.pixelSize spacing: Dimensions.m
text: qsTr("Stammdaten") text: qsTr("Stammdaten")
} }
RowLayout {
spacing: Dimensions.m
Field {
label: qsTr("Anrede")
ComboBox {
id: title
implicitWidth: fieldM
model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")]
onCurrentTextChanged: {
switch (title.currentIndex) {
case 1:
salutation.text = "Sehr geehrter Herr ";
break;
case 2:
salutation.text = "Sehr geehrte Frau ";
break;
default:
salutation.text = "Guten Tag ";
}
}
}
}
Field {
label: qsTr("Vorname*")
TextField {
implicitWidth: fieldM
placeholderText: "Max"
}
}
Field {
label: qsTr("Nachname*")
TextField {
implicitWidth: fieldM
placeholderText: qsTr("Mustermann")
}
}
}
RowLayout {
spacing: Dimensions.m
Field {
label: qsTr("Straße")
TextField {
implicitWidth: fieldM
placeholderText: qsTr("Musterstraße")
}
}
Field {
label: qsTr("Hausnummer")
TextField {
implicitWidth: fieldS
placeholderText: qsTr("1a")
}
}
Field {
label: qsTr("PLZ")
ComboBox {
id: postcode
editable: true
implicitWidth: fieldS
model: address_model
textRole: "display"
onActivated: currentValue
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
}
}
Field {
label: qsTr("Ort")
ComboBox {
id: city
editable: true
implicitWidth: fieldM
model: address_model
textRole: "city"
}
}
}
IconLabel {
color: Colors.foreground
font: Typography.h2
icon.color: Colors.foreground
icon.height: Typography.h2.pixelSize
icon.source: "qrc:/images/Phone"
icon.width: Typography.h2.pixelSize
spacing: Dimensions.m
text: qsTr("Kontakt")
}
RowLayout {
spacing: Dimensions.m
Field {
label: qsTr("Telefonnummer")
TextField {
implicitWidth: fieldM
placeholderText: "+49 1234 567890"
validator: PhoneNumberValidator {
}
}
}
Field {
label: qsTr("Mobil")
TextField {
implicitWidth: fieldM
placeholderText: "+49 123 4567891011"
validator: PhoneNumberValidator {
}
}
}
Field {
label: qsTr("E-Mail Adresse")
TextField {
implicitWidth: fieldM
placeholderText: "tero@example.org"
validator: EmailAddressValidator {
}
}
}
Field {
label: qsTr("Briefanrede")
TextField {
id: salutation
implicitWidth: fieldM
}
}
}
} }

View File

@@ -1,444 +1,431 @@
import QtQuick import QtQuick
import QtQuick.Controls import QtQuick.Controls
import QtQuick.Layouts import QtQuick.Layouts
import TeroStyle
GridLayout GridLayout {
{
id: personalData id: personalData
columns: 4
Label function checkPersonalField() {
{ if (radio.children[0].checked) {
text: qsTr("Anrede") return (firstname.text.trim() && lastname.text.trim());
Layout.alignment: Qt.AlignRight } else {
return (firstname.text.trim() && lastname.text.trim() && street.text.trim() && houseno.text.trim() && (postcode.editText.trim() || postcode.currentText.trim()) && (city.editText.trim() || city.currentText.trim()) && birthday.text.trim() && phonenumber.text.trim() && cellphone.text.trim() && email.text.trim() && jobdescription.text.trim() && contractstart.text.trim() && contractend.text.trim() && briefAnrede.text.trim());
} }
ComboBox }
{ function requiredField() {
property string name: "title" var pf = (radio.children[1].checked) ? "Pflichtfeld" : "";
street.placeholderText = pf;
phonenumber.placeholderText = pf;
cellphone.placeholderText = pf;
email.placeholderText = pf;
jobdescription.placeholderText = pf;
contractstart.placeholderText = pf;
contractend.placeholderText = pf;
briefAnrede.placeholderText = pf;
houseno.placeholderText = pf;
}
columns: 4
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Anrede")
}
ComboBox {
id: title id: title
property string name: "title"
Layout.columnSpan: 3
Layout.fillWidth: true Layout.fillWidth: true
editable: false editable: false
Layout.columnSpan: 3
model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")] model: [qsTr("Keine Angabe"), qsTr("Herr"), qsTr("Frau")]
onCurrentTextChanged:
{ onCurrentTextChanged: {
switch (title.currentIndex) switch (title.currentIndex) {
{
case 1: case 1:
briefAnrede.text = "Sehr geehrter Herr " briefAnrede.text = "Sehr geehrter Herr ";
break break;
case 2: case 2:
briefAnrede.text = "Sehr geehrte Frau " briefAnrede.text = "Sehr geehrte Frau ";
break break;
default: default:
briefAnrede.text = "Guten Tag " briefAnrede.text = "Guten Tag ";
} }
} }
} }
Label Label {
{ Layout.alignment: Qt.AlignRight
text: qsTr("Vorname*") text: qsTr("Vorname*")
Layout.alignment: Qt.AlignRight
} }
TextField TextField {
{
property string name: "firstname"
id: firstname id: firstname
Layout.fillWidth: true
onTextChanged: checkFields()
Layout.columnSpan: 3
}
Label
{
text: qsTr("Nachname*")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "lastname"
id: lastname
Layout.fillWidth: true
onTextChanged: checkFields()
Layout.columnSpan: 3
}
Label
{
text: qsTr("Straße")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "street"
id: street
Layout.fillWidth: true
placeholderTextColor: "red"
onTextChanged: checkFields()
property string name: "firstname"
Layout.columnSpan: 3
Layout.fillWidth: true
onTextChanged: checkFields()
} }
Label Label {
{
text: qsTr("Nr.")
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
text: qsTr("Nachname*")
} }
TextField TextField {
{ id: lastname
property string name: "houseno"
id: houseno property string name: "lastname"
Layout.columnSpan: 3
Layout.fillWidth: true
onTextChanged: checkFields()
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Straße")
}
TextField {
id: street
property string name: "street"
Layout.fillWidth: true Layout.fillWidth: true
placeholderTextColor: "red" placeholderTextColor: "red"
onTextChanged: checkFields() onTextChanged: checkFields()
validator: RegularExpressionValidator }
{ Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Nr.")
}
TextField {
id: houseno
property string name: "houseno"
Layout.fillWidth: true
placeholderTextColor: "red"
validator: RegularExpressionValidator {
regularExpression: /([0-9a-zA-Z\-]{1,6})/ regularExpression: /([0-9a-zA-Z\-]{1,6})/
} }
onTextChanged: checkFields()
} }
Label Label {
{ Layout.alignment: Qt.AlignRight
text: qsTr("PLZ") text: qsTr("PLZ")
Layout.alignment: Qt.AlignRight
} }
ComboBox {
ComboBox
{
property string name: "postcode"
id: postcode id: postcode
property string name: "postcode"
Layout.fillWidth: true Layout.fillWidth: true
currentIndex: -1
editable: true editable: true
onEditTextChanged: checkFields()
onCurrentTextChanged: checkFields()
onActivated: currentValue
model: address_model model: address_model
popup.height: 300
textRole: "display" textRole: "display"
popup.height: 300
currentIndex: -1 validator: PostcodeValidator {}
onActivated: currentValue
onCurrentIndexChanged: city.currentIndex = postcode.currentIndex onCurrentIndexChanged: city.currentIndex = postcode.currentIndex
validator: RegularExpressionValidator
{
regularExpression: /([^$][0-9]{1,4})/
}
}
Label
{
text: qsTr("Ort")
Layout.alignment: Qt.AlignRight
}
ComboBox
{
property string name: "city"
id: city
Layout.fillWidth: true
editable: true
onEditTextChanged: checkFields()
onCurrentTextChanged: checkFields() onCurrentTextChanged: checkFields()
model: address_model onEditTextChanged: checkFields()
textRole: "city" }
popup.height: 300 Label {
currentIndex: -1 Layout.alignment: Qt.AlignRight
text: qsTr("Ort")
}
ComboBox {
id: city
property string name: "city"
Layout.fillWidth: true
currentIndex: -1
editable: true
model: address_model
popup.height: 300
textRole: "city"
onCurrentTextChanged: checkFields()
onEditTextChanged: checkFields()
} }
Label Label {
{ Layout.alignment: Qt.AlignRight
text: qsTr("Geburtsname") text: qsTr("Geburtsname")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked visible: radio.children[1].checked
} }
TextField TextField {
{
property string name: "birthname"
id: birthname id: birthname
Layout.fillWidth: true
onTextChanged: checkFields() property string name: "birthname"
Layout.columnSpan: 3 Layout.columnSpan: 3
Layout.fillWidth: true
visible: radio.children[1].checked visible: radio.children[1].checked
onTextChanged: checkFields()
} }
Label Label {
{
text: qsTr("Geburtsdatum*")
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
text: qsTr("Geburtsdatum*")
visible: radio.children[1].checked visible: radio.children[1].checked
} }
TextField TextField {
{
property string name: "birthday"
id: birthday id: birthday
Layout.fillWidth: true
onTextChanged: checkFields() property string name: "birthday"
Layout.columnSpan: 3 Layout.columnSpan: 3
Layout.fillWidth: true
visible: radio.children[1].checked visible: radio.children[1].checked
validator: RegularExpressionValidator
{ validator: RegularExpressionValidator {
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/ regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
} }
Keys.onPressed: (event)=>
{
if (event.key !== Qt.Key_Backspace)
{
var len = birthday.length
var bd = birthday.text
if (len === 2 || len === 5) birthday.text = bd + "."
}
}
}
Label Keys.onPressed: event => {
{ if (event.key !== Qt.Key_Backspace) {
var len = birthday.length;
var bd = birthday.text;
if (len === 2 || len === 5)
birthday.text = bd + ".";
}
}
onTextChanged: checkFields()
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Geburtsort*") text: qsTr("Geburtsort*")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked visible: radio.children[1].checked
} }
TextField TextField {
{
property string name: "placeofbirth"
id: placeofbirth id: placeofbirth
Layout.fillWidth: true
onTextChanged: checkFields() property string name: "placeofbirth"
Layout.columnSpan: 3 Layout.columnSpan: 3
Layout.fillWidth: true
visible: radio.children[1].checked visible: radio.children[1].checked
onTextChanged: checkFields()
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Telefonnummer")
}
TextField {
id: phonenumber
property string name: "phone"
Layout.columnSpan: 3
Layout.fillWidth: true
placeholderTextColor: "red"
validator: RegularExpressionValidator {
regularExpression: /([+0-9]{1})([0-9]{1,17})/
} }
Label
{
text: qsTr("Telefonnummer")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "phone"
id: phonenumber
Layout.fillWidth: true
placeholderTextColor: "red"
Layout.columnSpan: 3
onTextChanged: checkFields() onTextChanged: checkFields()
validator: RegularExpressionValidator
{
regularExpression: /([+0-9]{1})([0-9]{1,17})/
} }
} Label {
Label Layout.alignment: Qt.AlignRight
{
text: qsTr("Mobil") text: qsTr("Mobil")
Layout.alignment: Qt.AlignRight
} }
TextField TextField {
{
property string name: "mobile"
id: cellphone id: cellphone
property string name: "mobile"
Layout.columnSpan: 3
Layout.fillWidth: true Layout.fillWidth: true
placeholderTextColor: "red" placeholderTextColor: "red"
Layout.columnSpan: 3
onTextChanged: checkFields() validator: RegularExpressionValidator {
validator: RegularExpressionValidator
{
regularExpression: /([+0-9]{1})([0-9]{1,17})/ regularExpression: /([+0-9]{1})([0-9]{1,17})/
} }
}
Label
{
text: qsTr("E-Mail")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "email"
id: email
Layout.fillWidth: true
placeholderTextColor: "red"
Layout.columnSpan: 3
onTextChanged: checkFields() onTextChanged: checkFields()
placeholderText: qsTr("beispiel@domain.de")
validator: RegularExpressionValidator
{
regularExpression: /([\+!#$%&\*\\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
} }
} Label {
Label
{
text: qsTr("Familienstand")
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
text: qsTr("E-Mail")
}
TextField {
id: email
property string name: "email"
Layout.columnSpan: 3
Layout.fillWidth: true
placeholderText: qsTr("beispiel@domain.de")
placeholderTextColor: "red"
validator: EmailAddressValidator {}
onTextChanged: checkFields()
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Familienstand")
visible: radio.children[1].checked visible: radio.children[1].checked
} }
ComboBox ComboBox {
{
property string name: "maritalstatus"
id: maritalstatus id: maritalstatus
property string name: "maritalstatus"
Layout.columnSpan: 3
Layout.fillWidth: true Layout.fillWidth: true
editable: false editable: false
model: [qsTr("ledig"), qsTr("verheiratet"), qsTr("verwitwet"), qsTr("geschieden")] model: [qsTr("ledig"), qsTr("verheiratet"), qsTr("verwitwet"), qsTr("geschieden")]
visible: radio.children[1].checked visible: radio.children[1].checked
Layout.columnSpan: 3
} }
Label Label {
{ Layout.alignment: Qt.AlignRight
text: qsTr("Stundenlohn") text: qsTr("Stundenlohn")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked visible: radio.children[1].checked
} }
TextField TextField {
{
property string name: "salary"
id: salary id: salary
Layout.fillWidth: true
visible: radio.children[1].checked property string name: "salary"
placeholderTextColor: "red"
Layout.columnSpan: 3 Layout.columnSpan: 3
Layout.fillWidth: true
placeholderTextColor: "red"
visible: radio.children[1].checked
onTextChanged: checkFields() onTextChanged: checkFields()
} }
Label Label {
{ Layout.alignment: Qt.AlignRight
text: qsTr("Jobbeschreibung") text: qsTr("Jobbeschreibung")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked visible: radio.children[1].checked
} }
TextField TextField {
{
property string name: "jobdesc"
id: jobdescription id: jobdescription
Layout.fillWidth: true
visible: radio.children[1].checked property string name: "jobdesc"
placeholderTextColor: "red"
Layout.columnSpan: 3 Layout.columnSpan: 3
Layout.fillWidth: true
placeholderTextColor: "red"
visible: radio.children[1].checked
onTextChanged: checkFields() onTextChanged: checkFields()
} }
Label Label {
{ Layout.alignment: Qt.AlignRight
text: qsTr("Vertragsbeginn") text: qsTr("Vertragsbeginn")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked visible: radio.children[1].checked
} }
TextField TextField {
{
property string name: "contractstart"
id: contractstart id: contractstart
Layout.fillWidth: true
visible: radio.children[1].checked property string name: "contractstart"
placeholderTextColor: "red"
Layout.columnSpan: 3 Layout.columnSpan: 3
onTextChanged: checkFields() Layout.fillWidth: true
validator: RegularExpressionValidator placeholderTextColor: "red"
{ visible: radio.children[1].checked
validator: RegularExpressionValidator {
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/ regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
} }
Keys.onPressed: (event)=>
{
if (event.key !== Qt.Key_Backspace)
{
var len = contractstart.length
var bd = contractstart.text
if (len === 2 || len === 5) contractstart.text = bd + "."
}
}
}
Label
{
text: qsTr("Vertragsende")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked
}
TextField
{
property string name: "contractend"
id: contractend
Layout.fillWidth: true
visible: radio.children[1].checked
placeholderTextColor: "red"
Layout.columnSpan: 3
onTextChanged: checkFields()
validator: RegularExpressionValidator
{
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
}
Keys.onPressed: (event)=>
{
if (event.key !== Qt.Key_Backspace)
{
var len = contractend.length
var bd = contractend.text
if (len === 2 || len === 5) contractend.text = bd + "."
}
}
}
Label
{
text: qsTr("Arbeitszeiten Tage")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked
}
ComboBox
{
property string name: "workdays"
id: workdays
Layout.fillWidth: true
visible: radio.children[1].checked
model: ["1","2","3","4","5","6","7"]
}
Label
{
text: qsTr("Stunden")
Layout.alignment: Qt.AlignRight
visible: radio.children[1].checked
}
ComboBox
{
property string name: "workhours"
id: workhours
Layout.fillWidth: true
visible: radio.children[1].checked
model: ["1","2","3","4","5","6","7","8"]
}
Label
{
text: qsTr("Briefanrede")
Layout.alignment: Qt.AlignRight
}
TextField
{
property string name: "formofaddress"
id: briefAnrede
Layout.fillWidth: true
placeholderTextColor: "red"
Layout.columnSpan: 3
onTextChanged: checkFields()
}
Item Keys.onPressed: event => {
{ if (event.key !== Qt.Key_Backspace) {
Layout.fillHeight: true var len = contractstart.length;
var bd = contractstart.text;
if (len === 2 || len === 5)
contractstart.text = bd + ".";
}
}
onTextChanged: checkFields()
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Vertragsende")
visible: radio.children[1].checked
}
TextField {
id: contractend
property string name: "contractend"
Layout.columnSpan: 3
Layout.fillWidth: true
placeholderTextColor: "red"
visible: radio.children[1].checked
validator: RegularExpressionValidator {
regularExpression: /((^|)(0[1-9]{1}|[1-2]{1}[0-9]{1}|3[0-1]))\.((^|)(0[1-9]{1}|1[0-2]{1}))\.((^|)(196[0-9]{1}|19[7-9]{1}[0-9]{1}|20[0-9]{2}))/
}
Keys.onPressed: event => {
if (event.key !== Qt.Key_Backspace) {
var len = contractend.length;
var bd = contractend.text;
if (len === 2 || len === 5)
contractend.text = bd + ".";
}
}
onTextChanged: checkFields()
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Arbeitszeiten Tage")
visible: radio.children[1].checked
}
ComboBox {
id: workdays
property string name: "workdays"
Layout.fillWidth: true
model: ["1", "2", "3", "4", "5", "6", "7"]
visible: radio.children[1].checked
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Stunden")
visible: radio.children[1].checked
}
ComboBox {
id: workhours
property string name: "workhours"
Layout.fillWidth: true
model: ["1", "2", "3", "4", "5", "6", "7", "8"]
visible: radio.children[1].checked
}
Label {
Layout.alignment: Qt.AlignRight
text: qsTr("Briefanrede")
}
TextField {
id: briefAnrede
property string name: "formofaddress"
Layout.columnSpan: 3
Layout.fillWidth: true
placeholderTextColor: "red"
onTextChanged: checkFields()
}
Item {
Layout.columnSpan: 4 Layout.columnSpan: 4
} Layout.fillHeight: true
function checkPersonalField()
{
if (radio.children[0].checked)
{
return (firstname.text.trim() && lastname.text.trim())
}
else
{
return (firstname.text.trim() && lastname.text.trim() && street.text.trim() && houseno.text.trim()
&& (postcode.editText.trim() || postcode.currentText.trim())
&& (city.editText.trim() || city.currentText.trim())
&& birthday.text.trim() && phonenumber.text.trim()
&& cellphone.text.trim() && email.text.trim() && jobdescription.text.trim()
&& contractstart.text.trim() && contractend.text.trim() && briefAnrede.text.trim())
}
}
function requiredField()
{
var pf = (radio.children[1].checked)?"Pflichtfeld":""
street.placeholderText = pf
phonenumber.placeholderText = pf
cellphone.placeholderText = pf
email.placeholderText = pf
jobdescription.placeholderText = pf
contractstart.placeholderText = pf
contractend.placeholderText = pf
briefAnrede.placeholderText = pf
houseno.placeholderText = pf
} }
} }

View File

@@ -25,6 +25,7 @@ T.Button {
*/ */
property bool isFieldButton: false property bool isFieldButton: false
height: isFieldButton ? parent.height : null height: isFieldButton ? parent.height : null
icon.color: Colors.primaryContrast icon.color: Colors.primaryContrast
icon.height: 21 icon.height: 21

View File

@@ -33,36 +33,16 @@ T.ComboBox {
border.color: Colors.interactive border.color: Colors.interactive
border.width: 1 border.width: 1
color: Colors.mantle color: Colors.mantle
// height: parent.height
radius: Dimensions.radius radius: Dimensions.radius
width: parent.width width: parent.width
} }
// delegate: MenuItem {
// id: menuItem
// required property int index
// required property var model
// highlighted: control.highlightedIndex === index
// hoverEnabled: control.hoverEnabled
// text: model[control.textRole]
// width: control.width
// background: Rectangle {
// color: menuItem.down || menuItem.highlighted ? Colors.primary : "transparent"
// height: menuItem.height
// width: menuItem.width
// }
// }
delegate: ItemDelegate { delegate: ItemDelegate {
required property var model required property var model
required property int index required property int index
width: ListView.view.width width: ListView.view.width
text: model[control.textRole] text: model[control.textRole]
// palette.text: control.palette.text
// palette.highlightedText: control.palette.highlightedText
// font.weight: control.currentIndex === index ? Font.DemiBold : Font.Normal
highlighted: control.highlightedIndex === index highlighted: control.highlightedIndex === index
hoverEnabled: control.hoverEnabled hoverEnabled: control.hoverEnabled
} }
@@ -125,8 +105,4 @@ T.ComboBox {
} }
} }
} }
Component.onCompleted:
{
console.log(control.implicitContentHeight)
}
} }

View File

@@ -0,0 +1,5 @@
import QtQuick
RegularExpressionValidator {
regularExpression: /([\+!#$%&\*\\/\=?\^_`\.{|}\~\-\_0-9A-Za-z]{1,185})@([0-9A-Za-z\.\-\_]{1,64})\.([a-zA-z]{2,5})/
}

View File

@@ -0,0 +1,5 @@
import QtQuick
RegularExpressionValidator {
regularExpression: /([+0-9])([0-9\s]{1,17})/
}

View File

@@ -0,0 +1,5 @@
import QtQuick
RegularExpressionValidator {
regularExpression: /([^$][0-9]{1,4})/
}

View File

@@ -5,10 +5,13 @@ singleton Typography Typography.qml
BarButton BarButton.qml BarButton BarButton.qml
Button Button.qml Button Button.qml
ComboBox ComboBox.qml ComboBox ComboBox.qml
EmailAddressValidator EmailAddressValidator.qml
Field Field.qml Field Field.qml
H1 H1.qml H1 H1.qml
H2 H2.qml H2 H2.qml
Label Label.qml Label Label.qml
PhoneNumberValidator PhoneNumberValidator.qml
PostcodeValidator PostcodeValidator.qml
QuickFilter QuickFilter.qml QuickFilter QuickFilter.qml
SearchBar SearchBar.qml SearchBar SearchBar.qml
TextField TextField.qml TextField TextField.qml

3
images/CheckCircle.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-slot="icon">
<path clip-rule="evenodd" fill-rule="evenodd" d="M2.25 12c0-5.385 4.365-9.75 9.75-9.75s9.75 4.365 9.75 9.75-4.365 9.75-9.75 9.75S2.25 17.385 2.25 12Zm13.36-1.814a.75.75 0 1 0-1.22-.872l-3.236 4.53L9.53 12.22a.75.75 0 0 0-1.06 1.06l2.25 2.25a.75.75 0 0 0 1.14-.094l3.75-5.25Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 409 B

3
images/Phone.svg Normal file
View File

@@ -0,0 +1,3 @@
<svg fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" data-slot="icon">
<path clip-rule="evenodd" fill-rule="evenodd" d="M1.5 4.5a3 3 0 0 1 3-3h1.372c.86 0 1.61.586 1.819 1.42l1.105 4.423a1.875 1.875 0 0 1-.694 1.955l-1.293.97c-.135.101-.164.249-.126.352a11.285 11.285 0 0 0 6.697 6.697c.103.038.25.009.352-.126l.97-1.293a1.875 1.875 0 0 1 1.955-.694l4.423 1.105c.834.209 1.42.959 1.42 1.82V19.5a3 3 0 0 1-3 3h-2.25C8.552 22.5 1.5 15.448 1.5 6.75V4.5Z"></path>
</svg>

After

Width:  |  Height:  |  Size: 514 B

View File

@@ -5,10 +5,13 @@
<file>images/ArrowRightEndOnRectangle.svg</file> <file>images/ArrowRightEndOnRectangle.svg</file>
<file>images/Bars3.svg</file> <file>images/Bars3.svg</file>
<file>images/BuildingOffice2-Outline.svg</file> <file>images/BuildingOffice2-Outline.svg</file>
<file>images/CheckCircle.svg</file>
<file>images/ChevronDown.svg</file> <file>images/ChevronDown.svg</file>
<file>images/Funnel.svg</file> <file>images/Funnel.svg</file>
<file>images/Identification-Outline.svg</file> <file>images/Identification-Outline.svg</file>
<file>images/MagnifyingGlass.svg</file> <file>images/MagnifyingGlass.svg</file>
<file>images/Newspaper-Outline.svg</file>
<file>images/Phone.svg</file>
<file>images/PlusCircle.svg</file> <file>images/PlusCircle.svg</file>
<file>images/RectangleStack-Outline.svg</file> <file>images/RectangleStack-Outline.svg</file>
<file>images/Square3Stack3D-Outline.svg</file> <file>images/Square3Stack3D-Outline.svg</file>

View File

@@ -52,10 +52,12 @@
<file>TeroStyle/Colors.qml</file> <file>TeroStyle/Colors.qml</file>
<file>TeroStyle/ComboBox.qml</file> <file>TeroStyle/ComboBox.qml</file>
<file>TeroStyle/Dimensions.qml</file> <file>TeroStyle/Dimensions.qml</file>
<file>TeroStyle/EmailAddressValidator.qml</file>
<file>TeroStyle/Field.qml</file> <file>TeroStyle/Field.qml</file>
<file>TeroStyle/H1.qml</file> <file>TeroStyle/H1.qml</file>
<file>TeroStyle/H2.qml</file> <file>TeroStyle/H2.qml</file>
<file>TeroStyle/Label.qml</file> <file>TeroStyle/Label.qml</file>
<file>TeroStyle/PhoneNumberValidator.qml</file>
<file>TeroStyle/qmldir</file> <file>TeroStyle/qmldir</file>
<file>TeroStyle/QuickFilter.qml</file> <file>TeroStyle/QuickFilter.qml</file>
<file>TeroStyle/SearchBar.qml</file> <file>TeroStyle/SearchBar.qml</file>
@@ -64,5 +66,6 @@
<file>Gui/AddOffer.qml</file> <file>Gui/AddOffer.qml</file>
<file>Gui/AddNewOffer.qml</file> <file>Gui/AddNewOffer.qml</file>
</qresource> </qresource>
<qresource prefix="/Common"/>
<qresource prefix="/TeroStyle"/> <qresource prefix="/TeroStyle"/>
</RCC> </RCC>