Browse Source

Merge branch 'dev' of https://github.com/abpframework/abp into feat/upgrade-nx

pull/10607/head
Mehmet Erim 5 years ago
parent
commit
73602764ce
  1. 6
      docs/en/Application-Services.md
  2. 2
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs
  3. 4
      framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs
  4. 12
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpAspNetCoreSignalRModule.cs
  5. 26
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpHubContext.cs
  6. 23
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpHubContextAccessorHubFilter.cs
  7. 92
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Auditing/AbpAuditHubFilter.cs
  8. 55
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Auditing/AspNetCoreSignalRAuditLogContributor.cs
  9. 4
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Authentication/AbpAuthenticationHubFilter.cs
  10. 23
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/DefaultAbpHubContextAccessor.cs
  11. 12
      framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/IAbpHubContextAccessor.cs
  12. 5
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AspNetCoreAuditLogContributor.cs
  13. 5
      framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProvider.cs
  14. 21
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor.cs
  15. 18
      modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs
  16. 4
      modules/cms-kit/angular/projects/cms-kit/package.json
  17. 6
      modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js
  18. 6
      modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml
  19. 4
      npm/lerna.json
  20. 12
      npm/ng-packs/packages/core/src/lib/directives/autofocus.directive.ts
  21. 10
      npm/ng-packs/packages/core/src/lib/directives/permission.directive.ts
  22. 16
      npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts
  23. 2
      npm/ng-packs/packages/core/src/lib/models/common.ts
  24. 4
      npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts
  25. 23
      npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts
  26. 8
      npm/ng-packs/packages/core/src/lib/services/config-state.service.ts
  27. 4
      npm/ng-packs/packages/core/src/lib/services/environment.service.ts
  28. 2
      npm/ng-packs/packages/core/src/lib/services/http-error-reporter.service.ts
  29. 2
      npm/ng-packs/packages/core/src/lib/services/lazy-load.service.ts
  30. 4
      npm/ng-packs/packages/core/src/lib/services/list.service.ts
  31. 4
      npm/ng-packs/packages/core/src/lib/utils/localization-utils.ts
  32. 4
      npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html
  33. 2
      npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.ts
  34. 2
      npm/ng-packs/packages/setting-management/config/src/providers/features.token.ts
  35. 4
      npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts
  36. 8
      npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html
  37. 12
      npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts
  38. 2
      npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts
  39. 2
      npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.html
  40. 2
      npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.ts
  41. 6
      npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/languages.component.ts
  42. 2
      npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.html
  43. 9
      npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.html
  44. 6
      npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts
  45. 2
      npm/ng-packs/packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts
  46. 8
      npm/ng-packs/packages/theme-basic/src/lib/handlers/lazy-style.handler.ts
  47. 6
      npm/ng-packs/packages/theme-basic/src/lib/services/layout.service.ts
  48. 9
      npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date-time.adapter.ts
  49. 2
      npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date.adapter.ts
  50. 2
      npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts
  51. 2
      npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts
  52. 6
      npm/ng-packs/packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts
  53. 18
      npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts
  54. 6
      npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.ts
  55. 2
      npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/disabled.directive.ts
  56. 6
      npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/prop-data.directive.ts
  57. 2
      npm/ng-packs/packages/theme-shared/extensions/src/lib/models/actions.ts
  58. 2
      npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts
  59. 4
      npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts
  60. 10
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/enum.util.ts
  61. 10
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/localization.util.ts
  62. 9
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts
  63. 16
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/typeahead.util.ts
  64. 5
      npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/validation.util.ts
  65. 3
      npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb-items/breadcrumb-items.component.ts
  66. 12
      npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts
  67. 4
      npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts
  68. 24
      npm/ng-packs/packages/theme-shared/src/lib/components/http-error-wrapper/http-error-wrapper.component.ts
  69. 2
      npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts
  70. 2
      npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-ref.service.ts
  71. 4
      npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.html
  72. 38
      npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts
  73. 14
      npm/ng-packs/packages/theme-shared/src/lib/components/toast-container/toast-container.component.ts
  74. 2
      npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html
  75. 4
      npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts
  76. 4
      npm/ng-packs/packages/theme-shared/src/lib/directives/ellipsis.directive.ts
  77. 12
      npm/ng-packs/packages/theme-shared/src/lib/directives/loading.directive.ts
  78. 2
      npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts
  79. 74
      npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts
  80. 2
      npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts
  81. 6
      npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts
  82. 4
      npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts
  83. 7
      npm/ng-packs/packages/theme-shared/src/lib/utils/date-parser-formatter.ts
  84. 1
      npm/ng-packs/tsconfig.base.json
  85. 1684
      npm/ng-packs/yarn.lock
  86. 2
      npm/packs/aspnetcore.mvc.ui.theme.shared/package.json
  87. 5
      npm/yarn.lock
  88. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  89. 268
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock
  90. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  91. 268
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock
  92. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  93. 238
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock
  94. 2
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js
  95. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  96. 238
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock
  97. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  98. 238
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock
  99. 4
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js
  100. 238
      templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock

6
docs/en/Application-Services.md

@ -430,17 +430,17 @@ Task DeleteAsync(TKey id);
#### Querying
These methods are low level methods those can be control how to query entities from the database.
These methods are low level methods that can control how to query entities from the database.
* `CreateFilteredQuery` can be overridden to create an `IQueryable<TEntity>` that is filtered by the given input. If your `TGetListInput` class contains any filter, it is proper to override this method and filter the query. It returns the (unfiltered) repository (which is already `IQueryable<TEntity>`) by default.
* `ApplyPaging` is used to make paging on the query. If your `TGetListInput` already implements `IPagedResultRequest`, you don't need to override this since the ABP Framework automatically understands it and performs the paging.
* `ApplySorting` is used to sort (order by...) the query. If your `TGetListInput` already implements the `ISortedResultRequest`, ABP Framework automatically sorts the query. If not, it fallbacks to the `ApplyDefaultSorting` which tries to sort by creating time, if your entity implements the standard `IHasCreationTime` interface.
* `ApplySorting` is used to sort (order by...) the query. If your `TGetListInput` already implements the `ISortedResultRequest`, ABP Framework automatically sorts the query. If not, it fallbacks to the `ApplyDefaultSorting` which tries to sort by creation time, if your entity implements the standard `IHasCreationTime` interface.
* `GetEntityByIdAsync` is used to get an entity by id, which calls `Repository.GetAsync(id)` by default.
* `DeleteByIdAsync` is used to delete an entity by id, which calls `Repository.DeleteAsync(id)` by default.
#### Object to Object Mapping
These methods are used to convert Entities to DTOs and vice verse. They uses the [IObjectMapper](Object-To-Object-Mapping.md) by default.
These methods are used to convert Entities to DTOs and vice verse. They use the [IObjectMapper](Object-To-Object-Mapping.md) by default.
* `MapToGetOutputDtoAsync` is used to map the entity to the DTO returned from the `GetAsync`, `CreateAsync` and `UpdateAsync` methods. Alternatively, you can override the `MapToGetOutputDto` if you don't need to perform any async operation.
* `MapToGetListOutputDtosAsync` is used to map a list of entities to a list of DTOs returned from the `GetListAsync` method. It uses the `MapToGetListOutputDtoAsync` to map each entity in the list. You can override one of them based on your case. Alternatively, you can override the `MapToGetListOutputDto` if you don't need to perform any async operation.

2
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelper.cs

@ -38,7 +38,7 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
public bool SuppressLabel { get; set; }
public CheckBoxHiddenInputRenderMode CheckBoxHiddenInputRenderMode { get; set; }
public CheckBoxHiddenInputRenderMode? CheckBoxHiddenInputRenderMode { get; set; }
public AbpInputTagHelper(AbpInputTagHelperService tagHelperService)
: base(tagHelperService)

4
framework/src/Volo.Abp.AspNetCore.Mvc.UI.Bootstrap/TagHelpers/Form/AbpInputTagHelperService.cs

@ -30,9 +30,9 @@ namespace Volo.Abp.AspNetCore.Mvc.UI.Bootstrap.TagHelpers.Form
{
var (innerHtml, isCheckBox) = await GetFormInputGroupAsHtmlAsync(context, output);
if (isCheckBox)
if (isCheckBox && TagHelper.CheckBoxHiddenInputRenderMode.HasValue)
{
TagHelper.ViewContext.CheckBoxHiddenInputRenderMode = TagHelper.CheckBoxHiddenInputRenderMode;
TagHelper.ViewContext.CheckBoxHiddenInputRenderMode = TagHelper.CheckBoxHiddenInputRenderMode.Value;
}
var order = TagHelper.AspFor.ModelExplorer.GetDisplayOrder();

12
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpAspNetCoreSignalRModule.cs

@ -8,6 +8,9 @@ using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.AspNetCore.Auditing;
using Volo.Abp.AspNetCore.SignalR.Auditing;
using Volo.Abp.AspNetCore.SignalR.Authentication;
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Modularity;
@ -34,7 +37,9 @@ namespace Volo.Abp.AspNetCore.SignalR
var routePatterns = new List<string> {"/signalr-hubs"};
var signalRServerBuilder = context.Services.AddSignalR(options =>
{
options.AddFilter<AbpSignalRHubFilter>();
options.AddFilter<AbpHubContextAccessorHubFilter>();
options.AddFilter<AbpAuthenticationHubFilter>();
options.AddFilter<AbpAuditHubFilter>();
});
context.Services.ExecutePreConfiguredActions(signalRServerBuilder);
@ -75,6 +80,11 @@ namespace Volo.Abp.AspNetCore.SignalR
options.IgnoredUrls.AddIfNotContains(x => routePattern.StartsWith(x), () => routePattern);
}
});
Configure<AbpAuditingOptions>(options =>
{
options.Contributors.Add(new AspNetCoreSignalRAuditLogContributor());
});
}
private void AutoAddHubTypes(IServiceCollection services)

26
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpHubContext.cs

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Reflection;
using Microsoft.AspNetCore.SignalR;
namespace Volo.Abp.AspNetCore.SignalR
{
public class AbpHubContext
{
public IServiceProvider ServiceProvider { get; }
public Hub Hub { get; }
public MethodInfo HubMethod { get; }
public IReadOnlyList<object> HubMethodArguments { get; }
public AbpHubContext(IServiceProvider serviceProvider, Hub hub, MethodInfo hubMethod, IReadOnlyList<object> hubMethodArguments)
{
ServiceProvider = serviceProvider;
Hub = hub;
HubMethod = hubMethod;
HubMethodArguments = hubMethodArguments;
}
}
}

23
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpHubContextAccessorHubFilter.cs

@ -0,0 +1,23 @@
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection;
namespace Volo.Abp.AspNetCore.SignalR
{
public class AbpHubContextAccessorHubFilter : IHubFilter
{
public virtual async ValueTask<object> InvokeMethodAsync(HubInvocationContext invocationContext, Func<HubInvocationContext, ValueTask<object>> next)
{
var hubContextAccessor = invocationContext.ServiceProvider.GetRequiredService<IAbpHubContextAccessor>();
using (hubContextAccessor.Change(new AbpHubContext(
invocationContext.ServiceProvider,
invocationContext.Hub,
invocationContext.HubMethod,
invocationContext.HubMethodArguments)))
{
return await next(invocationContext);
}
}
}
}

92
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Auditing/AbpAuditHubFilter.cs

@ -0,0 +1,92 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Options;
using Volo.Abp.Auditing;
using Volo.Abp.Uow;
using Volo.Abp.Users;
namespace Volo.Abp.AspNetCore.SignalR.Auditing
{
public class AbpAuditHubFilter : IHubFilter
{
public virtual async ValueTask<object> InvokeMethodAsync(HubInvocationContext invocationContext, Func<HubInvocationContext, ValueTask<object>> next)
{
var options = invocationContext.ServiceProvider.GetRequiredService<IOptions<AbpAuditingOptions>>().Value;
if (!options.IsEnabled)
{
return await next(invocationContext);
}
var hasError = false;
var auditingManager = invocationContext.ServiceProvider.GetRequiredService<IAuditingManager>();
using (var saveHandle = auditingManager.BeginScope())
{
Debug.Assert(auditingManager.Current != null);
object result;
try
{
result = await next(invocationContext);
if (auditingManager.Current.Log.Exceptions.Any())
{
hasError = true;
}
}
catch (Exception ex)
{
hasError = true;
if (!auditingManager.Current.Log.Exceptions.Contains(ex))
{
auditingManager.Current.Log.Exceptions.Add(ex);
}
throw;
}
finally
{
if (ShouldWriteAuditLog(invocationContext.ServiceProvider, hasError))
{
var unitOfWorkManager = invocationContext.ServiceProvider.GetRequiredService<IUnitOfWorkManager>();
if (unitOfWorkManager.Current != null)
{
await unitOfWorkManager.Current.SaveChangesAsync();
}
await saveHandle.SaveAsync();
}
}
return result;
}
}
private bool ShouldWriteAuditLog(IServiceProvider serviceProvider, bool hasError)
{
var options = serviceProvider.GetRequiredService<IOptions<AbpAuditingOptions>>().Value;
if (options.AlwaysLogOnException && hasError)
{
return true;
}
if (!options.IsEnabledForAnonymousUsers && !serviceProvider.GetRequiredService<ICurrentUser>().IsAuthenticated)
{
return false;
}
var auditingManager = serviceProvider.GetRequiredService<IAuditingManager>();
if (auditingManager.Current == null ||
auditingManager.Current.Log.Actions.IsNullOrEmpty())
{
return false;
}
return true;
}
}
}

55
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Auditing/AspNetCoreSignalRAuditLogContributor.cs

@ -0,0 +1,55 @@
using System.Linq;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
using Volo.Abp.AspNetCore.WebClientInfo;
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.SignalR.Auditing
{
public class AspNetCoreSignalRAuditLogContributor : AuditLogContributor, ITransientDependency
{
public ILogger<AspNetCoreSignalRAuditLogContributor> Logger { get; set; }
public AspNetCoreSignalRAuditLogContributor()
{
Logger = NullLogger<AspNetCoreSignalRAuditLogContributor>.Instance;
}
public override void PreContribute(AuditLogContributionContext context)
{
var hubContext = context.ServiceProvider.GetRequiredService<IAbpHubContextAccessor>().Context;
if (hubContext == null)
{
return;
}
var clientInfoProvider = context.ServiceProvider.GetRequiredService<IWebClientInfoProvider>();
if (context.AuditInfo.ClientIpAddress == null)
{
context.AuditInfo.ClientIpAddress = clientInfoProvider.ClientIpAddress;
}
if (context.AuditInfo.BrowserInfo == null)
{
context.AuditInfo.BrowserInfo = clientInfoProvider.BrowserInfo;
}
//TODO: context.AuditInfo.ClientName
}
public override void PostContribute(AuditLogContributionContext context)
{
var hubContext = context.ServiceProvider.GetRequiredService<IAbpHubContextAccessor>().Context;
if (hubContext == null)
{
return;
}
var firstAction = context.AuditInfo.Actions.FirstOrDefault();
context.AuditInfo.Url = firstAction?.ServiceName + "." + firstAction?.MethodName;
context.AuditInfo.HttpStatusCode = null;
}
}
}

4
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/AbpSignalRHubFilter.cs → framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/Authentication/AbpAuthenticationHubFilter.cs

@ -4,9 +4,9 @@ using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.Security.Claims;
namespace Volo.Abp.AspNetCore.SignalR
namespace Volo.Abp.AspNetCore.SignalR.Authentication
{
public class AbpSignalRHubFilter : IHubFilter
public class AbpAuthenticationHubFilter : IHubFilter
{
public virtual async ValueTask<object> InvokeMethodAsync(HubInvocationContext invocationContext, Func<HubInvocationContext, ValueTask<object>> next)
{

23
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/DefaultAbpHubContextAccessor.cs

@ -0,0 +1,23 @@
using System;
using System.Threading;
using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.SignalR
{
public class DefaultAbpHubContextAccessor : IAbpHubContextAccessor, ISingletonDependency
{
public AbpHubContext Context => _currentHubContext.Value;
private readonly AsyncLocal<AbpHubContext> _currentHubContext = new AsyncLocal<AbpHubContext>();
public virtual IDisposable Change(AbpHubContext context)
{
var parent = Context;
_currentHubContext.Value = context;
return new DisposeAction(() =>
{
_currentHubContext.Value = parent;
});
}
}
}

12
framework/src/Volo.Abp.AspNetCore.SignalR/Volo/Abp/AspNetCore/SignalR/IAbpHubContextAccessor.cs

@ -0,0 +1,12 @@
using System;
namespace Volo.Abp.AspNetCore.SignalR
{
public interface IAbpHubContextAccessor
{
AbpHubContext Context { get; }
IDisposable Change(AbpHubContext context);
}
}

5
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AspNetCoreAuditLogContributor.cs

@ -26,6 +26,11 @@ namespace Volo.Abp.AspNetCore.Auditing
return;
}
if (httpContext.WebSockets.IsWebSocketRequest)
{
return;
}
if (context.AuditInfo.HttpMethod == null)
{
context.AuditInfo.HttpMethod = httpContext.Request.Method;

5
framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Uow/AspNetCoreUnitOfWorkTransactionBehaviourProvider.cs

@ -22,6 +22,11 @@ namespace Volo.Abp.AspNetCore.Uow
return null;
}
if (httpContext.WebSockets.IsWebSocketRequest)
{
return null;
}
var currentUrl = httpContext.Request.Path.Value;
if (currentUrl != null)
{

21
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.Web.BasicTheme/Themes/Basic/NavMenu.razor.cs

@ -1,19 +1,36 @@
using System.Threading.Tasks;
using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Authorization;
using Volo.Abp.UI.Navigation;
namespace Volo.Abp.AspNetCore.Components.Web.BasicTheme.Themes.Basic
{
public partial class NavMenu
public partial class NavMenu : IDisposable
{
[Inject]
protected IMenuManager MenuManager { get; set; }
[Inject]
protected AuthenticationStateProvider AuthenticationStateProvider { get; set; }
protected ApplicationMenu Menu { get; set; }
protected override async Task OnInitializedAsync()
{
Menu = await MenuManager.GetMainMenuAsync();
AuthenticationStateProvider.AuthenticationStateChanged += AuthenticationStateProviderOnAuthenticationStateChanged;
}
public void Dispose()
{
AuthenticationStateProvider.AuthenticationStateChanged -= AuthenticationStateProviderOnAuthenticationStateChanged;
}
private async void AuthenticationStateProviderOnAuthenticationStateChanged(Task<AuthenticationState> task)
{
Menu = await MenuManager.GetMainMenuAsync();
await InvokeAsync(StateHasChanged);
}
}
}

18
modules/basic-theme/src/Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme/Themes/Basic/LoginDisplay.razor.cs

@ -34,11 +34,8 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic
if (AuthenticationStateProvider != null)
{
AuthenticationStateProvider.AuthenticationStateChanged += async (task) =>
{
Menu = await MenuManager.GetAsync(StandardMenus.User);
await InvokeAsync(StateHasChanged);
};
AuthenticationStateProvider.AuthenticationStateChanged +=
AuthenticationStateProviderOnAuthenticationStateChanged;
}
}
@ -46,10 +43,21 @@ namespace Volo.Abp.AspNetCore.Components.WebAssembly.BasicTheme.Themes.Basic
{
InvokeAsync(StateHasChanged);
}
private async void AuthenticationStateProviderOnAuthenticationStateChanged(Task<AuthenticationState> task)
{
Menu = await MenuManager.GetAsync(StandardMenus.User);
await InvokeAsync(StateHasChanged);
}
public void Dispose()
{
Navigation.LocationChanged -= OnLocationChanged;
if (AuthenticationStateProvider != null)
{
AuthenticationStateProvider.AuthenticationStateChanged -=
AuthenticationStateProviderOnAuthenticationStateChanged;
}
}
private async Task NavigateToAsync(string uri, string target = null)

4
modules/cms-kit/angular/projects/cms-kit/package.json

@ -4,8 +4,8 @@
"peerDependencies": {
"@angular/common": "^9.1.11",
"@angular/core": "^9.1.11",
"@abp/ng.core": ">=5.0.0-beta.1-1",
"@abp/ng.theme.shared": ">=5.0.0-beta.1-1"
"@abp/ng.core": ">=5.0.0-beta.3-1",
"@abp/ng.theme.shared": ">=5.0.0-beta.3-1"
},
"dependencies": {
"tslib": "^2.0.0"

6
modules/cms-kit/src/Volo.CmsKit.Public.Web/Pages/CmsKit/Shared/Components/ReactionSelection/default.js

@ -2,10 +2,10 @@
var l = abp.localization.getResource('CmsKit');
var myDefaultWhiteList = $.fn.tooltip.Constructor.Default.whiteList;
var myDefaultAllowList = $.fn.tooltip.Constructor.Default.allowList;
if (myDefaultWhiteList.span.indexOf('data-reaction-name') < 0) {
myDefaultWhiteList.span.push('data-reaction-name');
if (myDefaultAllowList.span.indexOf('data-reaction-name') < 0) {
myDefaultAllowList.span.push('data-reaction-name');
}
abp.widgets.CmsReactionSelection = function ($widget) {

6
modules/permission-management/src/Volo.Abp.PermissionManagement.Web/Pages/AbpPermissionManagement/PermissionManagementModal.cshtml

@ -13,7 +13,7 @@
<abp-modal size="Large">
<abp-modal-header title="@(L["Permissions"].Value) - @Model.EntityDisplayName"></abp-modal-header>
<abp-modal-body class="custom-scroll-container">
<abp-input asp-for="SelectAllInAllTabs" check-box-hidden-input-render-mode="None" label="@L["SelectAllInAllTabs"].Value"/>
<abp-input asp-for="SelectAllInAllTabs" check-box-hidden-input-render-mode="CheckBoxHiddenInputRenderMode.None" label="@L["SelectAllInAllTabs"].Value"/>
<hr class="mt-2 mb-2"/>
<input asp-for="@Model.ProviderKey"/>
<input asp-for="@Model.ProviderName"/>
@ -27,7 +27,7 @@
<div class="w-100" style="max-height: 640px;overflow-y: auto">
<div class="pl-1 pt-1">
<abp-input asp-for="@group.IsAllPermissionsGranted"
check-box-hidden-input-render-mode="None"
check-box-hidden-input-render-mode="CheckBoxHiddenInputRenderMode.None"
name="SelectAllInThisTab"
id="SelectAllInThisTab-@group.GetNormalizedGroupName()"
data-tab-id="v-pills-tab-@group.GetNormalizedGroupName()"
@ -37,7 +37,7 @@
{
var permission = group.Permissions[j];
<abp-input asp-for="@permission.IsGranted"
check-box-hidden-input-render-mode="None"
check-box-hidden-input-render-mode="CheckBoxHiddenInputRenderMode.None"
abp-id-name="@Model.Groups[i].Permissions[j].IsGranted"
label="@permission.GetShownName(Model.ProviderName)"
disabled="@permission.IsDisabled(Model.ProviderName)"

4
npm/lerna.json

@ -1,8 +1,6 @@
{
"version": "5.0.0-beta.3",
"packages": [
"packs/*"
],
"packages": ["packs/*"],
"npmClient": "yarn",
"lerna": "3.18.4"
}

12
npm/ng-packs/packages/core/src/lib/directives/autofocus.directive.ts

@ -5,12 +5,20 @@ import { AfterViewInit, Directive, ElementRef, Input } from '@angular/core';
selector: '[autofocus]',
})
export class AutofocusDirective implements AfterViewInit {
private _delay = 0;
@Input('autofocus')
delay = 0;
set delay(val: number | string | undefined) {
this._delay = Number(val) || 0;
}
get delay() {
return this._delay;
}
constructor(private elRef: ElementRef) {}
ngAfterViewInit(): void {
setTimeout(() => this.elRef.nativeElement.focus(), this.delay);
setTimeout(() => this.elRef.nativeElement.focus(), this.delay as number);
}
}

10
npm/ng-packs/packages/core/src/lib/directives/permission.directive.ts

@ -1,12 +1,10 @@
import {
ChangeDetectorRef,
Directive,
ElementRef,
Input,
OnChanges,
OnDestroy,
Optional,
Renderer2,
TemplateRef,
ViewContainerRef,
} from '@angular/core';
@ -18,13 +16,11 @@ import { PermissionService } from '../services/permission.service';
selector: '[abpPermission]',
})
export class PermissionDirective implements OnDestroy, OnChanges {
@Input('abpPermission') condition: string;
@Input('abpPermission') condition: string | undefined;
subscription: Subscription;
subscription!: Subscription;
constructor(
private elRef: ElementRef<HTMLElement>,
private renderer: Renderer2,
@Optional() private templateRef: TemplateRef<any>,
private vcRef: ViewContainerRef,
private permissionService: PermissionService,
@ -37,7 +33,7 @@ export class PermissionDirective implements OnDestroy, OnChanges {
}
this.subscription = this.permissionService
.getGrantedPolicy$(this.condition)
.getGrantedPolicy$(this.condition || '')
.pipe(distinctUntilChanged())
.subscribe(isGranted => {
this.vcRef.clear();

16
npm/ng-packs/packages/core/src/lib/directives/replaceable-template.directive.ts

@ -33,7 +33,7 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges {
context = {} as any;
externalComponent: Type<any>;
externalComponent!: Type<any>;
defaultComponentRef: any;
@ -50,7 +50,7 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges {
private subscription: SubscriptionService,
) {
this.context = {
initTemplate: ref => {
initTemplate: (ref: any) => {
this.resetDefaultComponent();
this.defaultComponentRef = ref;
this.setDefaultComponentInputs();
@ -121,8 +121,8 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges {
if (Object.prototype.hasOwnProperty.call(this.data.outputs, key)) {
if (!this.defaultComponentSubscriptions[key]) {
this.defaultComponentSubscriptions[key] = this.defaultComponentRef[key].subscribe(
value => {
this.data.outputs[key](value);
(value: any) => {
this.data.outputs?.[key](value);
},
);
}
@ -132,7 +132,7 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges {
}
setProvidedData() {
this.providedData = { ...this.data, inputs: {} };
this.providedData = { ...this.data, inputs: {}, outputs: {} };
if (!this.data.inputs) return;
Object.defineProperties(this.providedData.inputs, {
@ -142,9 +142,9 @@ export class ReplaceableTemplateDirective implements OnInit, OnChanges {
[key]: {
enumerable: true,
configurable: true,
get: () => this.data.inputs[key].value,
...(this.data.inputs[key].twoWay && {
set: newValue => {
get: () => this.data.inputs[key]?.value,
...(this.data.inputs[key]?.twoWay && {
set: (newValue: any) => {
this.data.inputs[key].value = newValue;
this.data.outputs[`${key}Change`](newValue);
},

2
npm/ng-packs/packages/core/src/lib/models/common.ts

@ -52,7 +52,7 @@ export namespace ABP {
}
export interface Route extends Nav {
path: string;
path?: string;
layout?: eLayoutType;
iconClass?: string;
}

4
npm/ng-packs/packages/core/src/lib/models/replaceable-components.ts

@ -16,8 +16,8 @@ export namespace ReplaceableComponents {
I,
O extends { [K in keyof O]: EventEmitter<any> | Subject<any> },
> {
inputs: { -readonly [K in keyof I]: { value: I[K]; twoWay?: boolean } };
outputs: { -readonly [K in keyof O]: (value: ABP.ExtractFromOutput<O[K]>) => void };
inputs?: { -readonly [K in keyof I]: { value: I[K]; twoWay?: boolean } };
outputs?: { -readonly [K in keyof O]: (value: ABP.ExtractFromOutput<O[K]>) => void };
componentKey: string;
}

23
npm/ng-packs/packages/core/src/lib/pipes/localization.pipe.ts

@ -9,13 +9,20 @@ import { LocalizationService } from '../services/localization.service';
export class LocalizationPipe implements PipeTransform {
constructor(private localization: LocalizationService) {}
transform(value: string | LocalizationWithDefault = '', ...interpolateParams: string[]): string {
return this.localization.instant(
value,
...interpolateParams.reduce(
(acc, val) => (Array.isArray(val) ? [...acc, ...val] : [...acc, val]),
[],
),
);
transform(
value: string | LocalizationWithDefault = '',
...interpolateParams: (string | string[] | undefined)[]
): string {
const params =
interpolateParams.reduce((acc, val) => {
if (!acc) {
return val;
}
if (!val) {
return acc;
}
return Array.isArray(val) ? [...acc, ...val] : [...acc, val];
}, []) || [];
return this.localization.instant(value, ...params);
}
}

8
npm/ng-packs/packages/core/src/lib/services/config-state.service.ts

@ -48,14 +48,14 @@ export class ConfigStateService {
return this.store.state;
}
getDeep$(keys: string[] | string) {
getDeep$(keys: string[] | string): Observable<any> {
keys = splitKeys(keys);
return this.store
.sliceState(state => state)
.pipe(
map(state => {
return (keys as string[]).reduce((acc, val) => {
return (keys as string[]).reduce((acc: any, val) => {
if (acc) {
return acc[val];
}
@ -66,10 +66,10 @@ export class ConfigStateService {
);
}
getDeep(keys: string[] | string) {
getDeep(keys: string[] | string): any {
keys = splitKeys(keys);
return (keys as string[]).reduce((acc, val) => {
return (keys as string[]).reduce((acc: any, val) => {
if (acc) {
return acc[val];
}

4
npm/ng-packs/packages/core/src/lib/services/environment.service.ts

@ -23,11 +23,11 @@ export class EnvironmentService {
return this.store.state;
}
getApiUrl(key?: string) {
getApiUrl(key: string) {
return mapToApiUrl(key)(this.store.state.apis);
}
getApiUrl$(key?: string) {
getApiUrl$(key: string) {
return this.store.sliceState(state => state.apis).pipe(map(mapToApiUrl(key)));
}

2
npm/ng-packs/packages/core/src/lib/services/http-error-reporter.service.ts

@ -4,7 +4,7 @@ import { BehaviorSubject, Subject } from 'rxjs';
@Injectable({ providedIn: 'root' })
export class HttpErrorReporterService {
private _reporter$ = new Subject();
private _reporter$ = new Subject<HttpErrorResponse>();
private _errors$ = new BehaviorSubject<HttpErrorResponse[]>([]);
get reporter$() {

2
npm/ng-packs/packages/core/src/lib/services/lazy-load.service.ts

@ -8,7 +8,7 @@ import { ResourceWaitService } from './resource-wait.service';
providedIn: 'root',
})
export class LazyLoadService {
readonly loaded = new Map<string, HTMLScriptElement | HTMLLinkElement>();
readonly loaded = new Map<string, HTMLScriptElement | HTMLLinkElement | null>();
constructor(private resourceWaitService: ResourceWaitService) {}

4
npm/ng-packs/packages/core/src/lib/services/list.service.ts

@ -21,7 +21,7 @@ import { PagedResultDto } from '../models/dtos';
import { LIST_QUERY_DEBOUNCE_TIME } from '../tokens/list.token';
@Injectable()
export class ListService<QueryParamsType = ABP.PageQueryParams> implements OnDestroy {
export class ListService<QueryParamsType = ABP.PageQueryParams | any> implements OnDestroy {
private _filter = '';
set filter(value: string) {
this._filter = value;
@ -112,7 +112,7 @@ export class ListService<QueryParamsType = ABP.PageQueryParams> implements OnDes
switchMap(query => streamCreatorCallback(query).pipe(catchError(() => of(null)))),
filter(Boolean),
tap(() => this._isLoading$.next(false)),
shareReplay({ bufferSize: 1, refCount: true }),
shareReplay<any>({ bufferSize: 1, refCount: true }),
takeUntil(this.destroy$),
);
}

4
npm/ng-packs/packages/core/src/lib/utils/localization-utils.ts

@ -35,7 +35,7 @@ export function createLocalizationPipeKeyGenerator(
) {
const findLocalization = createLocalizationFinder(localization);
return (resourceNames: string[], keys: string[], defaultKey: string) => {
return (resourceNames: string[], keys: string[], defaultKey: string | undefined) => {
const { resourceName, key } = findLocalization(resourceNames, keys);
return !resourceName ? defaultKey : resourceName === '_' ? key : `${resourceName}::${key}`;
};
@ -45,7 +45,7 @@ function createLocalizationFinder(localization: ApplicationLocalizationConfigura
const localize = createLocalizer(localization);
return (resourceNames: string[], keys: string[]) => {
resourceNames = resourceNames.concat(localization.defaultResourceName).filter(Boolean);
resourceNames = resourceNames.concat(localization.defaultResourceName || '').filter(Boolean);
const resourceCount = resourceNames.length;
const keyCount = keys.length;

4
npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.html

@ -2,7 +2,7 @@
<hr class="my-3" />
<form *ngIf="form" [formGroup]="form" (ngSubmit)="submit()" validateOnSubmit>
<form *ngIf="form" [formGroup]="form" (ngSubmit)="submit()" [validateOnSubmit]="true">
<div class="mb-3 form-group">
<label class="form-label">{{
'AbpSettingManagement::DefaultFromDisplayName' | abpLocalization
@ -49,7 +49,7 @@
<div
[@collapse]="{
value: form.get('smtpUseDefaultCredentials').value ? 'collapsed' : 'expanded',
value: form.get('smtpUseDefaultCredentials')?.value ? 'collapsed' : 'expanded',
params: { time: '200ms', easing: 'linear' }
}"
>

2
npm/ng-packs/packages/setting-management/config/src/components/email-setting-group/email-setting-group.component.ts

@ -11,7 +11,7 @@ import { EmailSettingsDto } from '../../proxy/models';
animations: [collapse],
})
export class EmailSettingGroupComponent implements OnInit {
form: FormGroup;
form!: FormGroup;
saving = false;

2
npm/ng-packs/packages/setting-management/config/src/providers/features.token.ts

@ -10,7 +10,7 @@ export const SETTING_MANAGEMENT_FEATURES = new InjectionToken<Observable<{ enabl
factory: () => {
const configState = inject(ConfigStateService);
const featureKey = 'SettingManagement.Enable';
const mapFn = features => ({
const mapFn = (features: Record<string, string>) => ({
enable: features[featureKey].toLowerCase() !== 'false',
});
return featuresFactory(configState, [featureKey], mapFn);

4
npm/ng-packs/packages/setting-management/src/lib/components/setting-management.component.ts

@ -1,6 +1,6 @@
import { ABP } from '@abp/ng.core';
import { Component, OnDestroy, OnInit, TrackByFunction } from '@angular/core';
import { SettingTabsService } from '@abp/ng.setting-management/config';
import { Component, OnDestroy, OnInit, TrackByFunction } from '@angular/core';
import { Subscription } from 'rxjs';
@Component({
@ -11,7 +11,7 @@ export class SettingManagementComponent implements OnDestroy, OnInit {
private subscription = new Subscription();
settings: ABP.Tab[] = [];
selected: ABP.Tab;
selected!: ABP.Tab;
trackByFn: TrackByFunction<ABP.Tab> = (_, item) => item.name;

8
npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.html

@ -23,8 +23,8 @@
</div>
<abp-extensible-table
[data]="data.items"
[recordsTotal]="data.totalCount"
[data]="data.items || []"
[recordsTotal]="data.totalCount || 0"
[list]="list"
></abp-extensible-table>
</div>
@ -41,7 +41,7 @@
</ng-template>
<ng-template #abpBody>
<form [formGroup]="tenantForm" (ngSubmit)="save()" validateOnSubmit>
<form [formGroup]="tenantForm" (ngSubmit)="save()" [validateOnSubmit]="true">
<abp-extensible-form [selectedRecord]="selected"></abp-extensible-form>
</form>
</ng-template>
@ -63,7 +63,7 @@
providerKey: { value: providerKey },
visible: { value: visibleFeatures, twoWay: true }
},
outputs: { visibleChange: onVisibleFeaturesChange },
outputs: { visibleChange: $any(onVisibleFeaturesChange) },
componentKey: featureManagementKey
}"
[(visible)]="visibleFeatures"

12
npm/ng-packs/packages/tenant-management/src/lib/components/tenants/tenants.component.ts

@ -26,17 +26,15 @@ import { eTenantManagementComponents } from '../../enums/components';
export class TenantsComponent implements OnInit {
data: PagedResultDto<TenantDto> = { items: [], totalCount: 0 };
selected: TenantDto;
selected!: TenantDto;
tenantForm: FormGroup;
tenantForm!: FormGroup;
isModalVisible: boolean;
isModalVisible!: boolean;
visibleFeatures = false;
providerKey: string;
_useSharedDatabase: boolean;
providerKey!: string;
modalBusy = false;
@ -142,7 +140,7 @@ export class TenantsComponent implements OnInit {
}, 0);
}
sort(data) {
sort(data: any) {
const { prop, dir } = data.sorts[0];
this.list.sortKey = prop;
this.list.sortOrder = dir;

2
npm/ng-packs/packages/tenant-management/src/lib/defaults/default-tenants-toolbar-actions.ts

@ -7,7 +7,7 @@ export const DEFAULT_TENANTS_TOOLBAR_ACTIONS = ToolbarAction.createMany<TenantDt
text: 'AbpTenantManagement::ManageHostFeatures',
action: data => {
const component = data.getInjected(TenantsComponent);
component.openFeaturesModal(null);
component.openFeaturesModal('');
},
permission: 'FeatureManagement.ManageHostFeatures',
icon: 'fa fa-cog',

2
npm/ng-packs/packages/theme-basic/src/lib/components/account-layout/tenant-box/tenant-box.component.html

@ -1,4 +1,4 @@
<ng-container *ngIf="(service.currentTenant$ | async) || {} as currentTenant">
<ng-container *ngIf="(service.currentTenant$ | async) || { name: '' } as currentTenant">
<div class="card shadow-sm rounded mb-3">
<div class="card-body px-5">
<div class="row">

2
npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/current-user.component.ts

@ -21,7 +21,7 @@ export class CurrentUserComponent {
}
constructor(
@Inject(NAVIGATE_TO_MANAGE_PROFILE) public navigateToManageProfile,
@Inject(NAVIGATE_TO_MANAGE_PROFILE) public navigateToManageProfile: () => void,
private authService: AuthService,
private configState: ConfigStateService,
private sessionState: SessionStateService,

6
npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/languages.component.ts

@ -7,7 +7,7 @@ import { map } from 'rxjs/operators';
selector: 'abp-languages',
template: `
<div
*ngIf="(dropdownLanguages$ | async)?.length > 0"
*ngIf="((dropdownLanguages$ | async)?.length || 0) > 0"
class="dropdown"
ngbDropdown
#languageDropdown="ngbDropdown"
@ -34,7 +34,7 @@ import { map } from 'rxjs/operators';
*ngFor="let lang of dropdownLanguages$ | async"
href="javascript:void(0)"
class="dropdown-item"
(click)="onChangeLang(lang.cultureName)"
(click)="onChangeLang(lang.cultureName || '')"
>{{ lang?.displayName }}</a
>
</div>
@ -52,7 +52,7 @@ export class LanguagesComponent {
return this.languages$.pipe(
map(
languages =>
languages?.find(lang => lang.cultureName === this.selectedLangCulture).displayName || '',
languages?.find(lang => lang.cultureName === this.selectedLangCulture)?.displayName || '',
),
);
}

2
npm/ng-packs/packages/theme-basic/src/lib/components/nav-items/nav-items.component.html

@ -1,6 +1,6 @@
<ul class="navbar-nav">
<ng-container *ngFor="let item of navItems.items$ | async; trackBy: trackByFn">
<ng-container *ngIf="item.visible()">
<ng-container *ngIf="item.visible && item.visible()">
<li class="nav-item d-flex align-items-center" *abpPermission="item.requiredPolicy">
<ng-container
*ngIf="item.component; else htmlTemplate"

9
npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.html

@ -18,14 +18,13 @@
<ng-template #dropdownLink let-route>
<ng-container *ngIf="route.children?.length">
<li
#navbarRootDropdown
class="nav-item dropdown"
display="static"
*abpPermission="route.requiredPolicy"
(click)="
navbarRootDropdown.expand
? (navbarRootDropdown.expand = false)
: (navbarRootDropdown.expand = true)
rootDropdownExpand[route.name]
? (rootDropdownExpand[route.name] = false)
: (rootDropdownExpand[route.name] = true)
"
>
<a
@ -42,7 +41,7 @@
#routeContainer
class="dropdown-menu border-0 shadow-sm"
(click)="$event.preventDefault(); $event.stopPropagation()"
[class.d-block]="smallScreen && navbarRootDropdown.expand"
[class.d-block]="smallScreen && rootDropdownExpand[route.name]"
>
<ng-container
*ngTemplateOutlet="forTemplate; context: { $implicit: route }"

6
npm/ng-packs/packages/theme-basic/src/lib/components/routes/routes.component.ts

@ -14,9 +14,11 @@ import {
templateUrl: 'routes.component.html',
})
export class RoutesComponent {
@Input() smallScreen: boolean;
@Input() smallScreen?: boolean;
@ViewChildren('childrenContainer') childrenContainers: QueryList<ElementRef<HTMLDivElement>>;
@ViewChildren('childrenContainer') childrenContainers!: QueryList<ElementRef<HTMLDivElement>>;
rootDropdownExpand = {} as { [key: string]: boolean };
trackByFn: TrackByFunction<TreeNode<ABP.Route>> = (_, item) => item.name;

2
npm/ng-packs/packages/theme-basic/src/lib/components/validation-error/validation-error.component.ts

@ -12,7 +12,7 @@ import { Validation, ValidationErrorComponent as ErrorComponent } from '@ngx-val
encapsulation: ViewEncapsulation.None,
})
export class ValidationErrorComponent extends ErrorComponent {
get abpErrors(): Validation.Error[] & { interpoliteParams?: string[] } {
get abpErrors(): (Validation.Error & { interpoliteParams?: string[] })[] {
if (!this.errors || !this.errors.length) return [];
return this.errors.map(error => {

8
npm/ng-packs/packages/theme-basic/src/lib/handlers/lazy-style.handler.ts

@ -6,8 +6,8 @@ export const BOOTSTRAP = 'bootstrap-{{dir}}.min.css';
@Injectable()
export class LazyStyleHandler {
private lazyLoad: LazyLoadService;
private styles: string[];
private lazyLoad!: LazyLoadService;
private styles!: string[];
private _dir: LocaleDirection = 'ltr';
readonly loaded = new Map<string, HTMLLinkElement>();
@ -29,7 +29,7 @@ export class LazyStyleHandler {
this.listenToDirectionChanges(injector);
}
private getHrefFromLink(link: HTMLLinkElement | null): string {
private getHrefFromLink(link: HTMLLinkElement | null | undefined): string {
if (!link) return '';
const a = document.createElement('a');
@ -94,5 +94,5 @@ export function initLazyStyleHandler(injector: Injector) {
interface LoadedStyle {
href: string;
link: HTMLLinkElement;
link: HTMLLinkElement | null;
}

6
npm/ng-packs/packages/theme-basic/src/lib/services/layout.service.ts

@ -1,14 +1,14 @@
import { ChangeDetectorRef, Injectable } from '@angular/core';
import { eThemeBasicComponents } from '../enums';
import { SubscriptionService } from '@abp/ng.core';
import { ChangeDetectorRef, Injectable } from '@angular/core';
import { fromEvent } from 'rxjs';
import { debounceTime } from 'rxjs/operators';
import { eThemeBasicComponents } from '../enums';
@Injectable()
export class LayoutService {
isCollapsed = true;
smallScreen: boolean; // do not set true or false
smallScreen!: boolean; // do not set true or false
logoComponentKey = eThemeBasicComponents.Logo;

9
npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date-time.adapter.ts

@ -3,7 +3,7 @@ import { NgbDateStruct, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';
@Injectable()
export class DateTimeAdapter {
value: NgbDateTimeStruct;
value!: NgbDateTimeStruct;
fromModel(value: string | Date): NgbDateTimeStruct | null {
if (!value) return null;
@ -27,15 +27,16 @@ export class DateTimeAdapter {
toModel(value: NgbDateTimeStruct | null): string {
if (!value) return '';
const now = new Date();
//const now = new Date();
value = {
year: now.getUTCFullYear(),
// TODO
/* year: now.getUTCFullYear(),
month: now.getMonth() + 1,
day: now.getDate(),
hour: 0,
minute: 0,
second: 0,
second: 0, */
...this.value,
...value,
};

2
npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/date.adapter.ts

@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
import { NgbDateAdapter, NgbDateStruct } from '@ng-bootstrap/ng-bootstrap';
@Injectable()
export class DateAdapter extends NgbDateAdapter<string> {
export class DateAdapter extends NgbDateAdapter<string | Date> {
fromModel(value: string | Date): NgbDateStruct | null {
if (!value) return null;

2
npm/ng-packs/packages/theme-shared/extensions/src/lib/adapters/time.adapter.ts

@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
import { NgbTimeAdapter, NgbTimeStruct } from '@ng-bootstrap/ng-bootstrap';
@Injectable()
export class TimeAdapter extends NgbTimeAdapter<string> {
export class TimeAdapter extends NgbTimeAdapter<string | Date> {
fromModel(value: string | Date): NgbTimeStruct | null {
if (!value) return null;

2
npm/ng-packs/packages/theme-shared/extensions/src/lib/components/abstract-actions/abstract-actions.component.ts

@ -13,7 +13,7 @@ export abstract class AbstractActionsComponent<L extends ActionList<any>> extend
readonly getInjected: InferredData<L>['getInjected'];
@Input() readonly record: InferredData<L>['record'];
@Input() record!: InferredData<L>['record'];
constructor(injector: Injector) {
super();

6
npm/ng-packs/packages/theme-shared/extensions/src/lib/components/date-time-picker/date-time-picker.component.ts

@ -58,11 +58,11 @@ import { selfFactory } from '../../utils/factory.util';
],
})
export class DateTimePickerComponent {
@Input() prop: FormProp;
@Input() prop!: FormProp;
@Input() meridian = false;
@ViewChild(NgbInputDatepicker) date: NgbInputDatepicker;
@ViewChild(NgbTimepicker) time: NgbTimepicker;
@ViewChild(NgbInputDatepicker) date!: NgbInputDatepicker;
@ViewChild(NgbTimepicker) time!: NgbTimepicker;
constructor(public readonly cdRef: ChangeDetectorRef) {}

18
npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form-prop.component.ts

@ -46,13 +46,13 @@ import { addTypeaheadTextSuffix } from '../../utils/typeahead.util';
],
})
export class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {
@Input() data: PropData;
@Input() data!: PropData;
@Input() prop: FormProp;
@Input() prop!: FormProp;
@Input() first: boolean;
@Input() first?: boolean;
@ViewChild('field') private fieldRef: ElementRef<HTMLElement>;
@ViewChild('field') private fieldRef!: ElementRef<HTMLElement>;
asterisk = '';
@ -60,9 +60,9 @@ export class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {
validators: ValidatorFn[] = [];
readonly: boolean;
readonly!: boolean;
disabled: boolean;
disabled!: boolean;
private readonly form: FormGroup;
@ -72,9 +72,9 @@ export class ExtensibleFormPropComponent implements OnChanges, AfterViewInit {
this.typeaheadModel = selectedOption || { key: null, value: null };
const { key, value } = this.typeaheadModel;
const [keyControl, valueControl] = this.getTypeaheadControls();
if (valueControl.value && !value) valueControl.markAsDirty();
keyControl.setValue(key);
valueControl.setValue(value);
if (valueControl?.value && !value) valueControl.markAsDirty();
keyControl?.setValue(key);
valueControl?.setValue(value);
}
search = (text$: Observable<string>) =>

6
npm/ng-packs/packages/theme-shared/extensions/src/lib/components/extensible-form/extensible-form.component.ts

@ -33,7 +33,7 @@ import { ExtensibleFormPropComponent } from './extensible-form-prop.component';
})
export class ExtensibleFormComponent<R = any> {
@ViewChildren(ExtensibleFormPropComponent)
formProps: QueryList<ExtensibleFormPropComponent>;
formProps!: QueryList<ExtensibleFormPropComponent>;
@Input()
set selectedRecord(record: R) {
@ -43,8 +43,8 @@ export class ExtensibleFormComponent<R = any> {
}
extraPropertiesKey = EXTRA_PROPERTIES_KEY;
propList: FormPropList<R>;
record: R;
propList!: FormPropList<R>;
record!: R;
get form(): FormGroup {
return (this.container ? this.container.control : { controls: {} }) as FormGroup;

2
npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/disabled.directive.ts

@ -6,7 +6,7 @@ import { NgControl } from '@angular/forms';
})
export class DisabledDirective implements OnChanges {
@Input()
abpDisabled: boolean;
abpDisabled = false;
constructor(@Host() private ngControl: NgControl) {}

6
npm/ng-packs/packages/theme-shared/extensions/src/lib/directives/prop-data.directive.ts

@ -18,11 +18,11 @@ export class PropDataDirective<L extends PropList<any>>
extends PropData<InferredData<L>>
implements OnChanges, OnDestroy
{
@Input('abpPropDataFromList') readonly propList: L;
@Input('abpPropDataFromList') propList?: L;
@Input('abpPropDataWithRecord') readonly record: InferredData<L>['record'];
@Input('abpPropDataWithRecord') record!: InferredData<L>['record'];
@Input('abpPropDataAtIndex') readonly index: number;
@Input('abpPropDataAtIndex') index?: number;
readonly getInjected: InferredData<L>['getInjected'];

2
npm/ng-packs/packages/theme-shared/extensions/src/lib/models/actions.ts

@ -32,7 +32,7 @@ export abstract class Action<R = any> {
) {}
}
export type ActionCallback<T, R = any> = (data?: Omit<ActionData<T>, 'data'>) => R;
export type ActionCallback<T, R = any> = (data: Omit<ActionData<T>, 'data'>) => R;
export type ActionPredicate<T> = (data?: Omit<ActionData<T>, 'data'>) => boolean;
export abstract class ActionsFactory<C extends Actions<any>> {

2
npm/ng-packs/packages/theme-shared/extensions/src/lib/models/props.ts

@ -38,7 +38,7 @@ export abstract class Prop<R = any> {
}
}
export type PropCallback<T, R = any> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => R;
export type PropCallback<T, R = any> = (data: Omit<PropData<T>, 'data'>, auxData?: any) => R;
export type PropPredicate<T> = (data?: Omit<PropData<T>, 'data'>, auxData?: any) => boolean;
export abstract class PropsFactory<C extends Props<any>> {

4
npm/ng-packs/packages/theme-shared/extensions/src/lib/models/toolbar-actions.ts

@ -27,7 +27,7 @@ export class ToolbarAction<R = any> extends Action<R> {
readonly icon: string;
constructor(options: ToolbarActionOptions<R>) {
super(options.permission, options.visible, options.action);
super(options.permission || '', options.visible, options.action);
this.text = options.text;
this.icon = options.icon || '';
}
@ -45,7 +45,7 @@ export class ToolbarComponent<R = any> extends Action<R> {
readonly component: Type<any>;
constructor(options: ToolbarComponentOptions<R>) {
super(options.permission, options.visible, options.action);
super(options.permission || '', options.visible, options.action);
this.component = options.component;
}

10
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/enum.util.ts

@ -8,7 +8,7 @@ import { PropCallback } from '../models/props';
export function createEnum(members: ObjectExtensions.ExtensionEnumFieldDto[]) {
const enumObject: any = {};
members.forEach(({ name, value }) => {
members.forEach(({ name = '', value }) => {
enumObject[(enumObject[name] = value as any)] = name;
});
@ -21,7 +21,7 @@ export function createEnumValueResolver<T = any>(
propName: string,
): PropCallback<T, Observable<string>> {
return data => {
const value = data.record[EXTRA_PROPERTIES_KEY][propName];
const value = (data.record as any)[EXTRA_PROPERTIES_KEY][propName];
const key = lookupEnum.transformed[value];
const l10n = data.getInjected(LocalizationService);
const localizeEnum = createEnumLocalizer(l10n, enumType, lookupEnum);
@ -40,7 +40,7 @@ export function createEnumOptions<T = any>(
return createLocalizationStream(
l10n,
lookupEnum.fields.map(({ name, value }) => ({
lookupEnum.fields.map(({ name = '', value }) => ({
key: localizeEnum(name),
value,
})),
@ -62,12 +62,12 @@ function createEnumLocalizer(
return key =>
l10n.localizeWithFallbackSync(
[resource],
[resource || ''],
['Enum:' + shortType + '.' + key, shortType + '.' + key, key],
key,
);
}
function getShortEnumType(enumType: string): string {
function getShortEnumType(enumType: string) {
return enumType.split('.').pop();
}

10
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/localization.util.ts

@ -15,19 +15,23 @@ export function createDisplayNameLocalizationPipeKeyGenerator(
) => {
if (displayName && displayName.name)
return generateLocalizationPipeKey(
[displayName.resource],
[displayName.resource || ''],
[displayName.name],
displayName.name,
);
const key = generateLocalizationPipeKey(
[fallback.resource],
[fallback.resource || ''],
['DisplayName:' + fallback.name],
undefined,
);
if (key) return key;
return generateLocalizationPipeKey([fallback.resource], [fallback.name], fallback.name);
return generateLocalizationPipeKey(
[fallback.resource || ''],
[fallback.name || ''],
fallback.name,
);
};
}

9
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/state.util.ts

@ -74,7 +74,7 @@ export function mapEntitiesToContributors<T = any>(
resource: string,
) {
return pipe(
switchMap(entities =>
switchMap((entities: any) =>
zip(selectLocalization(configState), selectEnums(configState)).pipe(
map(([localization, enums]) => {
const generateDisplayName = createDisplayNameLocalizationPipeKeyGenerator(localization);
@ -166,8 +166,9 @@ function createPropertiesToContributorsMapper<T = any>(
if (isOnCreateForm || isOnEditForm) {
const defaultValue = property.defaultValue;
const validators = () => getValidatorsFromProperty(property);
let options: PropCallback<any, Observable<ABP.Option<any>[]>>;
if (type === ePropType.Enum) options = createEnumOptions(propName, enums[property.type]);
let options: PropCallback<any, Observable<ABP.Option<any>[]>> | undefined;
if (type === ePropType.Enum)
options = createEnumOptions(propName, enums[property.type || '']);
else if (type === ePropType.Typeahead) options = createTypeaheadOptions(lookup);
const formProp = new FormProp({
@ -192,7 +193,7 @@ function createPropertiesToContributorsMapper<T = any>(
}
function getTypeFromProperty(property: ObjectExtensions.ExtensionPropertyDto): ePropType {
return property.typeSimple.replace(/\?$/, '') as string as ePropType;
return property?.typeSimple?.replace(/\?$/, '') as string as ePropType;
}
function isUndefined(obj: any): obj is undefined {

16
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/typeahead.util.ts

@ -12,25 +12,25 @@ export function createTypeaheadOptions(
lookup: ExtensionPropertyUiLookupDto,
): PropCallback<any, Observable<ABP.Option<any>[]>> {
return (data, searchText) =>
searchText
searchText && data
? data
.getInjected(RestService)
.request(
{
method: 'GET',
url: lookup.url,
url: lookup.url || '',
params: {
[lookup.filterParamName]: searchText,
[lookup.filterParamName || '']: searchText,
},
},
{ apiName: 'Default' },
)
.pipe(
map(response => {
const list = response[lookup.resultListPropertyName];
map((response: any) => {
const list = response[lookup.resultListPropertyName || ''];
const mapToOption = (item: any) => ({
key: item[lookup.displayPropertyName],
value: item[lookup.valuePropertyName],
key: item[lookup.displayPropertyName || ''],
value: item[lookup.valuePropertyName || ''],
});
return list.map(mapToOption);
}),
@ -51,7 +51,7 @@ export function createTypeaheadDisplayNameGenerator(
properties: ObjectExtensions.EntityExtensionProperties,
): ObjectExtensions.DisplayNameGeneratorFn {
return (displayName, fallback) => {
const name = removeTypeaheadTextSuffix(fallback.name);
const name = removeTypeaheadTextSuffix(fallback.name || '');
return displayNameGeneratorFn(displayName || properties[name].displayName, {
name,
resource: fallback.resource,

5
npm/ng-packs/packages/theme-shared/extensions/src/lib/utils/validation.util.ts

@ -8,8 +8,9 @@ export function getValidatorsFromProperty(
const validators: ValidatorFn[] = [];
property.attributes.forEach(attr => {
if (attr.typeSimple in AbpValidators)
validators.push(AbpValidators[attr.typeSimple](attr.config));
if (attr.typeSimple && attr.typeSimple in AbpValidators) {
validators.push((AbpValidators as any)[attr.typeSimple](attr.config));
}
});
return validators;

3
npm/ng-packs/packages/theme-shared/src/lib/components/breadcrumb-items/breadcrumb-items.component.ts

@ -1,3 +1,4 @@
import { ABP } from '@abp/ng.core';
import { Component, Input } from '@angular/core';
@Component({
@ -5,5 +6,5 @@ import { Component, Input } from '@angular/core';
templateUrl: './breadcrumb-items.component.html',
})
export class BreadcrumbItemsComponent {
@Input() items = [];
@Input() items: Partial<ABP.Route>[] = [];
}

12
npm/ng-packs/packages/theme-shared/src/lib/components/button/button.component.ts

@ -39,16 +39,16 @@ export class ButtonComponent implements OnInit {
buttonType = 'button';
@Input()
iconClass: string;
iconClass?: string;
@Input()
loading = false;
@Input()
disabled = false;
disabled: boolean | undefined = false;
@Input()
attributes: ABP.Dictionary<string>;
attributes?: ABP.Dictionary<string>;
@Output() readonly click = new EventEmitter<MouseEvent>();
@ -63,7 +63,7 @@ export class ButtonComponent implements OnInit {
@Output() readonly abpBlur = new EventEmitter<FocusEvent>();
@ViewChild('button', { static: true })
buttonRef: ElementRef<HTMLButtonElement>;
buttonRef!: ElementRef<HTMLButtonElement>;
get icon(): string {
return `${this.loading ? 'fa fa-spinner fa-spin' : this.iconClass || 'd-none'}`;
@ -74,7 +74,9 @@ export class ButtonComponent implements OnInit {
ngOnInit() {
if (this.attributes) {
Object.keys(this.attributes).forEach(key => {
this.renderer.setAttribute(this.buttonRef.nativeElement, key, this.attributes[key]);
if (this.attributes?.[key]) {
this.renderer.setAttribute(this.buttonRef.nativeElement, key, this.attributes[key]);
}
});
}
}

4
npm/ng-packs/packages/theme-shared/src/lib/components/confirmation/confirmation.component.ts

@ -12,9 +12,9 @@ export class ConfirmationComponent {
reject = Confirmation.Status.reject;
dismiss = Confirmation.Status.dismiss;
confirmation$: ReplaySubject<Confirmation.DialogData>;
confirmation$!: ReplaySubject<Confirmation.DialogData>;
clear: (status: Confirmation.Status) => void;
clear!: (status: Confirmation.Status) => void;
close(status: Confirmation.Status) {
this.clear(status);

24
npm/ng-packs/packages/theme-shared/src/lib/components/http-error-wrapper/http-error-wrapper.component.ts

@ -22,11 +22,11 @@ import { debounceTime, filter } from 'rxjs/operators';
providers: [SubscriptionService],
})
export class HttpErrorWrapperComponent implements AfterViewInit, OnDestroy, OnInit {
appRef: ApplicationRef;
appRef!: ApplicationRef;
cfRes: ComponentFactoryResolver;
cfRes!: ComponentFactoryResolver;
injector: Injector;
injector!: Injector;
status = 0;
@ -34,18 +34,18 @@ export class HttpErrorWrapperComponent implements AfterViewInit, OnDestroy, OnIn
details: LocalizationParam = 'Sorry, an error has occured.';
customComponent: Type<any> = null;
customComponent: Type<any> | undefined = undefined;
destroy$: Subject<void>;
destroy$!: Subject<void>;
hideCloseIcon = false;
backgroundColor: string;
backgroundColor!: string;
isHomeShow = true;
@ViewChild('container', { static: false })
containerRef: ElementRef<HTMLDivElement>;
containerRef?: ElementRef<HTMLDivElement>;
get statusText(): string {
return this.status ? `[${this.status}]` : '';
@ -66,13 +66,15 @@ export class HttpErrorWrapperComponent implements AfterViewInit, OnDestroy, OnIn
customComponentRef.instance.errorStatus = this.status;
customComponentRef.instance.destroy$ = this.destroy$;
this.appRef.attachView(customComponentRef.hostView);
this.containerRef.nativeElement.appendChild(
(customComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0],
);
if (this.containerRef) {
this.containerRef.nativeElement.appendChild(
(customComponentRef.hostView as EmbeddedViewRef<any>).rootNodes[0],
);
}
customComponentRef.changeDetectorRef.detectChanges();
}
const keyup$ = fromEvent(document, 'keyup').pipe(
const keyup$ = fromEvent<KeyboardEvent>(document, 'keyup').pipe(
debounceTime(150),
filter((key: KeyboardEvent) => key && key.key === 'Escape'),
);

2
npm/ng-packs/packages/theme-shared/src/lib/components/loader-bar/loader-bar.component.ts

@ -22,7 +22,7 @@ import { combineLatest, Subscription, timer } from 'rxjs';
providers: [SubscriptionService],
})
export class LoaderBarComponent implements OnDestroy, OnInit {
protected _isLoading: boolean;
protected _isLoading!: boolean;
@Input()
set isLoading(value: boolean) {

2
npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal-ref.service.ts

@ -3,7 +3,7 @@ import { Injectable } from '@angular/core';
export type ModalDismissMode = 'hard' | 'soft';
export interface DismissableModal {
dismiss(mode: ModalDismissMode);
dismiss(mode: ModalDismissMode): void;
}
@Injectable({ providedIn: 'root' })

4
npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.html

@ -1,7 +1,7 @@
<ng-content></ng-content>
<ng-template #modalContent let-modal>
<div id="abp-modal-header" class="modal-header">
<div *ngIf="abpHeader" id="abp-modal-header" class="modal-header">
<ng-container *ngTemplateOutlet="abpHeader"></ng-container>
​
<button
@ -12,7 +12,7 @@
(click)="modal.dismiss()"
></button>
</div>
<div id="abp-modal-body" class="modal-body">
<div *ngIf="abpBody" id="abp-modal-body" class="modal-body">
<ng-container *ngTemplateOutlet="abpBody"></ng-container>
</div>
<div *ngIf="abpFooter" id="abp-modal-footer" class="modal-footer">

38
npm/ng-packs/packages/theme-shared/src/lib/components/modal/modal.component.ts

@ -55,16 +55,16 @@ export class ModalComponent implements OnInit, OnDestroy, DismissableModal {
@Input() suppressUnsavedChangesWarning = this.suppressUnsavedChangesWarningToken;
@ViewChild('modalContent') modalContent: TemplateRef<any>;
@ViewChild('modalContent') modalContent?: TemplateRef<any>;
@ContentChild('abpHeader', { static: false }) abpHeader: TemplateRef<any>;
@ContentChild('abpHeader', { static: false }) abpHeader?: TemplateRef<any>;
@ContentChild('abpBody', { static: false }) abpBody: TemplateRef<any>;
@ContentChild('abpBody', { static: false }) abpBody?: TemplateRef<any>;
@ContentChild('abpFooter', { static: false }) abpFooter: TemplateRef<any>;
@ContentChild('abpFooter', { static: false }) abpFooter?: TemplateRef<any>;
@ContentChild(ButtonComponent, { static: false, read: ButtonComponent })
abpSubmit: ButtonComponent;
abpSubmit?: ButtonComponent;
@Output() readonly visibleChange = new EventEmitter<boolean>();
@ -78,7 +78,7 @@ export class ModalComponent implements OnInit, OnDestroy, DismissableModal {
_busy = false;
modalRef: NgbModalRef;
modalRef!: NgbModalRef;
isConfirmationOpen = false;
@ -93,7 +93,7 @@ export class ModalComponent implements OnInit, OnDestroy, DismissableModal {
}
get isFormDirty(): boolean {
return Boolean(this.modalWindowRef.querySelector('.ng-dirty'));
return Boolean(this.modalWindowRef?.querySelector('.ng-dirty'));
}
constructor(
@ -191,22 +191,22 @@ export class ModalComponent implements OnInit, OnDestroy, DismissableModal {
}
listen() {
fromEvent(this.modalWindowRef, 'keyup')
.pipe(
takeUntil(this.destroy$),
debounceTime(150),
filter((key: KeyboardEvent) => key && key.key === 'Escape'),
)
.subscribe(() => this.close());
if (this.modalWindowRef) {
fromEvent<KeyboardEvent>(this.modalWindowRef, 'keyup')
.pipe(
takeUntil(this.destroy$),
debounceTime(150),
filter((key: KeyboardEvent) => key && key.key === 'Escape'),
)
.subscribe(() => this.close());
}
fromEvent(window, 'beforeunload')
.pipe(takeUntil(this.destroy$))
.subscribe(event => {
event.preventDefault();
if (this.isFormDirty && !this.suppressUnsavedChangesWarning) {
event.returnValue = true;
} else {
delete event.returnValue;
// TODO: check this
if (!this.isFormDirty || this.suppressUnsavedChangesWarning) {
event.preventDefault();
}
});

14
npm/ng-packs/packages/theme-shared/src/lib/components/toast-container/toast-container.component.ts

@ -10,14 +10,14 @@ import { Toaster } from '../../models/toaster';
animations: [toastInOut],
})
export class ToastContainerComponent implements OnInit {
toasts$: ReplaySubject<Toaster.Toast[]>;
toasts$!: ReplaySubject<Toaster.Toast[]>;
remove: (toastId: number) => void;
remove!: (toastId: number) => void;
toasts = [] as Toaster.Toast[];
@Input()
top: string;
top?: string;
@Input()
right = '30px';
@ -26,10 +26,10 @@ export class ToastContainerComponent implements OnInit {
bottom = '30px';
@Input()
left: string;
left?: string;
@Input()
toastKey: string;
toastKey?: string;
ngOnInit() {
this.toasts$.subscribe(toasts => {
@ -41,8 +41,8 @@ export class ToastContainerComponent implements OnInit {
});
}
trackByFunc(index, toast) {
trackByFunc(index: number, toast: Toaster.Toast) {
if (!toast) return null;
return toast.options.id;
return toast.options?.id;
}
}

2
npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.html

@ -3,7 +3,7 @@
<i class="fa icon" [ngClass]="iconClass"></i>
</div>
<div class="abp-toast-content">
<button class="abp-toast-close-button" (click)="close()" *ngIf="toast.options.closable">
<button class="abp-toast-close-button" (click)="close()" *ngIf="toast.options?.closable">
<i class="fa fa-times"></i>
</button>
<div class="abp-toast-title">

4
npm/ng-packs/packages/theme-shared/src/lib/components/toast/toast.component.ts

@ -7,7 +7,7 @@ import { Toaster } from '../../models/toaster';
})
export class ToastComponent implements OnInit {
@Input()
toast: Toaster.Toast;
toast!: Toaster.Toast;
@Output() remove = new EventEmitter<number>();
@ -42,7 +42,7 @@ export class ToastComponent implements OnInit {
}
close() {
this.remove.emit(this.toast.options.id);
this.remove.emit(this.toast.options?.id);
}
tap() {

4
npm/ng-packs/packages/theme-shared/src/lib/directives/ellipsis.directive.ts

@ -13,11 +13,11 @@ import {
})
export class EllipsisDirective implements AfterViewInit {
@Input('abpEllipsis')
width: string;
width?: string;
@HostBinding('title')
@Input()
title: string;
title?: string;
@Input('abpEllipsisEnabled')
enabled = true;

12
npm/ng-packs/packages/theme-shared/src/lib/directives/loading.directive.ts

@ -18,7 +18,7 @@ import { LoadingComponent } from '../components/loading/loading.component';
@Directive({ selector: '[abpLoading]' })
export class LoadingDirective implements OnInit, OnDestroy {
private _loading: boolean;
private _loading!: boolean;
@HostBinding('style.position')
position = 'relative';
@ -53,7 +53,7 @@ export class LoadingDirective implements OnInit, OnDestroy {
if (newValue && !this.rootNode) {
this.rootNode = (this.componentRef.hostView as EmbeddedViewRef<any>).rootNodes[0];
this.targetElement.appendChild(this.rootNode);
this.targetElement?.appendChild(this.rootNode as HTMLDivElement);
} else if (this.rootNode) {
this.renderer.removeChild(this.rootNode.parentElement, this.rootNode);
this.rootNode = null;
@ -66,14 +66,14 @@ export class LoadingDirective implements OnInit, OnDestroy {
}
@Input('abpLoadingTargetElement')
targetElement: HTMLElement;
targetElement: HTMLElement | undefined;
@Input('abpLoadingDelay')
delay = 0;
componentRef: ComponentRef<LoadingComponent>;
rootNode: HTMLDivElement;
timerSubscription: Subscription;
componentRef!: ComponentRef<LoadingComponent>;
rootNode: HTMLDivElement | null = null;
timerSubscription: Subscription | null = null;
constructor(
private elRef: ElementRef<HTMLElement>,

2
npm/ng-packs/packages/theme-shared/src/lib/directives/ngx-datatable-list.directive.ts

@ -27,7 +27,7 @@ export class NgxDatatableListDirective implements OnChanges, OnDestroy, OnInit {
private subscription = new Subscription();
private querySubscription = new Subscription();
@Input() list: ListService;
@Input() list!: ListService;
constructor(
private table: DatatableComponent,

74
npm/ng-packs/packages/theme-shared/src/lib/handlers/error.handler.ts

@ -71,7 +71,7 @@ export const DEFAULT_ERROR_LOCALIZATIONS = {
@Injectable({ providedIn: 'root' })
export class ErrorHandler {
componentRef: ComponentRef<HttpErrorWrapperComponent>;
componentRef: ComponentRef<HttpErrorWrapperComponent> | null = null;
protected httpErrorHandler = this.injector.get(HTTP_ERROR_HANDLER, (_, err: HttpErrorResponse) =>
throwError(err),
@ -109,7 +109,7 @@ export class ErrorHandler {
.getEvents(ResolveEnd)
.pipe(filter(() => !!this.componentRef))
.subscribe(() => {
this.componentRef.destroy();
this.componentRef?.destroy();
this.componentRef = null;
});
}
@ -120,7 +120,7 @@ export class ErrorHandler {
.subscribe();
}
private executeErrorHandler = error => {
private executeErrorHandler = (error: any) => {
const returnValue = this.httpErrorHandler(this.injector, error);
return (returnValue instanceof Observable ? returnValue : of(null)).pipe(
@ -138,7 +138,7 @@ export class ErrorHandler {
};
if (err instanceof HttpErrorResponse && err.headers.get('_AbpErrorFormat')) {
const confirmation$ = this.showError(null, null, body);
const confirmation$ = this.showErrorWithRequestBody(body);
if (err.status === 401) {
confirmation$.subscribe(() => {
@ -249,29 +249,34 @@ export class ErrorHandler {
});
}
protected showError(
message?: LocalizationParam,
title?: LocalizationParam,
body?: any,
): Observable<Confirmation.Status> {
if (body) {
if (body.details) {
message = body.details;
title = body.message;
} else if (body.message) {
title = {
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
};
message = body.message;
} else {
message = body.message || {
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
};
}
protected showErrorWithRequestBody(body: any) {
let message: LocalizationParam;
let title: LocalizationParam;
if (body.details) {
message = body.details;
title = body.message;
} else if (body.message) {
title = {
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
};
message = body.message;
} else {
message = body.message || {
key: DEFAULT_ERROR_LOCALIZATIONS.defaultError.title,
defaultValue: DEFAULT_ERROR_MESSAGES.defaultError.title,
};
title = '';
}
return this.showError(message, title);
}
protected showError(
message: LocalizationParam,
title: LocalizationParam,
): Observable<Confirmation.Status> {
return this.confirmationService.error(message, title, {
hideCancelBtn: true,
yesText: 'AbpAccount::Close',
@ -293,18 +298,18 @@ export class ErrorHandler {
for (const key in instance) {
/* istanbul ignore else */
if (Object.prototype.hasOwnProperty.call(this.componentRef.instance, key)) {
this.componentRef.instance[key] = instance[key];
(this.componentRef.instance as any)[key] = (instance as any)[key];
}
}
this.componentRef.instance.hideCloseIcon = this.httpErrorConfig.errorScreen.hideCloseIcon;
this.componentRef.instance.hideCloseIcon = !!this.httpErrorConfig.errorScreen?.hideCloseIcon;
const appRef = this.injector.get(ApplicationRef);
if (this.canCreateCustomError(instance.status as ErrorScreenErrorCodes)) {
this.componentRef.instance.cfRes = this.cfRes;
this.componentRef.instance.appRef = appRef;
this.componentRef.instance.injector = this.injector;
this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen.component;
this.componentRef.instance.customComponent = this.httpErrorConfig.errorScreen?.component;
}
appRef.attachView(this.componentRef.hostView);
@ -313,27 +318,32 @@ export class ErrorHandler {
const destroy$ = new Subject<void>();
this.componentRef.instance.destroy$ = destroy$;
destroy$.subscribe(() => {
this.componentRef.destroy();
this.componentRef?.destroy();
this.componentRef = null;
});
}
canCreateCustomError(status: ErrorScreenErrorCodes): boolean {
return (
return !!(
this.httpErrorConfig?.errorScreen?.component &&
this.httpErrorConfig?.errorScreen?.forWhichErrors?.indexOf(status) > -1
this.httpErrorConfig?.errorScreen?.forWhichErrors &&
this.httpErrorConfig?.errorScreen?.forWhichErrors.indexOf(status) > -1
);
}
protected filterRestErrors = ({ status }: HttpErrorResponse): boolean => {
if (typeof status !== 'number') return false;
return this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === status) < 0;
return (
!!this.httpErrorConfig.skipHandledErrorCodes &&
this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === status) < 0
);
};
protected filterRouteErrors = (navigationError: NavigationError): boolean => {
return (
navigationError.error?.message?.indexOf('Cannot match') > -1 &&
!!this.httpErrorConfig.skipHandledErrorCodes &&
this.httpErrorConfig.skipHandledErrorCodes.findIndex(code => code === 404) < 0
);
};

2
npm/ng-packs/packages/theme-shared/src/lib/models/nav-item.ts

@ -1,7 +1,7 @@
import { Type } from '@angular/core';
export class NavItem {
id: string | number;
id?: string | number;
component?: Type<any>;
html?: string;
action?: () => void;

6
npm/ng-packs/packages/theme-shared/src/lib/services/confirmation.service.ts

@ -7,10 +7,10 @@ import { Confirmation } from '../models/confirmation';
@Injectable({ providedIn: 'root' })
export class ConfirmationService {
status$: Subject<Confirmation.Status>;
status$!: Subject<Confirmation.Status>;
confirmation$ = new ReplaySubject<Confirmation.DialogData>(1);
private containerComponentRef: ComponentRef<ConfirmationComponent>;
private containerComponentRef!: ComponentRef<ConfirmationComponent>;
clear = (status: Confirmation.Status = Confirmation.Status.dismiss) => {
this.confirmation$.next();
@ -87,7 +87,7 @@ export class ConfirmationService {
}
private listenToEscape() {
fromEvent(document, 'keyup')
fromEvent<KeyboardEvent>(document, 'keyup')
.pipe(
takeUntil(this.status$),
debounceTime(150),

4
npm/ng-packs/packages/theme-shared/src/lib/services/toaster.service.ts

@ -19,7 +19,7 @@ export class ToasterService implements ToasterContract {
private toasts = [] as Toaster.Toast[];
private containerComponentRef: ComponentRef<ToastContainerComponent>;
private containerComponentRef!: ComponentRef<ToastContainerComponent>;
constructor(private contentProjectionService: ContentProjectionService) {}
@ -100,7 +100,7 @@ export class ToasterService implements ToasterContract {
show(
message: LocalizationParam,
title: LocalizationParam = null,
title: LocalizationParam | undefined = undefined,
severity: Toaster.Severity = 'neutral',
options = {} as Partial<Toaster.ToastOptions>,
): Toaster.ToasterId {

7
npm/ng-packs/packages/theme-shared/src/lib/utils/date-parser-formatter.ts

@ -17,13 +17,14 @@ export class DateParserFormatter extends NgbDateParserFormatter {
super();
}
parse(value: string): NgbDateStruct {
parse(value: string): NgbDateStruct | null {
if (value) {
const dateParts = value.trim().split('-');
// TODO: CHANGED
if (dateParts.length === 1 && isNumber(dateParts[0])) {
return { year: toInteger(dateParts[0]), month: null, day: null };
return { year: toInteger(dateParts[0]), month: -1, day: -1 };
} else if (dateParts.length === 2 && isNumber(dateParts[0]) && isNumber(dateParts[1])) {
return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: null };
return { year: toInteger(dateParts[0]), month: toInteger(dateParts[1]), day: -1 };
} else if (
dateParts.length === 3 &&
isNumber(dateParts[0]) &&

1
npm/ng-packs/tsconfig.base.json

@ -1,6 +1,7 @@
{
"compileOnSave": false,
"compilerOptions": {
"strict": false,
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",

1684
npm/ng-packs/yarn.lock

File diff suppressed because it is too large

2
npm/packs/aspnetcore.mvc.ui.theme.shared/package.json

@ -13,7 +13,7 @@
"@abp/aspnetcore.mvc.ui": "~5.0.0-beta.3",
"@abp/bootstrap": "~5.0.0-beta.3",
"@abp/bootstrap-datepicker": "~5.0.0-beta.3",
"@abp/datatables.net-bs4": "~5.0.0-beta.3",
"@abp/datatables.net-bs5": "~5.0.0-beta.3",
"@abp/font-awesome": "~5.0.0-beta.3",
"@abp/jquery-form": "~5.0.0-beta.3",
"@abp/jquery-validation-unobtrusive": "~5.0.0-beta.3",

5
npm/yarn.lock

@ -76,6 +76,11 @@
unique-filename "^1.1.1"
which "^1.3.1"
"@gar/promisify@^1.0.1":
version "1.1.2"
resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.2.tgz#30aa825f11d438671d585bd44e7fd564535fc210"
integrity sha512-82cpyJyKRoQoRi+14ibCeGPu0CwypgtBAdBhq1WfvagpCZNKqwXbKwXllYSMG91DhmG4jt9gN8eP6lGOtozuaw==
"@lerna/add@3.18.4":
version "3.18.4"
resolved "https://registry.yarnpkg.com/@lerna/add/-/add-3.18.4.tgz#0d97c75b64febc10a9a38546a3019f0f2c24b0e6"

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

268
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server.Tiered/yarn.lock

@ -2,52 +2,52 @@
# yarn lockfile v1
"@abp/aspnetcore.components.server.basictheme@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.4.3.tgz#ae4be5ad09a632c6a5cf107036e625d5040903cf"
integrity sha512-uouOUtsGKxhTKJ8bM2uzGJx5smvyR6g/Du19DC7+rhOEQpBMnQyIV2rmqdTQ52JOCaL/Q8YU9bOG8e5B5M5K3A==
dependencies:
"@abp/aspnetcore.components.server.theming" "~4.4.3"
"@abp/aspnetcore.components.server.theming@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.4.3.tgz#8cf98389153be9b7edb8cdd9b7d1045d60388a30"
integrity sha512-LiBT7mo6L72v1712K4mSlH+UQ4DSVzJ0ndXHKzLIpch7K9fhYqOLvLNfBQvutWiXyFmvk3dcuWRFtOvGCw05cQ==
dependencies:
"@abp/bootstrap" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97"
integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3"
"@abp/bootstrap" "~4.4.3"
"@abp/bootstrap-datepicker" "~4.4.3"
"@abp/datatables.net-bs4" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/jquery-form" "~4.4.3"
"@abp/jquery-validation-unobtrusive" "~4.4.3"
"@abp/lodash" "~4.4.3"
"@abp/luxon" "~4.4.3"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3"
"@abp/select2" "~4.4.3"
"@abp/sweetalert" "~4.4.3"
"@abp/timeago" "~4.4.3"
"@abp/toastr" "~4.4.3"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
"@abp/aspnetcore.components.server.basictheme@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.4.4.tgz#532072f508ba70850d5cc5811781c6755b1a18e1"
integrity sha512-11wTVJGWvBwfIY5rrN/e3mAbxfhy6Zq0IdHKGpjIDzkamB5jr5vjUNRoNH6ZM5GRg6R9iyr9iy9UCqogVg5Gug==
dependencies:
"@abp/aspnetcore.components.server.theming" "~4.4.4"
"@abp/aspnetcore.components.server.theming@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.4.4.tgz#999d3c8338e57e465a13f8d7da57ff61bd1e89fc"
integrity sha512-4NPNr/KbYmGBqVVQ85zP+sw9qHyM2qwEjAKQ3yESfn56zMQx0uTTd6ytRDqDidI81UwTCZpVsPCxfne4IWHNxA==
dependencies:
"@abp/bootstrap" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99"
integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee"
integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.4"
"@abp/bootstrap" "~4.4.4"
"@abp/bootstrap-datepicker" "~4.4.4"
"@abp/datatables.net-bs4" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/jquery-form" "~4.4.4"
"@abp/jquery-validation-unobtrusive" "~4.4.4"
"@abp/lodash" "~4.4.4"
"@abp/luxon" "~4.4.4"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.4"
"@abp/select2" "~4.4.4"
"@abp/sweetalert" "~4.4.4"
"@abp/timeago" "~4.4.4"
"@abp/toastr" "~4.4.4"
"@abp/aspnetcore.mvc.ui@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658"
integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -56,145 +56,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
"@abp/bootstrap-datepicker@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba"
integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
"@abp/bootstrap@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db"
integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ==
"@abp/core@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78"
integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/utils" "~4.4.4"
"@abp/datatables.net-bs4@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw==
"@abp/datatables.net-bs4@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b"
integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw==
dependencies:
"@abp/datatables.net" "~4.4.3"
"@abp/datatables.net" "~4.4.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
"@abp/datatables.net@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669"
integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
"@abp/font-awesome@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8"
integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA==
"@abp/jquery-form@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5"
integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
"@abp/jquery-validation-unobtrusive@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026"
integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA==
dependencies:
"@abp/jquery-validation" "~4.4.3"
"@abp/jquery-validation" "~4.4.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA==
"@abp/jquery-validation@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155"
integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw==
"@abp/jquery@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594"
integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
"@abp/lodash@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9"
integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
"@abp/luxon@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3"
integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
"@abp/malihu-custom-scrollbar-plugin@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518"
integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw==
"@abp/select2@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf"
integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
select2 "^4.0.13"
"@abp/sweetalert@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng==
"@abp/sweetalert@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab"
integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
"@abp/timeago@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29"
integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
"@abp/toastr@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41"
integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
toastr "^2.1.4"
"@abp/utils@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
"@abp/utils@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf"
integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g==
dependencies:
just-compare "^1.3.0"

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

268
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Blazor.Server/yarn.lock

@ -2,52 +2,52 @@
# yarn lockfile v1
"@abp/aspnetcore.components.server.basictheme@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.4.3.tgz#ae4be5ad09a632c6a5cf107036e625d5040903cf"
integrity sha512-uouOUtsGKxhTKJ8bM2uzGJx5smvyR6g/Du19DC7+rhOEQpBMnQyIV2rmqdTQ52JOCaL/Q8YU9bOG8e5B5M5K3A==
dependencies:
"@abp/aspnetcore.components.server.theming" "~4.4.3"
"@abp/aspnetcore.components.server.theming@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.4.3.tgz#8cf98389153be9b7edb8cdd9b7d1045d60388a30"
integrity sha512-LiBT7mo6L72v1712K4mSlH+UQ4DSVzJ0ndXHKzLIpch7K9fhYqOLvLNfBQvutWiXyFmvk3dcuWRFtOvGCw05cQ==
dependencies:
"@abp/bootstrap" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97"
integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3"
"@abp/bootstrap" "~4.4.3"
"@abp/bootstrap-datepicker" "~4.4.3"
"@abp/datatables.net-bs4" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/jquery-form" "~4.4.3"
"@abp/jquery-validation-unobtrusive" "~4.4.3"
"@abp/lodash" "~4.4.3"
"@abp/luxon" "~4.4.3"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3"
"@abp/select2" "~4.4.3"
"@abp/sweetalert" "~4.4.3"
"@abp/timeago" "~4.4.3"
"@abp/toastr" "~4.4.3"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
"@abp/aspnetcore.components.server.basictheme@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.basictheme/-/aspnetcore.components.server.basictheme-4.4.4.tgz#532072f508ba70850d5cc5811781c6755b1a18e1"
integrity sha512-11wTVJGWvBwfIY5rrN/e3mAbxfhy6Zq0IdHKGpjIDzkamB5jr5vjUNRoNH6ZM5GRg6R9iyr9iy9UCqogVg5Gug==
dependencies:
"@abp/aspnetcore.components.server.theming" "~4.4.4"
"@abp/aspnetcore.components.server.theming@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.components.server.theming/-/aspnetcore.components.server.theming-4.4.4.tgz#999d3c8338e57e465a13f8d7da57ff61bd1e89fc"
integrity sha512-4NPNr/KbYmGBqVVQ85zP+sw9qHyM2qwEjAKQ3yESfn56zMQx0uTTd6ytRDqDidI81UwTCZpVsPCxfne4IWHNxA==
dependencies:
"@abp/bootstrap" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99"
integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee"
integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.4"
"@abp/bootstrap" "~4.4.4"
"@abp/bootstrap-datepicker" "~4.4.4"
"@abp/datatables.net-bs4" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/jquery-form" "~4.4.4"
"@abp/jquery-validation-unobtrusive" "~4.4.4"
"@abp/lodash" "~4.4.4"
"@abp/luxon" "~4.4.4"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.4"
"@abp/select2" "~4.4.4"
"@abp/sweetalert" "~4.4.4"
"@abp/timeago" "~4.4.4"
"@abp/toastr" "~4.4.4"
"@abp/aspnetcore.mvc.ui@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658"
integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -56,145 +56,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
"@abp/bootstrap-datepicker@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba"
integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
"@abp/bootstrap@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db"
integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ==
"@abp/core@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78"
integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/utils" "~4.4.4"
"@abp/datatables.net-bs4@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw==
"@abp/datatables.net-bs4@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b"
integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw==
dependencies:
"@abp/datatables.net" "~4.4.3"
"@abp/datatables.net" "~4.4.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
"@abp/datatables.net@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669"
integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
"@abp/font-awesome@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8"
integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA==
"@abp/jquery-form@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5"
integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
"@abp/jquery-validation-unobtrusive@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026"
integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA==
dependencies:
"@abp/jquery-validation" "~4.4.3"
"@abp/jquery-validation" "~4.4.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA==
"@abp/jquery-validation@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155"
integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw==
"@abp/jquery@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594"
integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
"@abp/lodash@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9"
integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
"@abp/luxon@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3"
integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
"@abp/malihu-custom-scrollbar-plugin@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518"
integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw==
"@abp/select2@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf"
integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
select2 "^4.0.13"
"@abp/sweetalert@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng==
"@abp/sweetalert@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab"
integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
"@abp/timeago@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29"
integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
"@abp/toastr@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41"
integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
toastr "^2.1.4"
"@abp/utils@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
"@abp/utils@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf"
integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g==
dependencies:
just-compare "^1.3.0"

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

238
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.HttpApi.HostWithIds/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97"
integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3"
"@abp/bootstrap" "~4.4.3"
"@abp/bootstrap-datepicker" "~4.4.3"
"@abp/datatables.net-bs4" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/jquery-form" "~4.4.3"
"@abp/jquery-validation-unobtrusive" "~4.4.3"
"@abp/lodash" "~4.4.3"
"@abp/luxon" "~4.4.3"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3"
"@abp/select2" "~4.4.3"
"@abp/sweetalert" "~4.4.3"
"@abp/timeago" "~4.4.3"
"@abp/toastr" "~4.4.3"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99"
integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee"
integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.4"
"@abp/bootstrap" "~4.4.4"
"@abp/bootstrap-datepicker" "~4.4.4"
"@abp/datatables.net-bs4" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/jquery-form" "~4.4.4"
"@abp/jquery-validation-unobtrusive" "~4.4.4"
"@abp/lodash" "~4.4.4"
"@abp/luxon" "~4.4.4"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.4"
"@abp/select2" "~4.4.4"
"@abp/sweetalert" "~4.4.4"
"@abp/timeago" "~4.4.4"
"@abp/toastr" "~4.4.4"
"@abp/aspnetcore.mvc.ui@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658"
integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
"@abp/bootstrap-datepicker@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba"
integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
"@abp/bootstrap@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db"
integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ==
"@abp/core@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78"
integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/utils" "~4.4.4"
"@abp/datatables.net-bs4@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw==
"@abp/datatables.net-bs4@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b"
integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw==
dependencies:
"@abp/datatables.net" "~4.4.3"
"@abp/datatables.net" "~4.4.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
"@abp/datatables.net@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669"
integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
"@abp/font-awesome@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8"
integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA==
"@abp/jquery-form@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5"
integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
"@abp/jquery-validation-unobtrusive@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026"
integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA==
dependencies:
"@abp/jquery-validation" "~4.4.3"
"@abp/jquery-validation" "~4.4.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA==
"@abp/jquery-validation@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155"
integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw==
"@abp/jquery@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594"
integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
"@abp/lodash@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9"
integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
"@abp/luxon@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3"
integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
"@abp/malihu-custom-scrollbar-plugin@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518"
integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw==
"@abp/select2@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf"
integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
select2 "^4.0.13"
"@abp/sweetalert@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng==
"@abp/sweetalert@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab"
integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
"@abp/timeago@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29"
integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
"@abp/toastr@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41"
integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
toastr "^2.1.4"
"@abp/utils@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
"@abp/utils@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf"
integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g==
dependencies:
just-compare "^1.3.0"

2
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/abp/jquery/abp.jquery.js

@ -106,7 +106,7 @@ var abp = abp || {};
$dfd.resolve(data);
userOptions.success && userOptions.success(data);
}).fail(function (jqXHR) {
if(jqXHR.status === 0 || jqXHR.statusText === 'abort') {
if(jqXHR.statusText === 'abort') {
//ajax request is abort, ignore error handle.
return;
}

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

238
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.IdentityServer/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97"
integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3"
"@abp/bootstrap" "~4.4.3"
"@abp/bootstrap-datepicker" "~4.4.3"
"@abp/datatables.net-bs4" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/jquery-form" "~4.4.3"
"@abp/jquery-validation-unobtrusive" "~4.4.3"
"@abp/lodash" "~4.4.3"
"@abp/luxon" "~4.4.3"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3"
"@abp/select2" "~4.4.3"
"@abp/sweetalert" "~4.4.3"
"@abp/timeago" "~4.4.3"
"@abp/toastr" "~4.4.3"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99"
integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee"
integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.4"
"@abp/bootstrap" "~4.4.4"
"@abp/bootstrap-datepicker" "~4.4.4"
"@abp/datatables.net-bs4" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/jquery-form" "~4.4.4"
"@abp/jquery-validation-unobtrusive" "~4.4.4"
"@abp/lodash" "~4.4.4"
"@abp/luxon" "~4.4.4"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.4"
"@abp/select2" "~4.4.4"
"@abp/sweetalert" "~4.4.4"
"@abp/timeago" "~4.4.4"
"@abp/toastr" "~4.4.4"
"@abp/aspnetcore.mvc.ui@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658"
integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
"@abp/bootstrap-datepicker@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba"
integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
"@abp/bootstrap@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db"
integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ==
"@abp/core@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78"
integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/utils" "~4.4.4"
"@abp/datatables.net-bs4@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw==
"@abp/datatables.net-bs4@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b"
integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw==
dependencies:
"@abp/datatables.net" "~4.4.3"
"@abp/datatables.net" "~4.4.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
"@abp/datatables.net@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669"
integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
"@abp/font-awesome@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8"
integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA==
"@abp/jquery-form@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5"
integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
"@abp/jquery-validation-unobtrusive@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026"
integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA==
dependencies:
"@abp/jquery-validation" "~4.4.3"
"@abp/jquery-validation" "~4.4.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA==
"@abp/jquery-validation@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155"
integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw==
"@abp/jquery@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594"
integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
"@abp/lodash@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9"
integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
"@abp/luxon@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3"
integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
"@abp/malihu-custom-scrollbar-plugin@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518"
integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw==
"@abp/select2@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf"
integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
select2 "^4.0.13"
"@abp/sweetalert@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng==
"@abp/sweetalert@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab"
integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
"@abp/timeago@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29"
integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
"@abp/toastr@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41"
integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
toastr "^2.1.4"
"@abp/utils@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
"@abp/utils@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf"
integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g==
dependencies:
just-compare "^1.3.0"

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

238
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web.Host/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97"
integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3"
"@abp/bootstrap" "~4.4.3"
"@abp/bootstrap-datepicker" "~4.4.3"
"@abp/datatables.net-bs4" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/jquery-form" "~4.4.3"
"@abp/jquery-validation-unobtrusive" "~4.4.3"
"@abp/lodash" "~4.4.3"
"@abp/luxon" "~4.4.3"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3"
"@abp/select2" "~4.4.3"
"@abp/sweetalert" "~4.4.3"
"@abp/timeago" "~4.4.3"
"@abp/toastr" "~4.4.3"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99"
integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee"
integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.4"
"@abp/bootstrap" "~4.4.4"
"@abp/bootstrap-datepicker" "~4.4.4"
"@abp/datatables.net-bs4" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/jquery-form" "~4.4.4"
"@abp/jquery-validation-unobtrusive" "~4.4.4"
"@abp/lodash" "~4.4.4"
"@abp/luxon" "~4.4.4"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.4"
"@abp/select2" "~4.4.4"
"@abp/sweetalert" "~4.4.4"
"@abp/timeago" "~4.4.4"
"@abp/toastr" "~4.4.4"
"@abp/aspnetcore.mvc.ui@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658"
integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
"@abp/bootstrap-datepicker@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba"
integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
"@abp/bootstrap@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db"
integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ==
"@abp/core@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78"
integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/utils" "~4.4.4"
"@abp/datatables.net-bs4@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw==
"@abp/datatables.net-bs4@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b"
integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw==
dependencies:
"@abp/datatables.net" "~4.4.3"
"@abp/datatables.net" "~4.4.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
"@abp/datatables.net@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669"
integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
"@abp/font-awesome@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8"
integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA==
"@abp/jquery-form@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5"
integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
"@abp/jquery-validation-unobtrusive@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026"
integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA==
dependencies:
"@abp/jquery-validation" "~4.4.3"
"@abp/jquery-validation" "~4.4.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA==
"@abp/jquery-validation@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155"
integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw==
"@abp/jquery@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594"
integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
"@abp/lodash@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9"
integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
"@abp/luxon@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3"
integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
"@abp/malihu-custom-scrollbar-plugin@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518"
integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw==
"@abp/select2@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf"
integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
select2 "^4.0.13"
"@abp/sweetalert@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng==
"@abp/sweetalert@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab"
integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
"@abp/timeago@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29"
integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
"@abp/toastr@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41"
integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
toastr "^2.1.4"
"@abp/utils@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
"@abp/utils@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf"
integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g==
dependencies:
just-compare "^1.3.0"

4
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/wwwroot/libs/select2/js/select2-bootstrap-modal-patch.js

@ -1,4 +1,6 @@
/*
https://select2.org/troubleshooting/common-problems
*/
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
if ($.fn.modal) {
$.fn.modal.Constructor.prototype._enforceFocus = function () { };
}

238
templates/app/aspnet-core/src/MyCompanyName.MyProjectName.Web/yarn.lock

@ -2,37 +2,37 @@
# yarn lockfile v1
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.3.tgz#26b230021334f7859fbb80f9c379a1192cc3fe97"
integrity sha512-FR1XIiZljhjBuHQKr2kdd0gD82sy8+oVPrJ+BrSKK3N4OsOTpVxZnUhixLeDRv1Lmw3twwmLCEcp8snPix/wPg==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.3"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.3.tgz#464148bbf641e6988852235f94dc3393131c657e"
integrity sha512-/aXlX5JZ/CYD6KdIBL2V216aNidqxf7ugU9dZPK1FbGSixN805lJVIu766ufEA5xZrMIGPL/O7MZmu+hJyclTA==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.3"
"@abp/bootstrap" "~4.4.3"
"@abp/bootstrap-datepicker" "~4.4.3"
"@abp/datatables.net-bs4" "~4.4.3"
"@abp/font-awesome" "~4.4.3"
"@abp/jquery-form" "~4.4.3"
"@abp/jquery-validation-unobtrusive" "~4.4.3"
"@abp/lodash" "~4.4.3"
"@abp/luxon" "~4.4.3"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.3"
"@abp/select2" "~4.4.3"
"@abp/sweetalert" "~4.4.3"
"@abp/timeago" "~4.4.3"
"@abp/toastr" "~4.4.3"
"@abp/aspnetcore.mvc.ui@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.3.tgz#b7c217f23d39793a63baff9a56ff063bb0da3049"
integrity sha512-dVZe5HcKRTg0gfWom7vY70JRZkHm1nFtYWq+ciEPvVqPAClzDEvJucoKiUTzfgmPQO13Yv5/GonTV99MV9sLHg==
"@abp/aspnetcore.mvc.ui.theme.basic@^4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.basic/-/aspnetcore.mvc.ui.theme.basic-4.4.4.tgz#ecaaee9d8af8e14a1c9fa65bf3cb6e56c6a82e99"
integrity sha512-FBctV4JuYnTqCCzA/1EG2wUdTYYcilTNSWvk/4YZkndvu9T5iu48qdac1Gq3Ux8JIFer9D0oAPld0YlweYYOGw==
dependencies:
"@abp/aspnetcore.mvc.ui.theme.shared" "~4.4.4"
"@abp/aspnetcore.mvc.ui.theme.shared@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui.theme.shared/-/aspnetcore.mvc.ui.theme.shared-4.4.4.tgz#22191efb159572abbd071e12cce847768721a2ee"
integrity sha512-Fp4OXxaSSsTzDlWlVYksSTKXbXvUdILbJNlk+r03TD7VmJCaNx49BxLyUEhJIyP3SY8oOno1UnsDjygbFHJ0xw==
dependencies:
"@abp/aspnetcore.mvc.ui" "~4.4.4"
"@abp/bootstrap" "~4.4.4"
"@abp/bootstrap-datepicker" "~4.4.4"
"@abp/datatables.net-bs4" "~4.4.4"
"@abp/font-awesome" "~4.4.4"
"@abp/jquery-form" "~4.4.4"
"@abp/jquery-validation-unobtrusive" "~4.4.4"
"@abp/lodash" "~4.4.4"
"@abp/luxon" "~4.4.4"
"@abp/malihu-custom-scrollbar-plugin" "~4.4.4"
"@abp/select2" "~4.4.4"
"@abp/sweetalert" "~4.4.4"
"@abp/timeago" "~4.4.4"
"@abp/toastr" "~4.4.4"
"@abp/aspnetcore.mvc.ui@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/aspnetcore.mvc.ui/-/aspnetcore.mvc.ui-4.4.4.tgz#2f8e9488cad566f333d62fa717621477fb7fe658"
integrity sha512-/ngxU+vyUfBfpJ7+4/2Fyo5arUAY+LrjauoH9rkdXxpNjNNKjSUsoVqRAwRc1QMJh3iuUOeJgzx0gtkcE2ihiQ==
dependencies:
ansi-colors "^4.1.1"
extend-object "^1.0.0"
@ -41,145 +41,145 @@
merge-stream "^2.0.0"
micromatch "^4.0.2"
"@abp/bootstrap-datepicker@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.3.tgz#08fd1642ede232badb62a1536982ad2bfce6c265"
integrity sha512-pwb+3DbLkhuNnjD74UwqZgK5hnoxAFFu8y7qlJEkSiKsLWrKNlJS+PHF1LLifPqXogU1MKwc18AuXnHOEKjzbQ==
"@abp/bootstrap-datepicker@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap-datepicker/-/bootstrap-datepicker-4.4.4.tgz#f2bddae93c4d126f926e4c9f0b4d41b5638ec4ba"
integrity sha512-WfP8KqMNcwAIyVim0MpyMo7sg1kVd9LzrqeAOdu5nPrJ9iV5N3y/JIw4JUkSaOh/zQPLgZUMg1NEhDHOkbaOHw==
dependencies:
bootstrap-datepicker "^1.9.0"
"@abp/bootstrap@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.3.tgz#76968df98fd5c6e5d26abea9cea5c9d76646d24e"
integrity sha512-InA3AI1ydkqd7AYz+f9RAag1h/uhFsFAFGIo34jllIeFhG4C59EbkNwdWDk96lNHmt0qutQYydsO6WKPlgnjYA==
"@abp/bootstrap@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/bootstrap/-/bootstrap-4.4.4.tgz#34ff3d94cea5b95fa78acdd5837d36569e0244db"
integrity sha512-fE8MsiUJD7K/lzKCsQ5FUU6KbZL6GORBMUdenm5OAUGpQWKPdLZ8mF2rjNsb2+kQgVQCuei7eYl+6712idCF9A==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
bootstrap "^4.6.0"
bootstrap-v4-rtl "4.6.0-1"
"@abp/core@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.3.tgz#fc79a2eebf37a61a6cc05287b722750000f38522"
integrity sha512-gQ2rNyj1MpYCfLTg7Id/20AH4dqs0XIt/n+WqlgeGoYvEpAm4lakHWL7mxZaDQ+iMI/lVVrBhuzwuQv7xKpEIQ==
"@abp/core@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/core/-/core-4.4.4.tgz#e157da92b884d7d9a1e3ba50f65be42c60047d78"
integrity sha512-t3Mu7Bvs0o439CVSx9uxBJ+yTFrt2Pyep9/6Vh6Su+b4aoZeQt6ZTKWeJqUVZ7Y/LMt+AbJ/dtbFHvhV8yVuXg==
dependencies:
"@abp/utils" "^4.4.3"
"@abp/utils" "~4.4.4"
"@abp/datatables.net-bs4@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.3.tgz#69d3704d057fe39c3b4aff0654f098fac3a27f49"
integrity sha512-Rs8u9BqaVnA7SYhaP849dVNQjaUdO3y5d95b5hv9kLgxquIEf/FIAmGMc0p9BkCK74SkRJ3WJLlR8DXxLi/tEw==
"@abp/datatables.net-bs4@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net-bs4/-/datatables.net-bs4-4.4.4.tgz#37f4c5664ba1a8c4f5b03e675192f6b0ef66cf1b"
integrity sha512-byccQ1dSzhxpLggDwyPoOSOGF+6lBrr9r+WC3OCzWkBUuD6gXpRzDumjAAgIe12hGfXGDRibuD7Ji3qPLzcHzw==
dependencies:
"@abp/datatables.net" "~4.4.3"
"@abp/datatables.net" "~4.4.4"
datatables.net-bs4 "^1.10.21"
"@abp/datatables.net@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.3.tgz#1515dcc2bdc7c65c1f24a366c738e1b21ad05723"
integrity sha512-j0cIadlcIOLb/ZQnbqXi4sMEgyLCFA08GMIljvN6GhBObZjMQh4Eazk/B+a4xw+ATk0rbAW3dJyMx80zpi82cg==
"@abp/datatables.net@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/datatables.net/-/datatables.net-4.4.4.tgz#add4b07eef578dd02f84892bbe495642459c4669"
integrity sha512-+9JHEu71xADrTFIKoujXAO0nwUvAuRU9gJpVuJFg4G6juILbEqARo2mUTXEx+UyqnzhwoRJ0K1VFyBJnCY0R0Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
datatables.net "^1.10.21"
"@abp/font-awesome@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.3.tgz#9b0b03da07245e4458305e54490b4e37cbcc2b40"
integrity sha512-R6s0jcAhmpUTdc4b/NJkfHXbXblmcuTNwiNG/CJJ/QNrVhk7OolzyqR5k/moaBpb4Uaqf5u07Aau24rOH35q5w==
"@abp/font-awesome@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/font-awesome/-/font-awesome-4.4.4.tgz#47ff0c880ceb95382e0b1371912230cd7d7602c8"
integrity sha512-lkuyC7drFfzavkNJNLuQ+EJYTBb5ZlPNPnGFAxEpRyjJuJ5j+n84JxVBXwg+oPOfmZ+hOeEQPA7j7TdcC4EZDQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
"@fortawesome/fontawesome-free" "^5.13.0"
"@abp/jquery-form@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.3.tgz#3d5760e9ece4984165304fa028a5eb997adc4d9f"
integrity sha512-lk0QYruQVwXhVFYBiIrNx5zqF7fY7PKuGGvPQMHyeNaljvpbuK5FPwkge0y6nToWA4Y7PhSCYBU7xvkBuqEDgA==
"@abp/jquery-form@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-form/-/jquery-form-4.4.4.tgz#0638484b9318ba98acaf765aac0396f5f523dce5"
integrity sha512-JWN82DzSbSk2vAPQaapv+8PPCN8si4peLoWJAoHTVizAvis3YamdcG+QLYbTCAVKRlh7kiLRgbAAroy3ppbZ7Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-form "^4.3.0"
"@abp/jquery-validation-unobtrusive@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.3.tgz#c08e336debe60a119a5abd0cb66032da6ace6b08"
integrity sha512-mfvYChTALH5nmB0docrEkS5/+Yxt6SgbQOjPVuQx5PgqoVscmf2/JvsBnW73/YVdQBkVXs339hoDGPA6K2WR9w==
"@abp/jquery-validation-unobtrusive@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation-unobtrusive/-/jquery-validation-unobtrusive-4.4.4.tgz#2ef0ce29eeb9e6aac9a87338a67aab2060b63026"
integrity sha512-XA9s0uzGXjBju1ZS42xd3IWproSxLBdGEZIYoSbVmaxS0YDBa8FqffbNb/fgY9M8dqujZEasDVuQPhXLBRN+jA==
dependencies:
"@abp/jquery-validation" "~4.4.3"
"@abp/jquery-validation" "~4.4.4"
jquery-validation-unobtrusive "^3.2.11"
"@abp/jquery-validation@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.3.tgz#331f3671e6e37bed4dc737942e8eb2a6d1297722"
integrity sha512-RjKn9xxoYQz0v8yzWcVlbIQYZQTcXgYFX7GMJf04V/QbdU6vsge+5vHKzhcaW5XWL8+GgKHTqqoxbqzdJykaPA==
"@abp/jquery-validation@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery-validation/-/jquery-validation-4.4.4.tgz#fa71e1729b692b40097175d68caad29ea13d5155"
integrity sha512-vrP/Vpne86GbPnHR8M8PGvm+B9kGd/JJiPzVN/egxEvvBKdw0APGk9R03Tji2Qu8CuZxvPnKzHHBwKRinWX3Ng==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
jquery-validation "^1.19.2"
"@abp/jquery@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.3.tgz#9d2dc238596a6e5c878b5be4b1d49e7e8f95aec4"
integrity sha512-BN2KU1mw0hyQD8/61ZOIDM0hyMDkhZix4TOWCQa3s18pWHlBEsjKVnINQlz9J9k4TZEdQP9D3wZmw+XUfZjoIw==
"@abp/jquery@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/jquery/-/jquery-4.4.4.tgz#cbf5f99562ad5f01c41aa61704b0136c4ad68594"
integrity sha512-0fltJprq9DMHHWeTAN7i8kAcod5czQ48LdjeIY3wuLDWkGgMVcfarECQ9cu7QekMryB0HFdrUjMJHIhxqzxc3Q==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
jquery "~3.6.0"
"@abp/lodash@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.3.tgz#8e936ebc54a9043eee80cb22f3dad5ea8a2306cb"
integrity sha512-QKFjdRd8cEZp7fg9MhuFhD5CP3MBw7CfaJ3yj0W1e5Tx+xtV+rYz4PrOE8/BLb4un7gxqUrEWBgdIzY+lBR7mQ==
"@abp/lodash@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/lodash/-/lodash-4.4.4.tgz#8abd3986bcf64561ecbc86f23f53677b3c34eda9"
integrity sha512-IyAZHiR1vPYhbla0lTH/iYK38PCR+9wP5zgrWGD0JSP9R642GEEhdeiuzwclv1aNGretg+TSATr+zSWB5V1DYQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
lodash "^4.17.15"
"@abp/luxon@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.3.tgz#bd3328f45714155870bc8a91d41a197a613392b0"
integrity sha512-rPVzSXEy+rJZLIQ10boOq6suQAZQWJyB5P+rvfSx8h9sbRpsQ5fJOX2ShnUUf/+49KHzRRIqy+vrhr1oiE0C8Q==
"@abp/luxon@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/luxon/-/luxon-4.4.4.tgz#429b28dddbd8fa65c6c58978451d426bb886c5a3"
integrity sha512-pw75sGoQ/d4OaNlmGwt55Eq7AGWXUBuXyrsNQWSJmkPV9AS2s//ZoxZut1Wu/qaKo5DV4VitEW1U21MuKoEZPA==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
luxon "^1.24.1"
"@abp/malihu-custom-scrollbar-plugin@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.3.tgz#194f39ebbabad7853089549a7e19cfd2a7393e98"
integrity sha512-bhME41UsDCPGxnLP+zqH8nsx1uAxRR8tAeBKOJV24Xf8FHEjUQEDBXG0t1PBYGZVn1/0Ugao7Z12G9uZOiZVog==
"@abp/malihu-custom-scrollbar-plugin@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/malihu-custom-scrollbar-plugin/-/malihu-custom-scrollbar-plugin-4.4.4.tgz#fea9aa4755993dac45a8ad10938da789ec523518"
integrity sha512-Mgtzpw94SjN91YWPdV/TfvDt5JZNpW6iCHfL2NjfH3sTXCywK/CanmhdQ0FYJCasRWVPTHfQPWydFsnyzHWXRQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
malihu-custom-scrollbar-plugin "^3.1.5"
"@abp/select2@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.3.tgz#71015901aae117360f876c744903613494800c83"
integrity sha512-s7ArMLq2LC0m1oFcuCJghf5lEnGbq1D8/WaIKGmmD0ERL0g5xMccFlNbXm+Z79MJoTvQFssSLPTLZICjzWPKJw==
"@abp/select2@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/select2/-/select2-4.4.4.tgz#80d0e0b64cec86a3aa069e9086958946f631d2bf"
integrity sha512-8qx0nj9ZHrdnEPccpLhavHu4YnVp0Z5ZyfpfACVS2GgaxsR31DbltlGdnr2IfRyhK8nJWLNsW8UNhSoXQwGYEw==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
select2 "^4.0.13"
"@abp/sweetalert@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.3.tgz#287b9c89f90885742b074b4e3a427f0ec482952d"
integrity sha512-tAEgHMaTe+E+uS+Mt8XV3dt5yJJHg01Zsbp4ojO3wvdoAS6MKRXWdH05u3ZdwRQrJFbSgQjY85vWn/a/PnYRng==
"@abp/sweetalert@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/sweetalert/-/sweetalert-4.4.4.tgz#1af8934290d4e5adb7c620363ef2a9b746a6eeab"
integrity sha512-TgXm4rhqzTghKzgbxDT5NQcQ/PRFkgwJtnNWZK3XDZiKzw0auT8Wa3GtSsJJD5tl3Dx6VfnTtmf0gpPU5/9fKQ==
dependencies:
"@abp/core" "~4.4.3"
"@abp/core" "~4.4.4"
sweetalert "^2.1.2"
"@abp/timeago@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.3.tgz#7d31b9fcc128e9b8c6bb7870c4284427e9f9f383"
integrity sha512-E8FeAraStlYsHz6D1oBrwM5eHhZeCGrP7aA768Ke5UGIZPoYwyIIYLRfK4MCoCLKgTVlRrUn0Dj7Xkj9tWOfBQ==
"@abp/timeago@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/timeago/-/timeago-4.4.4.tgz#91ddb61439eaa138a42b9179ec92845efb05af29"
integrity sha512-r53FieaMDar60tGAu+NLr2qCem1+NhPgd7MtYEemJil8HUYci7T0fXvWcYhlrn98zipzEx3eiWo4eBwvIP8MLg==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
timeago "^1.6.7"
"@abp/toastr@~4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.3.tgz#45ef155fdbb6134a50794e456f820671c72e4105"
integrity sha512-dmKYS7iw/a+eWCD+J+nZ1htmGEjJSCsV1H8dDwA+ZxYJrE2/ejUh0LZ+b8Hsvobqfe/6bwYBj6oe0R9+vszCfg==
"@abp/toastr@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/toastr/-/toastr-4.4.4.tgz#1cd04ad6dfcb866bfaad3ec288407b0bf3f47c41"
integrity sha512-B7Q0Gza71nITTbryHcHqiIxtJzFbVmXeoPlcLlc/i4zvMaoibihevN10vXmPnfkdQUvTgViIjwA4/ZnBmyM11Q==
dependencies:
"@abp/jquery" "~4.4.3"
"@abp/jquery" "~4.4.4"
toastr "^2.1.4"
"@abp/utils@^4.4.3":
version "4.4.3"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.3.tgz#5d6939be5463adaa938357d74d1a35fed21b0115"
integrity sha512-B2E89fhM7vKDz9He6EeNc9P5RVYThiBLpTkKvJTeXG+DJtrP2ZbEICe1fcDA48wLFokXXKgx/SjoJlMvObhilQ==
"@abp/utils@~4.4.4":
version "4.4.4"
resolved "https://registry.yarnpkg.com/@abp/utils/-/utils-4.4.4.tgz#0bd79fa4635224fcae7ff61224a8c54266db73bf"
integrity sha512-h8Nt2OPqi8EiXKAuvJIpBlCHhavL7BHr+ntJXY6yM4aCdcQtJdSAgNmh0skzEGnf1hZxrYOugtAz4Pk1WNjv/g==
dependencies:
just-compare "^1.3.0"

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save