parent->filter(); } /** * Get button class name. * * @return string */ protected function getElementClassName() { if (! $this->btnClassName) { $this->btnClassName = 'filter-btn-'.Str::random(8); } return $this->btnClassName; } /** * Set up script for filter button. */ protected function setupScripts() { $filter = $this->filter(); $id = $filter->filterID(); if ($filter->mode() === Filter::MODE_RIGHT_SIDE) { if ($this->filter()->grid()->model()->getCurrentPage() > 1) { $expand = 'false'; } else { $expand = $filter->expand ? 'true' : 'false'; } $script = <<getElementClassName()}').on('click', function () { if (! slider) { initSlider() } slider.toggle(); return false }); $('.wrapper').on('click', '.modal', function (e) { if (typeof e.cancelBubble != "undefined") { e.cancelBubble = true; } if (typeof e.stopPropagation != "undefined") { e.stopPropagation(); } }); $(document).on('click', '.wrapper', function (e) { if (slider && slider.close) { slider.close(); } }); })(); JS; } else { $script = <<getElementClassName()}').on('click', function(){ $('#{$id}').parent().toggleClass('d-none'); }); JS; } Admin::script($script); } /** * @return mixed */ protected function renderScopes() { return $this->filter()->scopes()->map->render()->implode("\r\n"); } /** * Get label of current scope. * * @return string */ protected function currentScopeLabel() { if ($scope = $this->filter()->getCurrentScope()) { return " {$scope->getLabel()} "; } return ''; } /** * {@inheritdoc} */ public function render() { $filter = $this->filter(); $scopres = $filter->scopes(); $filters = $filter->filters(); $valueCount = $filter->mode() === Filter::MODE_RIGHT_SIDE ? count($this->parent->filter()->getConditions()) : 0; if ($scopres->isEmpty() && ! $filters) { return; } $this->setupScripts(); $onlyScopes = ((! $filters || $this->parent->option('show_filter') === false) && ! $scopres->isEmpty()) ? true : false; $variables = [ 'scopes' => $scopres, 'current_label' => $this->currentScopeLabel(), 'url_no_scopes' => $filter->urlWithoutScopes(), 'btn_class' => $this->getElementClassName(), 'expand' => $filter->expand, 'show_filter_text' => true, 'only_scopes' => $onlyScopes, 'valueCount' => $valueCount, ]; return view($this->view, $variables)->render(); } }