Browse Source

Navigation menu implemented.

pull/441/head
Alper Ebicoglu 8 years ago
parent
commit
9b41039161
  1. 4
      modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs
  2. 2
      modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs
  3. 26
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs
  4. 2
      modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs
  5. 74
      modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs
  6. 35
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml
  7. 222
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml
  8. 13
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs
  9. 544
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.css
  10. 11
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.css.map
  11. 90
      modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.js
  12. 7
      modules/docs/src/Volo.Docs.Web/Pages/Documents/_docs.css
  13. 2
      modules/docs/src/Volo.Docs.Web/Pages/Documents/_docs.min.css
  14. 385
      modules/docs/src/Volo.Docs.Web/Pages/Documents/_docs.scss
  15. 79
      modules/docs/src/Volo.Docs.Web/Pages/Documents/_responsive.css
  16. 1
      modules/docs/src/Volo.Docs.Web/Pages/Documents/_responsive.min.css
  17. 384
      modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.css
  18. 89
      modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.js
  19. 1
      modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.min.css
  20. 0
      modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.scss
  21. 1
      modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj
  22. 12
      modules/docs/src/Volo.Docs.Web/compilerconfig.json

4
modules/docs/src/Volo.Docs.Application.Contracts/Volo/Docs/Documents/ContentWithDetailsDto.cs

@ -43,11 +43,11 @@ namespace Volo.Docs.Documents
public class NavigationWithDetailsDto : DocumentWithDetailsDto
{
[JsonProperty("items")]
public NavigationNode RootItem { get; set; }
public NavigationNode RootNode { get; set; }
public void ConvertItems()
{
RootItem = string.IsNullOrWhiteSpace(Content) ?
RootNode = string.IsNullOrWhiteSpace(Content) ?
new NavigationNode() :
JsonConvert.DeserializeObject<NavigationNode>(Content);
}

2
modules/docs/src/Volo.Docs.Application/Volo/Docs/DocsApplicationAutoMapperProfile.cs

@ -14,7 +14,7 @@ namespace Volo.Docs
.Ignore(x => x.Project);
CreateMap<DocumentWithDetailsDto, NavigationWithDetailsDto>()
.Ignore(x => x.RootItem);
.Ignore(x => x.RootNode);
}
}
}

26
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/DocumentAppService.cs

@ -65,7 +65,7 @@ namespace Volo.Docs.Documents
dto.Content = NormalizeLinks(dto.Content, project.ShortName, version);
dto.Content = NormalizeImages(dto.Content, dto.RawRootUrl);
}
return dto;
}
@ -122,17 +122,25 @@ namespace Volo.Docs.Documents
private static string NormalizeImages(string content, string documentRootAddress)
{
var baseImageUrl = documentRootAddress;
if (content.Contains("images/"))
content = Regex.Replace(content, @"(<img\s+[^>]*)src=""([^""]*)""([^>]*>)", delegate (Match match)
{
Console.Write("");
}
var newImageSource = documentRootAddress.EnsureEndsWith('/') + match.Groups[1].Value.TrimStart('/');
return match.Groups[1] + "src=\"" + newImageSource + "\"" + match.Groups[3];
}, RegexOptions.IgnoreCase | RegexOptions.Singleline | RegexOptions.Multiline);
var newSrcAttribute = "src=\"" + baseImageUrl + "images/\" data-src=\"" + baseImageUrl + "images/";
//var baseImageUrl = documentRootAddress;
return content.Replace("src=\"images/", newSrcAttribute)
.Replace("src=\"../images/", newSrcAttribute);
//if (content.Contains("images/"))
//{
// Console.Write("");
//}
//var newSrcAttribute = "src=\"" + baseImageUrl + "images/\" data-src=\"" + baseImageUrl + "images/";
//return content.Replace("src=\"images/", newSrcAttribute)
// .Replace("src=\"../images/", newSrcAttribute);
return content;
}
}
}

2
modules/docs/src/Volo.Docs.Application/Volo/Docs/Documents/GithubDocumentStore.cs

@ -79,7 +79,7 @@ namespace Volo.Docs.Documents
return releases.OrderByDescending(r => r.PublishedAt).Select(r => r.TagName).ToList();
}
private string GetGithubOrganizationNameFromUrl(string url)
private static string GetGithubOrganizationNameFromUrl(string url)
{
try
{

74
modules/docs/src/Volo.Docs.Web/Areas/Documents/Helpers/TagHelpers/TreeTagHelper.cs

@ -1,44 +1,74 @@
using System.Linq;
using System;
using System.Text;
using Microsoft.AspNetCore.Razor.TagHelpers;
using Volo.Docs.Documents;
namespace Volo.Docs.Areas.Documents.Helpers.TagHelpers
{
[HtmlTargetElement("ul", Attributes = "root-item")]
[HtmlTargetElement("ul", Attributes = "root-node")]
public class TreeTagHelper : TagHelper
{
private const string LiItemTemplate = @"<li><label class='tree-toggle {3}'><span class='plus-icon'><i class='fa fa-chevron-down'></i></span></label><a href='{0}'>{1}</a>{2}</li>";
private const string UlItemTemplate = @"<ul class='nav nav-list tree'>{0}</ul>";
private const string LiItemTemplate = @"<li>
<label class='tree-toggle {3}'>
<span class='plus-icon'>
<i class='fa fa-{4}'></i>
</span>
</label>
<a href='{0}' class='{5}'>{1}</a>
{2}</li>";
[HtmlAttributeName("root-item")]
public NavigationNode RootItem { get; set; }
private const string UlItemTemplate = @"<ul class='nav nav-list tree'>
{0}
</ul>";
[HtmlAttributeName("root-node")]
public NavigationNode RootNode { get; set; }
[HtmlAttributeName("version")]
public string Version { get; set; }
[HtmlAttributeName("project-name")]
public string ProjectName { get; set; }
public override void Process(TagHelperContext context, TagHelperOutput output)
{
output.Content.AppendHtml(RenderTreeNodeAsHtml(RootItem));
var content = new StringBuilder();
RootNode.Items?.ForEach(childNode =>
{
content.Append(RenderTreeNodeAsHtml(childNode));
});
output.Content.AppendHtml(content.ToString());
}
private static string RenderTreeNodeAsHtml(NavigationNode node)
private string RenderTreeNodeAsHtml(NavigationNode node)
{
var childContent = "";
var content = "";
if (node.Items != null && node.Items.Any())
node.Items?.ForEach(innerNode =>
{
node.Items.ForEach(innerNode =>
{
childContent += string.Format(UlItemTemplate, RenderTreeNodeAsHtml(innerNode));
});
}
content += GetParentNode(innerNode);
});
if (node.IsEmpty)
{
return childContent;
}
return node.IsEmpty ?
content :
GetLeafNode(node, content);
}
private string GetParentNode(NavigationNode node)
{
return string.Format(UlItemTemplate, RenderTreeNodeAsHtml(node));
}
private string GetLeafNode(NavigationNode node, string content)
{
return string.Format(LiItemTemplate,
string.IsNullOrWhiteSpace(node.Path) ? "#" : node.Path,
string.IsNullOrEmpty(node.Text) ? "?" : node.Text,
childContent, node.HasChildItems ? "nav-header" : "last-link");
node.Path.IsNullOrEmpty() ? "#" : "/documents/" + ProjectName + "/" + Version + "/" + node.Path,
node.Text.IsNullOrEmpty() ? "?" : node.Text,
content,
node.HasChildItems ? "nav-header" : "last-link",
node.HasChildItems ? "chevron-down" : "long-arrow-right",
node.Path.IsNullOrEmpty() ? "tree-toggle" : "");
}
}

35
modules/docs/src/Volo.Docs.Web/Pages/Documents/Index.cshtml

@ -1,32 +1,37 @@
@page
@using Volo.Docs
@using Volo.Docs.Pages.Documents
@model Volo.Docs.Pages.Documents.IndexModel
@model IndexModel
@{
}
@section styles {
<abp-style-bundle name="@typeof(IndexModel).FullName">
<abp-style src="/Pages/Documents/Project/vs.css" />
<abp-style src="/Pages/Documents/vs.css" />
<abp-style src="/assets/fa/css/font-awesome.min.css" />
</abp-style-bundle>
}
<div class="p-5 text-center">
<div class="p-5">
@if (Model.Projects.Count > 0)
{
<h2>Project(s)</h2>
foreach (var project in Model.Projects)
{
<div>
<a asp-page="./Project/Index"
asp-route-projectName="@project.ShortName"
asp-route-version="@DocsWebConsts.DefaultVersion.Version">
@project.Name
</a>
</div>
}
<h1>Project(s)</h1>
<p>
<ul style="list-style-type: upper-roman;">
@foreach (var project in Model.Projects)
{
<li>
<h3>
<a asp-page="./Project/Index"
asp-route-projectName="@project.ShortName"
asp-route-version="@DocsWebConsts.DefaultVersion.Version">
@project.Name
</a>
</h3>
</li>
}
</ul>
</p>
}
else
{

222
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml

@ -17,7 +17,7 @@
}
@section styles {
<abp-style-bundle name="@typeof(IndexModel).FullName">
<abp-style src="/Pages/Documents/Project/vs.css" />
<abp-style src="/Pages/Documents/vs.css" />
<abp-style src="/lib/prism/prism.css" />
<abp-style src="/lib/mCustomScrollbar/jquery.mCustomScrollbar.min.css" />
</abp-style-bundle>
@ -29,7 +29,7 @@
<abp-script src="/lib/mCustomScrollbar/jquery.mCustomScrollbar.concat.min.js" />
<abp-script src="/lib/prism/prism.js" />
<abp-script src="/lib/popper.js/dist/umd/popper.min.js" />
<abp-script src="/Pages/Documents/Project/vs.js" />
<abp-script src="/Pages/Documents/vs.js" />
</abp-script-bundle>
}
@ -66,33 +66,21 @@
@if (Model.Versions.Any())
{
<div class="form-horizontal document-version">
<div class="form-group">
<div class="col-md-12">
@Html.DropDownList("DocumentVersion", Model.Versions.Select(v => new SelectListItem
{
Text = v.DisplayText,
Value = "/documents/" + Model.ProjectName + "/" + v.Version + "/" + Model.DocumentName,
Selected = v.IsSelected
}), new {@class = "form-control flat"})
<button class="btn btn-link bd-search-docs-toggle d-md-none p-0 ml-3"
type="button"
data-toggle="collapse"
data-target="#bd-docs-nav" aria-controls="bd-docs-nav"
aria-expanded="false" aria-label="Toggle docs navigation">
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 30 30" width="30" height="30" focusable="false">
<title>Menu</title>
<path stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-miterlimit="10" d="M4 7h22M4 15h22M4 23h22" />
</svg>
</button>
</div>
</div>
<div class="col-md-12 docs-version">
@Html.DropDownList("Version", Model.Versions.Select(v => new SelectListItem
{
Text = v.DisplayText,
Value = "/documents/" + Model.ProjectName + "/" + v.Version + "/" + Model.DocumentName,
Selected = v.IsSelected
}), new {@class = "form-control"})
</div>
}
<ul root-item="@Model.Navigation.RootItem" id="sidebar-scroll" class="nav nav-list"></ul>
<ul root-node="@Model.Navigation.RootNode"
version="@(Model.Version.IsNullOrEmpty() ? "latest" : Model.Version)"
project-name="@Model.ProjectName"
id="sidebar-scroll"
class="nav nav-list"></ul>
</div>
</div>
</div>
@ -102,185 +90,15 @@
<div data-spy="scroll" data-target="#docs-sticky-index" data-offset="0">
<article class="docs-body">
<div style="float: right; top: 1em; position: relative;">
<h1 id="dependency-injection">
<a id="user-content-dependency-injection" class="anchor" href="#dependency-injection">
<i class="fa fa-link"></i>
</a>Dependency Injection
</h1>
<p>ABP's Dependency Injection system is developed based on Microsoft's <a href="https://docs.microsoft.com/en-us/aspnet/core/fundamentals/dependency-injection" rel="nofollow">dependency injection extension</a> library (Microsoft.Extensions.DependencyInjection nuget package). So, it's documentation is valid in ABP too.</p>
<h2 id="modularity">
<a id="user-content-modularity" class="anchor" href="#modularity">
<i class="fa fa-link"></i>
</a>Modularity
</h2>
<p>Since ABP is a modular framework, every module defines it's services and registers to dependency injection in a seperated place, in it's own <a href="/abpframework/abp/blob/master/docs/Module-Development-Basics.md">module class</a>. Example:</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
public class BlogModule : AbpModule
{
public override void ConfigureServices(ServiceConfigurationContext context)
{
//register dependencies here
}
}
</code>
</pre>
</div>
<h2 id="conventional-registration">
<a id="user-content-conventional-registration" class="anchor" href="#conventional-registration">
<i class="fa fa-link"></i>
</a>Conventional Registration
</h2>
<p>ABP introduces conventional service registration. You should do nothing to register services by convention. It's automatically done. If you want to disable it, you can set <code>SkipAutoServiceRegistration</code> to <code>true</code> by overriding the <code>PreConfigureServices</code> method.</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
SkipAutoServiceRegistration = true;
}
}
</code>
</pre>
</div>
<p>Once you skip auto registration, you should manually register your services. In that case, <code>AddAssemblyOf</code> extension method can help you to register all your services by convention. Example:</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
{
public override void PreConfigureServices(ServiceConfigurationContext context)
{
SkipAutoServiceRegistration = true;
}
public override void ConfigureServices(ServiceConfigurationContext context)
{
context.Services.AddAssemblyOf< BlogModule >();
}
}
</code>
</pre>
</div>
<p>The section below explains the conventions and configurations.</p>
<h2 id="inherently-registered-types">
<a id="user-content-inherently-registered-types" class="anchor" href="#inherently-registered-types">
<i class="fa fa-link"></i>
</a>Inherently Registered Types
</h2>
<p>Some specific types are registered to dependency injection by default. Examples:</p>
<ul>
<li>Module classes are registered as singleton.</li>
<li>MVC controllers (inherit <code>Controller</code> or <code>AbpController</code>) are registered as transient.</li>
<li>MVC page models (inherit <code>PageModel</code> or <code>AbpPageModel</code>) are registered as transient.</li>
<li>MVC view components (inherit <code>ViewComponent</code> or <code>AbpViewComponent</code>) are registered as transient.</li>
<li>Application services (implement <code>IApplicationService</code> interface or inherit <code>ApplicationService</code> class) are registered as transient.</li>
<li>Repositories (implement <code>IRepository</code> interface) are registered as transient.</li>
<li>Domain services (implement <code>IDomainService</code> interface) are registered as transient.</li>
</ul>
<p>Example:</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
public class BlogPostAppService : ApplicationService
{
}
</code>
</pre>
</div>
<p><code>BlogPostAppService</code> is automatically registered with transient lifetime since it's derived from a known base class.</p>
<h2 id="dependency-interfaces">
<a id="user-content-dependency-interfaces" class="anchor" href="#dependency-interfaces">
<i class="fa fa-link"></i>
</a>Dependency Interfaces
</h2>
<p>If you implement these interfaces, your class is registered to dependency injection automatically:</p>
<ul>
<li><code>ITransientDependency</code> to register with transient lifetime.</li>
<li><code>ISingletonDependency</code> to register with singleton lifetime.</li>
<li><code>IScopedDependency</code> to register with scoped lifetime.</li>
</ul>
<p>Example:</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
public class TaxCalculator : ITransientDependency
{
}
</code>
</pre>
@if (!string.IsNullOrEmpty(Model.Document.EditLink))
{
<a href="@Model.Document.EditLink" target="_blank"> <i class="fa fa-edit"></i> Edit @*TODO: localize*@</a>
}
</div>
<p><code>TaxCalculator</code> is automatically registered with transient lifetime since it implements <code>ITransientDependency</code>.</p>
<h2 id="dependency-attribute">
<a id="user-content-dependency-attribute" class="anchor" href="#dependency-attribute">
<i class="fa fa-link"></i>
</a>Dependency Attribute
</h2>
<p>Another way of configuring a service for dependency injection is to use <code>DependencyAttribute</code>. It has given properties:</p>
<ul>
<li><code>Lifetime</code>: Lifetime of the registration: <code>Singleton</code>, <code>Transient</code> or <code>Scoped</code>.</li>
<li><code>TryRegister</code>: Set <code>true</code> to register the service only it's not registered before. Uses TryAdd... extension methods of IServiceCollection.</li>
<li><code>ReplaceServices</code>: Set <code>true</code> to replace services if they are already registered before. Uses Replace extension method of IServiceCollection.</li>
</ul>
<p>Example:</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
public class TaxCalculator : ITransientDependency
{
}
</code>
</pre>
</div>
<p><code>Dependency</code> attribute has higher priority then dependency interfaces if it defines the <code>Lifetime</code> property.</p>
<h2 id="exposeservices-attribute">
<a id="user-content-exposeservices-attribute" class="anchor" href="#exposeservices-attribute">
<i class="fa fa-link"></i>
</a>ExposeServices Attribute
</h2>
<p><code>ExposeServicesAttribute</code> is used to control which services are provided by the related class. Example:</p>
<div class="code-block">
<pre class="line-numbers" data-line="">
<code class="language-csharp">
[ExposeServices(typeof(ITaxCalculator))]
public class TaxCalculator: ICalculator, ITaxCalculator, ICanCalculate, ITransientDependency
{
}
</code>
</pre>
</div>
@Html.Raw(Model.Document.Content)
</article>
</div>

13
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/Index.cshtml.cs

@ -62,12 +62,6 @@ namespace Volo.Docs.Pages.Documents.Project
Versions.First().IsSelected = true;
}
//if (string.Equals(Version, "latest", StringComparison.OrdinalIgnoreCase) || !Versions.Exists(v => v.Version == Version))
//{
// Version = latestVersion.Version;
// latestVersion.IsSelected = true;
//}
if (Version == null)
{
Version = Versions.Single(x => x.IsSelected).Version;
@ -95,12 +89,5 @@ namespace Volo.Docs.Pages.Documents.Project
Versions.Insert(0, DocsWebConsts.DefaultVersion);
}
public void RenderTree()
{
}
}
}

544
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.css

@ -1,544 +0,0 @@
.docs-page {
background: #f5f7f9;
}
.docs-page .docs-sidebar {
background: #f5f7f9;
padding-right: 1rem;
position: relative;
width: 270px;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper {
width: 270px;
top: 0px;
position: fixed;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search {
position: relative;
padding: 0 1rem;
margin: 1rem 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:visited {
-webkit-box-shadow: none;
box-shadow: none;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search .btn-search {
position: absolute;
top: 0px;
padding: 8px 10px;
line-height: 1;
left: 16px;
background: none;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search .btn-search i.fa {
color: #aaa;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list > ul {
display: block;
height: calc(100vh - 190px);
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul {
font-size: .913em;
list-style: none;
padding: 0 1rem;
margin: 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li {
margin-left: 0px;
padding-left: 24px;
display: block;
width: 100%;
position: relative;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label {
margin: 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle {
-webkit-transition: .3s;
transition: .3s;
display: inline-block;
width: 18px;
height: 18px;
text-align: center;
padding: 0;
line-height: 1;
border-radius: 50%;
margin-right: 4px;
position: absolute;
left: 2px;
top: 8px;
color: #aaa;
cursor: pointer;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:hover {
color: #000;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle .plus-icon {
font-size: .85em;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:not(.last-link).opened {
-webkit-transform: rotate(180deg);
transform: rotate(180deg);
color: #000;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle.last-link {
top: 11px;
color: #aaa;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a {
color: #222;
font-weight: 700;
padding: 7px 0;
display: block;
border-bottom: 1px solid #eeeff3;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover {
color: #000;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul {
padding: 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li label.tree-toggle {
top: 7px;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a {
font-weight: 400;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul {
padding: 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a {
font-weight: 300;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a {
color: #38003c;
font-weight: bold;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand {
font-size: 1.5rem;
color: #000;
font-weight: 700;
padding: 20px 0 10px;
line-height: 1;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong {
font-weight: 300;
text-transform: uppercase;
font-size: .9rem;
opacity: .6;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site {
color: #000;
opacity: .15;
-webkit-transition: .4s;
transition: .4s;
font-size: .75rem;
font-weight: 300;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover {
text-decoration: none;
opacity: .5;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc {
font-size: .85em;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong {
display: block;
}
.docs-page .docs-content .docs-text-field {
padding: 0 3rem 3rem;
}
.docs-page .docs-content article.docs-body h1 {
padding-top: 3rem;
font-size: 2.25rem;
padding-bottom: 10px;
}
.docs-page .docs-content article.docs-body h2 {
padding-top: 40px;
padding-bottom: 5px;
font-size: 1.75rem;
}
.docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 {
padding-top: 30px;
padding-bottom: 5px;
}
.docs-page .docs-content article.docs-body h1, .docs-page .docs-content article.docs-body h2, .docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 {
position: relative;
display: inline-block;
}
.docs-page .docs-content article.docs-body h1 .anchor, .docs-page .docs-content article.docs-body h2 .anchor, .docs-page .docs-content article.docs-body h3 .anchor, .docs-page .docs-content article.docs-body h4 .anchor, .docs-page .docs-content article.docs-body h5 .anchor, .docs-page .docs-content article.docs-body h6 .anchor {
position: absolute;
right: -26px;
font-size: 18px;
bottom: 5px;
color: #999;
opacity: 0;
-webkit-transition: .5s;
transition: .5s;
}
.docs-page .docs-content article.docs-body h1:hover .anchor, .docs-page .docs-content article.docs-body h2:hover .anchor, .docs-page .docs-content article.docs-body h3:hover .anchor, .docs-page .docs-content article.docs-body h4:hover .anchor, .docs-page .docs-content article.docs-body h5:hover .anchor, .docs-page .docs-content article.docs-body h6:hover .anchor {
opacity: 1;
}
.docs-page .docs-page-index {
position: relative;
}
.docs-page .docs-page-index .docs-inner-anchors {
position: fixed;
top: 0px;
max-width: 270px;
padding: 10px;
font-size: .90em;
height: 100vh;
}
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills {
font-size: .95em;
margin-left: 18px;
border-left: 1px solid #e5e5e5;
}
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link {
padding: .2rem 0rem .2rem 1rem;
color: #aaa;
line-height: 1.1;
position: relative;
border-left: 3px solid transparent;
border-radius: 0;
margin-left: -2px;
margin-top: 2px;
margin-bottom: 2px;
-webkit-transition: .2s;
transition: .2s;
}
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active {
background: none;
color: #000;
border-color: #000;
}
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active {
color: #000;
}
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active {
color: #000;
}
.docs-page .docs-page-index .docs-inner-anchors > .navbar {
margin-left: -18px;
}
.docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper {
max-width: 300px;
float: left;
}
.docs-page .docs-page-index .docs-inner-anchors .inner-title {
padding-left: 18px;
}
.docs-page .docs-page-index .scroll-top-btn {
display: none;
font-size: .85em;
color: #aaa;
text-decoration: none;
padding-left: 18px;
}
.docs-page .docs-page-index .scroll-top-btn.showup {
display: block;
}
@media (min-width: 1200px) {
.container {
max-width: 1180px;
}
.docs-page .docs-sidebar.dark-sidebar {
background: #222;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search input.form-control {
background: #333;
color: #999;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search .btn-search i.fa {
color: #eee;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle {
color: #666;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:hover {
color: #fff;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:not(.last-link).opened {
color: #fff;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle.last-link {
color: #666;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a {
color: #ddd;
border-bottom: 1px solid #333;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover {
color: #fff;
}
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a {
color: #fff;
}
.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand {
color: #fff;
}
.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site {
color: #fff;
}
.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc {
color: #ddd;
}
}
@media (min-width: 1366px) {
.container {
max-width: 1340px;
}
}
@media (min-width: 1440px) {
.container {
max-width: 1400px;
}
}
@media (max-width: 767px) {
.docs-page .docs-content article.docs-body h1 {
padding-top: 1.5rem;
}
.docs-page {
background: #f5f7f9;
}
.docs-page > .container-fluid {
display: block;
}
.docs-page > .container-fluid > .row {
display: block;
}
.docs-page .docs-sidebar {
position: fixed;
max-width: 100%;
width: 100%;
display: block;
padding: 0 !important;
top: 0;
left: 0;
z-index: 100;
right: 0;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper {
max-width: 100%;
width: 100%;
top: 0px;
position: relative;
margin: 0 !important;
height: 72px;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list {
padding: .5rem 1.5rem 2rem 1.5rem;
position: fixed;
top: 70px;
font-size: 17px;
left: 0;
width: 100%;
z-index: 100;
background: #f5f7f9;
display: none;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-search {
position: relative;
padding: 0 0 1rem !important;
}
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-search .btn-search {
left: 0px;
}
.docs-page .docs-sidebar .docs-top .navbar-logo {
padding: 0rem;
padding-top: .3rem;
display: block;
text-align: center;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand {
font-size: 1.5rem;
font-weight: 700;
display: block;
margin-right: 0em;
padding: 7px 0 10px;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo {
width: 110px;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site {
display: none;
}
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc {
font-size: 1em;
display: none;
}
.docs-page .docs-sidebar .docs-top .open-dmenu {
position: absolute;
top: 10px;
left: 20px;
}
.docs-page .docs-content {
padding-top: 72px;
max-width: 100%;
display: block !important;
}
.docs-page .docs-content .docs-text-field {
padding: 1rem 1.5rem;
}
.docs-page .docs-page-index {
display: none;
}
}
.for-mobile {
display: none;
}
.for-desktop {
display: inline-block;
}
@media (max-width: 767px) {
body {
font-size: 14px;
}
.for-mobile {
display: inline-block;
}
.for-desktop {
display: none;
}
.close-mmenu, .close-dmenu {
position: absolute;
top: -78px;
left: 25px;
color: #fff;
font-size: 68px;
background: #fff;
opacity: 0;
}
.navbar {
padding: .5rem 1.75rem;
}
.navbar .navbar-collapse {
background: #38003d;
position: fixed;
top: 86px;
left: 0;
width: 100%;
height: 100vh;
height: calc(100vh - 86px);
z-index: 100 !important;
}
.navbar .navbar-collapse .navbar-nav {
height: 100vh;
padding: 20px 30px;
overflow: auto;
}
.navbar .navbar-collapse .navbar-nav .nav-link {
padding: 1.2rem !important;
}
.navbar .navbar-toggler {
padding: .5rem .75rem;
font-size: 1.5rem;
line-height: 1;
background-color: transparent;
border: 0;
border-radius: .25rem;
color: #fff !important;
margin-left: -1rem;
}
.jumbotron .btn, footer .btn {
display: block;
margin-bottom: 10px;
}
.multi-tenancy {
text-align: center !important;
}
.section-with-logos img {
margin: 15px;
opacity: 1;
-webkit-filter: grayscale(0%);
filter: grayscale(0%);
}
.jumbotron {
padding-top: 160px;
margin-top: -160px;
border-radius: 0;
padding-bottom: 40px;
margin-bottom: 0;
font-size: .85em;
padding-left: 45px;
padding-right: 45px;
}
.jumbotron .jumbotron-logo {
display: none;
}
span.code-arrow {
padding: 0px 0 0px;
display: block;
-webkit-transform: rotate(90deg);
transform: rotate(90deg);
font-size: 2em;
}
.mb-5, .my-5 {
margin-bottom: 2rem !important;
}
}
/*# sourceMappingURL=vs.css.map */

11
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.css.map

File diff suppressed because one or more lines are too long

90
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.js

@ -1,90 +0,0 @@
$('.tree-toggle').click(function() {
$(this).parent().children('ul.tree').toggle(100);
$(this).toggleClass("opened");
});
$(function() {
$('.tree-toggle').parent().children('ul.tree').toggle(100);
})
$(document).ready(function() {
var scrollTopBtn = $(".scroll-top-btn");
var enoughHeight = $(".docs-sidebar-wrapper > .docs-top").height() + 60;
$(window).scroll(function() {
var topPos = $(window).scrollTop();
if (topPos > enoughHeight) {
$(scrollTopBtn).addClass("showup");
$("body").addClass("scrolled");
} else {
$(scrollTopBtn).removeClass("showup");
$("body").removeClass("scrolled");
}
});
$(scrollTopBtn).click(function() {
$('html, body').animate({
scrollTop: 0
}, 500);
return false;
});
});
function handleSidebar() {
var sideBarPosition = $(".docs-sidebar").width() - 270;
var sideBar = $(".docs-sidebar-wrapper");
sideBar.css("margin-left", sideBarPosition);
}
$(window).resize(function() {
handleSidebar();
});
handleSidebar();
$(document).ready(function(){
$('body').scrollspy({
target: '#docs-sticky-index'
});
$("#docs-sticky-index a").on('click', function(event) {
if (this.hash !== "") {
event.preventDefault();
var hash = this.hash;
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function(){
window.location.hash = hash;
});
}
});
});
$('.btn-toggle').on("click", function(){
$(".toggle-row").slideToggle(400);
$(this).toggleClass("less");
});
$('.close-mmenu').on("click", function(){
$(".navbar-collapse").removeClass("show");
});
$('.open-dmenu').on("click", function(){
$(".docs-tree-list").slideToggle();
});
(function($){
$(window).on("load",function(){
$("#sidebar-scroll").mCustomScrollbar({
theme:"minimal"
});
});
$(window).on("load",function(){
$("#index-scroll").mCustomScrollbar({
theme:"minimal-dark"
});
});
})(jQuery);

7
modules/docs/src/Volo.Docs.Web/Pages/Documents/_docs.css

@ -196,10 +196,13 @@
max-width: 1180px; }
.docs-page .docs-sidebar.dark-sidebar {
background: #222; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search input.form-control {
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search .form-control, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .form-control {
background: #333;
color: #999; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search .btn-search i.fa {
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search select, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version select {
border: 0;
border-radius: 6px; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search .btn-search i.fa, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .btn-search i.fa {
color: #eee; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle {
color: #666; }

2
modules/docs/src/Volo.Docs.Web/Pages/Documents/_docs.min.css

File diff suppressed because one or more lines are too long

385
modules/docs/src/Volo.Docs.Web/Pages/Documents/_docs.scss

@ -1,60 +1,72 @@
.docs-page {
background: rgb(245, 247, 249);
.docs-sidebar {
background: rgb(245, 247, 249);
.docs-sidebar {
background: #f5f7f9;
padding-right: 1rem;
position: relative;
width: 270px;
width: 270px;
.docs-sidebar-wrapper {
width: 270px;
top: 0px;
position: fixed;
.docs-search {
width: 270px;
top: 0px;
position: fixed;
.docs-search {
position: relative;
padding:0 1rem;
padding: 0 1rem;
margin: 1rem 0;
input.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0;
border: 0;
&:focus, &:active, &:hover, &:visited {
box-shadow: none;
}
}
.btn-search {
position: absolute;
top: 0px;
padding: 8px 10px;
line-height: 1;
left: 16px;
background: none;
background: none;
i.fa {
color: #aaa;
}
}
}
.docs-tree-list{
>ul {
.docs-tree-list {
> ul {
display: block;
height: calc(100vh - 190px);
height: calc(100vh - 190px);
}
ul {
font-size: .913em;
list-style: none;
padding: 0 1rem;
margin: 0;
li {
margin-left: 0px;
padding-left: 24px;
display: block;
width: 100%;
position: relative;
label {
margin: 0;
&.tree-toggle {
transition: .3s;
display: inline-block;
@ -67,48 +79,59 @@
margin-right: 4px;
position: absolute;
left: 2px;
top:8px;
color: #aaa;
cursor: pointer;
top: 8px;
color: #aaa;
cursor: pointer;
&:hover {
color: #000;
}
.plus-icon {
font-size: .85em;
font-size: .85em;
}
&:not(.last-link).opened{
transform: rotate(180deg);
&:not(.last-link).opened {
transform: rotate(180deg);
color: #000;
}
&.last-link {
top:11px;
&.last-link {
top: 11px;
color: #aaa;
}
}
}
a {
color: #222;
font-weight: 700;
padding: 7px 0;
display: block;
border-bottom: 1px solid #eeeff3;
&:hover {
color: #000;
}
}
ul {
padding: 0;
li {
label {
&.tree-toggle {
top: 7px;
}
}
a {
font-weight: 400;
}
ul {
padding: 0;
li {
a {
font-weight: 300;
@ -117,24 +140,27 @@
}
}
}
&.selected-tree {
>a {
> a {
color: #38003c;
font-weight: bold;
}
}
}
}
}
}
}
.docs-top {
}
}
.docs-top {
.navbar-logo {
.navbar-brand {
font-size: 1.5rem;
color: #000;
font-weight: 700;
font-weight: 700;
padding: 20px 0 10px;
line-height: 1;
line-height: 1;
strong {
font-weight: 300;
text-transform: uppercase;
@ -142,47 +168,59 @@
opacity: .6;
}
}
.go-back-site {
color: #000;
opacity: .15;
transition: .4s;
font-size: .75rem;
font-weight: 300;
&:hover {
text-decoration: none;
opacity: .5;
}
}
.navbar-logo-desc {
font-size: .85em;
strong {display: block;}
strong {
display: block;
}
}
}
}
}
}
.docs-content {
.docs-content {
.docs-text-field {
padding: 0 3rem 3rem;
}
}
article.docs-body {
h1 {
padding-top: 3rem;
h1 {
padding-top: 3rem;
font-size: 2.25rem;
padding-bottom: 10px;
}
h2 {
padding-top: 40px;
padding-top: 40px;
padding-bottom: 5px;
font-size: 1.75rem;
}
h3,h4,h5,h6 {
padding-top: 30px;
h3, h4, h5, h6 {
padding-top: 30px;
padding-bottom: 5px;
}
h1,h2,h3,h4,h5,h6 {
h1, h2, h3, h4, h5, h6 {
position: relative;
display: inline-block;
.anchor {
.anchor {
position: absolute;
right: -26px;
font-size: 18px;
@ -191,154 +229,190 @@
opacity: 0;
transition: .5s;
}
&:hover {
.anchor {
opacity: 1;
}
.anchor {
opacity: 1;
}
}
}
}
}
.docs-page-index {
position: relative;
.docs-inner-anchors {
position: fixed;
top: 0px;
top: 0px;
max-width: 270px;
padding: 10px;
padding: 10px;
font-size: .90em;
height: 100vh;
.navbar {
.nav-pills {
font-size: .95em;
margin-left: 18px;
border-left: 1px solid #e5e5e5;
.nav-link {
padding: .2rem 0rem .2rem 1rem;
color: #aaa;
padding: .2rem 0rem .2rem 1rem;
color: #aaa;
line-height: 1.1;
position: relative;
position: relative;
border-left: 3px solid transparent;
border-radius: 0;
margin-left:-2px;
border-radius: 0;
margin-left: -2px;
margin-top: 2px;
margin-bottom: 2px;
transition: .2s;
&.active {
background: none;
color: #000;
border-color: #000;
border-color: #000;
}
}
.nav-pills {
.nav-link {
&.active {
.nav-link {
&.active {
color: #000;
}
}
.nav-pills {
.nav-link {
&.active {
.nav-link {
&.active {
color: #000;
}
}
}
}
}
}
>.navbar {
}
> .navbar {
margin-left: -18px;
}
.docs-anchors-wrapper {
max-width: 300px;
float: left;
}
.inner-title {
padding-left: 18px;
}
}
.scroll-top-btn {
display: none;
font-size: .85em;
color: #aaa;
.scroll-top-btn {
display: none;
font-size: .85em;
color: #aaa;
text-decoration: none;
padding-left: 18px;
&.showup { display: block;}
&.showup {
display: block;
}
}
}
}
}
@media (min-width: 1200px) {
.container {
max-width: 1180px;
}
.docs-page {
.docs-sidebar {
&.dark-sidebar {
background: #222;
.docs-sidebar-wrapper {
.docs-search {
input.form-control {
background: #333;
color: #999;
}
.btn-search {
i.fa {
color: #eee;
}
.docs-page {
.docs-sidebar {
&.dark-sidebar {
background: #222;
.docs-sidebar-wrapper {
.docs-search, .docs-version {
.form-control {
background: #333;
color: #999;
}
select {
border: 0;
border-radius: 6px;
}
.btn-search {
i.fa {
color: #eee;
}
}
.docs-tree-list{
ul {
li {
label {
&.tree-toggle {
color: #666;
}
.docs-tree-list {
ul {
li {
label {
&.tree-toggle {
color: #666;
&:hover {
color: #fff;
}
.plus-icon {
.plus-icon {
}
&:not(.last-link).opened{
&:not(.last-link).opened {
color: #fff;
}
&.last-link {
&.last-link {
color: #666;
}
}
}
a {
color: #ddd;
color: #ddd;
border-bottom: 1px solid #333;
&:hover {
color: #fff;
}
}
}
&.selected-tree {
>a {
color: #fff;
}
> a {
color: #fff;
}
}
}
}
}
}
.docs-top {
}
.docs-top {
.navbar-logo {
.navbar-brand {
color: #fff;
.navbar-brand {
color: #fff;
}
.go-back-site {
color: #fff;
color: #fff;
}
.navbar-logo-desc {
color: #ddd;
.navbar-logo-desc {
color: #ddd;
}
}
}
}
}
}
}
}
@ -353,20 +427,24 @@
max-width: 1400px;
}
}
@media (max-width: 767px) {
.docs-page .docs-content article.docs-body h1 {
padding-top: 1.5rem;
padding-top: 1.5rem;
}
.docs-page {
> .container-fluid {
display:block;
display: block;
> .row {
display:block;
display: block;
}
}
background: rgb(245, 247, 249);
.docs-sidebar {
background: rgb(245, 247, 249);
.docs-sidebar {
position: fixed;
max-width: 100%;
width: 100%;
@ -376,79 +454,91 @@
left: 0;
z-index: 100;
right: 0;
.docs-sidebar-wrapper {
max-width: 100%;
width: 100%;
top: 0px;
position: relative;
margin: 0!important;
height: 72px;
.docs-tree-list{
padding: .5rem 1.5rem 2rem 1.5rem;
position: fixed;
top: 70px;
font-size: 17px;
left: 0;
width: 100%;
z-index: 100;
background: #f5f7f9;
display: none;
.docs-search {
max-width: 100%;
width: 100%;
top: 0px;
position: relative;
margin: 0 !important;
height: 72px;
.docs-tree-list {
padding: .5rem 1.5rem 2rem 1.5rem;
position: fixed;
top: 70px;
font-size: 17px;
left: 0;
width: 100%;
z-index: 100;
background: #f5f7f9;
display: none;
.docs-search {
position: relative;
padding: 0 0 1rem !important;
.btn-search {
left: 0px;
padding: 0 0 1rem !important;
.btn-search {
left: 0px;
}
}
}
}
.docs-top {
}
}
}
.docs-top {
.navbar-logo {
padding: 0rem;
padding-top:.3rem;
padding-top: .3rem;
display: block;
text-align: center;
.navbar-brand {
font-size: 1.5rem;
font-weight: 700;
display: block;
display: block;
margin-right: 0em;
padding: 7px 0 10px;
.docs-logo {
width: 110px;
}
}
}
}
.go-back-site {
display: none;
}
.navbar-logo-desc {
font-size: 1em;
display:none;
font-size: 1em;
display: none;
}
}
}
.open-dmenu {
position: absolute;
top: 10px;
left: 20px;
.navbar-toggler-icon {
.navbar-toggler-icon {
}
}
}
}
.docs-content {
padding-top:72px;
padding-top: 72px;
max-width: 100%;
display: block !important;
display: block !important;
.docs-text-field {
padding: 1rem 1.5rem;
}
}
}
.docs-page-index {
display:none;
}
}
display: none;
}
}
}
@ -456,6 +546,7 @@
.for-mobile {
display: none;
}
.for-desktop {
display: inline-block;
}
}

79
modules/docs/src/Volo.Docs.Web/Pages/Documents/_responsive.css

@ -0,0 +1,79 @@
body {
font-size: 14px; }
.for-mobile {
display: inline-block; }
.for-desktop {
display: none; }
.close-mmenu, .close-dmenu {
position: absolute;
top: -78px;
left: 25px;
color: #fff;
font-size: 68px;
background: #fff;
opacity: 0; }
.navbar {
padding: .5rem 1.75rem; }
.navbar .navbar-collapse {
background: #38003d;
position: fixed;
top: 86px;
left: 0;
width: 100%;
height: 100vh;
height: calc(100vh - 86px);
z-index: 100 !important; }
.navbar .navbar-collapse .navbar-nav {
height: 100vh;
padding: 20px 30px;
overflow: auto; }
.navbar .navbar-collapse .navbar-nav .nav-link {
padding: 1.2rem !important; }
.navbar .navbar-toggler {
padding: .5rem .75rem;
font-size: 1.5rem;
line-height: 1;
background-color: transparent;
border: 0;
border-radius: .25rem;
color: #fff !important;
margin-left: -1rem; }
.jumbotron .btn, footer .btn {
display: block;
margin-bottom: 10px; }
.multi-tenancy {
text-align: center !important; }
.section-with-logos img {
margin: 15px;
opacity: 1;
-webkit-filter: grayscale(0%);
filter: grayscale(0%); }
.jumbotron {
padding-top: 160px;
margin-top: -160px;
border-radius: 0;
padding-bottom: 40px;
margin-bottom: 0;
font-size: .85em;
padding-left: 45px;
padding-right: 45px; }
.jumbotron .jumbotron-logo {
display: none; }
span.code-arrow {
padding: 0px 0 0px;
display: block;
transform: rotate(90deg);
font-size: 2em; }
.mb-5, .my-5 {
margin-bottom: 2rem !important; }

1
modules/docs/src/Volo.Docs.Web/Pages/Documents/_responsive.min.css

@ -0,0 +1 @@
body{font-size:14px;}.for-mobile{display:inline-block;}.for-desktop{display:none;}.close-mmenu,.close-dmenu{position:absolute;top:-78px;left:25px;color:#fff;font-size:68px;background:#fff;opacity:0;}.navbar{padding:.5rem 1.75rem;}.navbar .navbar-collapse{background:#38003d;position:fixed;top:86px;left:0;width:100%;height:100vh;height:calc(100vh - 86px);z-index:100 !important;}.navbar .navbar-collapse .navbar-nav{height:100vh;padding:20px 30px;overflow:auto;}.navbar .navbar-collapse .navbar-nav .nav-link{padding:1.2rem !important;}.navbar .navbar-toggler{padding:.5rem .75rem;font-size:1.5rem;line-height:1;background-color:transparent;border:0;border-radius:.25rem;color:#fff !important;margin-left:-1rem;}.jumbotron .btn,footer .btn{display:block;margin-bottom:10px;}.multi-tenancy{text-align:center !important;}.section-with-logos img{margin:15px;opacity:1;-webkit-filter:grayscale(0%);filter:grayscale(0%);}.jumbotron{padding-top:160px;margin-top:-160px;border-radius:0;padding-bottom:40px;margin-bottom:0;font-size:.85em;padding-left:45px;padding-right:45px;}.jumbotron .jumbotron-logo{display:none;}span.code-arrow{padding:0 0 0;display:block;transform:rotate(90deg);font-size:2em;}.mb-5,.my-5{margin-bottom:2rem !important;}

384
modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.css

@ -0,0 +1,384 @@
.docs-page {
background: #f5f7f9; }
.docs-page .docs-sidebar {
background: #f5f7f9;
padding-right: 1rem;
position: relative;
width: 270px; }
.docs-page .docs-sidebar .docs-sidebar-wrapper {
width: 270px;
top: 0px;
position: fixed; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search {
position: relative;
padding: 0 1rem;
margin: 1rem 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control {
background: none;
border-radius: 6px;
padding-left: 36px;
width: 100%;
background: #eeeff2;
border: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:focus, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:active, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:hover, .docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search input.form-control:visited {
box-shadow: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search .btn-search {
position: absolute;
top: 0px;
padding: 8px 10px;
line-height: 1;
left: 16px;
background: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-search .btn-search i.fa {
color: #aaa; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list > ul {
display: block;
height: calc(100vh - 190px); }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul {
font-size: .913em;
list-style: none;
padding: 0 1rem;
margin: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li {
margin-left: 0px;
padding-left: 24px;
display: block;
width: 100%;
position: relative; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label {
margin: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle {
transition: .3s;
display: inline-block;
width: 18px;
height: 18px;
text-align: center;
padding: 0;
line-height: 1;
border-radius: 50%;
margin-right: 4px;
position: absolute;
left: 2px;
top: 8px;
color: #aaa;
cursor: pointer; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:hover {
color: #000; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle .plus-icon {
font-size: .85em; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:not(.last-link).opened {
transform: rotate(180deg);
color: #000; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle.last-link {
top: 11px;
color: #aaa; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a {
color: #222;
font-weight: 700;
padding: 7px 0;
display: block;
border-bottom: 1px solid #eeeff3; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover {
color: #000; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul {
padding: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li label.tree-toggle {
top: 7px; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li a {
font-weight: 400; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul {
padding: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li ul li ul li a {
font-weight: 300; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a {
color: #38003c;
font-weight: bold; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand {
font-size: 1.5rem;
color: #000;
font-weight: 700;
padding: 20px 0 10px;
line-height: 1; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand strong {
font-weight: 300;
text-transform: uppercase;
font-size: .9rem;
opacity: .6; }
.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site {
color: #000;
opacity: .15;
transition: .4s;
font-size: .75rem;
font-weight: 300; }
.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site:hover {
text-decoration: none;
opacity: .5; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc {
font-size: .85em; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc strong {
display: block; }
.docs-page .docs-content .docs-text-field {
padding: 0 3rem 3rem; }
.docs-page .docs-content article.docs-body h1 {
padding-top: 3rem;
font-size: 2.25rem;
padding-bottom: 10px; }
.docs-page .docs-content article.docs-body h2 {
padding-top: 40px;
padding-bottom: 5px;
font-size: 1.75rem; }
.docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 {
padding-top: 30px;
padding-bottom: 5px; }
.docs-page .docs-content article.docs-body h1, .docs-page .docs-content article.docs-body h2, .docs-page .docs-content article.docs-body h3, .docs-page .docs-content article.docs-body h4, .docs-page .docs-content article.docs-body h5, .docs-page .docs-content article.docs-body h6 {
position: relative;
display: inline-block; }
.docs-page .docs-content article.docs-body h1 .anchor, .docs-page .docs-content article.docs-body h2 .anchor, .docs-page .docs-content article.docs-body h3 .anchor, .docs-page .docs-content article.docs-body h4 .anchor, .docs-page .docs-content article.docs-body h5 .anchor, .docs-page .docs-content article.docs-body h6 .anchor {
position: absolute;
right: -26px;
font-size: 18px;
bottom: 5px;
color: #999;
opacity: 0;
transition: .5s; }
.docs-page .docs-content article.docs-body h1:hover .anchor, .docs-page .docs-content article.docs-body h2:hover .anchor, .docs-page .docs-content article.docs-body h3:hover .anchor, .docs-page .docs-content article.docs-body h4:hover .anchor, .docs-page .docs-content article.docs-body h5:hover .anchor, .docs-page .docs-content article.docs-body h6:hover .anchor {
opacity: 1; }
.docs-page .docs-page-index {
position: relative; }
.docs-page .docs-page-index .docs-inner-anchors {
position: fixed;
top: 0px;
max-width: 270px;
padding: 10px;
font-size: .90em;
height: 100vh; }
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills {
font-size: .95em;
margin-left: 18px;
border-left: 1px solid #e5e5e5; }
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link {
padding: .2rem 0rem .2rem 1rem;
color: #aaa;
line-height: 1.1;
position: relative;
border-left: 3px solid transparent;
border-radius: 0;
margin-left: -2px;
margin-top: 2px;
margin-bottom: 2px;
transition: .2s; }
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-link.active {
background: none;
color: #000;
border-color: #000; }
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-link.active {
color: #000; }
.docs-page .docs-page-index .docs-inner-anchors .navbar .nav-pills .nav-pills .nav-pills .nav-link.active {
color: #000; }
.docs-page .docs-page-index .docs-inner-anchors > .navbar {
margin-left: -18px; }
.docs-page .docs-page-index .docs-inner-anchors .docs-anchors-wrapper {
max-width: 300px;
float: left; }
.docs-page .docs-page-index .docs-inner-anchors .inner-title {
padding-left: 18px; }
.docs-page .docs-page-index .scroll-top-btn {
display: none;
font-size: .85em;
color: #aaa;
text-decoration: none;
padding-left: 18px; }
.docs-page .docs-page-index .scroll-top-btn.showup {
display: block; }
@media (min-width: 1200px) {
.container {
max-width: 1180px; }
.docs-page .docs-sidebar.dark-sidebar {
background: #222; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search .form-control, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .form-control {
background: #333;
color: #999; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search select, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version select {
border: 0;
border-radius: 6px; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-search .btn-search i.fa, .docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-version .btn-search i.fa {
color: #eee; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle {
color: #666; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:hover {
color: #fff; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle:not(.last-link).opened {
color: #fff; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li label.tree-toggle.last-link {
color: #666; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a {
color: #ddd;
border-bottom: 1px solid #333; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li a:hover {
color: #fff; }
.docs-page .docs-sidebar.dark-sidebar .docs-sidebar-wrapper .docs-tree-list ul li.selected-tree > a {
color: #fff; }
.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-brand {
color: #fff; }
.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .go-back-site {
color: #fff; }
.docs-page .docs-sidebar.dark-sidebar .docs-top .navbar-logo .navbar-logo-desc {
color: #ddd; } }
@media (min-width: 1366px) {
.container {
max-width: 1340px; } }
@media (min-width: 1440px) {
.container {
max-width: 1400px; } }
@media (max-width: 767px) {
.docs-page .docs-content article.docs-body h1 {
padding-top: 1.5rem; }
.docs-page {
background: #f5f7f9; }
.docs-page > .container-fluid {
display: block; }
.docs-page > .container-fluid > .row {
display: block; }
.docs-page .docs-sidebar {
position: fixed;
max-width: 100%;
width: 100%;
display: block;
padding: 0 !important;
top: 0;
left: 0;
z-index: 100;
right: 0; }
.docs-page .docs-sidebar .docs-sidebar-wrapper {
max-width: 100%;
width: 100%;
top: 0px;
position: relative;
margin: 0 !important;
height: 72px; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list {
padding: .5rem 1.5rem 2rem 1.5rem;
position: fixed;
top: 70px;
font-size: 17px;
left: 0;
width: 100%;
z-index: 100;
background: #f5f7f9;
display: none; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-search {
position: relative;
padding: 0 0 1rem !important; }
.docs-page .docs-sidebar .docs-sidebar-wrapper .docs-tree-list .docs-search .btn-search {
left: 0px; }
.docs-page .docs-sidebar .docs-top .navbar-logo {
padding: 0rem;
padding-top: .3rem;
display: block;
text-align: center; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand {
font-size: 1.5rem;
font-weight: 700;
display: block;
margin-right: 0em;
padding: 7px 0 10px; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-brand .docs-logo {
width: 110px; }
.docs-page .docs-sidebar .docs-top .navbar-logo .go-back-site {
display: none; }
.docs-page .docs-sidebar .docs-top .navbar-logo .navbar-logo-desc {
font-size: 1em;
display: none; }
.docs-page .docs-sidebar .docs-top .open-dmenu {
position: absolute;
top: 10px;
left: 20px; }
.docs-page .docs-content {
padding-top: 72px;
max-width: 100%;
display: block !important; }
.docs-page .docs-content .docs-text-field {
padding: 1rem 1.5rem; }
.docs-page .docs-page-index {
display: none; } }
.for-mobile {
display: none; }
.for-desktop {
display: inline-block; }
@media (max-width: 767px) {
body {
font-size: 14px; }
.for-mobile {
display: inline-block; }
.for-desktop {
display: none; }
.close-mmenu, .close-dmenu {
position: absolute;
top: -78px;
left: 25px;
color: #fff;
font-size: 68px;
background: #fff;
opacity: 0; }
.navbar {
padding: .5rem 1.75rem; }
.navbar .navbar-collapse {
background: #38003d;
position: fixed;
top: 86px;
left: 0;
width: 100%;
height: 100vh;
height: calc(100vh - 86px);
z-index: 100 !important; }
.navbar .navbar-collapse .navbar-nav {
height: 100vh;
padding: 20px 30px;
overflow: auto; }
.navbar .navbar-collapse .navbar-nav .nav-link {
padding: 1.2rem !important; }
.navbar .navbar-toggler {
padding: .5rem .75rem;
font-size: 1.5rem;
line-height: 1;
background-color: transparent;
border: 0;
border-radius: .25rem;
color: #fff !important;
margin-left: -1rem; }
.jumbotron .btn, footer .btn {
display: block;
margin-bottom: 10px; }
.multi-tenancy {
text-align: center !important; }
.section-with-logos img {
margin: 15px;
opacity: 1;
-webkit-filter: grayscale(0%);
filter: grayscale(0%); }
.jumbotron {
padding-top: 160px;
margin-top: -160px;
border-radius: 0;
padding-bottom: 40px;
margin-bottom: 0;
font-size: .85em;
padding-left: 45px;
padding-right: 45px; }
.jumbotron .jumbotron-logo {
display: none; }
span.code-arrow {
padding: 0px 0 0px;
display: block;
transform: rotate(90deg);
font-size: 2em; }
.mb-5, .my-5 {
margin-bottom: 2rem !important; } }

89
modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.js

@ -0,0 +1,89 @@
$('.tree-toggle').click(function () {
$(this).parent().children('ul.tree').toggle(100);
$(this).toggleClass("opened");
});
$(function () {
$('.tree-toggle').parent().children('ul.tree').toggle(100);
})
$(document).ready(function () {
var scrollTopBtn = $(".scroll-top-btn");
var enoughHeight = $(".docs-sidebar-wrapper > .docs-top").height() + 60;
$(window).scroll(function () {
var topPos = $(window).scrollTop();
if (topPos > enoughHeight) {
$(scrollTopBtn).addClass("showup");
$("body").addClass("scrolled");
} else {
$(scrollTopBtn).removeClass("showup");
$("body").removeClass("scrolled");
}
});
$(scrollTopBtn).click(function () {
$('html, body').animate({
scrollTop: 0
}, 500);
return false;
});
});
function handleSidebar() {
var sideBarPosition = $(".docs-sidebar").width() - 270;
var sideBar = $(".docs-sidebar-wrapper");
sideBar.css("margin-left", sideBarPosition);
}
$(window).resize(function () {
handleSidebar();
});
handleSidebar();
$(document).ready(function () {
$('body').scrollspy({
target: '#docs-sticky-index'
});
$("#docs-sticky-index a").on('click', function (event) {
if (this.hash !== "") {
event.preventDefault();
var hash = this.hash;
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 800, function () {
window.location.hash = hash;
});
}
});
});
$('.btn-toggle').on("click", function () {
$(".toggle-row").slideToggle(400);
$(this).toggleClass("less");
});
$('.close-mmenu').on("click", function () {
$(".navbar-collapse").removeClass("show");
});
$('.open-dmenu').on("click", function () {
$(".docs-tree-list").slideToggle();
});
(function ($) {
$(window).on("load", function () {
$("#sidebar-scroll").mCustomScrollbar({
theme: "minimal"
});
});
$(window).on("load", function () {
$("#index-scroll").mCustomScrollbar({
theme: "minimal-dark"
});
});
})(jQuery);

1
modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.min.css

File diff suppressed because one or more lines are too long

0
modules/docs/src/Volo.Docs.Web/Pages/Documents/Project/vs.scss → modules/docs/src/Volo.Docs.Web/Pages/Documents/vs.scss

1
modules/docs/src/Volo.Docs.Web/Volo.Docs.Web.csproj

@ -41,6 +41,7 @@
<Content Remove="compilerconfig.json" />
<Content Remove="compilerconfig.json.defaults" />
<None Remove="Pages\Documents\Project\vs.js" />
<None Remove="Pages\Documents\vs.min.css" />
<None Include="compilerconfig.json" />
<None Include="Properties\launchSettings.json" />
</ItemGroup>

12
modules/docs/src/Volo.Docs.Web/compilerconfig.json

@ -6,5 +6,17 @@
{
"outputFile": "Pages/Documents/_docs.css",
"inputFile": "Pages/Documents/_docs.scss"
},
{
"outputFile": "Pages/Documents/Project/vs.css",
"inputFile": "Pages/Documents/Project/vs.scss"
},
{
"outputFile": "Pages/Documents/_responsive.css",
"inputFile": "Pages/Documents/_responsive.scss"
},
{
"outputFile": "Pages/Documents/vs.css",
"inputFile": "Pages/Documents/vs.scss"
}
]
Loading…
Cancel
Save