Skip to content

Commit 7e7c41c

Browse files
committed
feat: Enhancements to QField and Knob
1 parent e116c50 commit 7e7c41c

File tree

16 files changed

+126
-37
lines changed

16 files changed

+126
-37
lines changed

dev/components/form/field.vue

Lines changed: 38 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,6 +369,39 @@
369369
<q-input suffix="#" prefix="@" v-model="model" :count="10" />
370370
</q-field>
371371

372+
<q-field
373+
label="Knob"
374+
helper="Touch to change"
375+
icon="cake"
376+
:error="error"
377+
>
378+
<q-knob
379+
v-model="knob"
380+
:min="knobMin"
381+
:max="knobMax"
382+
>
383+
<q-icon class="on-left" name="volume_up" /> {{knob}}
384+
</q-knob>
385+
</q-field>
386+
387+
<div class="bg-grey-9" style="padding: 10px">
388+
<q-field
389+
label="Knob"
390+
helper="Touch to change"
391+
dark
392+
icon="cake"
393+
:error="error"
394+
>
395+
<q-knob
396+
v-model="knob"
397+
:min="knobMin"
398+
:max="knobMax"
399+
>
400+
<q-icon class="on-left" name="volume_up" /> {{knob}}
401+
</q-knob>
402+
</q-field>
403+
</div>
404+
372405
<q-field
373406
icon="cloud"
374407
helper="Helper Helper Helper Helper Helper Helper Helper Helper Helper"
@@ -435,7 +468,7 @@
435468
>
436469
<q-input v-model="model" float-label="Floating $ Label" suffix="#" prefix="@" />
437470
</q-field>
438-
XXX
471+
439472
<q-field
440473
helper="Helper"
441474
:label-width="2"
@@ -504,7 +537,10 @@ export default {
504537
modelX: 'sdflkjsbnfkjdabfa dfasldgfa gfg lasdfl gasdf asdfhl asdgfgasdlf hlahf lsadf asdhlf hasdhadlfasdhfadf hasdg lfasdg lfgasdfasdflasdhfgasdljfljasdh fsdkjfgasdf gjasdgfjasdljgasdjk gjlasdfa sdfgasdljf gljasdfgljasd',
505538
modelY: '',
506539
numberModel: 5555,
507-
nullModel: null
540+
nullModel: null,
541+
knob: 10,
542+
knobMin: 0,
543+
knobMax: 30
508544
}
509545
}
510546
}

dev/components/form/input.vue

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,19 @@
5454

5555
<p class="caption">Along Fields</p>
5656

57+
<q-field
58+
icon="wifi"
59+
label="Some Label"
60+
:count="10"
61+
helper="Some helper"
62+
error-label="Some error"
63+
>
64+
<q-input
65+
v-model="text"
66+
:error="error"
67+
/>
68+
</q-field>
69+
5770
<q-field
5871
icon="wifi"
5972
label="Some Label"

dev/components/form/knob.vue

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
<q-knob
4444
v-model="model"
4545
style="font-size: 3rem"
46-
color="#26a69a"
46+
color="amber-7"
4747
:min="min"
4848
:max="max"
4949
:step="5"
@@ -53,8 +53,8 @@
5353
v-model="model"
5454
size="120px"
5555
style="font-size: 1.5rem"
56-
color="rgba(0, 0, 0, .8)"
57-
track-color="yellow"
56+
color="secondary"
57+
track-color="yellow-3"
5858
line-width="5px"
5959
:min="min"
6060
:max="max"
@@ -69,6 +69,7 @@
6969
v-model="model"
7070
:min="min"
7171
:max="max"
72+
color="primary"
7273
readonly
7374
>
7475
<q-icon class="on-left" name="volume_up" /> {{model}}

dev/components/form/range.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363

6464
<p class="caption">Error State</p>
6565
<q-range error v-model="standalone" :min="0" :max="50"></q-range>
66-
<q-range error v-model="standalone" :min="0" :max="50" label-always></q-range>
66+
<q-range error color="amber" v-model="standalone" :min="0" :max="50" label-always></q-range>
6767

6868
<p class="caption">Coloring</p>
6969
<q-range color="secondary" v-model="standalone" :min="0" :max="50" label></q-range>

src/components/field/QField.vue

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,12 @@
2222
</div>
2323
</div>
2424

25-
<div class="col-xs-12 col-sm">
25+
<div class="q-field-content col-xs-12 col-sm" :class="{'q-field-no-input': hasNoInput}">
2626
<slot></slot>
27-
<div v-if="hasBottom" class="q-field-bottom row no-wrap">
27+
<div
28+
v-if="hasBottom"
29+
class="q-field-bottom row no-wrap"
30+
>
2831
<div v-if="hasError && errorLabel" class="q-field-error col" v-html="errorLabel"></div>
2932
<div v-else-if="helper" class="q-field-helper col" v-html="helper"></div>
3033
<div v-else class="col"></div>
@@ -92,6 +95,9 @@ export default {
9295
insetIcon () {
9396
return ['icon', 'full'].includes(this.inset)
9497
},
98+
hasNoInput () {
99+
return !this.input.$options
100+
},
95101
counter () {
96102
if (this.count) {
97103
const length = this.input.length || '0'

src/components/field/field.ios.styl

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,32 @@ $field-label-color ?= rgba(0, 0, 0, .54)
3030
.q-field-bottom
3131
font-size 12px
3232
padding-top 8px
33-
.q-field-error
34-
color $has-error
35-
.q-field-helper
3633
color rgba(0, 0, 0, .46)
3734
.q-field-counter
3835
color $field-label-color
3936
padding-left 8px
4037

38+
.q-field-no-input
39+
padding-top 8px
40+
.q-field-bottom
41+
margin-top 8px
42+
border-top 1px solid rgba(0, 0, 0, .12)
43+
4144
.q-field-dark
42-
.q-field-label, .q-field-icon, .q-field-helper, .q-field-counter
45+
.q-field-label, .q-field-icon, .q-field-counter, .q-field-bottom
4346
color rgba(255, 255, 255, 60%)
47+
.q-field-no-input .q-field-bottom
48+
border-top 1px solid rgba(255, 255, 255, .7)
49+
4450
.q-field-with-error
45-
.q-field-icon, .q-field-label
51+
.q-field-icon, .q-field-label, .q-field-bottom
4652
color $negative
53+
.q-field-no-input .q-field-bottom
54+
border-top 1px solid $negative
4755

4856
@media (min-width $breakpoint-sm-min)
4957
.q-field-floating
5058
.q-field-icon, .q-field-label
51-
margin-top 18px
59+
margin-top 12px
60+
.q-field-no-input
61+
padding-top 0

src/components/field/field.mat.styl

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,22 +30,32 @@ $field-label-color ?= rgba(0, 0, 0, .54)
3030
.q-field-bottom
3131
font-size 12px
3232
padding-top 8px
33-
.q-field-error
34-
color $has-error
35-
.q-field-helper
3633
color rgba(0, 0, 0, .46)
3734
.q-field-counter
3835
color $field-label-color
3936
padding-left 8px
4037

38+
.q-field-no-input
39+
padding-top 8px
40+
.q-field-bottom
41+
margin-top 8px
42+
border-top 1px solid rgba(0, 0, 0, .12)
43+
4144
.q-field-dark
42-
.q-field-label, .q-field-icon, .q-field-helper, .q-field-counter
45+
.q-field-label, .q-field-icon, .q-field-counter, .q-field-bottom
4346
color rgba(255, 255, 255, 60%)
47+
.q-field-no-input .q-field-bottom
48+
border-top 1px solid rgba(255, 255, 255, .7)
49+
4450
.q-field-with-error
45-
.q-field-icon, .q-field-label
51+
.q-field-icon, .q-field-label, .q-field-bottom
4652
color $negative
53+
.q-field-no-input .q-field-bottom
54+
border-top 1px solid $negative
4755

4856
@media (min-width $breakpoint-sm-min)
4957
.q-field-floating
5058
.q-field-icon, .q-field-label
51-
margin-top 18px
59+
margin-top 12px
60+
.q-field-no-input
61+
padding-top 0

src/components/input-frame/input-frame.ios.styl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
$input-transition ?= all .45s cubic-bezier(.23, 1, .32, 1)
22

3-
.q-if, .q-if:before, .q-if:after, .q-if-label, .q-if-addon, .q-field-icon, .q-field-label, .q-if-control
3+
.q-if, .q-if:before, .q-if:after, .q-if-label, .q-if-addon, .q-field-icon, .q-field-label, .q-if-control, .q-field-bottom
44
transition $input-transition
55

66
.q-if
@@ -89,9 +89,9 @@ $input-transition ?= all .45s cubic-bezier(.23, 1, .32, 1)
8989

9090
.q-if-dark
9191
&:before, .q-if-label, .q-if-control
92-
color rgba(255, 255, 255, 70%)
92+
color rgba(255, 255, 255, .7)
9393
&:hover:before, .q-if-addon
94-
color rgba(255, 255, 255, 90%)
94+
color rgba(255, 255, 255, .9)
9595

9696
.q-if-focused
9797
&:after
@@ -114,7 +114,7 @@ $input-transition ?= all .45s cubic-bezier(.23, 1, .32, 1)
114114

115115
.q-if-error
116116
&:before, &:after, &:not(.q-if-inverted) .q-if-label, .q-if-addon
117-
color $has-error
117+
color $negative
118118
&:hover:before
119119
color lighten($negative, 26%)
120120

src/components/input-frame/input-frame.mat.styl

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
$input-transition ?= all .45s cubic-bezier(.23, 1, .32, 1)
22

3-
.q-if, .q-if:before, .q-if:after, .q-if-label, .q-if-addon, .q-field-icon, .q-field-label, .q-if-control
3+
.q-if, .q-if:before, .q-if:after, .q-if-label, .q-if-addon, .q-field-icon, .q-field-label, .q-if-control, .q-field-bottom
44
transition $input-transition
55

66
.q-if
@@ -89,9 +89,9 @@ $input-transition ?= all .45s cubic-bezier(.23, 1, .32, 1)
8989

9090
.q-if-dark
9191
&:before, .q-if-label, .q-if-control
92-
color rgba(255, 255, 255, 70%)
92+
color rgba(255, 255, 255, .7)
9393
&:hover:before, .q-if-addon
94-
color rgba(255, 255, 255, 90%)
94+
color rgba(255, 255, 255, .9)
9595

9696
.q-if-focused
9797
&:after
@@ -114,7 +114,7 @@ $input-transition ?= all .45s cubic-bezier(.23, 1, .32, 1)
114114

115115
.q-if-error
116116
&:before, &:after, &:not(.q-if-inverted) .q-if-label, .q-if-addon
117-
color $has-error
117+
color $negative
118118
&:hover:before
119119
color lighten($negative, 26%)
120120

src/components/knob/QKnob.vue

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
<template>
22
<div
33
class="q-knob non-selectable"
4-
:class="{disabled: disable, 'cursor-pointer': !readonly}"
5-
:style="{width: size, height: size, color: color}"
4+
:class="classes"
5+
:style="{width: size, height: size}"
66
>
77
<div
88
@click="__onInput"
@@ -13,7 +13,8 @@
1313
d="M 50,50 m 0,-47
1414
a 47,47 0 1 1 0,94
1515
a 47,47 0 1 1 0,-94"
16-
:stroke="trackColor"
16+
:class="`text-${trackColor}`"
17+
stroke="currentColor"
1718
:stroke-width="lineWidth"
1819
fill-opacity="0"
1920
></path>
@@ -66,7 +67,7 @@ export default {
6667
color: String,
6768
trackColor: {
6869
type: String,
69-
default: '#ececec'
70+
default: 'grey-3'
7071
},
7172
lineWidth: {
7273
type: String,
@@ -84,6 +85,19 @@ export default {
8485
readonly: Boolean
8586
},
8687
computed: {
88+
classes () {
89+
const cls = []
90+
if (this.disable) {
91+
cls.push('disabled')
92+
}
93+
if (!this.readonly) {
94+
cls.push('cursor-pointer')
95+
}
96+
if (this.color) {
97+
cls.push(`text-${this.color}`)
98+
}
99+
return cls
100+
},
87101
svgStyle () {
88102
return {
89103
'stroke-dasharray': '295.31px, 295.31px',

0 commit comments

Comments
 (0)