/** * Executes the widget. */ public function run() { Html::addCssClass($this->inputOptions, 'spinner-input form-control'); $this->buttonsConfig = array_merge(['label' => ''], $this->buttonsConfig); if ($this->hasModel()) { $input = Html::activeTextInput($this->model, $this->attribute, $this->inputOptions); } else { $input = Html::textInput($this->name, $this->value, $this->inputOptions); } if ($this->buttonsLocation == self::BUTTONS_LOCATION_VERTICAL) { $this->buttonsConfig = array_merge($this->buttonsConfig, ['size' => Button::SIZE_MINI]); } $btnUp = Button::widget(array_merge($this->buttonsConfig, ['icon' => 'fa fa-angle-up', 'options' => ['class' => 'spinner-up']])); $btnDown = Button::widget(array_merge($this->buttonsConfig, ['icon' => 'fa fa-angle-down', 'options' => ['class' => 'spinner-down']])); if ($this->buttonsLocation == self::BUTTONS_LOCATION_VERTICAL) { $spinner = $input . Html::tag('div', $btnUp . $btnDown, ['class' => 'spinner-buttons input-group-btn btn-group-vertical']); } else { $spinner = Html::tag('div', $btnUp . $input . $btnDown, ['class' => 'spinner-buttons input-group-btn']); } echo Html::tag('div', Html::tag('div', $spinner, ['class' => 'input-group input-' . $this->size]), $this->options); SpinnerAsset::register($this->view); $this->registerPlugin('spinner'); }
/** * Renders the button. * @return string the rendering result */ protected function renderButton() { //$label = Html::tag('span', $this->label, ['class' => 'hidden-sm hidden-xs']); $label = Html::tag('span', $this->label); if ($this->split) { $leftBtn = Button::widget($a = ArrayHelper::merge($this->button, ['label' => $label, 'encodeLabel' => false, 'tagName' => $this->tagName])); $rightBtn = Button::widget(ArrayHelper::merge($this->button, ['label' => '<i class="fa fa-angle-down"></i>', 'encodeLabel' => false, 'options' => $this->options, 'tagName' => $this->tagName])); } else { $label .= ' <i class="fa fa-angle-down"></i>'; if (!isset($this->options['href'])) { $this->options['href'] = '#'; } $leftBtn = Button::widget(ArrayHelper::merge($this->button, ['label' => $label, 'encodeLabel' => false, 'options' => $this->options, 'tagName' => $this->tagName])); $rightBtn = ''; } return sprintf('%s%s', $leftBtn, $rightBtn); }
/** * Executes the widget. */ public function run() { if (empty($this->clientOptions['format'])) { $this->clientOptions['format'] = 'MM/DD/YYYY'; } if (empty($this->labelDateFormat)) { $this->labelDateFormat = $this->clientOptions['format']; } if ($this->hasModel()) { $hiddenInput = Html::activeHiddenInput($this->model, $this->attribute); $input = Html::activeTextInput($this->model, $this->attribute); $name = Html::getInputName($this->model, $this->attribute); $value = $this->model->{$this->attribute}; $this->options['id'] .= '-picker'; } else { $hiddenInput = Html::hiddenInput($this->name, $this->value); $input = Html::textInput($this->name, $this->value, ['class' => 'form-control']); $name = $this->name; $value = $this->value; } $arrValue = array_map('trim', ($value = explode($this->separator, $value)) ? $value : []); $callback = ''; $initJS = ''; $lines = []; switch ($this->mode) { case self::MODE_ADVANCE: Html::addCssClass($this->options, 'btn ' . $this->type); $lines[] = $hiddenInput; $lines[] = Html::beginTag('div', $this->options); if (!empty($this->icon)) { $lines[] = Html::tag('i', '', ['class' => $this->icon]) . ' '; } $lines[] = Html::tag('span', ' '); $lines[] = Html::tag('b', '', ['class' => 'fa fa-angle-down']); $lines[] = Html::endTag('div'); $callback = "function (start, end) {\n \$('#{$this->options['id']} span')\n .html(start.format('{$this->labelDateFormat}')\n + '{$this->separator}' + end.format('{$this->labelDateFormat} '));\n // set value to hidden input\n \$('input[name=\"{$name}\"]').val(start.format('{$this->clientOptions['format']}')\n + '{$this->separator}' + end.format('{$this->clientOptions['format']}'));\n }"; if (count($arrValue) == 2) { $initJS = "\n !(function(\$){\n var el = \$('#{$this->options['id']}');\n el.data('daterangepicker')\n .setStartDate(moment('{$arrValue[0]}', '{$this->clientOptions['format']}'));\n el.data('daterangepicker')\n .setEndDate(moment('{$arrValue[1]}', '{$this->clientOptions['format']}'));\n el.find('span')\n .html(moment('{$arrValue[0]}', '{$this->clientOptions['format']}').format('{$this->labelDateFormat}')\n + '{$this->separator}'\n + moment('{$arrValue[1]}', '{$this->clientOptions['format']}').format('{$this->labelDateFormat} '));\n })(jQuery);\n "; } break; case self::MODE_INPUT: Html::addCssClass($this->options, 'input-group'); $lines[] = Html::beginTag('div', $this->options); $lines[] = $input; $lines[] = Html::beginTag('span', ['class' => 'input-group-btn']); $lines[] = Button::widget(['label' => ' ', 'icon' => $this->icon, 'type' => $this->type, 'iconPosition' => Button::ICON_POSITION_RIGHT]); $lines[] = Html::endTag('span'); $lines[] = Html::endTag('div'); $callback = "function (start, end) {\n \$('#{$this->options['id']} input')\n .val(start.format('{$this->clientOptions['format']}')\n + '{$this->separator}' + end.format('{$this->clientOptions['format']} '));\n // set value to hidden input\n \$('input[name=\"{$name}\"]').val(start.format('{$this->clientOptions['format']}')\n + '{$this->separator}' + end.format('{$this->clientOptions['format']}'));\n }"; if (count($arrValue) == 2) { $initJS = "\n !(function(\$){\n var el = \$('#{$this->options['id']}');\n el.data('daterangepicker')\n .setStartDate(moment('{$arrValue[0]}', '{$this->clientOptions['format']}'));\n el.data('daterangepicker')\n .setEndDate(moment('{$arrValue[1]}', '{$this->clientOptions['format']}'));\n el.find('input')\n .val(moment('{$arrValue[0]}', '{$this->clientOptions['format']}').format('{$this->clientOptions['format']}')\n + '{$this->separator}'\n + moment('{$arrValue[1]}', '{$this->clientOptions['format']}').format('{$this->clientOptions['format']} '));\n })(jQuery);\n "; } break; } echo implode("\n", $lines); DateRangePickerAsset::register($this->view); $this->registerPlugin('daterangepicker', $callback); if (!empty($initJS)) { $this->view->registerJs($initJS, View::POS_READY); } }
/** * Generates the button dropdown. * @return string the rendering result. */ protected function renderButton() { $this->addCssClass($this->buttonOptions, 'btn'); if ($this->split) { $tag = 'button'; $options = $this->buttonOptions; $this->buttonOptions['data-toggle'] = 'dropdown'; $this->addCssClass($this->buttonOptions, 'dropdown-toggle'); $splitButton = Button::widget(array('label' => '<span class="caret"></span>', 'encodeLabel' => false, 'options' => $this->buttonOptions)); } else { $tag = 'a'; $this->label .= ' <span class="caret"></span>'; $options = $this->buttonOptions; if (!isset($options['href'])) { $options['href'] = '#'; } $this->addCssClass($options, 'dropdown-toggle'); $options['data-toggle'] = 'dropdown'; $splitButton = ''; } return Button::widget(array('tagName' => $tag, 'label' => $this->label, 'options' => $options, 'encodeLabel' => false)) . "\n" . $splitButton; }
/** * Renders the toggle button. * @return string the rendering result */ protected function renderToggleButton() { if (!empty($this->toggleButton)) { return Button::widget($this->toggleButton); } else { return null; } }