diff options
author | silverwind <me@silverwind.io> | 2020-01-26 09:17:25 +0100 |
---|---|---|
committer | zeripath <art27@cantab.net> | 2020-01-26 08:17:25 +0000 |
commit | fd094eea959a235654b7591da066dcbbee11fc25 (patch) | |
tree | d5b7029b39a58ceafa168016c03c312b2c792dab /web_src | |
parent | 8d51f28ba04980734a04fef645a8065472e6ca63 (diff) | |
download | gitea-fd094eea959a235654b7591da066dcbbee11fc25.tar.gz gitea-fd094eea959a235654b7591da066dcbbee11fc25.zip |
fix commit view JS features, reimplement folding (#9968)
* fix commit view JS features, reimplement folding
File content folding was not working so I reimplemented it in a saner
way. Then I noticed the issue was actually because of missing JS
libraries (seen on the console of every commit with error
'SimpleMDE is not defined').
Fixed the libraries. I think the reimplementation is worth to keep.
* add .closest polyfill
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'web_src')
-rw-r--r-- | web_src/js/index.js | 18 | ||||
-rw-r--r-- | web_src/js/polyfills.js | 17 | ||||
-rw-r--r-- | web_src/less/_repository.less | 8 |
3 files changed, 32 insertions, 11 deletions
diff --git a/web_src/js/index.js b/web_src/js/index.js index f89750e933..12c46903a6 100644 --- a/web_src/js/index.js +++ b/web_src/js/index.js @@ -3,6 +3,7 @@ /* exported toggleDeadlineForm, setDeadline, updateDeadline, deleteDependencyModal, cancelCodeComment, onOAuthLoginClick */ import './publicPath.js'; +import './polyfills.js'; import './gitGraphLoader.js'; import './semanticDropdown.js'; import initContextPopups from './features/contextPopup'; @@ -2109,17 +2110,12 @@ function initCodeView() { } }).trigger('hashchange'); } - $('.ui.fold-code').on('click', (e) => { - const $foldButton = $(e.target); - if ($foldButton.hasClass('fa-chevron-down')) { - $(e.target).parent().next().slideUp('fast', () => { - $foldButton.removeClass('fa-chevron-down').addClass('fa-chevron-right'); - }); - } else { - $(e.target).parent().next().slideDown('fast', () => { - $foldButton.removeClass('fa-chevron-right').addClass('fa-chevron-down'); - }); - } + $('.fold-code').on('click', ({ target }) => { + const box = target.closest('.file-content'); + const folded = box.dataset.folded !== 'true'; + target.classList.add(`fa-chevron-${folded ? 'right' : 'down'}`); + target.classList.remove(`fa-chevron-${folded ? 'down' : 'right'}`); + box.dataset.folded = String(folded); }); function insertBlobExcerpt(e) { const $blob = $(e.target); diff --git a/web_src/js/polyfills.js b/web_src/js/polyfills.js new file mode 100644 index 0000000000..0063b6d253 --- /dev/null +++ b/web_src/js/polyfills.js @@ -0,0 +1,17 @@ +// compat: IE11 +if (!Element.prototype.matches) { + Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector; +} + +// compat: IE11 +if (!Element.prototype.closest) { + Element.prototype.closest = function (s) { + let el = this; + + do { + if (el.matches(s)) return el; + el = el.parentElement || el.parentNode; + } while (el !== null && el.nodeType === 1); + return null; + }; +} diff --git a/web_src/less/_repository.less b/web_src/less/_repository.less index a1b55e86aa..5c05499af7 100644 --- a/web_src/less/_repository.less +++ b/web_src/less/_repository.less @@ -2524,3 +2524,11 @@ td.blob-excerpt { .title_wip_desc { margin-top: 1em; } + +.diff-file-box[data-folded="true"] .diff-file-body { + visibility: hidden; +} + +.diff-file-box[data-folded="true"] .diff-file-header { + border-radius: 0.28571429rem !important; +} |