Refactor sidebar logic + Add Table of Contents in reading page (#33)

* Refactor sidebar logic + fix responsiveness

* Add TOC

* Add Pagination

* Update exampleSite

* Update README.md
This commit is contained in:
Md. Emruz Hossain 2020-07-22 04:14:08 +06:00 committed by GitHub
parent 647578e88b
commit fa4d474974
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
59 changed files with 1735 additions and 679 deletions

View file

@ -3,7 +3,7 @@
{{ end }}
{{ define "navbar" }}
{{ partial "navbar-2.html" (dict "baseURL" .Site.BaseURL "title" .Site.Title "hasToggleButton" false) }}
{{ partial "navigators/navbar-2.html" (dict "baseURL" .Site.BaseURL "title" .Site.Title "hasToggleButton" false) }}
{{ end }}
{{ define "content" }}

View file

@ -14,13 +14,19 @@
{{ end }}
</head>
<body>
<body data-spy="scroll" data-target="#TableOfContents" data-offset="80">
<div class="container-fluid bg-dimmed wrapper">
<!----- ADD NAVBAR --------------->
{{ block "navbar" . }} {{ end }}
<!----- ADD SIDEBAR --------------->
{{ block "sidebar" . }} {{ end }}
<!----- ADD PAGE CONTENT --------->
{{ block "content" . }} {{ end }}
<!----- ADD TABLE OF CONTENTS ----------->
{{ block "toc" . }} {{ end }}
</div>
<!------- ADD FOOTER ------------>

View file

@ -1,39 +1,44 @@
{{ define "header" }}
<link rel="stylesheet" href="/assets/css/list.css">
<link rel="stylesheet" href="/assets/css/navigators/sidebar.css">
{{ end }}
{{ define "navbar" }}
{{ partial "navbar-2.html" (dict "baseURL" .Site.BaseURL "title" .Site.Title "hasToggleButton" true "navBrandURL" .Site.BaseURL ) }}
{{ partial "navigators/navbar-2.html" . }}
{{ end }}
{{ define "sidebar" }}
<section class="sidebar-section" id="sidebar-section">
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<input type="text" value="" placeholder="Search" data-search="" id="search-box" />
<div class="sidebar-tree">
<ul class="tree" id="tree">
<li id="list-heading"><a href="/posts" data-filter="all">Posts</a></li>
<div class="subtree">
{{ partial "navigators/sidebar.html" (dict "menus" .Site.Menus.sidebar "ctx" .) }}
</div>
</ul>
</div>
</div>
</div>
</section>
{{ end }}
{{ define "content" }}
<div class="sidebar" id="sidebar">
<div class="sidebar-tree">
<input type="text" name="filtr-search" value="" placeholder="Search" data-search="" id="search-box" />
<ul class="tree" id="tree">
<li id="list-heading"><a href="#" data-filter="all">{{.Title}}</a></li>
<div class="subtree">
{{ partial "sections.html" .Sections }}
</div>
</ul>
</div>
</div>
<section class="content-section" id="content-section">
<div class="content container-fluid" id="content">
<div class="content-cards">
<div class="container-fluid filtr-container post-cards" id="post-cards">
{{ range (where site.RegularPages "Type" "in" site.Params.mainSections) }}
{{ partial "cards/post.html" . }}
{{ end }}
{{/* {{ $paginator := .Paginate .Site.RegularPages 120 }}
{{ range $paginator.Pages }}
{{ partial "cards/post.html" . }}
{{ end }} */}}
</div>
{{/* <div class="paginator">
{{ template "_internal/pagination.html" . }}
</div> */}}
<div class="container-fluid post-card-holder" id="post-card-holder">
{{ $paginator := .Paginate .RegularPagesRecursive 12 }}
{{ range $paginator.Pages }}
{{ partial "cards/post.html" . }}
{{ end }}
</div>
<div class="paginator">
{{ template "_internal/pagination.html" . }}
</div>
</div>
</section>
{{ end }}
{{ define "scripts" }}

View file

@ -4,55 +4,92 @@
href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/styles/atom-one-dark.min.css"
/>
<link rel="stylesheet" href="/assets/css/single.css" />
<link rel="stylesheet" href="/assets/css/navigators/sidebar.css">
{{ end }}
{{ define "navbar" }}
{{ partial "navbar-2.html" (dict "baseURL" .Site.BaseURL "title" .Site.Title "hasToggleButton" false "navBrandURL" "/posts") }}
{{ partial "navigators/navbar-2.html" . }}
{{ end }}
{{ define "sidebar" }}
<section class="sidebar-section" id="sidebar-section">
<div class="sidebar-holder">
<div class="sidebar" id="sidebar">
<input type="text" value="" placeholder="Search" data-search="" id="search-box" />
<div class="sidebar-tree">
<ul class="tree" id="tree">
<li id="list-heading"><a href="/posts" data-filter="all">Posts</a></li>
<div class="subtree">
{{ partial "navigators/sidebar.html" (dict "menus" .Site.Menus.sidebar "ctx" .) }}
</div>
</ul>
</div>
</div>
</div>
</section>
{{ end }}
{{ define "content" }}
<div class="container p-0 read-area">
<!--Hero Area-->
<div class="hero-area col-sm-12" style='background-image: url({{ strings.TrimSuffix "/" .Site.BaseURL }}{{ partial "helpers/get-hero.html" . }});'>
</div>
<!--Content Start-->
<div class="page-content">
<div class="author-profile ml-auto align-self-lg-center">
<img class="rounded-circle" src='{{ partial "helpers/get-author-image.html" . }}'/>
<h5 class="author-name">{{ partial "helpers/get-author-name.html" . }}</h5>
<p>{{ .Page.Date.Format "January 2, 2006" }}</p>
</div>
<div class="title">
<h1>{{ .Page.Title }}</h1>
</div>
<div class="post-content" id="post-content">
{{ .Page.Content }}
</div>
<!--- Improve this page button --->
{{ if .Site.Params.GitRepo }}
<div class="btn-improve-page">
<a href="{{ .Site.Params.GitRepo }}/edit/master/content/{{ .File.Path }}">
<i class="fas fa-code-branch"></i>
Improve This Page
</a>
<section class="content-section" id="content-section">
<div class="content">
<div class="container p-0 read-area">
<!--Hero Area-->
<div class="hero-area col-sm-12" id="hero-area" style='background-image: url({{ strings.TrimSuffix "/" .Site.BaseURL }}{{ partial "helpers/get-hero.html" . }});'>
</div>
{{ end }}
<!---Next and Previous Navigator -->
<hr />
{{ partial "next-prev-navigator.html" . }}
<hr />
<!-- Add Disqus forum -->
{{ if .Site.DisqusShortname }}
{{ partial "disqus.html" . }}
{{ end }}
</div>
<!--Content Start-->
<div class="page-content">
<div class="author-profile ml-auto align-self-lg-center">
<img class="rounded-circle" src='{{ partial "helpers/get-author-image.html" . }}'/>
<h5 class="author-name">{{ partial "helpers/get-author-name.html" . }}</h5>
<p>{{ .Page.Date.Format "January 2, 2006" }}</p>
</div>
<div class="title">
<h1>{{ .Page.Title }}</h1>
</div>
<div class="post-content" id="post-content">
{{ .Page.Content }}
</div>
<!--- Improve this page button --->
{{ if .Site.Params.GitRepo }}
<div class="btn-improve-page">
<a href="{{ .Site.Params.GitRepo }}/edit/master/content/{{ .File.Path }}">
<i class="fas fa-code-branch"></i>
Improve This Page
</a>
</div>
{{ end }}
<!---Next and Previous Navigator -->
<hr />
{{ partial "navigators/next-prev-navigator.html" . }}
<hr />
<!-- Add Disqus forum -->
{{ if .Site.DisqusShortname }}
{{ partial "disqus.html" . }}
{{ end }}
</div>
</div>
</div>
</section>
{{ end }}
{{ define "toc" }}
<section class="toc-section" id="toc-section">
{{ if site.Params.enableTOC }}
<div class="toc-holder">
<h5 class="text-center pl-3">Table of Contents</h5>
<hr>
<div class="toc">
{{ .TableOfContents }}
</div>
</div>
{{ end }}
</section>
{{ end }}
{{ define "scripts" }}
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.18.1/highlight.min.js"></script>

View file

@ -6,13 +6,13 @@
{{- partial "header.html" . -}}
<!-- import index page specific headers -->
<link rel="stylesheet" href="/assets/css/home.css" />
<link rel="stylesheet" href="/assets/css/about.css" />
<link rel="stylesheet" href="/assets/css/skills.css" />
<link rel="stylesheet" href="/assets/css/experiences.css" />
<link rel="stylesheet" href="/assets/css/projects.css" />
<link rel="stylesheet" href="/assets/css/recent-posts.css" />
<link rel="stylesheet" href="/assets/css/achievements.css" />
<link rel="stylesheet" href="/assets/css/sections/home.css" />
<link rel="stylesheet" href="/assets/css/sections/about.css" />
<link rel="stylesheet" href="/assets/css/sections/skills.css" />
<link rel="stylesheet" href="/assets/css/sections/experiences.css" />
<link rel="stylesheet" href="/assets/css/sections/projects.css" />
<link rel="stylesheet" href="/assets/css/sections/recent-posts.css" />
<link rel="stylesheet" href="/assets/css/sections/achievements.css" />
<!-- Add Google Analytics if enabled in configuration -->
{{ if .Site.GoogleAnalytics }}
@ -22,10 +22,10 @@
<body data-spy="scroll" data-target="#top-navbar" data-offset="100">
<!--- NAVBAR ------------------------->
{{- partial "navbar.html" . -}}
{{- partial "navigators/navbar.html" . -}}
<!--- ADD HOME SECTION ---------------->
{{- partial "home.html" . -}}
{{- partial "sections/home.html" . -}}
<!--- ADD OPTIONAL SECTIONS ----------->
{{ if .Site.Data.sections }}
@ -36,7 +36,7 @@
{{ if .section.template }}
{{- partial .section.template . -}}
{{ else }}
{{- partial (printf "%s.html" (replace (lower .section.name) " " "-")) . -}}
{{- partial (printf "sections/%s.html" (replace (lower .section.name) " " "-")) . -}}
{{ end }}
</div>
<!--- alter background color for next section --->
@ -59,5 +59,6 @@
<script src="/assets/js/itype.min.js"></script>
<script src="/assets/js/github-button.js"></script>
<script src="/assets/js/home.js"></script>
<script src="/assets/js/jquery.filterizr.min.js"></script>
</body>
</html>

View file

@ -1,4 +1,4 @@
<div class="filtr-item" data-category='{{ partial "helpers/get-categories.html" . }}'>
<div class="post-card">
<a href="{{ .RelPermalink }}" class="post-card-link">
<div class="card">
<div class="card-head">

View file

@ -1,5 +1,5 @@
<div
class="col-md-6 col-lg-4 p-2 filtr-item"
class="col-sm-12 col-md-6 col-lg-4 p-2 filtr-item"
data-category='all, {{ delimit .tags ","}}'
>
<div class="card mt-1">

View file

@ -1,4 +1,4 @@
<div class="col-lg-4 col-md-6 pt-2">
<div class="col-lg-4 col-md-6 pt-2 post-card">
<a href="{{ .RelPermalink }}" class="post-card-link">
<div class="card">
<div class="card-head">

View file

@ -1,4 +1,4 @@
<div class="col-sm-12 col-md-6 col-lg-4 pt-2">
<div class="col-xs-12 col-sm-6 col-lg-4 pt-2">
<div class="card">
<div class="card-head d-flex">
{{ if .icon }}

View file

@ -1,5 +0,0 @@
{{ if gt (len .positions) 1 }}
{{ partial "experiences/multiple-positions" . }}
{{ else }}
{{ partial "experiences/single-position.html" . }}
{{ end }}

View file

@ -5,7 +5,8 @@
<!-- ============ import common css ========== -->
<link rel="stylesheet" href="/assets/css/bootstrap.min.css" />
<link rel="stylesheet" href="/assets/css/main.css" />
<link rel="stylesheet" href="/assets/css/navbar.css" />
<link rel="stylesheet" href="/assets/css/style.css" />
<link rel="stylesheet" href="/assets/css/navigators/navbar.css" />
<!--=================== cdn ==============================-->
<link href="https://fonts.googleapis.com/css2?family=Muli:wght@300;400;500;600" rel="stylesheet">

View file

@ -1,5 +0,0 @@
{{ $categories:= ""}}
{{ if .Params.categories }}
{{ $categories = delimit .Params.categories "," }}
{{ end }}
{{ return $categories }}

View file

@ -1,16 +0,0 @@
<nav class="navbar navbar-expand-lg top-navbar final-navbar shadow">
<div class="container">
<a class="navbar-brand" href="{{ .navBrandURL }}">
<img src="/assets/images/logo.png">
{{- .title -}}
</a>
<button class="navbar-toggler navbar-light" type="button" {{ if .hasToggleButton }}onclick="toggleSidebar()"{{ end }}>
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="top-nav-items">
<ul class="navbar-nav ml-auto">
</ul>
</div>
</div>
</nav>

View file

@ -0,0 +1,19 @@
<nav class="navbar navbar-expand-xl top-navbar final-navbar shadow">
<div class="container">
<button class="navbar-toggler navbar-light" id="sidebar-toggler" type="button" onclick="toggleSidebar()">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="{{ site.BaseURL }}">
<img src="/assets/images/logo.png">
{{- site.Title -}}
</a>
<button class="navbar-toggler navbar-light" id="toc-toggler" type="button" onclick="toggleTOC()">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="top-nav-items">
<ul class="navbar-nav ml-auto">
</ul>
</div>
</div>
</nav>

View file

@ -1,4 +1,4 @@
<nav class="navbar navbar-expand-lg top-navbar initial-navbar" id="top-navbar">
<nav class="navbar navbar-expand-xl top-navbar initial-navbar" id="top-navbar">
<div class="container">
<a class="navbar-brand" href="{{ .Site.BaseURL }}">
<img src="/assets/images/logo-inverted.png" id="logo">
@ -7,7 +7,7 @@
<button
class="navbar-toggler navbar-dark"
id="navbar-toggler"
,type="button"
type="button"
data-toggle="collapse"
data-target="#top-nav-items"
>
@ -17,13 +17,13 @@
<div class="collapse navbar-collapse" id="top-nav-items">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link smooth-scroll" href="#home">Home</a>
<a class="nav-link" href="#home">Home</a>
</li>
{{- if .Site.Data.sections }}
{{- range sort .Site.Data.sections "section.weight" }}
{{ if and (.section.enable) (.section.showOnNavbar)}}
<li class="nav-item">
<a class="nav-link smooth-scroll" href="#{{ replace (lower .section.name) " " "-" }}">{{ .section.name }}</a>
<a class="nav-link" href="#{{ replace (lower .section.name) " " "-" }}">{{ .section.name }}</a>
</li>
{{ end }}
{{- end }}

View file

@ -0,0 +1,22 @@
{{ range .menus }}
{{ $class:= "" }}
{{ $icon:= "fa-plus-circle" }}
<!-- If the current menu is the selected menu or it contain the selected menu, set expand icon and set "active" class -->
{{ if or ($.ctx.HasMenuCurrent "sidebar" .) ($.ctx.IsMenuCurrent "sidebar" .)}}
{{ $icon = "fa-minus-circle"}}
{{ $class = "active" }}
{{end}}
{{ if .HasChildren }}
<!-- Add current entry -->
<li>
<i class="fas {{ $icon }}"></i><a class="{{$class}}" href="{{.URL}}">{{.Name}}</a>
<!-- Add sub-tree -->
<ul class="{{ $class }}">
{{ partial "navigators/sidebar.html" (dict "menus" .Children "ctx" $.ctx) }}
</ul>
</li>
{{ else }}
<!-- No sub-tree. So, only add current entry -->
<li><a class="{{$class}}" href="{{.URL}}">{{.Name}}</a></li>
{{ end }}
{{ end }}

View file

@ -2,4 +2,4 @@
<script src="/assets/js/bootstrap.min.js"></script>
<script src="/assets/js/navbar.js"></script>
<script src="/assets/js/jquery.filterizr.min.js"></script>
<script src="/assets/js/main.js"></script>

View file

@ -1,11 +0,0 @@
{{ range . }}
{{ if .Sections }}
<li><a href="#{{ .Params.id }}" data-filter="{{ .Params.id }}">{{ title .Title }}</a>
<ul>
{{ partial "sections.html" .Sections }}
</ul>
</li>
{{ else }}
<li><a href="#{{ .Params.id }}" data-filter="{{ .Params.id }}">{{ title .Title }}</a></li>
{{ end }}
{{ end }}

View file

@ -1,7 +1,7 @@
<div class="container anchor p-md-5 about-section" id="{{ replace (lower .section.name) " " "-" }}">
<div class="container anchor p-lg-5 about-section" id="{{ replace (lower .section.name) " " "-" }}">
<div class="row pt-sm-2 pt-md-4 align-self-center">
<!-- summary -->
<div class="col-md-6">
<div class="col-sm-6">
<h3 class="p-1">{{ site.Params.author.name }}</h3>
{{ if .designation }}
<h5 class="p-1">
@ -34,10 +34,10 @@
{{ end }}
</div>
<!-- soft skills circular-progressbar -->
<div class="col-md-6 pt-5 pl-md-4 pl-sm-3 pt-md-0">
<div class="col-sm-6 pt-5 pl-md-4 pl-sm-3 pt-sm-0">
<div class="row">
{{ range .softSkills }}
{{ partial "progress/soft-skills" . }}
{{ partial "misc/soft-skills.html" . }}
{{ end }}
</div>
</div>

View file

@ -9,7 +9,7 @@
<!-- achievements-holder holds achievement-entry -->
<div class="d-none" id="achievements-holder">
{{ range .achievements }}
{{ partial "misc/achievement.html" . }}
{{ partial "sections/achievements/entry.html" . }}
{{ end }}
</div>
</div>

View file

@ -8,17 +8,17 @@
{{ range $index,$experience:= .experiences }}
{{ if eq (mod $index 2) 0 }}
<div class="row align-items-center d-flex">
{{ partial "experiences/vertical-line.html" $index }}
{{ partial "experiences/experience-info.html" $experience }}
{{ partial "sections/experiences/vertical-line.html" $index }}
{{ partial "sections/experiences/experience-info.html" $experience }}
</div>
{{else}}
<div class="row align-items-center justify-content-end d-flex">
{{ partial "experiences/experience-info.html" $experience }}
{{ partial "experiences/vertical-line.html" $index }}
{{ partial "sections/experiences/experience-info.html" $experience }}
{{ partial "sections/experiences/vertical-line.html" $index }}
</div>
{{ end }}
{{ if lt $index (sub $totalExperiences 1) }}
{{ partial "experiences/horizontal-line.html" $index }}
{{ partial "sections/experiences/horizontal-line.html" $index }}
{{ end }}
{{ end }}
</div>

View file

@ -0,0 +1,5 @@
{{ if gt (len .positions) 1 }}
{{ partial "sections/experiences/multiple-positions" . }}
{{ else }}
{{ partial "sections/experiences/single-position.html" . }}
{{ end }}