Sub issues list fixes (#1997)

Signed-off-by: Sergei Ogorelkov <sergei.ogorelkov@xored.com>
This commit is contained in:
Sergei Ogorelkov 2022-06-03 11:11:45 +07:00 committed by GitHub
parent b6a0366c0b
commit 885ceadc86
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 22 additions and 32 deletions

View File

@ -15,25 +15,20 @@
<script lang="ts"> <script lang="ts">
import { quintOut } from 'svelte/easing' import { quintOut } from 'svelte/easing'
import { tweened } from 'svelte/motion' import { tweened } from 'svelte/motion'
import { syncHeight } from '../utils'
export let isExpanded = false export let isExpanded = false
export let duration = 200 export let duration = 200
export let easing: (t: number) => number = quintOut export let easing: (t: number) => number = quintOut
const tweenedHeight = tweened(0, { const tweenedHeight = tweened(0, { duration: duration, easing })
duration: duration,
easing
})
let element: HTMLDivElement let height = 0
$: height = syncHeight(element) $: tweenedHeight.set(isExpanded ? height : 0, { duration, easing })
$: tweenedHeight.set(isExpanded ? $height : 0, { duration, easing })
</script> </script>
<div class="root" style="height: {$tweenedHeight}px"> <div class="root" style="height: {$tweenedHeight}px">
<div bind:this={element}> <div bind:offsetHeight={height}>
<slot /> <slot />
</div> </div>
</div> </div>

View File

@ -16,7 +16,6 @@
// import type { Metadata } from '@anticrm/platform' // import type { Metadata } from '@anticrm/platform'
import type { Metadata } from '@anticrm/platform' import type { Metadata } from '@anticrm/platform'
import { setMetadata } from '@anticrm/platform' import { setMetadata } from '@anticrm/platform'
import { Writable, writable } from 'svelte/store'
export function setMetadataLocalStorage (id: Metadata<string>, value: string | null): void { export function setMetadataLocalStorage (id: Metadata<string>, value: string | null): void {
if (value != null) { if (value != null) {
@ -34,14 +33,3 @@ export function fetchMetadataLocalStorage (id: Metadata<string>): string | null
} }
return value return value
} }
export function syncHeight (element: HTMLElement | undefined): Writable<number> {
return writable(0, (set) => {
if (element != null) {
const observer = new ResizeObserver(() => set(element.offsetHeight))
observer.observe(element)
return () => observer.disconnect()
}
})
}

View File

@ -65,7 +65,8 @@
<div <div
class="flex-between row" class="flex-between row"
class:is-dragging={index === draggingIndex} class:is-dragging={index === draggingIndex}
class:is-dragged-over={index === hoveringIndex} class:is-dragged-over-up={draggingIndex !== null && index < draggingIndex && index === hoveringIndex}
class:is-dragged-over-down={draggingIndex !== null && index > draggingIndex && index === hoveringIndex}
animate:flip={{ duration: 400 }} animate:flip={{ duration: 400 }}
draggable={true} draggable={true}
on:click|self={() => openIssue(issue)} on:click|self={() => openIssue(issue)}
@ -125,17 +126,24 @@
} }
} }
&.is-dragging { &.is-dragging::before {
&::before { position: absolute;
position: absolute; content: '';
content: ''; background-color: var(--theme-bg-color);
color: var(--theme-bg-color); opacity: 0.4;
opacity: 0.4; inset: 0;
inset: 0;
}
} }
&.is-dragged-over { &.is-dragged-over-up::before {
position: absolute;
content: '';
inset: 0;
border-top: 1px solid var(--theme-bg-check);
}
&.is-dragged-over-down::before {
position: absolute;
content: '';
inset: 0;
border-bottom: 1px solid var(--theme-bg-check); border-bottom: 1px solid var(--theme-bg-check);
} }
} }

View File

@ -35,7 +35,6 @@
async function handleIssueSwap (ev: CustomEvent<{ fromIndex: number; toIndex: number }>) { async function handleIssueSwap (ev: CustomEvent<{ fromIndex: number; toIndex: number }>) {
if (subIssues) { if (subIssues) {
const { fromIndex, toIndex } = ev.detail const { fromIndex, toIndex } = ev.detail
console.log('index', fromIndex, toIndex)
const [prev, next] = [ const [prev, next] = [
subIssues[fromIndex < toIndex ? toIndex : toIndex - 1], subIssues[fromIndex < toIndex ? toIndex : toIndex - 1],
subIssues[fromIndex < toIndex ? toIndex + 1 : toIndex] subIssues[fromIndex < toIndex ? toIndex + 1 : toIndex]