Skip to content
Snippets Groups Projects
  1. Jan 22, 2024
  2. Jan 18, 2024
  3. Jan 17, 2024
  4. Jan 08, 2024
  5. Jan 02, 2024
  6. Dec 18, 2023
    • Tomas Bulva's avatar
      Fix Advanced search dropdowns · fffa1320
      Tomas Bulva authored
      Group and project filter dropdowns
      scrolling issues. Are in part due
      to style leaking. And in part due
      to fluid width of content.
      
      Changelog: fixed
      fffa1320
  7. Dec 11, 2023
    • Scott de Jonge's avatar
      Add active colors to super sidebar interactive items · 6802210b
      Scott de Jonge authored
      Rename `counter` class `user-bar-button` shared with "Search or go to"
      Rename `user-bar-item` class `user-bar-dropdown-toggle` for clarity
      Add `$t-white-a-*` SCSS variables
      Make `$t-gray-a-` values static and remove `_dark.scss` overrides
      Refactor super sidebar styles with new custom properties for `:active`
      states, remove `mix-blend-mode` usage, add `.gl-dark` custom property
      values using `$t-white-a-*` values
      Update `nav-item` and `menu-section` to use CSS custom properties for
      `:hover`/`:focus` and now `:active` states
      Remove `gl-bg-t-gray-a-08` override class on `GlBadge` in `nav-item`
      
      Changelog: other
      Verified
      6802210b
  8. Nov 29, 2023
  9. Nov 24, 2023
  10. Nov 21, 2023
  11. Sep 14, 2023
  12. Sep 12, 2023
  13. Aug 31, 2023
  14. Aug 15, 2023
  15. Jul 24, 2023
  16. Jul 14, 2023
  17. Jul 10, 2023
  18. Jul 08, 2023
  19. May 11, 2023
    • Scott de Jonge's avatar
      Skip to main content interactive when super sidebar is inert · e7a13517
      Scott de Jonge authored and Coung Ngo's avatar Coung Ngo committed
      Move "Skip to main content" link outside of becoming `inert` in
      `<aside class="super-sidebar">`
      Update styles to `gl-fixed` and required positioning, margin, & width
      Move `.super-sidebar-skip-to` styles before `.super-sidebar` to reflect
      element order on the DOM
      Create `$super-sidebar-skip-to-z-index` variable
      
      Changelog: fixed
      e7a13517
  20. May 10, 2023
  21. May 09, 2023
  22. May 03, 2023
    • Mark Florian's avatar
      Only draw border and shadow when visible · 5a22f2d5
      Mark Florian authored
      Verified
      5a22f2d5
    • Mark Florian's avatar
      Rename transition CSS variables · 3e32829b
      Mark Florian authored
      Prefix variables with `$super-sidebar-` to be consistent with
      `$super-sidebar-width`/`$super-sidebar-z-index` and reduce confusion
      with existing `$sidebar-` prefixed variables.
      Verified
      3e32829b
    • Mark Florian's avatar
      Reimplement peek behaviour · e1acd66f
      Mark Florian authored
      This reimplements the sidebar peek behaviour that was originally added
      in !116914.
      
      This implementation uses a document-wide `mousemove` listener, whereas
      the previous implementation relied on the `mouseenter/leave` events
      fired on the sidebar element itself and a small hover area.
      
      The old approach
      ----------------
      
      The main problem with the previous implementation was that sometimes the
      sidebar would oscillate between peeked open and closed if the cursor
      was stationary.
      
      This was sometimes easy to reproduce, and sometimes hard. The reason
      comes down to a race between the JavaScript timer and the CSS transition
      duration.
      
      The [UI Events specification][spec] says of the `mouseenter` event:
      
      [spec]: https://w3c.github.io/uievents/#event-type-mouseenter
      
      > A user agent MUST also dispatch this event when the element or one of
      > its descendants moves to be underneath the primary pointing device.
      
      It turns out that browsers do not obey this as you might expect on
      elements that are undergoing transitions under a stationary cursor (I
      suspect this applies to animations as well). Presumably this is for
      performance reasons.
      
      What they actually do in this case is dispatch the event approximately
      *after* the transition has ended. Each browser does this slightly
      differently in my testing, and none of them seem deterministic in
      exactly when the event is dispatched.
      
      This means that, if the sidebar's opening transition is cancelled before
      it is complete (e.g., the sidebar instead starts its closing transition)
      the `mouseenter` does not get dispatched even if the transition did move
      the element underneath the stationary cursor.
      
      If the cursor is moving at the same time as the transitioning element,
      the event is dispatched as expected on the first frame the cursor enters
      it.
      
      So, the race was between the opening sidebar transition and the closing
      timer. If the transition ended early enough, the `mouseenter` event
      would be dispatched, and the bug wouldn't happen. If the cursor moved
      during the transition and was over the transitioning sidebar, the
      `mouseenter` event would be dispatched, as expected.
      
      The bug occurred only when the cursor was stationary, and the opening
      transition took too long, causing it to be cancelled by the closing
      transition, meaning no `mouseenter` event was dispatched to keep the
      sidebar open.
      
      The new approach
      ----------------
      
      The approach taken here is to rely on a document-wide `mousemove`
      listener. This has two benefits:
      
      - The bug with the previous approach is avoided since no DOM is involved
        in determining where the cursor is.
      - Additional regions are trivial to add, for instance, moving the cursor
        far enough away instantly closes the sidebar, rather than having to
        wait for the closing timer. It is possible to other regions, for
        instance, one which shows a hint or affordance of the peek behaviour,
        but does not start the timer to open the sidebar (this is not
        implemented here, but is trivial to do so).
      
      It does have one drawback, which is that it's not coupled to the DOM.
      This means that if the sidebar changes width, or has some descendant
      that overflows the sidebar, the sidebar might get closed even though the
      cursor is over it. This could be avoided in a few ways, but isn't done
      here.
      
      This also formalises and extracts the peek state machine logic into its
      own Vue component. This means that the document event listener is
      guaranteed to be added and cleaned up when switching between toggled
      open/closed states. The timers are also encapsulated within that
      component, and the whole thing can be more thoroughly tested in
      isolation.
      Verified
      e1acd66f
  23. May 02, 2023
  24. Apr 26, 2023
  25. Apr 24, 2023
  26. Apr 23, 2023
  27. Apr 19, 2023
    • Scott de Jonge's avatar
      Super sidebar peek on viewport edge hover · 47b48351
      Scott de Jonge authored and Jannik Lehmann's avatar Jannik Lehmann committed
      Create `super_sidebar_peek` feature flag
      Remove `gl-visibility-hidden` class from super sidebar collapsed state
      Add hover area which toggles `isPeek` state on `mouseover`
      Decrease transition to `100ms` when peeking
      Replace super sidebar `border-right` with `box-shadow` when peeking
      Add `hasCollapseButton` prop to `<user-bar>` to hide when peeking
      Use `prefers-reduced-motion: no-preference` for transitions
      Add `100ms` delay to `isPeek` to compensate for unintentional triggers
      Move `SUPER_SIDEBAR_PEEK_DELAY` to `constants.js`
      Add `setTimeoutSpy` to tests, restore `createWrapper` on test
      47b48351
  28. Apr 18, 2023
    • Scott de Jonge's avatar
      Update breadcrumbs to be full width and fixed for super sidebar · 4693a16e
      Scott de Jonge authored and Simon Knox's avatar Simon Knox committed
      Remove custom styles to absolute position super-sidebar-toggle
      Remove `gl-relative` wrapping class for breadcrumbs
      Add `breadcrumbs_class` and `breadcrumbs_container_class` variables
      Update existing sticky headers to compensate for breadcrumbs height
      Add `--breadcrumbs-height` to be added with `.with-breadcrumbs`
      conditional class
      Add `--breadcrumbs-height` to `$calc-application-header-height` variable
      Update `.layout-page` and `.boards-sidebar` with height variables
      4693a16e
  29. Apr 14, 2023
  30. Apr 06, 2023
  31. Apr 03, 2023
Loading