From d32d91bebc54939585c4a371c8d5bf898f674d12 Mon Sep 17 00:00:00 2001 From: CHUXK Date: Fri, 10 Apr 2020 11:28:32 +0800 Subject: [PATCH 1/9] Update sidebar.js fix bug https://github.com/docsifyjs/docsify/issues/1110 --- src/core/event/sidebar.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/core/event/sidebar.js b/src/core/event/sidebar.js index f252f2b48..5c09fb2b2 100644 --- a/src/core/event/sidebar.js +++ b/src/core/event/sidebar.js @@ -38,7 +38,8 @@ export function collapse(el) { dom.on(el, 'click', ({ target }) => { if ( target.nodeName === 'A' && - target.nextSibling && + target.nextSibling && + target.nextSibling.classList && target.nextSibling.classList.contains('app-sub-sidebar') ) { dom.toggleClass(target.parentNode, 'collapse'); From b4e7b219284ae88a1550e72ed0a198db1552f7f8 Mon Sep 17 00:00:00 2001 From: CHUXK Date: Fri, 10 Apr 2020 11:30:12 +0800 Subject: [PATCH 2/9] Update component.js fix bug https://github.com/docsifyjs/docsify/issues/1098 --- src/plugins/search/component.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/plugins/search/component.js b/src/plugins/search/component.js index 21add7ef2..1ac16fa24 100644 --- a/src/plugins/search/component.js +++ b/src/plugins/search/component.js @@ -171,11 +171,11 @@ function bindEvents() { let timeId; // Prevent to Fold sidebar - Docsify.dom.on( - $search, - 'click', - e => e.target.tagName !== 'A' && e.stopPropagation() - ); +// Docsify.dom.on( +// $search, +// 'click', +// e => e.target.tagName !== 'A' && e.stopPropagation() +// ); Docsify.dom.on($input, 'input', e => { clearTimeout(timeId); timeId = setTimeout(_ => doSearch(e.target.value.trim()), 100); From fed6a8393025c88699454d9eebaf2b66b278aea9 Mon Sep 17 00:00:00 2001 From: CHUXK Date: Wed, 15 Apr 2020 16:01:09 +0800 Subject: [PATCH 3/9] Linting Checks --- .../ core/\344\272\213\344\273\266/sidebar.js" | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/core/event/sidebar.js => "src/ core/\344\272\213\344\273\266/sidebar.js" (98%) diff --git a/src/core/event/sidebar.js "b/src/ core/\344\272\213\344\273\266/sidebar.js" similarity index 98% rename from src/core/event/sidebar.js rename to "src/ core/\344\272\213\344\273\266/sidebar.js" index 5c09fb2b2..b15cb2afe 100644 --- a/src/core/event/sidebar.js +++ "b/src/ core/\344\272\213\344\273\266/sidebar.js" @@ -38,7 +38,7 @@ export function collapse(el) { dom.on(el, 'click', ({ target }) => { if ( target.nodeName === 'A' && - target.nextSibling && + target.nextSibling && target.nextSibling.classList && target.nextSibling.classList.contains('app-sub-sidebar') ) { From 1c43abe8ff8456d7fb65f36898e210126891e993 Mon Sep 17 00:00:00 2001 From: CHUXK Date: Wed, 15 Apr 2020 16:03:40 +0800 Subject: [PATCH 4/9] Linting Checks --- src/plugins/search/component.js | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/plugins/search/component.js b/src/plugins/search/component.js index 1ac16fa24..a2e4ec174 100644 --- a/src/plugins/search/component.js +++ b/src/plugins/search/component.js @@ -171,11 +171,6 @@ function bindEvents() { let timeId; // Prevent to Fold sidebar -// Docsify.dom.on( -// $search, -// 'click', -// e => e.target.tagName !== 'A' && e.stopPropagation() -// ); Docsify.dom.on($input, 'input', e => { clearTimeout(timeId); timeId = setTimeout(_ => doSearch(e.target.value.trim()), 100); From 7d38a32a5a39256fafb5eac615be1f317bc37a75 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E5=94=81?= <52o@qq52o.cn> Date: Wed, 13 May 2020 08:58:34 +0800 Subject: [PATCH 5/9] Create sidebar.js --- src/ core/event/sidebar.js | 104 +++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/ core/event/sidebar.js diff --git a/src/ core/event/sidebar.js b/src/ core/event/sidebar.js new file mode 100644 index 000000000..b15cb2afe --- /dev/null +++ b/src/ core/event/sidebar.js @@ -0,0 +1,104 @@ +/* eslint-disable no-unused-vars */ +import { isMobile } from '../util/env'; +import * as dom from '../util/dom'; + +const title = dom.$.title; +/** + * Toggle button + * @param {Element} el Button to be toggled + * @void + */ +export function btn(el) { + const toggle = _ => dom.body.classList.toggle('close'); + + el = dom.getNode(el); + if (el === null || el === undefined) { + return; + } + + dom.on(el, 'click', e => { + e.stopPropagation(); + toggle(); + }); + + isMobile && + dom.on( + dom.body, + 'click', + _ => dom.body.classList.contains('close') && toggle() + ); +} + +export function collapse(el) { + el = dom.getNode(el); + if (el === null || el === undefined) { + return; + } + + dom.on(el, 'click', ({ target }) => { + if ( + target.nodeName === 'A' && + target.nextSibling && + target.nextSibling.classList && + target.nextSibling.classList.contains('app-sub-sidebar') + ) { + dom.toggleClass(target.parentNode, 'collapse'); + } + }); +} + +export function sticky() { + const cover = dom.getNode('section.cover'); + if (!cover) { + return; + } + + const coverHeight = cover.getBoundingClientRect().height; + + if (window.pageYOffset >= coverHeight || cover.classList.contains('hidden')) { + dom.toggleClass(dom.body, 'add', 'sticky'); + } else { + dom.toggleClass(dom.body, 'remove', 'sticky'); + } +} + +/** + * Get and active link + * @param {Object} router Router + * @param {String|Element} el Target element + * @param {Boolean} isParent Active parent + * @param {Boolean} autoTitle Automatically set title + * @return {Element} Active element + */ +export function getAndActive(router, el, isParent, autoTitle) { + el = dom.getNode(el); + let links = []; + if (el !== null && el !== undefined) { + links = dom.findAll(el, 'a'); + } + + const hash = decodeURI(router.toURL(router.getCurrentPath())); + let target; + + links + .sort((a, b) => b.href.length - a.href.length) + .forEach(a => { + const href = a.getAttribute('href'); + const node = isParent ? a.parentNode : a; + + if (hash.indexOf(href) === 0 && !target) { + target = a; + dom.toggleClass(node, 'add', 'active'); + } else { + dom.toggleClass(node, 'remove', 'active'); + } + }); + + if (autoTitle) { + dom.$.title = target + ? target.title || `${target.innerText} - ${title}` + : title; + } + + return target; +} From 6ac71f9056ab642f6020e8682e6f21aad98b9237 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E5=94=81?= <52o@qq52o.cn> Date: Wed, 13 May 2020 08:59:02 +0800 Subject: [PATCH 6/9] Delete sidebar.js --- .../\344\272\213\344\273\266/sidebar.js" | 104 ------------------ 1 file changed, 104 deletions(-) delete mode 100644 "src/ core/\344\272\213\344\273\266/sidebar.js" diff --git "a/src/ core/\344\272\213\344\273\266/sidebar.js" "b/src/ core/\344\272\213\344\273\266/sidebar.js" deleted file mode 100644 index b15cb2afe..000000000 --- "a/src/ core/\344\272\213\344\273\266/sidebar.js" +++ /dev/null @@ -1,104 +0,0 @@ -/* eslint-disable no-unused-vars */ -import { isMobile } from '../util/env'; -import * as dom from '../util/dom'; - -const title = dom.$.title; -/** - * Toggle button - * @param {Element} el Button to be toggled - * @void - */ -export function btn(el) { - const toggle = _ => dom.body.classList.toggle('close'); - - el = dom.getNode(el); - if (el === null || el === undefined) { - return; - } - - dom.on(el, 'click', e => { - e.stopPropagation(); - toggle(); - }); - - isMobile && - dom.on( - dom.body, - 'click', - _ => dom.body.classList.contains('close') && toggle() - ); -} - -export function collapse(el) { - el = dom.getNode(el); - if (el === null || el === undefined) { - return; - } - - dom.on(el, 'click', ({ target }) => { - if ( - target.nodeName === 'A' && - target.nextSibling && - target.nextSibling.classList && - target.nextSibling.classList.contains('app-sub-sidebar') - ) { - dom.toggleClass(target.parentNode, 'collapse'); - } - }); -} - -export function sticky() { - const cover = dom.getNode('section.cover'); - if (!cover) { - return; - } - - const coverHeight = cover.getBoundingClientRect().height; - - if (window.pageYOffset >= coverHeight || cover.classList.contains('hidden')) { - dom.toggleClass(dom.body, 'add', 'sticky'); - } else { - dom.toggleClass(dom.body, 'remove', 'sticky'); - } -} - -/** - * Get and active link - * @param {Object} router Router - * @param {String|Element} el Target element - * @param {Boolean} isParent Active parent - * @param {Boolean} autoTitle Automatically set title - * @return {Element} Active element - */ -export function getAndActive(router, el, isParent, autoTitle) { - el = dom.getNode(el); - let links = []; - if (el !== null && el !== undefined) { - links = dom.findAll(el, 'a'); - } - - const hash = decodeURI(router.toURL(router.getCurrentPath())); - let target; - - links - .sort((a, b) => b.href.length - a.href.length) - .forEach(a => { - const href = a.getAttribute('href'); - const node = isParent ? a.parentNode : a; - - if (hash.indexOf(href) === 0 && !target) { - target = a; - dom.toggleClass(node, 'add', 'active'); - } else { - dom.toggleClass(node, 'remove', 'active'); - } - }); - - if (autoTitle) { - dom.$.title = target - ? target.title || `${target.innerText} - ${title}` - : title; - } - - return target; -} From f9d0c721eb949d0f2e9c665fca7fd948902c4d54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E5=94=81?= <52o@qq52o.cn> Date: Wed, 13 May 2020 09:09:16 +0800 Subject: [PATCH 7/9] Create sidebar.js --- src/core/event/sidebar.js | 104 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 src/core/event/sidebar.js diff --git a/src/core/event/sidebar.js b/src/core/event/sidebar.js new file mode 100644 index 000000000..b15cb2afe --- /dev/null +++ b/src/core/event/sidebar.js @@ -0,0 +1,104 @@ +/* eslint-disable no-unused-vars */ +import { isMobile } from '../util/env'; +import * as dom from '../util/dom'; + +const title = dom.$.title; +/** + * Toggle button + * @param {Element} el Button to be toggled + * @void + */ +export function btn(el) { + const toggle = _ => dom.body.classList.toggle('close'); + + el = dom.getNode(el); + if (el === null || el === undefined) { + return; + } + + dom.on(el, 'click', e => { + e.stopPropagation(); + toggle(); + }); + + isMobile && + dom.on( + dom.body, + 'click', + _ => dom.body.classList.contains('close') && toggle() + ); +} + +export function collapse(el) { + el = dom.getNode(el); + if (el === null || el === undefined) { + return; + } + + dom.on(el, 'click', ({ target }) => { + if ( + target.nodeName === 'A' && + target.nextSibling && + target.nextSibling.classList && + target.nextSibling.classList.contains('app-sub-sidebar') + ) { + dom.toggleClass(target.parentNode, 'collapse'); + } + }); +} + +export function sticky() { + const cover = dom.getNode('section.cover'); + if (!cover) { + return; + } + + const coverHeight = cover.getBoundingClientRect().height; + + if (window.pageYOffset >= coverHeight || cover.classList.contains('hidden')) { + dom.toggleClass(dom.body, 'add', 'sticky'); + } else { + dom.toggleClass(dom.body, 'remove', 'sticky'); + } +} + +/** + * Get and active link + * @param {Object} router Router + * @param {String|Element} el Target element + * @param {Boolean} isParent Active parent + * @param {Boolean} autoTitle Automatically set title + * @return {Element} Active element + */ +export function getAndActive(router, el, isParent, autoTitle) { + el = dom.getNode(el); + let links = []; + if (el !== null && el !== undefined) { + links = dom.findAll(el, 'a'); + } + + const hash = decodeURI(router.toURL(router.getCurrentPath())); + let target; + + links + .sort((a, b) => b.href.length - a.href.length) + .forEach(a => { + const href = a.getAttribute('href'); + const node = isParent ? a.parentNode : a; + + if (hash.indexOf(href) === 0 && !target) { + target = a; + dom.toggleClass(node, 'add', 'active'); + } else { + dom.toggleClass(node, 'remove', 'active'); + } + }); + + if (autoTitle) { + dom.$.title = target + ? target.title || `${target.innerText} - ${title}` + : title; + } + + return target; +} From 62d0986b741cb5772dd807594fa95b1a0dbe3e2c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E5=94=81?= <52o@qq52o.cn> Date: Wed, 13 May 2020 09:09:38 +0800 Subject: [PATCH 8/9] Delete sidebar.js --- src/ core/event/sidebar.js | 104 ------------------------------------- 1 file changed, 104 deletions(-) delete mode 100644 src/ core/event/sidebar.js diff --git a/src/ core/event/sidebar.js b/src/ core/event/sidebar.js deleted file mode 100644 index b15cb2afe..000000000 --- a/src/ core/event/sidebar.js +++ /dev/null @@ -1,104 +0,0 @@ -/* eslint-disable no-unused-vars */ -import { isMobile } from '../util/env'; -import * as dom from '../util/dom'; - -const title = dom.$.title; -/** - * Toggle button - * @param {Element} el Button to be toggled - * @void - */ -export function btn(el) { - const toggle = _ => dom.body.classList.toggle('close'); - - el = dom.getNode(el); - if (el === null || el === undefined) { - return; - } - - dom.on(el, 'click', e => { - e.stopPropagation(); - toggle(); - }); - - isMobile && - dom.on( - dom.body, - 'click', - _ => dom.body.classList.contains('close') && toggle() - ); -} - -export function collapse(el) { - el = dom.getNode(el); - if (el === null || el === undefined) { - return; - } - - dom.on(el, 'click', ({ target }) => { - if ( - target.nodeName === 'A' && - target.nextSibling && - target.nextSibling.classList && - target.nextSibling.classList.contains('app-sub-sidebar') - ) { - dom.toggleClass(target.parentNode, 'collapse'); - } - }); -} - -export function sticky() { - const cover = dom.getNode('section.cover'); - if (!cover) { - return; - } - - const coverHeight = cover.getBoundingClientRect().height; - - if (window.pageYOffset >= coverHeight || cover.classList.contains('hidden')) { - dom.toggleClass(dom.body, 'add', 'sticky'); - } else { - dom.toggleClass(dom.body, 'remove', 'sticky'); - } -} - -/** - * Get and active link - * @param {Object} router Router - * @param {String|Element} el Target element - * @param {Boolean} isParent Active parent - * @param {Boolean} autoTitle Automatically set title - * @return {Element} Active element - */ -export function getAndActive(router, el, isParent, autoTitle) { - el = dom.getNode(el); - let links = []; - if (el !== null && el !== undefined) { - links = dom.findAll(el, 'a'); - } - - const hash = decodeURI(router.toURL(router.getCurrentPath())); - let target; - - links - .sort((a, b) => b.href.length - a.href.length) - .forEach(a => { - const href = a.getAttribute('href'); - const node = isParent ? a.parentNode : a; - - if (hash.indexOf(href) === 0 && !target) { - target = a; - dom.toggleClass(node, 'add', 'active'); - } else { - dom.toggleClass(node, 'remove', 'active'); - } - }); - - if (autoTitle) { - dom.$.title = target - ? target.title || `${target.innerText} - ${title}` - : title; - } - - return target; -} From f2ff01d91e3fa65a9779c5f339f97e737376a83e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B2=88=E5=94=81?= <52o@qq52o.cn> Date: Thu, 14 May 2020 08:51:50 +0800 Subject: [PATCH 9/9] Update component.js --- src/plugins/search/component.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/plugins/search/component.js b/src/plugins/search/component.js index a2e4ec174..21add7ef2 100644 --- a/src/plugins/search/component.js +++ b/src/plugins/search/component.js @@ -171,6 +171,11 @@ function bindEvents() { let timeId; // Prevent to Fold sidebar + Docsify.dom.on( + $search, + 'click', + e => e.target.tagName !== 'A' && e.stopPropagation() + ); Docsify.dom.on($input, 'input', e => { clearTimeout(timeId); timeId = setTimeout(_ => doSearch(e.target.value.trim()), 100);