StyledTextField.qml
1 pragma ComponentBehavior: Bound 2 3 import "root:/services" 4 import "root:/config" 5 import QtQuick 6 import QtQuick.Controls 7 8 TextField { 9 id: root 10 11 color: Colours.palette.m3onSurface 12 placeholderTextColor: Colours.palette.m3outline 13 font.family: Appearance.font.family.sans 14 font.pointSize: Appearance.font.size.smaller 15 16 cursorDelegate: StyledRect { 17 id: cursor 18 19 property bool disableBlink 20 21 implicitWidth: 2 22 color: Colours.palette.m3primary 23 radius: Appearance.rounding.normal 24 onXChanged: { 25 opacity = 1; 26 disableBlink = true; 27 enableBlink.start(); 28 } 29 30 Timer { 31 id: enableBlink 32 33 interval: 100 34 onTriggered: cursor.disableBlink = false 35 } 36 37 Timer { 38 running: root.cursorVisible && !cursor.disableBlink 39 repeat: true 40 interval: 500 41 onTriggered: parent.opacity = parent.opacity === 1 ? 0 : 1 42 } 43 44 Behavior on opacity { 45 NumberAnimation { 46 duration: Appearance.anim.durations.small 47 easing.type: Easing.BezierSpline 48 easing.bezierCurve: Appearance.anim.curves.standard 49 } 50 } 51 } 52 53 Behavior on color { 54 ColorAnimation { 55 duration: Appearance.anim.durations.normal 56 easing.type: Easing.BezierSpline 57 easing.bezierCurve: Appearance.anim.curves.standard 58 } 59 } 60 61 Behavior on placeholderTextColor { 62 ColorAnimation { 63 duration: Appearance.anim.durations.normal 64 easing.type: Easing.BezierSpline 65 easing.bezierCurve: Appearance.anim.curves.standard 66 } 67 } 68 }