Search (Textfield)
The Search component offers the user an input field with additional features for searching purposes. For autocomplete functionality, also refer to QAutocomplete documentation.
Works well with QField for additional functionality such as a helper, error message placeholder and many others.
Installation
Edit /quasar.conf.js
:framework: {
components: ['QSearch']
}
Basic Usage
<q-search v-model="search" /> |
Vue Properties
Supports v-model
which you should bind to a String or Number (depending on type
property used) in your scope.
Vue Property | Type | Description |
---|---|---|
icon | String | Icon to use. |
no-icon | Boolean | Hide the icon |
type | String | Must be one of the following: text (default), email , tel , number and url . This is important as it determines the keyboard type popping up on mobile devices. |
debounce | Number | Number of ms to debounce input. Default is 300. |
readonly | Boolean | If set to true , textfield is readonly and the user cannot change value. |
clearable | Boolean | If used, the component offers the user an actionable icon to reset the current value to clear-value (which is by default an empty string). The icon appears only when the current value matches clear-value . |
clear-value | String | The value to which to reset the field model to when using clearable . The default value is an empty string. |
A more involved example:<q-search
v-model="searchModel"
:debounce="600"
placeholder="Hotels"
icon="local_hotel"
float-label="What is your hotel?"
/>
Common input field properties:
Property | Type | Description |
---|---|---|
autofocus | Boolean | Focus input field after rendering component. |
placeholder | String | A text to be shown on textfield, mainly to explain what should be entered. |
upper-case | Boolean | Transform input to upper case. |
lower-case | Boolean | Transform input to lower case. |
Also note you can use the native DOM attributes of an input: “name”, “maxlength”, “autocomplete” and so on.
Common input frame properties:
Property | Type | Description |
---|---|---|
prefix | String | A text that should be shown before the textfield. |
suffix | String | A text that should be shown after the textfield. |
float-label | String | A text label that will “float” up above the input field, once the input field gets focus. |
stack-label | String | A text label that will be shown above the input field and is static. |
color | String | One from Quasar Color Palette. |
inverted | Boolean | Inverted mode. Color is applied to background instead. |
inverted-light | Boolean | Inverted mode with a light color. Color is applied to background instead. |
hide-underline | Boolean | Hides the bottom border. |
dark | Boolean | Is QSearch rendered on a dark background? |
align | String | One of ‘left’, ‘center’ or ‘right’ which determines the text align within textfield. |
disable | Boolean | If set to true , textfield is disabled and the user cannot type anything. |
warning | Boolean | If set to true, the input fields colors are changed to show there is a warning. |
error | Boolean | If set to true, the input fields colors are changed to show there is an error. |
before | Array of Objects | Icon buttons on left side of input frame. Read below more details. |
after | Array of Objects | Icon buttons on right side of input frame. Read below more details. |
no-parent-field | Boolean | Avoid trying to connect to a parent QField. |
Icon buttons
This section refers to before
and after
properties which can add additional buttons such as icons to the textfield. Here is the structure of the two properties:{
// required icon
icon: String,
// required function to call when
// icon is clicked/tapped
handler: Function,
// Optional. Show icon button
// if model has a value
content: Boolean,
// Optional. Show icon button
// if textfield is marked with error
error: Boolean
}
Examples:<!--
Show an icon button (with 'warning' as icon)
when there is an error on QInput (through "error" prop)
-->
<q-search
v-model="text"
:after="[
{
icon: 'warning',
error: true,
handler () {
// do something...
}
}
]"
/>
<!--
Show an icon button (with 'attach_file' as icon)
when the model has a non empty value
-->
<q-search
v-model="text"
:after="[
{
icon: 'attach_file',
content: true,
handler () {
// do something...
}
}
]"
/>
Lazy Input
Vue will soon supply the .lazy
modifier for v-model on components too, but until then, you can use the longer equivalent form:<q-search
:value="model"
@change="val => { model = val }"
/>
Vue Methods
Vue Method | Description |
---|---|
clear() | Resets the model to an empty string. |
clearAndFocus() | Resets the model to an empty string and gives the input focus. |
focus() | Focused the textfield. |
blur() | Makes textfield lose focus. |
select() | Selects all textfield text and focuses. |
Vue Events
Vue Event | Description |
---|---|
@input(newVal) | Triggered immediately on model value change. |
@change(newVal) | Triggered on lazy model value change. |
@clear(clearVal) | Triggered when the model is cleared. |
@focus | Triggered on focus. |
@blur | Triggered a blur. |
@keydown | Triggered by keydown event on textfield. |
@keyup | Triggered by keyup event on textfield. |
@click | Triggered by a native click event on textfield. |
@paste | (v0.17.10+) Triggered by a paste event on the textfield. |
Coloring
Use the color
prop with one of the Quasar colors from the Color Palette, like primary
, secondary
, orange-7
, teal-2
:<q-search color="orange" v-model="search" />
Use the inverted
prop, to change the background of the input to the color.<q-search inverted color="orange" v-model="search" />
Error State
Use the error
prop to show there has been an error. This will turn the component color to red.<q-search error v-model="search" />
<q-search :error="hasError" inverted v-model="search" />
Disable
Use the disable
prop to stop user input.<q-search disable v-model="search" color="primary" />
Usage with Layout
If you’d like to set search within a QToolbar on QLayout:<q-layout>
...
<!--
Notice we set a color for QToolbar and
QSearch has "inverted" and color="none" specified.
This makes QSearch use background color set by QToolbar.
-->
<q-toolbar slot="header" color="primary">
<q-search inverted color="none" v-model="search" />
</q-toolbar>
...
</q-layout>
Formatting
It is possible to add formatting to a QSearch in two ways. One is for the basic component. The other is with the QField component. Both methods offer “inverted” coloring.
Additional Vue Properties
Property | Type | Description |
---|---|---|
color | String | The color the QInput should have. The default is primary . |
inverted | Boolean | Set to true , to color field’s background set by the color prop. |
dark | Boolean | Set to true, if the field is on a dark background. It will invert the text color to make it light. |
align | Text | Controls the ‘right’, ‘center’ or ‘left’ alignment of the input. The default is ‘left’. |
Basic Formatting Examples
This will color the field black.<q-search v-model="text" float-label="Colored" color="black" />
This will show an inverted colored input field in amber. Here, the text is automatically inverted to a lighter color.<q-search v-model="text" inverted color="amber" stack-label="Amber Colored Background" />
Alignment
You can also align the input to the right, center or left. The default is left. The example below will show a field for Euro currency input.<!-- Align textfield content to the right -->
<q-search v-model="text" align="right" />
Basic Usage with QField
It is also possible to further enhance a QInput by wrapping it in a QField component.<div class="bg-grey-9" style="width: 500px; padding: 25px">
<q-field
icon="wifi"
label="Some Label"
:count="10"
helper="Some helper"
:error="error"
error-label="Some error"
>
<q-search
v-model="text"
dark
inverted
color="black"
float-label="Textfield"
/>
</q-field>
</div>
The above usage of QField will show the input field within a dark grey background and an inverse white text. Notice the usage of the dark
prop for QInput. This controls the inversion of the text color.
Please refer to the QField documentation for more info about its usage.