Add filter of type text in backend list (#3094)
Fixes #3048, credit to @ChVuagniaux
This commit is contained in:
parent
712dcf9412
commit
cbcdd76ff2
|
|
@ -142,6 +142,7 @@ class Filter extends WidgetBase
|
|||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'numberrange':
|
||||
if ($scope->value && is_array($scope->value) && count($scope->value) === 2 &&
|
||||
$scope->value[0] &&
|
||||
|
|
@ -157,6 +158,12 @@ class Filter extends WidgetBase
|
|||
$params['max'] = $max ? $max : null;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case 'text':
|
||||
$params['value'] = $scope->value;
|
||||
$params['size'] = array_get($scope->config, 'size', 10);
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -238,7 +245,7 @@ class Filter extends WidgetBase
|
|||
$this->setScopeValue($scope, $number);
|
||||
break;
|
||||
|
||||
case 'numberrange':
|
||||
case 'numberrange':
|
||||
$numbers = $this->numbersFromAjax(post('options.numbers'));
|
||||
|
||||
if (!empty($numbers)) {
|
||||
|
|
@ -252,6 +259,19 @@ class Filter extends WidgetBase
|
|||
|
||||
$this->setScopeValue($scope, $numbers);
|
||||
break;
|
||||
|
||||
case 'text':
|
||||
$values = post('options.value');
|
||||
|
||||
if (!is_null($values) && $values !== '') {
|
||||
list($value) = $values;
|
||||
}
|
||||
else {
|
||||
$value = null;
|
||||
}
|
||||
|
||||
$this->setScopeValue($scope, $value);
|
||||
break;
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -705,6 +725,25 @@ class Filter extends WidgetBase
|
|||
|
||||
break;
|
||||
|
||||
case 'text':
|
||||
/*
|
||||
* Condition
|
||||
*/
|
||||
if ($scopeConditions = $scope->conditions) {
|
||||
$query->whereRaw(DbDongle::parse(strtr($scopeConditions, [
|
||||
':value' => Db::getPdo()->quote($scope->value),
|
||||
])));
|
||||
}
|
||||
|
||||
/*
|
||||
* Scope
|
||||
*/
|
||||
elseif ($scopeMethod = $scope->scope) {
|
||||
$query->$scopeMethod($scope->value);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
$value = is_array($scope->value) ? array_keys($scope->value) : $scope->value;
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
<div class="filter-scope text loading-indicator-container size-input-text">
|
||||
<label class="filter-label">
|
||||
<?= e(trans($scope->label)) ?>:
|
||||
<input type="text"
|
||||
name="options[value][]"
|
||||
data-request="listFilter::onFilterUpdate"
|
||||
data-request-data="'scopeName':'<?= $scope->scopeName ?>'"
|
||||
data-track-input
|
||||
data-load-indicator
|
||||
data-load-indicator-opaque
|
||||
size="<?= $size ?>"
|
||||
value="<?= isset($value) ? $value:''; ?>"
|
||||
class="form-control"/>
|
||||
</label>
|
||||
</div>
|
||||
|
|
@ -86,6 +86,31 @@
|
|||
}
|
||||
}
|
||||
|
||||
&.text {
|
||||
padding: 0 10px;
|
||||
|
||||
&, label {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: inline;
|
||||
width: auto;
|
||||
height: 30px;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: '';
|
||||
}
|
||||
|
||||
.loading-indicator {
|
||||
top: -2px;
|
||||
right: 7px;
|
||||
left: auto;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover, &.active {
|
||||
&, &.custom-checkbox label {
|
||||
color: @color-filter-text-active;
|
||||
|
|
|
|||
|
|
@ -2881,6 +2881,11 @@ ul.autocomplete.dropdown-menu.inspector-autocomplete li a{padding:5px 12px;white
|
|||
.control-filter > .filter-scope.checkbox,.control-filter > .filter-scope.checkbox label{margin-bottom:0}
|
||||
.control-filter > .filter-scope.checkbox label{padding-left:25px}
|
||||
.control-filter > .filter-scope.checkbox:after{content:''}
|
||||
.control-filter > .filter-scope.text{padding:0 10px}
|
||||
.control-filter > .filter-scope.text,.control-filter > .filter-scope.text label{margin:0}
|
||||
.control-filter > .filter-scope.text .form-control{display:inline;width:auto;height:30px;margin-left:10px}
|
||||
.control-filter > .filter-scope.text:after{content:''}
|
||||
.control-filter > .filter-scope.text .loading-indicator{top:-2px;right:7px;left:auto}
|
||||
.control-filter > .filter-scope:hover,.control-filter > .filter-scope.active,.control-filter > .filter-scope:hover.custom-checkbox label,.control-filter > .filter-scope.active.custom-checkbox label{color:#000000}
|
||||
.control-filter > .filter-scope:hover .filter-label,.control-filter > .filter-scope.active .filter-label{color:#000000}
|
||||
.control-filter > .filter-scope:hover.active .filter-setting,.control-filter > .filter-scope.active.active .filter-setting{background-color:#5f9a4c}
|
||||
|
|
|
|||
Loading…
Reference in New Issue