---
metadata:
  - name: generator
    content: Diplodoc Platform v5.39.1
alternate:
  - https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md
  - https://yandex.com/dev/jsapi-v2-1/doc/ru/v2-1/ref/reference/layout.templateBased.Base.md
---
# layout.templateBased.Base

Extends [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md).

Basic layout class based on templates. This class is used by the layout factory as a base for creating user layouts.

**See** [templateLayoutFactory](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/templateLayoutFactory.md)

[Constructor](#constructor-summary) | [Fields](#properties-summary) | [Events](#events-summary) | [Methods](#methods-summary)

## Constructor {#constructor-summary}

```javascript
layout.templateBased.Base(data)
```

**Parameters:**

#|
|| **Parameter** | **Default value** | **Description**  ||
|| [`data`](#param-data)[*](*star) | — | Type: Object

Set of different types of data that are used for building a layout. ||
|#

\* Mandatory parameter/option.

## Fields {#properties-summary}

#|
|| **Name** | **Type** | **Description** ||
|| [events](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#events) | [IEventManager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IEventManager.md) | Event manager.

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#events). ||
|#

## Events {#events-summary}

#|
|| **Name** | **Description** ||
|| [click](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-click) | Single left-click on the object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-click). ||
|| [contextmenu](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-contextmenu) | Calls the element's context menu. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-contextmenu). ||
|| [dblclick](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-dblclick) | Double left-click on the object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-dblclick). ||
|| [emptinesschange](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#event-emptinesschange) | Change to the empty layout indicator. Instance of the [Event](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/Event.md) class.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#event-emptinesschange). ||
|| [mousedown](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mousedown) | Pressing the mouse button over the object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mousedown). ||
|| [mouseenter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mouseenter) | Pointing the cursor at the object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mouseenter). ||
|| [mouseleave](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mouseleave) | Moving the cursor off of the object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mouseleave). ||
|| [mousemove](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mousemove) | Moving the cursor over the object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mousemove). ||
|| [mouseup](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mouseup) | Letting go of the mouse button over an object. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-mouseup). ||
|| [multitouchend](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-multitouchend) | End of multitouch. This event is only available on devices that support multitouch. Returns an implementation of the IMultiTouchEvent interface.

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-multitouchend). ||
|| [multitouchmove](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-multitouchmove) | Repeating event during multitouch. This event is only available on devices that support multitouch. Returns an implementation of the IMultiTouchEvent interface with information about touches. Defines the touches property, which contains a list of touches. Every touch is described by an object that contains the following fields: 
- clientX - X coordinate of the touch relative to the viewable area of the browser.
- clientY - Y coordinate of the touch relative to the viewable area of the browser.
- pageX - X coordinate of the touch relative to the beginning of the document.
- pageY - Y coordinate of the touch relative to the beginning of the document.

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-multitouchmove). ||
|| [multitouchstart](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-multitouchstart) | Start of multitouch. This event is only available on devices that support multitouch. Returns an implementation of the IMultiTouchEvent interface with information about touches. Defines the touches property, which contains a list of touches. Every touch is described by an object that contains the following fields: 
- clientX - X coordinate of the touch relative to the viewable area of the browser.
- clientY - Y coordinate of the touch relative to the viewable area of the browser.
- pageX - X coordinate of the touch relative to the beginning of the document.
- pageY - Y coordinate of the touch relative to the beginning of the document.

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-multitouchstart). ||
|| [parentelementchange](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#event-parentelementchange) | Change to the parent element. Instance of the [Event](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/Event.md) class.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#event-parentelementchange). ||
|| [shapechange](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#event-shapechange) | Change to the shape of the area spanning the layout. Instance of the [Event](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/Event.md) class.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#event-shapechange). ||
|| [wheel](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-wheel) | Mouse wheel scrolling. When using, keep in mind that mouse events are emulated when a touch screen is used. Instance of the [MapEvent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/MapEvent.md) class. More information is available in [domEvent.manager](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/domEvent.manager.md).

Inherited from [IDomEventEmitter](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IDomEventEmitter.md#event-wheel). ||
|#

## Methods {#methods-summary}

#|
|| **Name** | **Returns** | **Description** ||
|| [build](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#build)() | | Builds a layout instance based on the template and adds it to the parent HTML element. ||
|| [clear](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#clear)() | | Removes layout content from DOM. ||
|| [destroy](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#destroy)() | | Destructor. Called when activity with the layout is finished.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#destroy). ||
|| [getData](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#getData)() | Object | Returns layout data object.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#getData). ||
|| [getParentElement](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#getParentElement)() | HTMLElement | Returns parent HTML element.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#getParentElement). ||
|| [getShape](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#getShape)() | [IShape](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/IShape.md)\|null | Returns a shape that defines the area spanning the layout, or null if it is not possible to plot this shape. By default, it tries to construct a shape via the "shape" option - this.getData().options.get('shape'). In the option, it can be set as an instance of a class implementing the IShape interface, or as a JSON description of the shape's pixel geometry. Coordinates of the shape's geometry should be calculated from the anchor point of the parent layout element. ||
|| [isEmpty](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#isEmpty)() | Boolean | Returns true if the layout is empty, i.e. it does not have any content. This indicator is used for hiding empty objects such as hints, balloons, and others.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#isEmpty). ||
|| [onSublayoutSizeChange](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#onSublayoutSizeChange)([sublayoutInfo](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#onSublayoutSizeChange-param-sublayoutInfo), [nodeSizeByContent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#onSublayoutSizeChange-param-nodeSizeByContent)) | | Automatically called when resizing a nested layout, added with the `observeSize` option. Used to override specific classes of layouts to respond to the resizing of the content. ||
|| [rebuild](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/layout.templateBased.Base.md#rebuild)() | | Re-sets the layout. ||
|| [setData](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#setData)([data](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#setData-param-data)) | | Sets layout data.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#setData). ||
|| [setParentElement](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#setParentElement)([parent](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#setParentElement-param-parent)) | | Adds the layout to the DOM tree.

Inherited from [ILayout](https://yandex.com/dev/jsapi-v2-1/doc/en/v2-1/ref/reference/ILayout.md#setParentElement).||
|#

## Methods details {#method_detail}

### build {#build}

```javascript
{} build()
```

Builds a layout instance based on the template and adds it to the parent HTML element.

### clear {#clear}

```javascript
{} clear()
```

Removes layout content from DOM.

### getShape {#getShape}

```javascript
{IShape|null} getShape()
```

**Returns** a shape that defines the area spanning the layout, or null if it is not possible to plot this shape. By default, it tries to construct a shape via the "shape" option - this.getData().options.get('shape'). In the option, it can be set as an instance of a class implementing the IShape interface, or as a JSON description of the shape's pixel geometry. Coordinates of the shape's geometry should be calculated from the anchor point of the parent layout element.

**Example:**

```javascript
// Creating a placemark and setting a circular interactive area for it.
var MyLayoutClass = ymaps.templateLayoutFactory.createClass('<div class="imageIcon">{{name}}</div>');
var myPlacemark = new ymaps.Placemark([22, 34], {name: 'Cafe Mayak'}, {
    iconLayout: MyLayoutClass,
    iconShape: {type: 'Circle', coordinates: [0, 0], radius: 20}
});
```

### onSublayoutSizeChange {#onSublayoutSizeChange}

```javascript
{} onSublayoutSizeChange(sublayoutInfo, nodeSizeByContent)
```

Automatically called when resizing a nested layout, added with the `observeSize` option. Used to override specific classes of layouts to respond to the resizing of the content.

**Parameters:**

#|
|| **Parameter** | **Default value** | **Description**  ||
|| [`sublayoutInfo`](#onSublayoutSizeChange-param-sublayoutInfo)[*](*star) | — | Type: Object

Information about the nested layout. ||
|| [`nodeSizeByContent`](#onSublayoutSizeChange-param-nodeSizeByContent)[*](*star) | — | Type: Object

The new size of the element considering the size of its content. Available fields: `width`, `height`, `scrollX`, `scrollY`. ||
|#

\* Mandatory parameter/option.

### rebuild {#rebuild}

```javascript
{} rebuild()
```

Re-sets the layout.

[*star]: Mandatory parameter/option.