LocationElement 
Renders a Google location autocomplete.
Basic Usage 
<LocationElement> component can be used in a <Vueform> component:
<template>
  <Vueform>
    <LocationElement name="location" />
  </Vueform>
</template>Configuration options can be passed over as regular component props. Check out Options section for available configuration options.
Prerequisites 
To use this component, fist you must register include Google Places API.
Options 
Find below the list of options that can use to configure LocationElement component. Options can be passed to the component via props in inline templates, or in the element's object when using schema.
addons 
- Type: 
object - Default: 
{} - Localizable: 
true 
<LocationElement :addons="{ before: { template: `<app-icon :icon="['fas', 'map-marker-alt']" />` } }" ... />
<LocationElement :addons="{ after: { template: `<app-icon :icon="['fas', 'map-marker-alt']" />` } }" ... />Adds an addon before or after the input field. Can be defined in an object with before and after keys. The value can either be a string or a Vue component object with a render function.
Note: Can also be defined via
#addon-before&#addon-afterslots.
provider 
- Type: 
string - Default: 
google 
<LocationElement provider="google" ... />Sets the provider that should be used by the location field. Possible values are 'google'.
google 
When using 'google' as a provider you need to include their Places Library:
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key={YOUR_KEY}&libraries=places&callback=initMap"></script>Replace
YOUR_KEYwith your API key.
If you are using Google Places via npm with a third party library you have to make it available in window:
window.google = // The Google librarydisplayKey 
- Type: 
string - Default: 
formatted_address 
<LocationElement display-key="full_address" ... />The name of the property in value object that stores the location that should be displayed in the input field.
extendOptions 
- Type: 
object - Default: 
{} 
<LocationElement :extend-options="{ ... }" ... />Additional options for Google Places Library constructor.
// Google
new window.google.maps.places.Autocomplete(container, {
  fields: ['geometry', 'formatted_address', 'address_components'],
  ...options
});name 
- Type: 
string|number - Default: 
undefined - Required: 
true 
<LocationElement name="element" ... />Sets the element's name and the name attribute of the input field.
id 
- Type: 
string - Default: 
null 
<LocationElement id="field-id" ... />Sets the id attribute of the input field.
readonly 
- Type: 
boolean|function|array|object - Default: 
false 
<LocationElement :readonly="true" ... />
<LocationElement :readonly="prop" ... /> <!-- computed / data (ref) prop -->
<LocationElement :readonly="[['text', 'value']]" ... /> <!-- conditional -->
<LocationElement :readonly="(el$, form$) => { return /* boolean */ }" ... />Sets the readonly attribute of the input field.
If can be a boolean value.
It can be a computed / data (ref) prop.
It can be an array of conditions. When all conditions are met the element will become readonly.
It can be a function that receives the el$ element instance and form$ form instance params and expected to return a boolean.
disabled 
- Type: 
boolean|function|array|object - Default: 
false 
<LocationElement :disabled="true" ... />
<LocationElement :disabled="prop" ... /> <!-- computed / data (ref) prop -->
<LocationElement :disabled="[['text', 'value']]" ... /> <!-- conditional -->
<LocationElement :disabled="(el$, form$) => { return /* boolean */ }" ... />Disables the input field.
If can be a boolean value.
It can be a computed / data (ref) prop.
It can be an array of conditions. When all conditions are met the element will become disabled.
It can be a function that receives the el$ element instance and form$ form instance params and expected to return a boolean.
attrs 
- Type: 
object - Default: 
{} 
<LocationElement :attrs="{ autofocus: true }" ... />Assigns HTML attributes to the container / input field.
label 
- Type: 
string|object|function - Default: 
null - Localizable: 
true 
Sets a label for the element. Can be defined as a string, a Vue component object with a render function or as a function that receives el$ as its first a param.
Can also be defined via
#labelslot.
placeholder 
- Type: 
string|object - Default: 
null - Localizable: 
true 
<LocationElement placeholder="Placeholder" ... />Sets the placeholder attribute of the input field.
The value of placeholder is automatically set as floating if that's not defined. This behavior can be disabled on form level with floatPlaceholders: false or globally in vueform.config.js.
floating 
- Type: 
string|boolean|object - Default: 
null - Localizable: 
true 
<LocationElement floating="Location" ... />Renders a floating label above the element if that has value.
If floatPlaceholders is enabled it can be disabled for this element by using :floating="false".
info 
- Type: 
string|object - Default: 
null - Localizable: 
true 
<LocationElement label="Info" info="Info" ... />Renders an ElementInfo component next to the element's label. By default the icon shows the value of info when hovered, which can contain plain text or HTML. The element needs to have a label defined in order for info to be rendered.
Can be also defined via
#infoslot.
infoPosition 
- Type: 
string - Default: 
right 
<LocationElement label="Top" info="Top" info-position="top" ... />
<LocationElement label="Right" info="Right" info-position="right" ... />
<LocationElement label="Left" info="Left" info-position="left" ... />
<LocationElement label="Bottom" info="Bottom" info-position="bottom" ... />Sets the position of the info tooltip.
Can be also defined via
#infoslot.
description 
- Type: 
string|object - Default: 
null - Localizable: 
true 
<LocationElement description="Lorem ipsum dolor sit amet" ... />Renders the contents of description prop in the ElementDescription component below the input field. It can contain plain text or HTML.
Can be also defined via
#descriptionslot.
before 
- Type: 
object|string|number - Default: 
null - Localizable: 
true 
<LocationElement before="Before" ... />Renders the contents of before in a ElementText component before the input field. It can contain plain text or HTML.
Can be also defined via
#beforeslot.
between 
- Type: 
object|string|number - Default: 
null - Localizable: 
true 
<LocationElement description="Description" between="Between" ... />Renders the contents of between in a ElementText component between the input field and the description. It can contain plain text or HTML.
Can be also defined via
#betweenslot.
after 
- Type: 
object|string|number - Default: 
null - Localizable: 
true 
<LocationElement description="Description" rules="required" after="After" ... />Renders the contents of after in a ElementText component after the description and error. It can contain plain text or HTML.
Can be also defined via
#afterslot.
default 
- Type: 
object - Default: 
{
"country": null,
"country_code": null,
"state": null,
"state_code": null,
"city": null,
"zip": null,
"address": null,
"formatted_address": null,
"lat": null,
"lng": null
} 
<LocationElement :default="{
  country: 'United States',
  country_code: 'US',
  state: 'California',
  state_code: 'CA',
  city: 'Mountain View',
  zip: '94043',
  address: 'Amphitheatre Parkway 1600',
  formatted_address: '1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA',
  lat: 37.4220656,
  lng: -122.0840897
}" ... />Sets the default value for the input field. The formatted_address contains the address displayed to the user. The formatted_address key can be changed with displayKey option.
formatData 
- Type: 
function - Default: 
null 
<LocationElement :format-data="(n, v) => ({[n]: /* transformed value */ })" ... />Formats the element's requestData.
The first param is the element's name, the second is the value. The return value should be an object, which only contains one item with the element's name as key and the transformed value as value.
formatLoad 
- Type: 
function - Default: 
null 
<LocationElement :format-load="(v) => /* transformed value */" ... />Formats the data being loaded to the element when using load(data, format: true). It receives the value being loaded to the element as its first param and should return the formatted value of the element.
submit 
- Type: 
boolean - Default: 
true 
<LocationElement :submit="false" ... />If set to false the element's data will not be included in requestData and will not be submitted.
rules 
- Type: 
array|string|object - Default: 
null 
<LocationElement rules="required" ... />
<LocationElement :rules="['required']" ... />The validation rules to be applied for the element.
The list of rules can be defined as a string separated by | or as an array, where each item should be a single validation rule.
fieldName 
- Type: 
string|object - Default: 
name|label 
<LocationElement field-name="Field name" rules="required" ... />Sets the name of the field in validation rule messages.
debounce 
- Type: 
number - Default: 
null 
<LocationElement floating="Without debounce" rules="required" ... />
<LocationElement floating="With debounce" :debounce="500" rules="required" ... />The milliseconds to wait before the validation triggers after the user changed the value (unless the value is empty). Applies to each validation rule.
If you only want debounce for a specific rule, you can use:
rules="required|email:debounce=500"
messages 
- Type: 
object - Default: 
{} 
<LocationElement rules="required" :messages="{ required: 'Please fill in' }" ... />Overrides the default messages for the element's validation rules. The value is an object where each key is the name of a validation rule and the value is the error message that will be displayed when the rule fails.
You can override validation messages on form level with
messages.
displayErrors 
- Type: 
boolean - Default: 
true 
<LocationElement :display-errors="false" ... />Whether element errors should be displayed.
conditions 
- Type: 
array - Default: 
[] 
<LocationElement :conditions="[
  ['foo', 'bar'],
  'AGE(birthday) > 18',
  (form$) => !!form$?.el$('terms').value
]" ... />Shows or hides an element based on the provided conditions.
columns 
- Type: 
object|string|number - Default: 
null 
<LocationElement label="Label" :columns="{ container: 12, label: 3, wrapper: 12 }" ... />Sets the size of the container, label and wrapper using the theme's grid system, where the:
containeris the outermost DOM that contains bothlabelandwrapperlabelcontains the labelwrappercontains the input field.
container: 12label: 3wrapper: 12The value of container defines the size of the element's container. 12 will result in full width, 6 in half, 4 in third and so on.
The value of label defines the amount of space the label should take up within the container. If the container is 12 and label is 6 the label is going to take up half the space and the input field will the other half (which is calculated automatically). If the container is 6 and label is 6, the label will only take up one forth and the input field the rest. In case the label has full width (12) the input field will also take up full space instead of becoming zero.
The value of wrapper defines the size of the input field wrapper within the space left for it in the container after subtracting the size of the label. If the container is 12 and label is 4 the space left for the input field is 8. In this case if the wrapper value is 12 it will take up the full space left for it (which is 8) while if it is changed to 6 it will only take up half the space left for it (4):
<LocationElement label="Label" :columns="{ container: 12, label: 4, wrapper: 12 }" ... />
<LocationElement label="Label" :columns="{ container: 12, label: 4, wrapper: 6 }" ... />Note that while the size of the input field wrapper changes, the size of extras like a description or error won't be limited to the wrapper's space. Instead it will take up the full space in the container left after subtracting the size of the label:
<LocationElement
  label="Label"
  :columns="{ container: 12, label: 4, wrapper: 6 }" 
  description="Lorem ipsum dolor sit amet, consectetur adipiscing elit"
... />You can set the value of columns as a number in which case the container will receive its value without affecting the default settings of label and wrapper:
<LocationElement label="Label" :columns="6" ... /> <!-- { container: 6, label: 3, wrapper: 12 } -->You can as well define column values for different breakpoints using the theme system's breakpoints like sm, md, etc. as keys:
<LocationElement label="Label" :columns="{
  xs: { container: 12, label: 12, wrapper: 12 },
  sm: { container: 12, label: 4, wrapper: 12 },
  md: 12,
  lg: { container: 12, label: 2, wrapper: 12 }
}" ... />Default column sizes can be defined globally in
vueform.config.jsor on form level usingcolumns.
inline 
- Type: 
boolean - Default: 
false 
<LocationElement :inline="true" ... />Renders the element and all of its components in a single <span> without applying columns.
size 
- Type: 
string - Default: 
undefined 
<LocationElement size="sm" ... />
<LocationElement ... /> <!-- Default size: 'md' -->
<LocationElement size="lg" ... />The size of the element and its child components.
view 
- Type: 
string - Default: 
undefined 
<LocationElement view="alt" ... />The name of the view to be used for the element and by default for its child components. If undefined the default view will be used. Child component views can be overridden with views option.
Learn more about views here.
views 
- Type: 
object - Default: 
{} 
<LocationElement :views="{
  ComponentName: 'alt'
}" ... />The name of the views for the child components.
Learn more about views here.
addClasses 
- Type: 
object|function - Default: 
{} 
<LocationElement :add-classes="{
  ComponentName: {
    classname: 'class-value',
    classname: ['class-value'],
    classname: [{'class-value': true}],
  }
}" ... />Adds classes to any component's class names. The classes can have string or array values. When Vue style classes are used object values must be wrapped in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :add-classes="(form$) => ({
  ComponentName: {
    classname: [
      { 'class-value': form$.el$('other_field')?.value === 'some_value' }
    ],
  }
})" ... />Learn more about adding classes here.
addClass 
- Type: 
array|object|string|function - Default: 
null 
<LocationElement :add-class="{
  classname: 'class-value',
  classname: ['class-value'],
  classname: [{'class-value': true}],
}" ... />Adds classes to any of LocationElement component's class names. Classes can have string or array values. When Vue style classes are used object values must be wrapped in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :add-class="(form$) => ({
  classname: [
    { 'class-value': form$.el$('other_field')?.value === 'some_value' }
  ],
})" ... />Learn more about adding classes here.
removeClasses 
- Type: 
object|function - Default: 
{} 
<LocationElement :remove-classes="{
  ComponentName: {
    classname: ['class-value-1', 'class-value-2']
  }
}" ... />Removes classes from any class names of any components. The classes to be removed must be listed in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :remove-classes="(form$) => ({
  ComponentName: {
    classname: form$.el$('other_field')?.value === 'some_value'
      ? ['class-value-1', 'class-value-2']
      : [],
  }
})" ... />Learn more about removing classes here.
removeClass 
- Type: 
array|object|function - Default: 
null 
<LocationElement :remove-class="{
  classname: ['class-value-1', 'class-value-2']
}" ... />Removes classes from any of LocationElement component's class names. The classes to be removed must be listed in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :remove-class="(form$) => ({
  classname: form$.el$('other_field')?.value === 'some_value'
    ? ['class-value-1', 'class-value-2']
    : [],
})" ... />Learn more about removing classes here.
replaceClasses 
- Type: 
object|function - Default: 
{} 
<LocationElement :replace-classes="{
  ComponentName: {
    classname: {
      'from-class': 'to-class',
      'from-class': ['to-class'],
      'from-class': [{'to-class': true}],
    }
  }
}" ... />Replaces classes of any class names of any component. The keys are the original class names and the values are the replacements. The keys can only be single classes, while values can contain multiple ones in string or an array. When Vue style classes are used object values must be wrapped in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :replace-classes="(form$) => ({
  ComponentName: {
    classname: form$.el$('other_field')?.value === 'some_value' ? {
      'from-class': 'to-class'
    } : {},
  }
})" ... />Learn more about replacing classes here.
replaceClass 
- Type: 
object|function - Default: 
null 
<LocationElement :replace-class="{
  classname: {
    'from-class': 'to-class',
    'from-class': ['to-class'],
    'from-class': [{'to-class': true}],
  }
}" ... />Replaces the classes of any class names of LocationElement component. The keys are the original class names and the values are the replacements. The keys can only be single classes, while values can contain multiple ones in string or an array. When Vue style classes are used object values must be wrapped in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :replace-class="(form$) => ({
  classname: form$.el$('other_field')?.value === 'some_value' ? {
    'from-class': 'to-class'
  } : {},
})" ... />Learn more about replacing classes here.
overrideClasses 
- Type: 
object|function - Default: 
{} 
<LocationElement :override-classes="{
  ComponentName: {
    classname: 'class-value',
    classname: ['class-value'],
    classname: [{'class-value': true}],
  }
}" ... />Overrides the classes of any component's class names. The classes can have string or array values. When Vue style classes are used object values must be wrapped in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :override-classes="(form$) => ({
  ComponentName: form$.el$('other_field')?.value === 'some_value' ? {
    classname: 'class-value'
  } : {}
})" ... />Learn more about overriding classes here.
overrideClass 
- Type: 
array|object|string|function - Default: 
null 
<LocationElement :override-classes="{
  ComponentName: {
    classname: 'class-value',
    classname: ['class-value'],
    classname: [{'class-value': true}],
  }
}" ... />Overrides the classes of any of LocationElement component's class names. The classes can have string or array values. When Vue style classes are used object values must be wrapped in an array.
Conditional classes can be passed as a function with form$ param, eg.:
<LocationElement :override-class="(form$) => (form$.el$('other_field')?.value === 'some_value' ? {
  classname: 'class-value'
} : {})" ... />Learn more about overriding classes here.
templates 
- Type: 
object - Default: 
{} 
<template>
  <div id="app">
    <Vueform>
      <LocationElement :templates="{ ElementError }" ... />
    </Vueform>
  </div>
</template>
<script>
import { markRaw } from 'vue'
import CustomElementError from './CustomElementError.vue'
export default {
  data() {
    return {
      ElementError: markRaw(CustomElementError),
    }
  }
}
</script>Overrides templates used by the component.
Learn more about overriding templates here.
presets 
- Type: 
array - Default: 
[] 
<LocationElement :presets="['preset1', 'preset2']" ... />The presets to be applied for the component.
Learn more about presets classes here.
slots 
- Type: 
object - Default: 
{} 
<script>
import { Vueform, useVueform } from '@vueform/vueform';
import CustomDescriptionSlot from 'path/to/CustomDescriptionSlot.vue';
export default {
  mixins: [Vueform],
  setup: useVueform,
  data: () => ({
    vueform: {
      schema: {
        element: {
          type: 'location',
          slots: {
            label: '<span>Label</span>',
            description: CustomDescriptionSlot,
          }
        }
      }
    }
  })
}
</script>With this option you can define slot values in a schema based form that you would normally just write inline. The value of a slot can be a plain string, HTML or a component with render function.
While this option can be also used in inline forms, it's primarily intended for schema based forms.
Properties 
Properties include data, computed and inject properties of the component. You can use them by reaching the element's Vue component instance via form$'s el$(path) method or directly via this in options API or el$ in Composition API.
locationService 
- Type: 
object|null - Default: 
null - Group: 
data 
The location service that's initialized once the component is mounted.
location 
- Type: 
object - Default: 
null - Group: 
data 
The raw location object of location provider (Google/Algolia).
aria 
- Type: 
object - Group: 
computed 
The aria-* attributes of the input.
defaultOptions 
- Type: 
object - Default: 
{} - Group: 
computed 
Default options for location provider. Can be extended with extendOptions.
Placeholder 
- Type: 
string - Group: 
computed 
The localized placeholder of the element.
isReadonly 
- Type: 
boolean - Group: 
computed 
Whether the element is readonly.
isRequired 
- Type: 
boolean - Group: 
computed 
Whether the element is required (has required rule).
useCustomFilled 
- Type: 
boolean - Group: 
computed 
Whether the element should use a custom logic for checking if it is filled when validating.
isFilled 
- Type: 
boolean - Group: 
computed 
Whether the element is filled is useCustomFilled is true.
isDefault 
- Type: 
boolean - Group: 
computed 
Whether the element has its default value.
value 
- Type: 
any - Group: 
computed 
The value of the element.
model 
- Type: 
any - Group: 
computed 
Intermediary value between element's value and field's v-model. It is required when we need to transform the value format between the element and its field.
data 
- Type: 
object - Group: 
computed 
The value of the element in {[name]: value} value format. This gets merged with the parent component's data.
requestData 
- Type: 
object - Group: 
computed 
Same as data property except that it only includes the element's value if submit is not disabled and available is true (has no conditions or they are fulfilled).
empty 
- Type: 
boolean - Group: 
computed 
Whether the element has no value filled in.
path 
- Type: 
string - Group: 
computed 
The path of the element using dot . syntax.
dataPath 
- Type: 
string - Group: 
computed 
The path of the element's data using dot . syntax.
parent 
- Type: 
VNode - Group: 
computed 
The parent component of the element.
validated 
- Type: 
boolean - Group: 
computed 
Whether the element was already validated at least once.
invalid 
- Type: 
boolean - Group: 
computed 
Whether the element has any failing rules.
dirty 
- Type: 
boolean - Group: 
computed 
Whether the element's value was modified.
pending 
- Type: 
boolean - Group: 
computed 
Whether the element has any async rules in progress.
debouncing 
- Type: 
boolean - Group: 
computed 
Whether the element has a validation rule with pending debounce.
busy 
- Type: 
boolean - Group: 
computed 
Whether the element is pending or debouncing.
messageBag 
- Type: 
MessageBag - Default: 
MessageBag - Group: 
data 
Instance of MessageBag service. Custom errors and messages can be added.
errors 
- Type: 
array - Group: 
computed 
All the errors of MessageBag.
error 
- Type: 
string - Group: 
computed 
The first error of MessageBag.
available 
- Type: 
boolean - Group: 
computed 
Whether no conditions are defined or they are all fulfilled.
hidden 
- Type: 
boolean - Default: 
false - Group: 
data 
visible 
- Type: 
boolean - Group: 
computed 
Whether the element is visible. It's false when available or active is false or hidden is true.
focused 
- Type: 
boolean - Group: 
data 
Whether the element is focused.
isDisabled 
- Type: 
boolean - Group: 
computed 
Whether the element is disabled.
isSuccess 
- Type: 
boolean - Group: 
computed 
Whether the element has been filled in successfully.
isDanger 
- Type: 
boolean - Group: 
computed 
Whether the element has errors.
container 
- Type: 
HTMLElement - Group: 
data 
The ref to the outermost DOM of the element.
input 
- Type: 
HTMLElement - Group: 
data 
The main input field of the element.
fieldId 
- Type: 
string - Group: 
computed 
hasLabel 
- Type: 
boolean - Group: 
computed 
Whether the element has a label option, a #label slot or Vueform component's forceLabels option is true.
hasFloating 
- Type: 
boolean - Group: 
computed 
Whether the element floating label.
Size 
- Type: 
string - Group: 
computed 
The resolved size of the element and all of its child components.
View 
- Type: 
string - Group: 
computed 
The name of the resolved view for the component and the default view for its child components. Child component views can be overridden with views option. This one should be used to determine the component's view in class functions.
template 
- Type: 
object - Group: 
computed 
The component's template.
classes 
- Type: 
object - Group: 
computed 
The component's classes.
theme 
- Type: 
object - Group: 
inject 
The global theme object, which contains all the default templates and classes.
form$ 
- Type: 
Vueform - Group: 
inject 
The root form's component.
el$ 
- Type: 
VueformElement - Group: 
computed 
The element's component.
mounted 
- Type: 
boolean - Default: 
true - Group: 
data 
Whether the element has been already mounted.
Methods 
The methods of the component that you can use by reaching the element's Vue component instance via form$'s el$(path) method or directly via this in options API or el$ in Composition API.
initLocationService 
- Returns: 
void 
Initializes location service. Can be used to re-initialize location service.
clearMessages 
- Returns: 
void 
Clears the manually added messages from the messageBag.
load 
- Arguments: 
{any} value*- the value to be loaded{boolean} format*- whether the loaded value should be formatted withformatLoadbefore setting the value of the element (default:false)
 - Returns: 
void 
Loads value to the element using optional formatLoad formatter. This is the method that gets called for each element when loading data to the form with format: true.
update 
- Arguments: 
{any} value*- the value to be set
 - Returns: 
void 
Updates the value of the element similarly to load, only that it can't format data.
clear 
- Returns: 
void 
Clears the element's value.
reset 
- Returns: 
void 
Resets the element's value to default (or empty if default is not provided). Also resets all the validation state for the element.
disable 
- Returns: 
void 
Disables the element.
enable 
- Returns: 
void 
Enables the element even if it is disabled by disabled option.
on 
- Arguments: 
{string} event*- name of the event to listen for{function} callback*- callback to run when the event is triggered
 - Returns: 
void 
Adds a listener for an event.
off 
- Arguments: 
{string} event*- name of the event to remove
 - Returns: 
void 
Removes all listeners for an event.
fire 
- Arguments: 
{any} args*- list of arguments to pass over to the event callback
 - Returns: 
void 
Fires and emits an event.
validate 
- Returns: 
Promise 
Checks each validation rule for the element on displayKey property of the location object (async).
clean 
- Returns: 
void 
Removes the element's dirty state.
resetValidators 
- Returns: 
void 
Sets the validators to default state.
reinitValidation 
- Returns: 
void 
Re-initializes validators when rules have changed.
hide 
- Returns: 
void 
Hides the element.
show 
- Returns: 
void 
Shows the element if it was hidden with hide() method.
Events 
With events you can subscribe to different events broadcasted by the element. It can be used inline as regular Vue event listeners with @event format. In schema it can be used in PascalCase format prefixed with on (eg. onChange).
<template>
  <Vueform>
    <LocationElement @{eventName}="handler" ... />
  </Vueform>
</template><script>
import { Vueform, useVueform } from '@vueform/vueform'
export default {
  mixins: [Vueform],
  setup: useVueform,
  data: () => ({
    vueform: {
      schema: {
        element: {
          type: 'location',
          on{EventName}() {
            // ...
          }
        }
      }
    }
  })
}
</script>You can also use on(event, callback) method to subscribe to events.
reset 
- Params: 
{component} el$- the element's component
 
Triggered when the input is resetted.
clear 
- Params: 
{component} el$- the element's component
 
Triggered when the input is cleared.
change 
- Params: 
{string} newValue- the new value{string} oldValue- the old value{component} el$- the element's component
 
Triggered when the element's value is changed.
beforeCreate 
- Params: 
{component} el$- the element's component
 
Triggered in beforeCreate hook.
created 
- Params: 
{component} el$- the element's component
 
Triggered in created hook.
beforeMount 
- Params: 
{component} el$- the element's component
 
Triggered in beforeMount hook.
mounted 
- Params: 
{component} el$- the element's component
 
Triggered in mounted hook.
beforeUpdate 
- Params: 
{component} el$- the element's component
 
Triggered in beforeUpdate hook.
updated 
- Params: 
{component} el$- the element's component
 
Triggered in updated hook.
beforeUnmount 
- Params: 
{component} el$- the element's component
 
Triggered in beforeUnmount (or beforeDestroy in Vue 2) hook.
unmounted 
- Params: 
{component} el$- the element's component
 
Triggered in unmounted (or destroyed in Vue 2) hook.
Slots 
Slots can be used inline or in slots option object when used in schema:
<template>
  <Vueform>
    <LocationElement ... >
      <template #{slot-name}="scope">
        <!-- ... --->
      </template>
    </LocationElement>
  </Vueform>
</template><script>
import { Vueform, useVueform } from '@vueform/vueform'
export default {
  mixins: [Vueform],
  setup: useVueform,
  data: () => ({
    vueform: {
      schema: {
        element: {
          type: 'location',
          slots: {
            {slotName}: // implementation
          }
        }
      }
    }
  })
}
</script>label 
- Scope: 
{component} el$- the element's component
 
Renders a label for the element in ElementLabel component.
info 
- Scope: 
{component} el$- the element's component
 
Renders an info icon in ElementInfo component next the the element label. When the icon is hovered it shows the content of this slot. The element needs to have a label to render this.
required 
description 
- Scope: 
{component} el$- the element's component
 
Renders description for the element in ElementDescription component.
before 
- Scope: 
{component} el$- the element's component
 
Renders an ElementText component before the input field.
between 
- Scope: 
{component} el$- the element's component
 
Renders an ElementText component after the input field and before description.
after 
- Scope: 
{component} el$- the element's component
 
Renders an ElementText component after the description and error.
addon-before 
- Scope: 
{component} el$- the element's component
 
Prepends an addon to the input field.
addon-after 
- Scope: 
{component} el$- the element's component
 
Appends an addon to the input field.
