Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bootstrap 5 in admin #9371

Merged
merged 102 commits into from
May 5, 2022
Merged
Show file tree
Hide file tree
Changes from 98 commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
c4643f7
Bootstrap 5.0.0
agriffard May 6, 2021
5efd0e3
Password popover placement
agriffard May 6, 2021
03a12f1
Bootstrap bundle version for TheAgency
agriffard May 6, 2021
0b0a6cc
npm audit fix
agriffard May 8, 2021
d44de08
Merge branch 'dev' into ag/bootstrap5
agriffard May 11, 2021
f27e3dd
Merge branch 'dev' into ag/bootstrap5
agriffard May 11, 2021
6be3546
Workflows
agriffard May 11, 2021
cbe4dca
Merge branch 'dev' into ag/bootstrap5
agriffard May 11, 2021
659c615
Merge branch 'dev' into ag/bootstrap5
agriffard May 13, 2021
b539f5b
Bootstrap 5.0.1
agriffard May 13, 2021
ce5a0ab
menu
agriffard May 13, 2021
5f75e27
package-lock
agriffard May 15, 2021
0fbb7bd
Media
agriffard May 15, 2021
c0f224e
bootstrap-scss
agriffard May 22, 2021
db097dc
Merge branch 'dev' into ag/bootstrap5
agriffard May 22, 2021
a8da241
Merge branch 'dev' into ag/bootstrap5
agriffard May 28, 2021
333a1f3
Merge branch 'dev' into ag/bootstrap5
agriffard May 28, 2021
3429be2
gulp rebuild
agriffard May 28, 2021
132c8dd
Merge branch 'dev' into ag/bootstrap5
agriffard May 28, 2021
4334dbe
Merge branch 'dev' into ag/bootstrap5
agriffard Jun 2, 2021
2a1c1a8
Merge branch 'main' into ag/bootstrap5
Skrypt Oct 27, 2021
9effb59
fix functional tests
Skrypt Oct 27, 2021
fcff289
Use popper.js on all tooltips
Skrypt Oct 27, 2021
6853973
Fix $sizes
Skrypt Oct 27, 2021
c234a54
wip bootstrap-select
Skrypt Oct 27, 2021
7ebac35
remove tooltip
Skrypt Oct 27, 2021
eefbd04
Update package-lock.json files
Skrypt Oct 27, 2021
7fba909
fix build
Skrypt Oct 28, 2021
f8933ba
WIP bootstrap modals
Skrypt Oct 29, 2021
a79d131
wip bootstrap modals
Skrypt Oct 29, 2021
01045b4
wip bootstrap modals
Skrypt Oct 29, 2021
36fc049
fix confirm modal
Skrypt Oct 29, 2021
4bec2c7
cleanup
Skrypt Oct 29, 2021
7664c57
Merge branch 'main' into ag/bootstrap5
Skrypt Oct 30, 2021
d336dc4
wip
Skrypt Nov 1, 2021
497abbb
Merge branch 'main' into ag/bootstrap5
agriffard Nov 3, 2021
b26f073
Merge branch 'main' into ag/bootstrap5
Skrypt Nov 5, 2021
c5cdfb2
Merge branch 'main' into ag/bootstrap5
Skrypt Nov 8, 2021
2f86af0
Use proper semantic for dropdown-menu elements
Skrypt Nov 14, 2021
5aa586f
Fix checkboxes and list group font color
Skrypt Nov 15, 2021
546b3e0
Fix tabs font color
Skrypt Nov 15, 2021
46885f9
Merge branch 'main' into ag/bootstrap5
Skrypt Nov 15, 2021
be0bd13
wip styles
Skrypt Nov 15, 2021
2af8f22
Merge branch 'main' into ag/bootstrap5
Skrypt Dec 3, 2021
a8b7cfb
Merge branch 'main' into ag/bootstrap5
Skrypt Dec 10, 2021
b5188bb
Fix more modals
Skrypt Dec 10, 2021
1487630
Merge branch 'main' into ag/bootstrap5
Skrypt Dec 11, 2021
918689a
Merge branch 'main' into ag/bootstrap5
Skrypt Dec 14, 2021
fc11620
Merge branch 'main' into ag/bootstrap5
Skrypt Dec 14, 2021
58c2d01
Add back tooltips
Skrypt Dec 15, 2021
5d8f812
Merge branch 'main' into ag/bootstrap5
Skrypt Dec 16, 2021
3e3d5f5
Fix badges background color classes
Skrypt Dec 16, 2021
36c55dd
missing file
Skrypt Dec 16, 2021
6788840
wip
Skrypt Dec 21, 2021
1bb5adc
Merge branch 'main' into ag/bootstrap5
Skrypt Jan 7, 2022
29864f9
Fix Admin Menu collapse behavior
Skrypt Jan 7, 2022
9699b02
Merge branch 'main' into ag/bootstrap5
Skrypt Jan 21, 2022
b372624
rebuild assets with gulp pipeline
Skrypt Jan 21, 2022
0ed32f7
Merge branch 'main' into ag/bootstrap5
agriffard Mar 12, 2022
9edff54
bootstrap-select (hack for close button)
agriffard Mar 18, 2022
3b2983d
Merge branch 'main' into ag/bootstrap5
agriffard Mar 18, 2022
a5daa4b
LoginSettings.Edit.cshtml
agriffard Mar 18, 2022
07b326d
css classes
agriffard Mar 18, 2022
18a32db
@popperjs/core 2.11.4
agriffard Mar 18, 2022
615b08f
Merge branch 'main' into ag/bootstrap5
agriffard Apr 21, 2022
7c6f8a4
bootstrap-select 1.14.0-beta3
agriffard Apr 21, 2022
2226daa
Removing remaining form-inline classes
Skrypt Apr 22, 2022
3c6935a
Drop .card-columns
Skrypt Apr 22, 2022
64eae7d
Fix workflow regressions
Skrypt Apr 22, 2022
9d9593f
card-columns adjustments
Skrypt Apr 22, 2022
0ed69f3
form group
Skrypt Apr 22, 2022
864e5c6
input-group-append
Skrypt Apr 22, 2022
04ca7f7
Merge branch 'main' into ag/bootstrap5
Skrypt Apr 23, 2022
bc0c8b0
form-group
Skrypt Apr 23, 2022
c774028
input file with label
agriffard Apr 23, 2022
c569ce6
Fix audit trail settings view
Skrypt Apr 25, 2022
20caf60
Fix bootstrap-select items left padding
Skrypt Apr 25, 2022
6bf5797
Fix dropdown menu close button
Skrypt Apr 25, 2022
93fc8d1
Fix nav-tab links color
Skrypt Apr 26, 2022
732b00f
Fix flowpart selected active styles
Skrypt Apr 26, 2022
9b75952
Fix Table overflow for Lucene Queries result table
Skrypt Apr 26, 2022
2361da4
Replace specific "related" and "properties" style
Skrypt Apr 26, 2022
e00ad47
modal btn-close style
Skrypt Apr 26, 2022
e29dfa4
Fix Menu list-group styles
Skrypt Apr 26, 2022
20ead9a
Replace Bootstrap Slider with noUISlider
Skrypt Apr 26, 2022
6015bca
Add step configuration to noUISlider on Numeric Field
Skrypt Apr 26, 2022
0cc9d02
Rebuild all (gulp rebuild)
Skrypt Apr 26, 2022
1ef8f2d
Merge branch 'main' into ag/bootstrap5
Skrypt Apr 26, 2022
0c6d845
Add RTL direction to noUISlider
Skrypt Apr 28, 2022
50b2697
Fix MediaApp RTL display
Skrypt Apr 28, 2022
b5f43f7
Fix NoUiSlider RTL styles
Skrypt Apr 28, 2022
f20a7f4
Fix sortable menus regression
Skrypt Apr 29, 2022
d97dd2e
mr => me
Skrypt Apr 29, 2022
054d45c
Fix dropdown orientation in RTL
Skrypt Apr 29, 2022
a5b49cb
Fix tenants urlHost list
Skrypt Apr 29, 2022
6eeb6ee
Fix lists header margins
Skrypt Apr 29, 2022
4832e1b
cleanup
Skrypt Apr 29, 2022
cd05737
Fix serverDecimalSeparator for Numeric Slider
Skrypt Apr 29, 2022
b8edd09
Fix arrow orientation
Skrypt Apr 29, 2022
a97ba78
Display SQL Query JSON result in a Monaco Editor
Skrypt Apr 29, 2022
9e99c81
Fix media field display
Skrypt Apr 30, 2022
89dc25b
Merge branch 'main' into ag/bootstrap5
sebastienros May 5, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
Original file line number Diff line number Diff line change
@@ -1,33 +1,33 @@
@model OrchardCore.Admin.ViewModels.AdminSettingsViewModel

<fieldset class="form-group" asp-validation-class-for="DisplayDarkMode">
<div class="custom-control custom-checkbox">
<input asp-for="DisplayDarkMode" class="custom-control-input" type="checkbox" />
<label asp-for="DisplayDarkMode" class="custom-control-label">@T["Enable dark mode admin theme"]</label>
<fieldset class="mb-3" asp-validation-class-for="DisplayDarkMode">
<div class="form-check">
<input asp-for="DisplayDarkMode" class="form-check-input" type="checkbox" />
<label asp-for="DisplayDarkMode" class="form-check-label">@T["Enable dark mode admin theme"]</label>
</div>
<span class="hint">@T["Whether a dark mode admin theme can be displayed."]</span>
</fieldset>

<fieldset class="form-group" asp-validation-class-for="DisplayMenuFilter">
<div class="custom-control custom-checkbox">
<input asp-for="DisplayMenuFilter" class="custom-control-input" type="checkbox" />
<label asp-for="DisplayMenuFilter" class="custom-control-label">@T["Enable Admin Menu filter"]</label>
<fieldset class="mb-3" asp-validation-class-for="DisplayMenuFilter">
<div class="form-check">
<input asp-for="DisplayMenuFilter" class="form-check-input" type="checkbox" />
<label asp-for="DisplayMenuFilter" class="form-check-label">@T["Enable Admin Menu filter"]</label>
</div>
<span class="hint">@T["Whether a quick search to filter the admin menu is displayed."]</span>
</fieldset>

<fieldset class="form-group" asp-validation-class-for="DisplayNewMenu">
<div class="custom-control custom-checkbox">
<input asp-for="DisplayNewMenu" class="custom-control-input" type="checkbox" />
<label asp-for="DisplayNewMenu" class="custom-control-label">@T["Display New menu"]</label>
<fieldset class="mb-3" asp-validation-class-for="DisplayNewMenu">
<div class="form-check">
<input asp-for="DisplayNewMenu" class="form-check-input" type="checkbox" />
<label asp-for="DisplayNewMenu" class="form-check-label">@T["Display New menu"]</label>
</div>
<span class="hint">@T["Whether a New menu is displayed in the admin menu."]</span>
</fieldset>

<fieldset class="form-group" asp-validation-class-for="DisplayTitlesInTopbar">
<div class="custom-control custom-checkbox">
<input asp-for="DisplayTitlesInTopbar" class="custom-control-input" type="checkbox" />
<label asp-for="DisplayTitlesInTopbar" class="custom-control-label">@T["Display titles in top bar"]</label>
<fieldset class="mb-3" asp-validation-class-for="DisplayTitlesInTopbar">
<div class="form-check">
<input asp-for="DisplayTitlesInTopbar" class="form-check-input" type="checkbox" />
<label asp-for="DisplayTitlesInTopbar" class="form-check-label">@T["Display titles in top bar"]</label>
</div>
<span class="hint">@T["Whether the titles are displayed in the top bar."]</span>
</fieldset>
Original file line number Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@

@if (hasManageDashboardPermission)
{
<div class="btn-group float-right mb-3">
<div class="btn-group float-end mb-3">
<a class="btn btn-primary btn-sm" asp-action="Manage">
@T["Manage Dashboard"]
</a>
</div>
}

<zone Name="Title"><h1 class="float-left">@RenderTitleSegments(T["Dashboard"])</h1></zone>
<zone Name="Title"><h1 class="float-start">@RenderTitleSegments(T["Dashboard"])</h1></zone>
<div class="clearfix"></div>

<div class="dashboard-container" style="--dashboard-columns: calc( @(settings.ColumnScale) * var(--dashboard-columns-default));">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,32 +19,30 @@
<style asp-src="~/OrchardCore.AdminDashboard/Styles/dashboard.min.css" debug-src="~/OrchardCore.AdminDashboard/Styles/dashboard.css" depends-on="jQuery-ui" at="Head"></style>
<script asp-name="jQuery-ui" at="Foot"></script>

<div class="float-right mb-3 d-inline-flex">
<a class="btn btn-success btn-sm mr-1" asp-action="Index">
<div class="float-end mb-3 d-inline-flex">
<a class="btn btn-success btn-sm me-1" asp-action="Index">
@T["Close Editor"]
</a>
@if (Model.Creatable.Any())
{
<div class="dropdown order-md-1">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="new-dropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<button class="btn btn-secondary btn-sm dropdown-toggle" type="button" id="new-dropdown" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@T["Add Widget"]
</button>
<div class="dropdown-menu dropdown-menu-right scrollable" aria-labelledby="bulk-action-menu-button">
<ul class="dropdown-menu dropdown-menu-end scrollable" aria-labelledby="bulk-action-menu-button">
@foreach (var item in Model.Creatable)
{
<a class="dropdown-item add-list-widget btn-sm" href="@Url.RouteUrl(new { area = "OrchardCore.Contents", controller = "Admin", action = "Create", id = @item.Value, returnUrl = FullRequestPath })">@T[Html.Encode(item.Text)]</a>
<li><a class="dropdown-item add-list-widget btn-sm" href="@Url.RouteUrl(new { area = "OrchardCore.Contents", controller = "Admin", action = "Create", id = @item.Value, returnUrl = FullRequestPath })">@T[Html.Encode(item.Text)]</a></li>
}
</div>
</ul>
</div>
}
</div>
<zone Name="Title"><h1 class="float-left">@RenderTitleSegments(T["Dashboard"])</h1></zone>
<zone Name="Title"><h1 class="float-start">@RenderTitleSegments(T["Dashboard"])</h1></zone>
<div class="clearfix"></div>

<div id="dashboard-undo-message" class="alert alert-success alert-dismissible show d-none" role="alert">
<button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
<form id="dashboard-undo-form" asp-action="Update" method="POST" class="no-multisubmit">
@for (int index = 0; index < Model.Dashboards.Count(); index++)
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
@model DashboardPartViewModel

<div class="form-group" asp-validation-class-for="Position">
<div class="mb-3" asp-validation-class-for="Position">
<label asp-for="Position">@T["Position"] </label>
<input asp-for="Position" class="form-control" />
<span asp-validation-for="Position"></span>
</div>
<div class="form-group" asp-validation-class-for="Width">
<div class="mb-3" asp-validation-class-for="Width">
<label asp-for="Width">@T["Width"] </label>
<input asp-for="Width" class="form-control" />
<span asp-validation-for="Width"></span>
</div>
<div class="form-group" asp-validation-class-for="Height">
<div class="mb-3" asp-validation-class-for="Height">
<label asp-for="Height">@T["Height"] </label>
<input asp-for="Height" class="form-control" />
<span asp-validation-for="Height"></span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,15 +18,15 @@

if (contentItem.ModifiedUtc.HasValue)
{
<span class="badge ta-badge font-weight-normal" data-toggle="tooltip" title="@await DisplayAsync(await New.DateTime(Utc: contentItem.ModifiedUtc, Format: "g"))">
<span class="badge ta-badge font-weight-normal" data-bs-toggle="tooltip" title="@await DisplayAsync(await New.DateTime(Utc: contentItem.ModifiedUtc, Format: "g"))">
<i class="fa fa-calendar text-secondary" aria-hidden="true"></i> <time datetime="@modifiedUtc">@await DisplayAsync(await New.Timespan(Utc: contentItem.ModifiedUtc))</time>
</span>
}

if (!String.IsNullOrEmpty(contentItem.Author))
{
<span class="badge ta-badge font-weight-normal" data-toggle="tooltip" title="@T["Author"]">
<i class="fa fa-user text-secondary mr-1" aria-hidden="true"></i>@contentItem.Author
<span class="badge ta-badge font-weight-normal" data-bs-toggle="tooltip" title="@T["Author"]">
<i class="fa fa-user text-secondary me-1" aria-hidden="true"></i>@contentItem.Author
</span>
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@

@if (hasPublished)
{
<span class="badge ta-badge font-weight-normal" data-toggle="tooltip" title="@T["Status"]">
<span class="badge ta-badge font-weight-normal" data-bs-toggle="tooltip" title="@T["Status"]">
<i class="fa fa-check text-success" aria-hidden="true"></i> @T["Published"]
</span>
}

@if (hasDraft)
{
<span class="badge ta-badge font-weight-normal" data-toggle="tooltip" title="@T["Status"]">
<span class="badge ta-badge font-weight-normal" data-bs-toggle="tooltip" title="@T["Status"]">
<i class="fa fa-pencil text-primary" aria-hidden="true"></i> @T["Draft"]
</span>
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
@await DisplayAsync(Model.Header)
@if(Model.ActionsMenu != null )
{
<div class="btn-group float-right" title="@T["Actions"]">
<a type="button" class="btn btn-sm " data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<div class="btn-group float-end" title="@T["Actions"]">
<a type="button" class="btn btn-sm " data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<i class="fas fa-ellipsis-v" aria-hidden="true"></i>
</a>
<div class="actions-menu dropdown-menu">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@

<div class="row">
<div class="col-xl-9 col-sm-12 title">
<div class="custom-control custom-checkbox float-left">
<input type="checkbox" class="custom-control-input" value="@contentItem.Id" name="itemIds" id="itemIds-@contentItem.Id">
<label class="custom-control-label" for="itemIds-@contentItem.Id"></label>
<div class="form-check float-start">
<input type="checkbox" class="form-check-input" value="@contentItem.Id" name="itemIds" id="itemIds-@contentItem.Id">
<label class="form-check-label" for="itemIds-@contentItem.Id"></label>
</div>
@if (await AuthorizationService.AuthorizeAsync(User, CommonPermissions.EditContent, contentItem))
{
Expand All @@ -34,18 +34,18 @@
}
</div>
<div class="col-xl-3 col-sm-12">
<div class="float-right button-group">
<div class="float-end button-group">
@if (Model.Actions != null)
{
@await DisplayAsync(Model.Actions)
}
@if (Model.ActionsMenu != null)
{
<div class="btn-group">
<button type="button" class="btn btn-sm text-secondary" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<button type="button" class="btn btn-sm text-secondary" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
@T["Actions"]
</button>
<div class="actions-menu dropdown-menu dropdown-menu-right">
<div class="actions-menu dropdown-menu dropdown-menu-end">
@await DisplayAsync(Model.ActionsMenu)
</div>
</div>
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
"name": "orchardcore.admindashboard",
"version": "1.0.0",
"dependencies": {
"bootstrap": "4.6.1"
"bootstrap": "5.1.3"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,12 @@ var iconPickerVue = new Vue({
$('#' + self.targetIconTag).replaceWith('<i id="' + self.targetIconTag + '" class="'+ selected + '"></i>')
}

$('#iconPickerModal').modal('hide');
var iconPickerModal = new bootstrap.Modal($("#iconPickerModal"), {
backdrop: 'static',
keyboard: false
});

iconPickerModal.show();
});

},
Expand All @@ -41,7 +46,12 @@ var iconPickerVue = new Vue({
this.targetInputField = targetInputField;
this.targetIconTag = targetIconTag;

$('#iconPickerModal').modal('show');
var iconPickerModal = new bootstrap.Modal($("#iconPickerModal"), {
backdrop: 'static',
keyboard: false
});

iconPickerModal.show();
}
}
})
Original file line number Diff line number Diff line change
Expand Up @@ -11,26 +11,26 @@

<h5>@T["Link"]</h5>

<div class="form-group" asp-validation-class-for="LinkText">
<div class="mb-3" asp-validation-class-for="LinkText">
<label asp-for="LinkText">@T["Link Text"]</label>
<input asp-for="LinkText" class="form-control" />
<span asp-validation-for="LinkText"></span>
<span class="hint">@T["The Link Text as it will be shown in the tree."]</span>
</div>

<div class="form-group">
<div class="mb-3">
<label asp-for="LinkUrl">@T["Link Url"]</label>
<input asp-for="LinkUrl" class="form-control" />
<span class="hint">@T["The url of the link. A link will be shown only if it or one of their children have a url. The url will be relative to the root of the admin site"]</span>
</div>

<div class="form-group">
<div class="mb-3">
<label asp-for="IconClass">@T["Icon"]</label>

<div class="input-group mb-3">
<div class="btn-toolbar" role="toolbar" aria-label="Icon Selector Toolbar">

<div class="btn-group input-group mr-2" role="group" aria-label="Icon Selector">
<div class="btn-group input-group me-2" role="group" aria-label="Icon Selector">
<button type="button" class="btn btn-primary sample-icon">
<i id="@("sample-icon-" + Html.IdFor(m=>m.IconClass))" class="@Model.IconClass"></i>
</button>
Expand Down Expand Up @@ -61,9 +61,7 @@
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">@T["Pick an icon"]</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
</button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body p-0">
<div id="inline-picker" class="icp icp-auto" data-placement="inline"></div>
Expand All @@ -73,7 +71,7 @@
</div>
</div>

<div class="form-group">
<div class="mb-3">
@{
var selectedItems = JsonConvert.SerializeObject(Model.SelectedItems, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
var allItems = JsonConvert.SerializeObject(Model.AllItems, new JsonSerializerSettings { ContractResolver = new CamelCasePropertyNamesContractResolver() });
Expand All @@ -86,7 +84,7 @@

<div id="PermissionPicker" class="vue-multiselect" data-selected-items="@selectedItems" data-all-items="@allItems" v-cloak>

<div class="form-group">
<div class="mb-3">
<ul class="list-group w-xl-50 permission-picker-default__list" v-show="arrayOfItems.length">
<li v-for="(item, i) in arrayOfItems"
class="list-group-item permission-picker-default__list-item d-flex align-items-start justify-content-between"
Expand All @@ -100,7 +98,7 @@
</ul>
</div>

<div class="form-group">
<div class="mb-3">
<div class="w-xl-50">
<input asp-for="SelectedPermissionNames" type="hidden" v-model="selectedNames" />
<vue-multiselect v-model="value"
Expand Down
Loading