
# Class: AuWidgetFunctionTrigger

A non-visual widget that is used to listen for property changes to execute custom functions. Can be used in other widgets.

The following example illustrates how you can listen for property changes to execute custom functions.

```
{
  "widgets": [
   {
      "name": "name",
      "type": "option",
      "params": {
          "type": "list",
          "title": "Name",
          "prompt": "Choose a name",
          "values": [
              { "title": "Jack" },
              { "title": "James" },
              { "title": "John" }
           ]
      }
   },
   {
     "name": "myFunction",
     "type": "function-trigger",
     "params": {
          "arguments": [
             "{{ $['name']._.title }}",
             "{{ $['name']._.title }}"
          ],
          "callback": [
              "{{ #function(arg1, arg2) console.log(arg1, arg2) }}",
              "{{ #asyncFunction await new Promise(...) }}"
          ]
          "catch": [
             "{{ #function console.error("failed") }}",
          ],
          "finally": [
             "{{ #function console.log("cleanup") }}",
          ]
     }
   }
 ]
}
```

## Hierarchy

* AuBaseInvisibleWidget

  ↳ **AuWidgetFunctionTrigger**

## Implements

* [IWidget](../interfaces/iwidget.md)

## Index

### Properties

* [enabled](auwidgetfunctiontrigger.md#enabled)
* [params](auwidgetfunctiontrigger.md#params)

### Accessors

* [template](auwidgetfunctiontrigger.md#static-template)

### Methods

* [checkInitDependenciesWidgets](auwidgetfunctiontrigger.md#checkinitdependencieswidgets)
* [resetPreloaderState](auwidgetfunctiontrigger.md#resetpreloaderstate)
* [showPreloader](auwidgetfunctiontrigger.md#showpreloader)
* [showToast](auwidgetfunctiontrigger.md#showtoast)

## Properties

###  enabled

• **enabled**: *boolean* = true

If `false`, the `callback` will not be executed. The default value is `true`.

___

###  params

• **params**: *any*

*Inherited from [AuBaseWidget](aubasewidget.md).[params](aubasewidget.md#params)*

Compiled widget configuration.

## Accessors

### `Static` template

• **get template**(): *HTMLTemplateElement*

*Inherited from void*

**Returns:** *HTMLTemplateElement*

## Methods

###  checkInitDependenciesWidgets

▸ **checkInitDependenciesWidgets**(): *string[]*

*Inherited from [AuBaseWidget](aubasewidget.md).[checkInitDependenciesWidgets](aubasewidget.md#checkinitdependencieswidgets)*

Returns an array of widget names, due to which the current widget cannot receive parameters.

**Returns:** *string[]*

___

###  resetPreloaderState

▸ **resetPreloaderState**(): *void*

*Inherited from [AuBaseWidget](aubasewidget.md).[resetPreloaderState](aubasewidget.md#resetpreloaderstate)*

**Returns:** *void*

___

###  showPreloader

▸ **showPreloader**(`isPreload`: boolean, `message`: string | string[], `timeout`: number): *void*

*Inherited from [AuBaseWidget](aubasewidget.md).[showPreloader](aubasewidget.md#showpreloader)*

Shows a preloader.

```
"onClick": [
  "{{#function main.showPreloader(true, 'Creating print files...')}}",
  "{{#function $['editor'].getHiResImages(800,800)}}",
  "{{#function main.showPreloader(false)}}"
]
```

**Parameters:**

Name | Type | Default | Description |
------ | ------ | ------ | ------ |
`isPreload` | boolean | - | If `true`, enables the preloader. |
`message` | string &#124; string[] |  [""] | A text message that appears next to the preloader.  |
`timeout` | number | 5 | - |

**Returns:** *void*

___

###  showToast

▸ **showToast**(`data?`: string, `duration?`: number): *void*

*Inherited from [AuBaseWidget](aubasewidget.md).[showToast](aubasewidget.md#showtoast)*

Shows a toast.

```
return editor.loadUserInfo(data)
    .catch(err => {
        this.widget.showToast("Error: Invalid data");
        console.log(err);
    });
```

**Parameters:**

Name | Type | Description |
------ | ------ | ------ |
`data?` | string | A string message to display in the toast. |
`duration?` | number | Defines how long to show the toast for.  |

**Returns:** *void*
