Commit f2c0f823 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge branch '22851-keep-scroll-location-when-collapsing-sidebar' into 'master'

Fix page scrolling to top on sidebar toggle

## What does this MR do?

Prevents page from scrolling to the top when a user clicks sidebar closing hamburger icon as well as when a user is toggling sidebar pinning.

## Why was this MR needed?

When a user is closing the sidebar or pinning the sidebar the scroll position of the page should not be affected.

## Does this MR meet the acceptance criteria?

- [x] [CHANGELOG](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CHANGELOG) entry added
- Tests
  - [x] All builds are passing
- [x] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [x] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [x] Branch has no merge conflicts with `master` (if you do - rebase it please)
- [x] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?
Closes #22851

See merge request !6627
parents 81ee4436 cdf44d9f
......@@ -12,6 +12,7 @@ v 8.13.0 (unreleased)
- Avoid database queries on Banzai::ReferenceParser::BaseParser for nodes without references
- Fix permission for setting an issue's due date
- Expose expires_at field when sharing project on API
- Fix issue with page scrolling to top when closing or pinning sidebar (lukehowell)
- Allow the Koding integration to be configured through the API
- Added soft wrap button to repository file/blob editor
- Add word-wrap to issue title on issue and milestone boards (ClemMakesApps)
......
......@@ -34,8 +34,8 @@
$(pageSelector).hasClass(expandedPageClass)
);
$(document)
.on('click', sidebarToggleSelector, () => this.toggleSidebar())
.on('click', pinnedToggleSelector, () => this.togglePinnedState())
.on('click', sidebarToggleSelector, (e) => this.toggleSidebar(e))
.on('click', pinnedToggleSelector, (e) => this.togglePinnedState(e))
.on('click', 'html, body', (e) => this.handleClickEvent(e))
.on('page:change', () => this.renderState());
this.renderState();
......@@ -47,17 +47,19 @@
const targetIsToggle = $target.closest(sidebarToggleSelector).length > 0;
const targetIsSidebar = $target.closest(sidebarWrapperSelector).length > 0;
if (!targetIsToggle && (!targetIsSidebar || $target.closest('a'))) {
this.toggleSidebar();
this.toggleSidebar(e);
}
}
}
toggleSidebar() {
toggleSidebar(e) {
e.preventDefault();
this.isExpanded = !this.isExpanded;
this.renderState();
}
togglePinnedState() {
togglePinnedState(e) {
e.preventDefault();
this.isPinned = !this.isPinned;
if (!this.isPinned) {
this.isExpanded = false;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment