#### Keen - The Ultimate Multi-Demo Bootstrap Admin Theme

#### The most complete UI/UX template solution for today's web projects of any size

## Global Javascripts

Keen comes with a globally available `KTApp` JS class with general purpose helper functions. The script file is located at `[root]/theme/default/src/theme/framework/lib/app.js`

Function | Description
--- | ---
Private Functions
`initTooltip(el)` | Initialize single tooltip.
Input Parameters
Name | Type | Description
--- | --- | ---
`el` | `HTMLElement` | HTML element from jQuery object or KTUtil.get() functions.
`initTooltips()` | Initialize all tooltips found in the page. The HTML elements must have an atrribute `data-toggle="kt-tooltip"`
`initPopover(el)` | Initialize single popover.
Input Parameters
Name | Type | Description
--- | --- | ---
`el` | `HTMLElement` | HTML element from jQuery object or KTUtil.get() functions.
`initPopovers()` | Initialize all popovers found in the page. The HTML elements must have an atrribute `data-toggle="kt-popover"`
`initFileInput()` | Initialize event on change to the HTML input with class `.custom-file-input`
`initPortlet(el, options)` | Initialize single portlet instance.
Input Parameters
Name | Type | Description
--- | --- | ---
`el` | `HTMLElement` | HTML element from jQuery object or `KTUtil.get()` functions.
`options` | `object` | Portlet options
`initPortlets()` | Initialize all portlets found in the page. The HTML elements must have an atrribute `data-ktportlet="true"`
`initScroll()` | Initialize all scrolls found in the page. The HTML elements must have an atrribute `data-scroll="true"`
`initAlerts()` | Initialize close alerts found in the page. The HTML elements must have an atrribute `data-close=alert"`
`initSticky()` | Initialize all sticky element found in the page. The HTML elements must have an atrribute `data-sticky="true"`
`initAbsoluteDropdown(dropdown)` | Initialize Bootstrap dropdown.
Input Parameters
Name | Type | Description
--- | --- | ---
`dropdown` | `HTMLElement` | Dropdown HTML element from jQuery object or `KTUtil.get()` functions.
Public Functions
`init()` | Initialize `initComponents()` function below.
`initComponents()` | Initialize all required components.
    initScroll();
    initTooltips();
    initPopovers();
    initAlerts();
    initPortlets();
    initFileInput();
    initSticky();
`initTooltips()` | Initialize all tooltips found in the page. The HTML elements must have an atrribute `data-toggle="kt-tooltip"`
`initTooltip(el)` | Initialize single tooltip.
Input Parameters
Name | Type | Description
--- | --- | ---
`el` | `HTMLElement` | HTML element from jQuery object or KTUtil.get() functions.
`initPopovers()` | Initialize all popovers found in the page. The HTML elements must have an atrribute `data-toggle="kt-popover"`
`initPopover(el)` | Initialize single popover.
Input Parameters
Name | Type | Description
--- | --- | ---
`el` | `HTMLElement` | HTML element from jQuery object or KTUtil.get() functions.
`initPortlet(el, options)` | Initialize single portlet instance.
Input Parameters
Name | Type | Description
--- | --- | ---
`el` | `HTMLElement` | HTML element from jQuery object or `KTUtil.get()` functions.
`options` | `object` | Portlet options
`initPortlets()` | Initialize all portlets found in the page. The HTML elements must have an atrribute `data-ktportlet="true"`
`initSticky()` | Initialize all sticky element found in the page. The HTML elements must have an atrribute `data-sticky="true"`
`initAbsoluteDropdown(dropdown)` | Initialize Bootstrap dropdown.
Input Parameters
Name | Type | Description
--- | --- | ---
`dropdown` | `HTMLElement` | Dropdown HTML element from jQuery object or `KTUtil.get()` functions.
`block(target, options)` | Call the loading spinner programatically to block the target element.
Input Parameters
Name | Type | Description
--- | --- | ---
`target` | `HTMLElement` | HTML element from jQuery object or `KTUtil.get()` functions.
`options` | `object` | Block options
`unblock(target)` | Remove the loading spinner and unblock the target element.
Input Parameters
Name | Type | Description
--- | --- | ---
`target` | `HTMLElement` | HTML element from jQuery object or `KTUtil.get()` functions.
`blockPage(options)` | Call loading spinner programatically to block the whole page. The laoding spinner is attach to the body tag.
Input Parameters
Name | Type | Description
--- | --- | ---
`options` | `object` | Block options
`unblockPage()` | Call to remove the loading spinner and unblock the page.
`progress(target, options)` | Call the spinner to the element.
Input Parameters
Name | Type | Description
--- | --- | ---
`target` | `HTMLElement` | HTML element from jQuery object or `KTUtil.get()` functions.
`options` | `object` | Progress options
`unprogress(target)` | Remove the spinner from the element.
Input Parameters
Name | Type | Description
--- | --- | ---
`target` | `HTMLElement` | HTML element from jQuery object or `KTUtil.get()` functions.
`getStateColor(name)` | Get state color by name from the colors list.
Input Parameters
Name | Type | Description
--- | --- | ---
`name` | `string` | State color name.
`getBaseColor(type, level)` | Get base color.
Input Parameters
Name | Type | Description
--- | --- | ---
`type` | `string` | Base color type.
`level` | `number` | Type color level.

### Keen’s Key Features

Keen empowers your project with virtually limitless array of options
to create endless unique projects.

- Based On Bootstrap 4.x
- Multi-Demo Concept
- Enterprise Ready Architect
- Integrated Build Tools: Gulp, NPM, Yarn, SASS
- Full RTL Support
- Included Classic(without build tool) Version
- Enterprise Ready Core Framework
- Full SASS Support
- Re-Usable Component System
- And many more...

> We truly hope that our love and dedication to produce an incredibly powerful high level solution suits all your project needs. We will continue to deliver incredible enterprise ready solutions for Angular, React and VueJS to serve you better. We sincerely hope you enjoyed using Keen as much as we enjoyed building it.

> Sean, Keenthemes Co-Author