Skip to content

Search ​

Overview ​

Search provides an input that allows users to find a term or terms by typing their query. Results can be returned in a number of ways both from local and remote sources as well as pre-fetched lists. Search fields ideally should be used where there are more than 10 options for a user to choose from. Unlike the select component, search does not use native elements.

By default our search field comes paired with the popover component. For most cases this provides the most useful pattern for search in our platform.

When to use
  • Use search to find something specific or explore what's available via relevant keywords.
  • Use search to help users find relevant content in large data sets quickly.
  • Use search when there are 10–10,000+ items available.
  • Consider using live-filtering search for 10–30 items.
When not to use
  • For a small number of options with a single term chosen, use a Select instead of search.
  • For a small number of options with multiple terms chosen, use a group of checkboxes instead.
  • Avoid using search when you're unlikely to show reliable results. For example, if most search queries return zero results, you might instead display top choices without search.

Interactive demo ​

The demo below allows you to preview the component. You can play with its props, variations, configuration options and dive into its events and even see them trigger in the event log tab.

MedKit Search
One
Error
string
Errors to display for the input.
Error Hidden
boolean
false
Only display the red border but not the error text.
Help Text
string
The help text to display for the input.
Is Loading
boolean
false
If the results are currently loading
Label
string
Required
The label to be shown above the input.
Label Hidden
boolean
false
Only display the label for screen readers.
Min Search Length
number
3
The minimum number of characters required to show search results
Multiple
boolean
false
If multiple values can be selected
Options
Array<SearchOption>
Required
The list of options that the user can select from.
Placeholder
string
The placeholder for the unselected value.
Required
boolean
false
If the field is required

Single Value ​

Default state ​

At rest this is what the search field will look like. Empty and with the placeholder visible.

vue
<template>
  <MedKitSearch v-model="selectedValue" label="Search" :options="options" />
</template>

Selected option ​

Once an option is selected it is displayed in a chip to make it clear that this is the selected value. The user can then clear the value by removing the currently selected option (clicking the x in the chip).

Knees
vue
<template>
  <MedKitSearch v-model="selectedValue" label="Search" :options="options" />
</template>

Multiple Values ​

Default state ​

Just as in the single value, this shows the component at rest.

Selected options ​

An example of multiple items selected as chips. Note how that on focus the user is always taken to the end of the currently selected elements.

Knees
Toes

As can be seen below search expands to fit all the options added by the user.

Knees
Toes
Fingers
Ears
Nose
Hair
Teeth
Eyes
Feet
Hand
vue
<template>
  <MedKitSearch v-model="selectedValues" label="Search" :options="options" multiple />
</template>

Minimum Search Length ​

By default the minimum search length is 3 characters. This is to avoid initially triggering a query to broad too early. However when conducting a local search where all the values are known, make sure to set the min-search-length to 0.

vue
<template>
  <MedKitSearch v-model="selectedValue" label="Search" :options="options" :min-search-length="0" />
</template>

Loading State ​

It's possible to pass the is-loading prop to hide results while a request is being made. The style of this is defined by the component. Click inside the search field to see it in action.

vue
<template>
  <MedKitSearch
    v-model="selectedValue"
    label="Search"
    :options="options"
    :is-loading="isLoading"
    :minSearchLength="0"
  />
</template>

No Results ​

When using this with a dynamic list or query if the list of options are empty then 'No results' will be displayed. Click inside the search field to see it in action.

vue
<template>
  <MedKitSearch v-model="selectedValue" label="Search" :options="options" />
</template>

Help Text ​

An error message returned from validation
vue
<template>
  <MedKitSearch label="Search" v-model="selectedValue" :options="options" :helpText="helpText" />
</template>

Error state ​

An error message returned from validation
vue
<template>
  <MedKitSearch v-model="selectedValue" label="Search" :options="options" :error="error" />
</template>

Figma Library ​

You can find the component in our MedKit Figma library.