Class yii\jui\Selectable

Inheritanceyii\jui\Selectable » yii\jui\Widget » yii\base\Widget
Available since extension's version2.0
Source Code https://github.com/yiisoft/yii2-jui/blob/master/Selectable.php

Selectable renders a selectable jQuery UI widget.

For example:

echo Selectable::widget([
    'items' => [
        'Item 1',
        [
            'content' => 'Item2',
        ],
        [
            'content' => 'Item3',
            'options' => [
                'tag' => 'li',
            ],
        ],
    ],
    'options' => [
        'tag' => 'ul',
    ],
    'itemOptions' => [
        'tag' => 'li',
    ],
    'clientOptions' => [
        'tolerance' => 'fit',
    ],
]);

Selectable in begin mode.

Selectable::begin([
    'clientOptions' => [
        'filter' => 'my-selectable-item',
        'tolerance' => 'touch',
    ],
]);
  • Item 1
  • Item 2
  • Item 3
  • Item 4
Another item
Selectable::end();

See also http://api.jqueryui.com/selectable/.

Public Properties

Hide inherited properties

Property Type Description Defined By
$clientEventMap array Event names mapped to what should be specified in .on(). yii\jui\Widget
$clientEvents array The event handlers for the underlying jQuery UI widget. yii\jui\Widget
$clientOptions array The options for the underlying jQuery UI widget. yii\jui\Widget
$itemOptions array List of HTML attributes for the item container tags. yii\jui\Selectable
$items array List of selectable items. yii\jui\Selectable
$mode string The mode used to render the widget. yii\jui\Selectable
$options array The HTML attributes for the widget container tag. yii\jui\Selectable

Protected Properties

Hide inherited properties

Property Type Description Defined By

Public Methods

Hide inherited methods

Method Description Defined By
begin() Begins a widget. yii\jui\Selectable
init() Initializes the widget. yii\jui\Selectable
renderItems() Renders selectable items as specified on $items. yii\jui\Selectable
run() Renders the widget. yii\jui\Selectable

Protected Methods

Hide inherited methods

Method Description Defined By
registerClientEvents() Registers a specific jQuery UI widget events yii\jui\Widget
registerClientOptions() Registers a specific jQuery UI widget options yii\jui\Widget
registerWidget() Registers a specific jQuery UI widget asset bundle, initializes it with client options and registers related events yii\jui\Widget

Constants

Hide inherited constants

Constant Value Description Defined By
MODE_BEGIN 'MODE_BEGIN' yii\jui\Selectable
MODE_DEFAULT 'MODE_DEFAULT' yii\jui\Selectable

Property Details

Hide inherited properties

$itemOptions public property

List of HTML attributes for the item container tags. This will be overwritten by the "options" set in individual $items. The following special options are recognized:

  • tag: string, defaults to "li", the tag name of the item container tags.

See also \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $itemOptions = []
$items public property

List of selectable items. Each item can be a string representing the item content or an array of the following structure:

[
    'content' => 'item content',
    // the HTML attributes of the item container tag. This will overwrite "itemOptions".
    'options' => [],
]
public array $items = []
$mode public property

The mode used to render the widget.

public string $mode self::MODE_DEFAULT
$options public property

The HTML attributes for the widget container tag. The following special options are recognized:

  • tag: string, defaults to "ul", the tag name of the container tag of this widget.

See also \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.

public array $options = []

Method Details

Hide inherited methods

begin() public static method

Begins a widget.

This method creates an instance of the calling class setting the MODE_BEGIN mode. Any item between begin() and end() which match the filter attribute, will be selectable. It will apply the configuration to the created instance. A matching end() call should be called later. As some widgets may use output buffering, the end() call should be made in the same view to avoid breaking the nesting of output buffers.

See also \yii\jui\end().

public static static begin ( $config = [] )
$config array

Name-value pairs that will be used to initialize the object properties

return yii\jui\Selectable

The newly created widget instance

                public static function begin($config = []) {
    $config['mode'] = self::MODE_BEGIN;
    parent::begin($config);
}

            
init() public method

Initializes the widget.

public void init ( )

                public function init()
{
    parent::init();
    if ($this->mode === self::MODE_BEGIN) {
        echo Html::beginTag('div', $this->options) . "\n";
    }
}

            
registerClientEvents() protected method

Defined in: yii\jui\Widget::registerClientEvents()

Registers a specific jQuery UI widget events

protected void registerClientEvents ( $name, $id )
$name string

The name of the jQuery UI widget

$id string

The ID of the widget

                protected function registerClientEvents($name, $id)
{
    if (!empty($this->clientEvents)) {
        $js = [];
        foreach ($this->clientEvents as $event => $handler) {
            if (isset($this->clientEventMap[$event])) {
                $eventName = $this->clientEventMap[$event];
            } else {
                $eventName = strtolower($name . $event);
            }
            $js[] = "jQuery('#$id').on('$eventName', $handler);";
        }
        $this->getView()->registerJs(implode("\n", $js));
    }
}

            
registerClientOptions() protected method

Defined in: yii\jui\Widget::registerClientOptions()

Registers a specific jQuery UI widget options

protected void registerClientOptions ( $name, $id )
$name string

The name of the jQuery UI widget

$id string

The ID of the widget

                protected function registerClientOptions($name, $id)
{
    if ($this->clientOptions !== false) {
        $options = empty($this->clientOptions) ? '' : Json::htmlEncode($this->clientOptions);
        $js = "jQuery('#$id').$name($options);";
        $this->getView()->registerJs($js);
    }
}

            
registerWidget() protected method

Defined in: yii\jui\Widget::registerWidget()

Registers a specific jQuery UI widget asset bundle, initializes it with client options and registers related events

protected void registerWidget ( $name, $id null )
$name string

The name of the jQuery UI widget

$id string

The ID of the widget. If null, it will use the id value of $options.

                protected function registerWidget($name, $id = null)
{
    if ($id === null) {
        $id = $this->options['id'];
    }
    JuiAsset::register($this->getView());
    $this->registerClientEvents($name, $id);
    $this->registerClientOptions($name, $id);
}

            
renderItems() public method

Renders selectable items as specified on $items.

public string renderItems ( )
return string

The rendering result.

                public function renderItems()
{
    $items = [];
    foreach ($this->items as $item) {
        $options = $this->itemOptions;
        $tag = ArrayHelper::remove($options, 'tag', 'li');
        if (is_array($item)) {
            if (!array_key_exists('content', $item)) {
                throw new InvalidConfigException("The 'content' option is required.");
            }
            $options = array_merge($options, ArrayHelper::getValue($item, 'options', []));
            $tag = ArrayHelper::remove($options, 'tag', $tag);
            $items[] = Html::tag($tag, $item['content'], $options);
        } else {
            $items[] = Html::tag($tag, $item, $options);
        }
    }
    return implode("\n", $items);
}

            
run() public method

Renders the widget.

public void run ( )

                public function run()
{
    if ($this->mode === self::MODE_BEGIN) {
        echo Html::endTag('div') . "\n";
    } else {
        $options = $this->options;
        $tag = ArrayHelper::remove($options, 'tag', 'ul');
        echo Html::beginTag($tag, $options) . "\n";
        echo $this->renderItems() . "\n";
        echo Html::endTag($tag) . "\n";
    }
    
    $this->registerWidget('selectable');
}