Skip to content

Commit b30adf0

Browse files
committed
perf: Improve performance for Form components + add @change event
1 parent 5eccc2f commit b30adf0

32 files changed

+287
-170
lines changed

dev/components/components/pagination.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
then hit <ENTER>
1414
</p>
1515

16-
<q-pagination v-model="page" :max="17"></q-pagination>
16+
<q-pagination @change="onChange" v-model="page" :max="17"></q-pagination>
1717

1818
<p class="caption">Disabled State</p>
1919
<q-pagination v-model="page" :max="17" disable></q-pagination>
@@ -27,6 +27,11 @@ export default {
2727
return {
2828
page: 1
2929
}
30+
},
31+
methods: {
32+
onChange (val) {
33+
console.log('@change', val)
34+
}
3035
}
3136
}
3237
</script>

dev/components/form/autocomplete.vue

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
</p>
88

99

10-
<q-search v-model="terms" placeholder="Start typing a country name">
10+
<q-search @change="onChange" v-model="terms" placeholder="Start typing a country name">
1111
<q-autocomplete @search="search" @selected="selected" />
1212
</q-search>
1313

@@ -108,6 +108,9 @@ export default {
108108
},
109109
selected (item) {
110110
Toast.create(`Selected suggestion "${item.label}"`)
111+
},
112+
onChange (val) {
113+
console.log('@change', val)
111114
}
112115
}
113116
}

dev/components/form/checkbox.vue

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<q-checkbox v-model="checked" checked-icon="visibility" unchecked-icon="visibility_off" style="margin-left: 50px" />
1111

1212
<br><br>
13-
<q-checkbox v-model="checked" />
13+
<q-checkbox @change="onChange" v-model="checked" />
1414
<br><br>
1515
<q-checkbox v-model="checked" label="Label" />
1616
<br><br>
@@ -35,11 +35,11 @@
3535
Model <span class="right-detail"><em>{{selection}}</em></span>
3636
</div>
3737

38-
<q-checkbox v-model="selection" val="one" label="One" />
38+
<q-checkbox @change="onChange" v-model="selection" val="one" label="One" />
3939
<br><br>
40-
<q-checkbox v-model="selection" val="two" label="Two" />
40+
<q-checkbox @change="onChange" v-model="selection" val="two" label="Two" />
4141
<br><br>
42-
<q-checkbox v-model="selection" val="three" label="Three" />
42+
<q-checkbox @change="onChange" v-model="selection" val="three" label="Three" />
4343

4444
<p class="caption">Disabled State</p>
4545
<q-checkbox v-model="checked" disable label="Disabled Checkbox" />
@@ -55,6 +55,7 @@
5555
type="checkbox"
5656
color="secondary"
5757
v-model="group"
58+
@change="onChange"
5859
:options="[
5960
{ label: 'Option 2 Option 2 Option 2 Option 2 Option 2 Option 2 Option 2 ', value: 'op2' },
6061
{ label: 'Option 3', value: 'op3' },
@@ -72,6 +73,8 @@
7273
<q-option-group
7374
type="checkbox"
7475
v-model="group"
76+
@focus="onFocus"
77+
@blur="onBlur"
7578
:options="[
7679
{ label: 'Option 2 Option 2 Option 2 Option 2 Option 2 Option 2 Option 2 ', value: 'op2' },
7780
{ label: 'Option 3', value: 'op3' },
@@ -110,6 +113,14 @@
110113
</q-item>
111114
</q-list>
112115
</div>
116+
<input type="checkbox" id="jack" value="Jack" v-model="checkedNames">
117+
<label for="jack">Jack</label>
118+
<input type="checkbox" id="john" value="John" v-model="checkedNames">
119+
<label for="john">John</label>
120+
<input type="checkbox" id="mike" value="Mike" v-model="checkedNames" style="width:100px;height:100px;">
121+
<label for="mike">Mike</label>
122+
<br>
123+
<span>Checked names: {{ checkedNames }}</span>
113124
</div>
114125
</template>
115126

@@ -119,7 +130,19 @@ export default {
119130
return {
120131
checked: true,
121132
group: ['op2'],
122-
selection: ['one', 'two', 'three']
133+
selection: ['one', 'two', 'three'],
134+
checkedNames: []
135+
}
136+
},
137+
methods: {
138+
onChange (val) {
139+
console.log('@change', val)
140+
},
141+
onFocus () {
142+
console.log('focused')
143+
},
144+
onBlur () {
145+
console.log('blur')
123146
}
124147
}
125148
}

dev/components/form/chips-input.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<span class="mobile-only">Tap</span>
1313
on Chips Textbox below to start adding Chips.
1414
</p>
15-
<q-chips-input color="secondary" float-label="Float Label" v-model="model" placeholder="Some placeholder" />
15+
<q-chips-input @change="onChange" color="secondary" float-label="Float Label" v-model="model" placeholder="Some placeholder" />
1616
<q-chips-input inverted color="dark" frame-color="amber" float-label="Float Label" v-model="model" placeholder="Some placeholder" />
1717

1818
<div class="bg-grey-9" style="padding: 15px">
@@ -55,6 +55,11 @@ export default {
5555
return {
5656
model: ['Joe']
5757
}
58+
},
59+
methods: {
60+
onChange (val) {
61+
console.log('@change', val)
62+
}
5863
}
5964
}
6065
</script>

dev/components/form/datetime-range.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
<p class="caption">
3030
Datetime Range
3131
</p>
32-
<q-datetime-range type="datetime" v-model="first.range" :min="first.min" :max="first.max" />
32+
<q-datetime-range @change="onChange" type="datetime" v-model="first.range" :min="first.min" :max="first.max" />
3333

3434
<p class="caption">
3535
Datetime Range with Default Selection
@@ -106,6 +106,11 @@ export default {
106106
}
107107
}
108108
}
109+
},
110+
methods: {
111+
onChange (val) {
112+
console.log('@change', val.from, val.to)
113+
}
109114
}
110115
}
111116
</script>

dev/components/form/datetime.vue

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
<q-datetime v-model="model" type="time" format24h />
6262

6363
<p class="caption">Date & Time</p>
64-
<q-datetime v-model="model" type="datetime" />
64+
<q-datetime @change="onChange" v-model="model" type="datetime" />
6565

6666
<p class="caption">Default Selection</p>
6767
<q-datetime v-model="model" :default-selection="defaultSelection" type="datetime" />
@@ -100,7 +100,7 @@
100100
<q-datetime class="no-margin" v-model="model" type="date" />
101101
</q-item-main>
102102
</q-item>
103-
<q-list-delimiter />
103+
<q-item-delimiter />
104104
<q-list-header>Date & Time</q-list-header>
105105
<q-item>
106106
<q-item-side icon="notifications" />
@@ -149,7 +149,7 @@
149149
<q-inline-datetime v-model="model" type="time" format24h />
150150

151151
<p class="caption">Date & Time</p>
152-
<q-inline-datetime color="secondary" v-model="model" type="datetime" />
152+
<q-inline-datetime @change="onChange" color="secondary" v-model="model" type="datetime" />
153153

154154
<p class="caption">Date - Monday as First</p>
155155
<q-inline-datetime v-model="model" monday-first type="date" />
@@ -182,6 +182,11 @@ export default {
182182
min: date.subtractFromDate(day, {days: 5}),
183183
max: date.addToDate(day, {days: 4, month: 1, minutes: 10})
184184
}
185+
},
186+
methods: {
187+
onChange (val) {
188+
console.log('@change', val)
189+
}
185190
}
186191
}
187192
</script>

dev/components/form/dialog-select.vue

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@
22
<div>
33
<div class="layout-padding">
44
<p class="caption">With Radios</p>
5-
<q-dialog-select type="radio" v-model="select" :options="selectOptions" ok-label="Pick" cancel-label="Neah" title="Radios"></q-dialog-select>
5+
<q-dialog-select @change="onChange" type="radio" v-model="select" :options="selectOptions" ok-label="Pick" cancel-label="Neah" title="Radios"></q-dialog-select>
66
<p class="caption">With Checkboxes</p>
7-
<q-dialog-select type="checkbox" v-model="multipleSelect" :options="selectOptions" ok-label="Pick" cancel-label="Neah" title="Checkboxes"></q-dialog-select>
7+
<q-dialog-select @change="onChange" type="checkbox" v-model="multipleSelect" :options="selectOptions" ok-label="Pick" cancel-label="Neah" title="Checkboxes"></q-dialog-select>
88
<p class="caption">With Toggles</p>
99
<q-dialog-select type="toggle" v-model="multipleSelect" :options="selectOptions" ok-label="Pick" cancel-label="Neah" title="Toggles"></q-dialog-select>
1010

@@ -18,7 +18,7 @@
1818
<q-dialog-select stack-label="Stack Label" type="radio" v-model="select" :options="selectOptions" static-label="Company"></q-dialog-select>
1919

2020
<p class="caption">With Chips</p>
21-
<q-dialog-select chips float-label="Float Label" type="checkbox" v-model="multipleSelect" :options="selectOptions" placeholder="Pick Company"></q-dialog-select>
21+
<q-dialog-select @change="onChange" chips float-label="Float Label" type="checkbox" v-model="multipleSelect" :options="selectOptions" placeholder="Pick Company"></q-dialog-select>
2222

2323
<p class="caption">Disabled State</p>
2424
<q-dialog-select disable type="radio" v-model="select" :options="selectOptions"></q-dialog-select>
@@ -93,6 +93,11 @@ export default {
9393
}
9494
]
9595
}
96+
},
97+
methods: {
98+
onChange (val) {
99+
console.log('@change', val)
100+
}
96101
}
97102
}
98103
</script>

dev/components/form/double-range.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
Model <span class="right-detail"><em>{{standalone.min}} to {{standalone.max}}</em> &nbsp;&nbsp;(0 to 50)</span>
99
</span>
1010
</p>
11-
<q-double-range v-model="standalone" :min="0" :max="50"></q-double-range>
11+
<q-double-range @change="onChange" v-model="standalone" :min="0" :max="50"></q-double-range>
1212
<q-double-range v-model="standalone" :min="0" :max="50" square></q-double-range>
1313

1414
<p class="caption">
@@ -163,6 +163,11 @@ export default {
163163
max: 35
164164
}
165165
}
166+
},
167+
methods: {
168+
onChange (val) {
169+
console.log('@change', val.min, val.max)
170+
}
166171
}
167172
}
168173
</script>

dev/components/form/input.vue

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<div>
33
<div class="layout-padding input-example" style="max-width: 600px;">
4-
<q-input v-model="text" />
4+
<q-input @change="onChange" v-model="text" />
55
<q-input v-model="text" stack-label="Stack Label" />
66
<q-input v-model="text" float-label="Float Label" placeholder="Gigi" />
77

@@ -151,6 +151,11 @@ export default {
151151
length () {
152152
return this.text.length
153153
}
154+
},
155+
methods: {
156+
onChange (val) {
157+
console.log('@change', val)
158+
}
154159
}
155160
}
156161
</script>

dev/components/form/knob.vue

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
v-model="model"
1111
:min="min"
1212
:max="max"
13+
@change="onChange"
1314
></q-knob>
1415
<q-knob
1516
class="text-primary"
@@ -111,6 +112,11 @@ export default {
111112
min: 0,
112113
max: 50
113114
}
115+
},
116+
methods: {
117+
onChange (val) {
118+
console.log('@change', val)
119+
}
114120
}
115121
}
116122
</script>

0 commit comments

Comments
 (0)