Blame view

vendor/yiisoft/yii2-jui/SliderInput.php 2.71 KB
b507d689   andryeyev   Итерация 1 (Терми...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
  <?php
  /**
   * @link http://www.yiiframework.com/
   * @copyright Copyright (c) 2008 Yii Software LLC
   * @license http://www.yiiframework.com/license/
   */
  
  namespace yii\jui;
  
  use yii\helpers\Html;
  
  /**
   * SliderInput renders a slider jQuery UI widget that writes its value into hidden input.
   *
   * For example,
   *
   * ```
   * echo SliderInput::widget([
   *     'model' => $model,
   *     'attribute' => 'amount',
   *     'clientOptions' => [
   *         'min' => 1,
   *         'max' => 10,
   *     ],
   * ]);
   * ```
   *
   * The following example will use the name property instead:
   *
   * ```
   * echo SliderInput::widget([
   *     'name' => 'amount',
   *     'clientOptions' => [
   *         'min' => 1,
   *         'max' => 10,
   *     ],
   * ]);
   * ```
   *
   * You can also use this widget in an [[yii\widgets\ActiveForm|ActiveForm]] using the [[yii\widgets\ActiveField::widget()|widget()]]
   * method, for example like this:
   *
   * ```php
   * <?= $form->field($model, 'from_date')->widget(\yii\jui\SliderInput::classname(), [
   *     'clientOptions' => [
   *         'min' => 1,
   *         'max' => 10,
   *     ],
   * ]) ?>
   * ```
   *
   * @see http://api.jqueryui.com/slider/
   * @author Alexander Makarov <sam@rmcreative.ru>
   * @since 2.0
   */
  class SliderInput extends InputWidget
  {
      /**
       * @var array the HTML attributes for the container tag.
       * @see \yii\helpers\Html::renderTagAttributes() for details on how attributes are being rendered.
       */
      public $containerOptions = [];
  
      /**
       * @inheritDoc
       */
      protected $clientEventMap = [
          'change' => 'slidechange',
          'create' => 'slidecreate',
          'slide' => 'slide',
          'start' => 'slidestart',
          'stop' => 'slidestop',
      ];
  
  
      /**
       * @inheritdoc
       */
      public function init()
      {
          parent::init();
          if (!isset($this->containerOptions['id'])) {
              $this->containerOptions['id'] = $this->options['id'] . '-container';
          }
      }
  
      /**
       * Executes the widget.
       */
      public function run()
      {
          echo Html::tag('div', '', $this->containerOptions);
  
          if ($this->hasModel()) {
              echo Html::activeHiddenInput($this->model, $this->attribute, $this->options);
              $this->clientOptions['value'] = Html::getAttributeValue($this->model, $this->attribute);
          } else {
              echo Html::hiddenInput($this->name, $this->value, $this->options);
              $this->clientOptions['value'] = $this->value;
          }
  
          if (!isset($this->clientEvents['slide'])) {
              $this->clientEvents['slide'] = 'function (event, ui) {
                  $("#' . $this->options['id'] . '").val(ui.value);
              }';
          }
  
          $this->registerWidget('slider', $this->containerOptions['id']);
      }
  }