When creating a widget, define its form, fields, and its behavior by using the template elements to specify the way it displays with HTML and Widget Attributes. Apply HTML tags to add and control elements such as buttons and various types of fields. 



<attachment>

Adds a files attachment widget.

The following attributes are applicable:

AttributeTypeDescription
classStringThis attribute is for the CSS styles description and specifying.
modelStringThis attribute points to the client controller data object.
styleString

This attribute specifies the display settings (size, font, color, and etc.) of the widget elements using the CSS syntax.

<div style="fontSize: 15px, width: 600px"></div>



<attachment class="form" model="data.attachments"></attachment>



<button>

Use this attribute to add a button to your widget form. This element behavior is similar as React does.

<button event-click="window.s_widget_custom.submit();">
  {data.submitBtnTitle}
</button>

<button event-click="window.s_widget_custom.cancel();">
  {data.cancelBtnTitle}
</button>


<checkbox>

This element allows adding and configuring the checkbox field.

The following attributes are applicable:

AttributeTypeDescription
fieldMessageBooleanUse this attribute to set a message to a field you need.
isMandatoryBooleanThis attribute allows to set a mandatory status to field. For this, set it equal to "true".
isVisibleBooleanIf this attribute is equal to "true" (by default), then the widget of the type from the list below is displayed; otherwise, it is not displayed.
labelStringA field label with text information generally describing the field content.
modelStringThis attribute points to the client controller data object.
readOnlyBooleanThis attribute allows to set a read-only status to field. For this, set it equal to "true".
valueStringSpecifies the default value of the field.


<modal model="data.modal" title="{data.modalTitle}" isShow="{data.isShow}"
  doClose="window.s_widget_custom.closeModal();">

  <checkbox model="data.ignoreAutoCAB" label="{data.questionText}"></checkbox>

  <div simple-if="{data.showInput}" class="select-area">
    <multiselect label="{data.cabParticipantsTitle}" title="{data.cabParticipantsTitle}" model="data.CABparticipants"
      values="" options="{data.optionsValues}" event-change="s_widget_custom.optionsSelected();">
    </multiselect>
  </div>
</modal>



<codemirror>

The element adds a text field with the code formatting.

The following attributes are applicable:

AttributeTypeDescription
event-changeFunctionUse this attribute to specify the actions performed when the change event occurs.
event-clickFunctionUse this attribute to specify the actions performed when the click event occurs.
modelStringThis attribute points to the client controller data object.


<codemirror model="data.mirror"></codemirror>



<conditions>

Adds the condition builder widget.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.
tableNameStringConnection with a table by its name
tableIdBig IntegerConnection with a table by the ID


<conditions model="data.conditions" tableName="itsm_incident" tableId="155964310500000569"></conditions>



<datetime>

The element provides a data input of the datetime format. 

The following attributes are applicable:

AttributeTypeDescription
isMandatoryBooleanThis attribute is responsible for specifying whether this input field is mandatory or not.
labelStringA field label with text information generally describing the field content.
modelStringThis attribute points to the client controller data object.
beginDateStringSpecify a method of how the beginning date is defined.
endDateStringSpecify a method of how the ending date is defined.


<datetime label="Date and Time" isMandatory="true" model="data.dueDate" beginDate="{data.beginDate} " endDate="{data.endDate}"></datetime>

//client script
const beginDate = new Date();
const endDate = new Date();
beginDate.setDate(beginDate.getDate() - 30);
endDate.setDate(endDate.getDate() + 30);



<daysofweek>

The element adds a field that allows selecting days of week.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.


<daysofweek model="data.daysofweek"></daysofweek>



<duration>

The tag adds a field counting the time duration.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.


<duration model="data.duration"></duration>



<html>

This widget adds an HTML input field with text formatting options.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.


<htmlinput label="Description" model="data.description" isMandatory="true"></htmlinput>



<modal>

A modal window solution.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.
titleStringA modal window title.
doCloseFunction

Specify actions to perform after one of the predefined patterns is selected:

  • click
  • context
  • mouseOver
isShowBooleanIf this attribute is equal to 'true', then the modal window is displayed.


<modal model="data.modal" title="Modal Label" isShow="true"
doClose:
{
"click": "runScript()"
},>



<multiselect>

Provides multiple choice selection for widgets.

The following attributes are applicable:

AttributeTypeDescription
canExcludeAllBooleanThis parameter is responsible for items deselecting; if it's equal to TRUE, then bulk item selection cancellation is available.
modelStringThis attribute points to the client controller data object.
optionsString

Matches database values with what will be displayed. 


You can put as much options into drop-down menu as you need, but after the sixth one is placed, a vertical scroll appears.


valuesStringSpecify values for the selection.


<multiselect model="data.values" canExcludeAll="true" values='["1", "2"]' options='[{"database_value":"","display_value":""},{"database_value":"1","display_value":"Первый"},{"database_value":"2","display_value":"Второй"}]'></multiselect>



<reference>

This element adds a reference field to a widget for establishing connections with data tables by a custom reference.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.
tableNameStringConnection with a table by its name.
conditionStringSpecify a condition ID.
isFixedBooleanWhen this attribute is equal to 'true', then the condition value cannot be changed.


<reference label="Configuration Item" model="data.element" tableName="cmdb" isMandatory="true" condition="{data.condition}"></reference>



<report>

Add this SimpleTag to display a particular report.

The following attributes are applicable:

AttributeTypeDescription
reportIdStringSpecify the report with the appropriate ID to display.
conditionStringSpecify a condition to build a report.


When placing two or more conditions into the condition string, merge them with the carat symbol ( ^ ). The condition syntax will look like this:

Condition wordNotationExample
AND^assignee=john.doe^state=active
OR^ORimpact=high^ORurgency=high

To know more about possible condition operators, please refer to the Condition Operators article.


<report reportId="123456789012345678" condition="(group=helpdesk^ORstate=active)"/>



<select>

A field that allows selecting items.

The following attribute is applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.
optionsStringThis field type matches database values with what will be displayed


<select label="Class" isMandatory="true" model="data.class" options='[{"database_value":"","display_value":""},{"database_value":"155964310500000004","display_value":"Server"},{"database_value":"155964310500000006","display_value":"Database"}]'></select>



<string>

In a widget, use this attribute to designate an input field for text information. The element is similar to the react component:

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.


<string model="data.lastname" event-change=";(() => { const lastname = s_widget.getFieldValue('lastname') || ''; const firstname = s_widget.getFieldValue('firstname') || ''; s_widget.setFieldValue('fullname', lastname + ' ' + firstname) })();"></string>
<string model="data.firstname" event-change=";(() => { const lastname = s_widget.getFieldValue('lastname') || ''; const firstname = s_widget.getFieldValue('firstname') || ''; s_widget.setFieldValue('fullname', lastname + ' ' + firstname) })();"></string><h1>{data.fullname}</h1>
// In this example, we put values into two fields, and after that, they are displayed concatenated and formatted with H1 tag.



<textarea>

A multi-line text field.

The following attributes are applicable:

AttributeTypeDescription
modelStringThis attribute points to the client controller data object.


  <textarea model="data.name" label="Name" value=""></textarea>
  <textarea model="data.description" label="Description" value=""></textarea>