|
2 | 2 | /** @var yii\web\View $this */
|
3 | 3 | use devgroup\JsTreeWidget\widgets\TreeInputAssetBundle;
|
4 | 4 | use devgroup\JsTreeWidget\widgets\TreeWidget;
|
| 5 | +use yii\helpers\Html; |
5 | 6 |
|
6 | 7 | /**
|
7 | 8 | * @var string $input
|
8 | 9 | * @var string $id
|
9 | 10 | * @var string $selectIcon
|
10 | 11 | * @var string $selectText
|
11 | 12 | * @var bool $multiple
|
| 13 | + * @var bool $search |
12 | 14 | * @var bool $clickToOpen
|
13 | 15 | * @var array $treeConfig
|
14 | 16 | */
|
|
35 | 37 | <?= Yii::t('jstw', 'Double click needed tree node to select it') ?>
|
36 | 38 | </div>
|
37 | 39 | <?php endif;?>
|
| 40 | + |
| 41 | + <?php if ($search): ?> |
| 42 | + <div class="input-group"> |
| 43 | + <input type="text" class="form-control tree-input__search" placeholder="<?= Html::encode(Yii::t('jstw', 'Type to search'))?>"> |
| 44 | + <a href="#" class="btn btn-default input-group-addon tree-input__search-clear"> |
| 45 | + <i class="fa fa-times fa-fw"></i> |
| 46 | + <?= Yii::t('jstw', 'Clear') ?> |
| 47 | + </a> |
| 48 | + </div> |
| 49 | + <?php endif; ?> |
| 50 | + |
38 | 51 | <?=
|
39 | 52 | TreeWidget::widget($treeConfig)
|
40 | 53 | ?>
|
|
51 | 64 | <?php
|
52 | 65 | $clickToOpenJson = $clickToOpen ? 'true' : 'false';
|
53 | 66 | $js = <<<js
|
54 |
| - $('#{$id}__tree').jstree('open_all'); |
55 | 67 | var treeInput = $('#{$id}').parent();
|
56 | 68 | var jstree = $('#{$id}__tree');
|
57 | 69 | var treeContainer = treeInput.find('.tree-input__tree-container');
|
| 70 | + var search = treeContainer.find('.tree-input__search'); |
| 71 | + if (search.length) { |
| 72 | + var to = false; |
| 73 | + search.keyup(function() { |
| 74 | + if(to) { clearTimeout(to); } |
| 75 | + to = setTimeout(function () { |
| 76 | + var v = search.val(); |
| 77 | + jstree.jstree(true).search(v); |
| 78 | + }, 250); |
| 79 | + }); |
| 80 | + |
| 81 | + treeContainer.find('.tree-input__search-clear').click(function(){ |
| 82 | + search.val(''); |
| 83 | + jstree.jstree('clear_search'); |
| 84 | + return false; |
| 85 | + }); |
| 86 | + } |
58 | 87 | var clickToOpen = $clickToOpenJson;
|
59 | 88 | if (clickToOpen) {
|
60 | 89 | var buttonArrow = treeInput.find('.tree-input__arrow');
|
|
0 commit comments