![version](https://badgen.net/npm/v/@plasma-platform/promotions)
![nextVersion](https://badgen.net/npm/v/@plasma-platform/promotions/next)
![downloads](https://badgen.net/npm/dt/@plasma-platform/promotions)
![license](https://badgen.net/npm/license/@plasma-platform/promotions)
![dependency](https://badgen.net/npm/dependents/@plasma-platform/promotions)

* * *

[Full documentation](https://templatemonster.gitlab.io/PlasmaPlatform/Frontend/plasma-platform/?path=/story/plasma-platform-promotions)
install:
`npm i @plasma-platform/promotions -S`

# Short documentation

<!-- Generated by documentation.js. Update this documentation by updating the source code. -->

### Table of Contents

-   [Main](#main)
-   [Initiators](#initiators)
    -   [Promotion](#promotion)
        -   [Parameters](#parameters)
        -   [Examples](#examples)
    -   [getAll](#getall)
        -   [Parameters](#parameters-1)
-   [Promotion#run](#promotionrun)
    -   [Examples](#examples-1)
-   [Promotion#setup](#promotionsetup)
    -   [Examples](#examples-2)
-   [Promotion#fetchPromocodeInfo](#promotionfetchpromocodeinfo)
    -   [Examples](#examples-3)
-   [Promotion#createBanner](#promotioncreatebanner)
    -   [Examples](#examples-4)
-   [Promotion#createBanner](#promotioncreatebanner-1)
    -   [Examples](#examples-5)
-   [Initiators/DomService](#initiatorsdomservice)
    -   [DomService](#domservice)
    -   [get](#get)
        -   [Parameters](#parameters-2)
    -   [data](#data)
        -   [Parameters](#parameters-3)
    -   [addClass](#addclass)
        -   [Parameters](#parameters-4)
    -   [attr](#attr)
        -   [Parameters](#parameters-5)
    -   [prepend](#prepend)
        -   [Parameters](#parameters-6)
    -   [removeClass](#removeclass)
        -   [Parameters](#parameters-7)
    -   [hasClass](#hasclass)
        -   [Parameters](#parameters-8)
    -   [removeAttribute](#removeattribute)
        -   [Parameters](#parameters-9)
-   [Initiators/FlipClock](#initiatorsflipclock)
-   [Initiators/UI](#initiatorsui)
    -   [UiBanner](#uibanner)
        -   [Parameters](#parameters-10)
        -   [Examples](#examples-6)
    -   [UiBanner#run](#uibannerrun)
        -   [Parameters](#parameters-11)
        -   [Examples](#examples-7)
    -   [UiBanner#showBanner](#uibannershowbanner)
        -   [Examples](#examples-8)
    -   [UiBanner#getBannerId](#uibannergetbannerid)
        -   [Examples](#examples-9)
    -   [UiBanner#showBannerAnimation](#uibannershowbanneranimation)
        -   [Examples](#examples-10)
    -   [UiBanner#closeBanner](#uibannerclosebanner)
        -   [Examples](#examples-11)
    -   [UiBanner#hideBanner](#uibannerhidebanner)
        -   [Examples](#examples-12)
    -   [UiBanner#hideBannerAnimation](#uibannerhidebanneranimation)
        -   [Examples](#examples-13)
    -   [UiBanner#setBannerCookie](#uibannersetbannercookie)
        -   [Examples](#examples-14)
    -   [UiBanner#killBanner](#uibannerkillbanner)
        -   [Examples](#examples-15)
    -   [UiPopup](#uipopup)
        -   [Parameters](#parameters-12)
        -   [Examples](#examples-16)
    -   [UiPopup#run](#uipopuprun)
        -   [Parameters](#parameters-13)
        -   [Examples](#examples-17)
    -   [UiPopup#showBanner](#uipopupshowbanner)
        -   [Examples](#examples-18)
    -   [UiPopup#hidePopup](#uipopuphidepopup)
        -   [Parameters](#parameters-14)
        -   [Examples](#examples-19)
    -   [UiPopup#hidePopup](#uipopuphidepopup-1)
        -   [Examples](#examples-20)
    -   [UiPopup#outTarget](#uipopupouttarget)
        -   [Parameters](#parameters-15)
        -   [Examples](#examples-21)
-   [Initiators/Analytics](#initiatorsanalytics)
    -   [TagManager](#tagmanager)
        -   [Parameters](#parameters-16)
        -   [Examples](#examples-22)
    -   [TagManager#onClickBanner](#tagmanageronclickbanner)
        -   [Examples](#examples-23)
    -   [TagManager#onShowBanner](#tagmanageronshowbanner)
        -   [Examples](#examples-24)
    -   [TagManager#onClickPopup](#tagmanageronclickpopup)
        -   [Examples](#examples-25)
    -   [TagManager#onShowPopup](#tagmanageronshowpopup)
        -   [Examples](#examples-26)
-   [Initiators/EventManager](#initiatorseventmanager)
-   [runTimer](#runtimer)
-   [runTimer](#runtimer-1)
-   [destroyTimer](#destroytimer)
-   [destroyTimer](#destroytimer-1)
-   [createClockTimerInstance](#createclocktimerinstance)
    -   [Parameters](#parameters-17)
-   [createClockTimerInstance](#createclocktimerinstance-1)
    -   [Parameters](#parameters-18)
-   [createClockTimerProps](#createclocktimerprops)
    -   [Parameters](#parameters-19)
-   [createClockTimerProps](#createclocktimerprops-1)
    -   [Parameters](#parameters-20)
-   [Utils](#utils)
    -   [Parameters](#parameters-21)
        -   [Parameters](#parameters-22)
        -   [Examples](#examples-27)
    -   [Parameters#parse](#parametersparse)
        -   [Parameters](#parameters-23)
        -   [Examples](#examples-28)
    -   [Parameters#update](#parametersupdate)
        -   [Parameters](#parameters-24)
        -   [Examples](#examples-29)
    -   [Parameters#prepareData](#parameterspreparedata)
        -   [Parameters](#parameters-25)
    -   [Parameters#validate](#parametersvalidate)
        -   [Parameters](#parameters-26)
    -   [Parameters#other](#parametersother)
        -   [Parameters](#parameters-27)
    -   [Parameters#lang](#parameterslang)
        -   [Parameters](#parameters-28)
    -   [Parameters#validFormatDate](#parametersvalidformatdate)
        -   [Parameters](#parameters-29)
    -   [Parameters#time](#parameterstime)
        -   [Parameters](#parameters-30)
    -   [Parameters#flipClock](#parametersflipclock)
        -   [Parameters](#parameters-31)
    -   [Parameters#banner](#parametersbanner)
        -   [Parameters](#parameters-32)

## Main

start project npm i && npm start

## Initiators

### Promotion

#### Parameters

-   `args` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** arg only for FlipClock

#### Examples

```javascript
const promotion = new Promotion();
```

### getAll

Get all elements by selector

#### Parameters

-   `selector` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** 

Returns **any** 

## Promotion#run

Initialise banner

### Examples

```javascript
const promotion = new Promotion();
promotion.run();
```

## Promotion#setup

### Examples

```javascript
const promotion = new Promotion();
promotion.setup();
```

## Promotion#fetchPromocodeInfo

Fetches promocode info with start and end dates.

### Examples

```javascript
const promotion = new Promotion();
promotion.setup();
```

## Promotion#createBanner

Creates Banner instance and initiate it

### Examples

```javascript
const promotion = new Promotion();
const banner = promotion.createBanner(tagManager);
```

## Promotion#createBanner

Creates Popup instance and initiate it

### Examples

```javascript
const promotion = new Promotion();
const popup = promotion.createPopup(banner, tagManager);
```

## Initiators/DomService

### DomService

### get

Get element by selector

#### Parameters

-   `selector`  

Returns **any** 

### data

Get data attributes

#### Parameters

-   `element`  

Returns **{}** 

### addClass

Add class

#### Parameters

-   `element`  
-   `classList`   (optional, default `[]`)

Returns **any** 

### attr

Attributes

#### Parameters

-   `element`  
-   `key`  
-   `value`  

Returns **any** 

### prepend

Prepend

#### Parameters

-   `parent`  
-   `element`  

Returns **any** 

### removeClass

Remove class

#### Parameters

-   `element`  
-   `classList`  

Returns **any** 

### hasClass

Has class

#### Parameters

-   `element`  
-   `className`  

Returns **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** 

### removeAttribute

Remove Attribute

#### Parameters

-   `element`  
-   `name`  

Returns **any** 

## Initiators/FlipClock

## Initiators/UI

### UiBanner

#### Parameters

-   `args` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** all arguments

#### Examples

```javascript
const uiBanner = new UiBanner({});
```

### UiBanner#run

run banner function

#### Parameters

-   `tagManager` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** manager for dataLayer variable

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.run();
```

### UiBanner#showBanner

show banner function

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.showBanner();
```

### UiBanner#getBannerId

get banner id function

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.getId();
```

### UiBanner#showBannerAnimation

Triggers animation, that show banner

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.showBannerAnimation();
```

### UiBanner#closeBanner

Close banner upon user click

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.closeBanner();
```

### UiBanner#hideBanner

hides banner and destroying timer

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.hideBanner ();
```

### UiBanner#hideBannerAnimation

Trigger for hide banner animation

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.hideBannerAnimation();
```

### UiBanner#setBannerCookie

Set expiration cookie on banner closing

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.setBannerCookie();
```

### UiBanner#killBanner

Utility method to handle banner destruction

#### Examples

```javascript
const uiBanner = new UiBanner({});
uiBanner.killBanner();
```

### UiPopup

#### Parameters

-   `args` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** all arguments

#### Examples

```javascript
const uiPopup = new UiPopup({});
```

### UiPopup#run

run popup function

#### Parameters

-   `banner` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object
-   `tagManager` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** object

#### Examples

```javascript
const uiPopup = new UiPopup({});
uiPopup.run();
```

### UiPopup#showBanner

show popup function

#### Examples

```javascript
const uiPopup = new UiPopup({});
uiPopup.showPopup();
```

### UiPopup#hidePopup

hide popup function

#### Parameters

-   `outTarget` **[boolean](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Boolean)** object

#### Examples

```javascript
const uiPopup = new UiPopup({});
uiPopup.hidePopup();
```

### UiPopup#hidePopup

hide popup function with set cookie about not open again

#### Examples

```javascript
const uiPopup = new UiPopup({});
uiPopup.hidePopupWithSetCookie ();
```

### UiPopup#outTarget

outTarget popup click function

#### Parameters

-   `event` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** jQuery Event

#### Examples

```javascript
const uiPopup = new UiPopup({});
$(document).on('click', uiPopup.outTarget);
```

## Initiators/Analytics

### TagManager

#### Parameters

-   `args` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** all arguments

#### Examples

```javascript
const tagManager = new TagManager({});
```

### TagManager#onClickBanner

Tag manager event click banner

#### Examples

```javascript
const tagManager = new TagManager({});
tagManager.onClickBanner();
```

### TagManager#onShowBanner

Tag manager event show banner

#### Examples

```javascript
const tagManager = new TagManager({});
tagManager.onShowBanner();
```

### TagManager#onClickPopup

Tag manager event on popupp click

#### Examples

```javascript
const tagManager = new TagManager({});
tagManager.onClickPopup();
```

### TagManager#onShowPopup

Tag manager event on popups show

#### Examples

```javascript
const tagManager = new TagManager({});
tagManager.onShowPopup();
```

## Initiators/EventManager

## runTimer

## runTimer

## destroyTimer

## destroyTimer

## createClockTimerInstance

### Parameters

-   `timerFace`  
-   `timerFace` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** One of: daily, hourly, counter

## createClockTimerInstance

### Parameters

-   `timerFace`  
-   `timerFace` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** One of: daily, hourly, counter

## createClockTimerProps

### Parameters

-   `args`  
    -   `args.direction` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** timer direction (decrement | increment)
    -   `args.startDateMs` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** timer start date
    -   `args.endDateMs` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** timer end date
    -   `args.language` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** timer localization
    -   `args.id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** timer name
    -   `args.timerFace` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** timer type

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)&lt;any>** 

## createClockTimerProps

### Parameters

-   `args`  
    -   `args.direction` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** timer direction (decrement | increment)
    -   `args.startDateMs` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)?** timer start date
    -   `args.endDateMs` **[number](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Number)** timer end date
    -   `args.language` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)?** timer localization
    -   `args.id` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** timer name
    -   `args.timerFace` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** timer type

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)&lt;any>** 

## Utils

Other instruments for normal working project

### Parameters

#### Parameters

-   `selector` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** selector to main wrapper for promotion block

#### Examples

```javascript
const params = parameters.parse('.Promotion');
```

### Parameters#parse

Parse and return all params

#### Parameters

-   `selector` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** jQuery selector

#### Examples

```javascript
const params = new Parameters();
params.parse('.Promotion');
```

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 

### Parameters#update

Parse and return all params

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** new data

#### Examples

```javascript
const params = new Parameters();
params.update({});
```

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** 

### Parameters#prepareData

prepare data for all initiators

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** data

### Parameters#validate

prepare data for time

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** validate data

### Parameters#other

prepare data for other

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** data

### Parameters#lang

prepare data for lang

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** data

### Parameters#validFormatDate

validation date format

#### Parameters

-   `date` **[String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** date

### Parameters#time

prepare data for time

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** data

### Parameters#flipClock

prepare data for flipClock

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** final Data

### Parameters#banner

prepare data for banner and popup

#### Parameters

-   `data` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** row parameters

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** final Data
