/ widgets / StyledTextField.qml
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  }