mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-13 11:50:56 +00:00
[UBER-129] Fix scroll after collapsing a list header (#3330)
Signed-off-by: Ruslan Bayandinov <wazsone@ya.ru>
This commit is contained in:
parent
d7400dc03a
commit
10f033ba41
@ -453,6 +453,14 @@
|
||||
? 'visible'
|
||||
: 'hidden'
|
||||
let scrollY: number = 0
|
||||
|
||||
let safariScrollJumpfix: boolean = true
|
||||
export const enableSafariScrollJumpFix = (enable: boolean): void => {
|
||||
if (enable) {
|
||||
scrollY = divScroll?.scrollTop ?? 0
|
||||
}
|
||||
safariScrollJumpfix = enable
|
||||
}
|
||||
</script>
|
||||
|
||||
<svelte:window on:resize={_resize} />
|
||||
@ -476,13 +484,13 @@
|
||||
}}
|
||||
class="scroll relative flex-shrink"
|
||||
style:overflow-x={horizontal ? 'auto' : 'hidden'}
|
||||
on:scroll={(evt) => {
|
||||
on:scroll={() => {
|
||||
if ($tooltipstore.label !== undefined) closeTooltip()
|
||||
const newPos = divScroll?.scrollTop ?? 0
|
||||
|
||||
// TODO: Workaround: https://front.hc.engineering/workbench/platform/tracker/TSK-760
|
||||
// In Safari scroll could jump on click, with no particular reason.
|
||||
|
||||
if (safariScrollJumpfix) {
|
||||
const newPos = divScroll?.scrollTop ?? 0
|
||||
if (
|
||||
!scrolling &&
|
||||
!isScrolling &&
|
||||
@ -494,6 +502,7 @@
|
||||
divScroll.scrollTop = scrollY
|
||||
}
|
||||
scrollY = divScroll?.scrollTop ?? 0
|
||||
}
|
||||
}}
|
||||
>
|
||||
<div
|
||||
|
@ -148,6 +148,7 @@
|
||||
on:select-prev={(evt) => {
|
||||
select(-2, evt.detail)
|
||||
}}
|
||||
on:collapsed
|
||||
/>
|
||||
</div>
|
||||
|
||||
|
@ -319,6 +319,7 @@
|
||||
index: e.detail.index + getInitIndex(categories, i)
|
||||
})
|
||||
}}
|
||||
on:collapsed
|
||||
{flatHeaders}
|
||||
{disableHeader}
|
||||
{props}
|
||||
|
@ -390,6 +390,7 @@
|
||||
$focusStore = { provider: $focusStore.provider }
|
||||
}
|
||||
}
|
||||
dispatch('collapsed', { div })
|
||||
}
|
||||
localStorage.setItem(categoryCollapseKey, collapsed ? 'true' : 'false')
|
||||
}}
|
||||
@ -460,11 +461,6 @@
|
||||
</div>
|
||||
|
||||
<style lang="scss">
|
||||
.expandCollapse {
|
||||
overflow: hidden;
|
||||
transition: height 0.3s ease-out;
|
||||
height: auto;
|
||||
}
|
||||
.zero-container {
|
||||
border-radius: 0.25rem;
|
||||
|
||||
|
@ -198,7 +198,6 @@
|
||||
|
||||
<style lang="scss">
|
||||
.categoryHeader {
|
||||
position: relative;
|
||||
position: sticky;
|
||||
top: 0;
|
||||
padding: 0 2.5rem 0 0.75rem;
|
||||
|
@ -21,6 +21,7 @@
|
||||
export let props: Record<string, any> = {}
|
||||
|
||||
let list: List
|
||||
let scroll: Scroller
|
||||
|
||||
const listProvider = new ListSelectionProvider((offset: 1 | -1 | 0, of?: Doc, dir?: SelectDirection) => {
|
||||
if (dir === 'vertical') {
|
||||
@ -42,6 +43,7 @@
|
||||
|
||||
<div class="w-full h-full py-4 clear-mins">
|
||||
<Scroller
|
||||
bind:this={scroll}
|
||||
fade={{ multipler: { top: 2.75 * viewOptions.groupBy.length, bottom: 0 } }}
|
||||
padding={'0 1rem'}
|
||||
noFade
|
||||
@ -67,8 +69,13 @@
|
||||
on:check={(event) => {
|
||||
listProvider.updateSelection(event.detail.docs, event.detail.value)
|
||||
}}
|
||||
on:content={(evt) => {
|
||||
listProvider.update(evt.detail)
|
||||
on:content={(event) => {
|
||||
listProvider.update(event.detail)
|
||||
}}
|
||||
on:collapsed={(event) => {
|
||||
scroll.enableSafariScrollJumpFix(false)
|
||||
event.detail.div.scrollIntoView(true)
|
||||
scroll.enableSafariScrollJumpFix(true)
|
||||
}}
|
||||
/>
|
||||
</Scroller>
|
||||
|
Loading…
Reference in New Issue
Block a user