Class yii\jui\Selectable
Inheritance | yii\jui\Selectable » yii\jui\Widget » yii\base\Widget |
---|---|
Available since extension's version | 2.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
Selectable::end();
See also http://api.jqueryui.com/selectable/.
Public 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 |
Public 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
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
Constant | Value | Description | Defined By |
---|---|---|---|
MODE_BEGIN | 'MODE_BEGIN' | yii\jui\Selectable | |
MODE_DEFAULT | 'MODE_DEFAULT' | yii\jui\Selectable |
Property Details
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.
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' => [],
]
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.
Method Details
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);
}
Initializes the widget.
public void init ( ) |
public function init()
{
parent::init();
if ($this->mode === self::MODE_BEGIN) {
echo Html::beginTag('div', $this->options) . "\n";
}
}
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));
}
}
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);
}
}
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 |
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);
}
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);
}
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');
}