mirror of https://github.com/abpframework/abp.git
8 changed files with 161 additions and 1 deletions
@ -0,0 +1,27 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.JSInterop; |
|||
using Volo.Abp.AspNetCore.Components.BlockUi; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.Web.BlockUi; |
|||
|
|||
[Dependency(ReplaceServices = true)] |
|||
public class AbpBlockUiService : IBlockUiService, IScopedDependency |
|||
{ |
|||
public IJSRuntime JsRuntime { get; } |
|||
|
|||
public AbpBlockUiService(IJSRuntime jsRuntime) |
|||
{ |
|||
JsRuntime = jsRuntime; |
|||
} |
|||
|
|||
public async Task Block(string? selectors, bool busy = false) |
|||
{ |
|||
await JsRuntime.InvokeVoidAsync("abp.ui.block", selectors, busy); |
|||
} |
|||
|
|||
public async Task UnBlock() |
|||
{ |
|||
await JsRuntime.InvokeVoidAsync("abp.ui.unblock"); |
|||
} |
|||
} |
|||
@ -0,0 +1,56 @@ |
|||
@keyframes spin { |
|||
0% { |
|||
transform: translateZ(0) rotate(0deg); |
|||
} |
|||
|
|||
100% { |
|||
transform: translateZ(0) rotate(360deg); |
|||
} |
|||
} |
|||
|
|||
.abp-block-area { |
|||
position: fixed; |
|||
top: 0; |
|||
left: 0; |
|||
width: 100%; |
|||
height: 100%; |
|||
z-index: 102; |
|||
background-color: #fff; |
|||
opacity: .8; |
|||
transition: opacity .25s; |
|||
} |
|||
|
|||
.abp-block-area.abp-block-area-disappearing { |
|||
opacity: 0; |
|||
} |
|||
|
|||
.abp-block-area.abp-block-area-busy:after { |
|||
content: attr(data-text); |
|||
display: block; |
|||
max-width: 125px; |
|||
position: absolute; |
|||
top: 50%; |
|||
left: 50%; |
|||
transform: translate(-50%, -50%); |
|||
font-size: 20px; |
|||
font-family: sans-serif; |
|||
color: #343a40; |
|||
text-align: center; |
|||
text-transform: uppercase; |
|||
} |
|||
|
|||
.abp-block-area.abp-block-area-busy:before { |
|||
content: ""; |
|||
display: block; |
|||
width: 150px; |
|||
height: 150px; |
|||
border-radius: 50%; |
|||
border-width: 2px; |
|||
border-style: solid; |
|||
border-color: transparent #228ae6 #228ae6 #228ae6; |
|||
position: absolute; |
|||
top: calc(50% - 75px); |
|||
left: calc(50% - 75px); |
|||
will-change: transform; |
|||
animation: spin .75s infinite ease-in-out; |
|||
} |
|||
@ -0,0 +1,10 @@ |
|||
using System.Threading.Tasks; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.BlockUi; |
|||
|
|||
public interface IBlockUiService |
|||
{ |
|||
Task Block(string? selectors, bool busy = false); |
|||
|
|||
Task UnBlock(); |
|||
} |
|||
@ -0,0 +1,17 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.DependencyInjection; |
|||
|
|||
namespace Volo.Abp.AspNetCore.Components.BlockUi; |
|||
|
|||
public class NullBlockUiService : IBlockUiService, ISingletonDependency |
|||
{ |
|||
public Task Block(string? selectors, bool busy = false) |
|||
{ |
|||
return Task.CompletedTask; |
|||
} |
|||
|
|||
public Task UnBlock() |
|||
{ |
|||
return Task.CompletedTask; |
|||
} |
|||
} |
|||
Loading…
Reference in new issue