summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/behaviors/toggler_behavior.js
diff options
context:
space:
mode:
authorMike Greiling <mike@pixelcog.com>2016-07-31 20:17:19 -0500
committerMike Greiling <mike@pixelcog.com>2016-08-24 22:11:58 -0500
commit96051549672084fabec9f67b1cf03c59e8ac3370 (patch)
treeff28832f9249c88e716f78c3a9366e2643e4d8e6 /app/assets/javascripts/behaviors/toggler_behavior.js
parent6fb46b604e4feebcbaa92d3d44d7616be709c0e5 (diff)
downloadgitlab-ce-96051549672084fabec9f67b1cf03c59e8ac3370.tar.gz
Automatically expand hidden discussions when accessed via a permalink hash (closes #19304)
Diffstat (limited to 'app/assets/javascripts/behaviors/toggler_behavior.js')
-rw-r--r--app/assets/javascripts/behaviors/toggler_behavior.js30
1 files changed, 23 insertions, 7 deletions
diff --git a/app/assets/javascripts/behaviors/toggler_behavior.js b/app/assets/javascripts/behaviors/toggler_behavior.js
index 1b7b63489ea..8ac1ba7665e 100644
--- a/app/assets/javascripts/behaviors/toggler_behavior.js
+++ b/app/assets/javascripts/behaviors/toggler_behavior.js
@@ -1,10 +1,26 @@
-(function() {
+(function(w) {
$(function() {
- return $("body").on("click", ".js-toggle-button", function(e) {
- $(this).find('i').toggleClass('fa fa-chevron-down').toggleClass('fa fa-chevron-up');
- $(this).closest(".js-toggle-container").find(".js-toggle-content").toggle();
- return e.preventDefault();
+ $('.js-toggle-button').on('click', function(e) {
+ e.preventDefault();
+ $(this)
+ .find('.fa')
+ .toggleClass('fa-chevron-down fa-chevron-up')
+ .end()
+ .closest('.js-toggle-container')
+ .find('.js-toggle-content')
+ .toggle()
+ ;
});
- });
-}).call(this);
+ // If we're accessing a permalink, ensure it is not inside a
+ // closed js-toggle-container!
+ var hash = w.gl.utils.getLocationHash();
+ var anchor = hash && document.getElementById(hash);
+ var container = anchor && $(anchor).closest('.js-toggle-container');
+
+ if (container && container.find('.js-toggle-content').is(':hidden')) {
+ container.find('.js-toggle-button').trigger('click');
+ anchor.scrollIntoView();
+ }
+ });
+})(window);