# SmartUI::Button Class
This is a basic usage of SmartUI's ```Button``` class. If you want to know more about the real HTML layout, click [here](buttons.php)
```php
SmartUI::Button([$content = '', $type = 'default', $options = array()])
```
## Setup
```php
$btn = $_ui->create_button('Button Content', 'default');
```
## Usage
```php
$btn->attr('href' => 'http://your-url.com');
```
## Print it!
```php
$btn->print_html();
```
## Property Reference
Below are the list of available properties for the class:
### Button::options
An ```array```
```php
$options = array(
'disabled' => false,
'labeled' => false // must have the Button::icon property
);
// sample call
$btn->options(array('disabled'=>true, 'labeled'=>true));
// or ...
$btn->options('disabled', true)->options('labeled', true);
```
### Button::content
A ```string``` - main content of the button. You can set this upon ```SmartUI::create_button('Click Me');```
```php
$btn->content('Click Me');
```
### Button::icon
A ```string``` - icon of the button (e.g. ```fa-check```)
```php
$btn->icon('fa-check');
```
### Button::type
A ```string``` - button type (```default```, ```danger```, etc.)
```php
$btn->type('success');
```
### Button::container
A ```string``` - container of the button (e.g. ``` ... ```)
```
$btn->container('button');
```
### Button::size
A ```string``` - button sizes (```lg```, ```sm```, etc.)
```php
const BUTTON_SIZE_LARGE = 'lg';
const BUTTON_SIZE_SMALL = 'sm';
const BUTTON_SIZE_XSMALL = 'xs';
const BUTTON_SIZE_MEDIUM = 'md';
//sample call
$btn->size(Button::BUTTON_SIZE_LARGE);
```
### Button::attr
A ```string``` or ```closure``` or ```array``` - custom button attributes
```php
// if array
$btn->attr(array('data-some-id' => 12345)); // etc.
// or ...
$btn->attr('data-some-id', 12345)->attr('href', 'http://myurl.com')->attr('target', '_blank');
```
### Button::class
A ```string``` or ```array``` or ```closure``` - additional button class
```php
$btn->class(array('bg-color-red', 'txt-color-white'));
// or ...
$btn->class(function($btn) {
return array('bg-color-red', 'txt-color-white');
})
```
### Button::dropdown
An ```array``` or ```closure``` - array of dropdown properties
```php
$dropdown = array(
'items' => array(),
'split' => array( // array or boolean or string (set to 'type' key) or closure (must return same structure array)
'type' => $type,
'disabled' => false,
'dropup' => false,
'class' => array(), // or string
'attr' => array()
),
'multilevel' => false
);
// sample call
$items = array(
'Some action',
'Some other action',
'-',
array(
'content' => 'Hover me for more options',
'submenu' => array(
'Second level',
array(
'content' => 'Even More..',
'submenu' => array(
'3rd level',
'3rd level'
)
),
'Second level',
'Second level'
)
)
);
$btn->dropdown('items', $items)->dropdown('split', true);
// or ... set the dropdown's own type
$btn->dropdown('items', $items)->dropdown('split', 'success');
```
## Tips!
You can pass a ```closure``` and return an ```array``` (same way as passing the ```array``` directly) to some properties
```php
$btn->class(function($btn) {
return array('bg-color-red', 'txt-color-white');
})
```