Skip to content

Commit 1c54188

Browse files
committed
Merge branch '4.90-bug-fixes' into develop
2 parents 17b5383 + a7bc264 commit 1c54188

2 files changed

Lines changed: 40 additions & 11 deletions

File tree

src/Presentation/Nop.Web/Themes/DefaultClean/Content/css/styles.rtl.css

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1748,12 +1748,17 @@ label, label + * {
17481748
padding-right: 8px;
17491749
flex-grow: 1;
17501750
}
1751-
1751+
17521752
.price-range-filter .selected-price-range {
17531753
padding: 5px 0;
1754+
overflow: hidden;
17541755
}
17551756

17561757
.price-range-filter .selected-price-range .from {
1758+
float: right;
1759+
}
1760+
1761+
.price-range-filter .selected-price-range .to {
17571762
float: left;
17581763
}
17591764

src/Presentation/Nop.Web/Views/Catalog/_FilterPriceBox.cshtml

Lines changed: 34 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,35 +12,59 @@
1212
<span class="to"></span>
1313
</div>
1414
<div id="price-range-slider"></div>
15+
1516
<script asp-location="Footer">
1617
$(function() {
1718
var $priceRangeEl = $("#price-range-slider");
19+
var isRtl = document.documentElement.dir === "rtl";
20+
var rangeMin = @Model.AvailablePriceRange.From;
21+
var rangeMax = @Model.AvailablePriceRange.To;
22+
23+
// In RTL we mirror the *value domain* (not the visual layout) so that
24+
// the handle physically on the right always represents the minimum price
25+
// and the handle physically on the left always represents the maximum price.
26+
// This keeps jQuery UI's native mouse/drag math completely untouched.
27+
function toInternal(realValue) {
28+
return isRtl ? (rangeMin + rangeMax - realValue) : realValue;
29+
}
30+
function toReal(internalValue) {
31+
return isRtl ? (rangeMin + rangeMax - internalValue) : internalValue;
32+
}
33+
34+
var selectedFrom = @Model.SelectedPriceRange.From;
35+
var selectedTo = @Model.SelectedPriceRange.To;
36+
37+
var initialValues = isRtl
38+
? [toInternal(selectedTo), toInternal(selectedFrom)]
39+
: [selectedFrom, selectedTo];
40+
1841
$priceRangeEl.slider({
1942
range: true,
20-
min: @Model.AvailablePriceRange.From,
21-
max: @Model.AvailablePriceRange.To,
22-
values: [
23-
@Model.SelectedPriceRange.From,
24-
@Model.SelectedPriceRange.To
25-
],
43+
min: rangeMin,
44+
max: rangeMax,
45+
values: initialValues,
2646
slide: function (event, ui) {
27-
setSelectedPriceRange(ui.values[0], ui.values[1]);
47+
var from = isRtl ? toReal(ui.values[1]) : ui.values[0];
48+
var to = isRtl ? toReal(ui.values[0]) : ui.values[1];
49+
setSelectedPriceRange(from, to);
2850
},
2951
stop: function () {
3052
CatalogProducts.getProducts();
3153
}
3254
});
3355
3456
setSelectedPriceRange(
35-
$priceRangeEl.slider("values", 0),
36-
$priceRangeEl.slider("values", 1)
57+
isRtl ? toReal($priceRangeEl.slider("values", 1)) : $priceRangeEl.slider("values", 0),
58+
isRtl ? toReal($priceRangeEl.slider("values", 0)) : $priceRangeEl.slider("values", 1)
3759
);
3860
3961
$(CatalogProducts).on('before', function (e) {
4062
var priceRange = $priceRangeEl.slider('values');
4163
if (priceRange && priceRange.length > 0) {
64+
var from = isRtl ? toReal(priceRange[1]) : priceRange[0];
65+
var to = isRtl ? toReal(priceRange[0]) : priceRange[1];
4266
e.payload.urlBuilder
43-
.addParameter('price', priceRange.join('-'));
67+
.addParameter('price', from + '-' + to);
4468
}
4569
});
4670
});

0 commit comments

Comments
 (0)