mirror of
https://github.com/hcengineering/platform.git
synced 2025-04-20 23:32:14 +00:00
TSK-507: Assignee box Direction line is hidden to early (#2485)
Signed-off-by: Denis Maslennikov <denis.maslennikov@gmail.com>
This commit is contained in:
parent
673eec8110
commit
27bdd26d06
@ -87,11 +87,11 @@
|
|||||||
$: showCategories =
|
$: showCategories =
|
||||||
objects.map((it) => (it as any)[groupBy]).filter((it, index, arr) => arr.indexOf(it) === index).length > 1
|
objects.map((it) => (it as any)[groupBy]).filter((it, index, arr) => arr.indexOf(it) === index).length > 1
|
||||||
|
|
||||||
const checkSelected = (person: Doc, objects: Doc[]): void => {
|
const checkSelected = (item: Doc): void => {
|
||||||
if (selectedElements.has(person._id)) {
|
if (selectedElements.has(item._id)) {
|
||||||
selectedElements.delete(person._id)
|
selectedElements.delete(item._id)
|
||||||
} else {
|
} else {
|
||||||
selectedElements.add(person._id)
|
selectedElements.add(item._id)
|
||||||
}
|
}
|
||||||
|
|
||||||
selectedObjects = Array.from(selectedElements)
|
selectedObjects = Array.from(selectedElements)
|
||||||
@ -105,17 +105,17 @@
|
|||||||
let list: ListView
|
let list: ListView
|
||||||
|
|
||||||
async function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): Promise<void> {
|
async function handleSelection (evt: Event | undefined, objects: Doc[], selection: number): Promise<void> {
|
||||||
const person = objects[selection]
|
const item = objects[selection]
|
||||||
|
|
||||||
if (!multiSelect) {
|
if (!multiSelect) {
|
||||||
if (allowDeselect) {
|
if (allowDeselect) {
|
||||||
selected = person._id === selected ? undefined : person._id
|
selected = item._id === selected ? undefined : item._id
|
||||||
} else {
|
} else {
|
||||||
selected = person._id
|
selected = item._id
|
||||||
}
|
}
|
||||||
dispatch(closeAfterSelect ? 'close' : 'update', selected !== undefined ? person : undefined)
|
dispatch(closeAfterSelect ? 'close' : 'update', selected !== undefined ? item : undefined)
|
||||||
} else {
|
} else {
|
||||||
checkSelected(person, objects)
|
checkSelected(item)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -222,7 +222,7 @@
|
|||||||
{#if cHeight === 1}
|
{#if cHeight === 1}
|
||||||
<div class="background-theme-content-accent" style:height={'2px'} />
|
<div class="background-theme-content-accent" style:height={'2px'} />
|
||||||
{/if}
|
{/if}
|
||||||
<div class="scroll" on:scroll={() => updateLocation(scrollDiv, selectedDiv)} bind:this={scrollDiv}>
|
<div class="scroll" on:scroll={() => updateLocation(scrollDiv, selectedDiv, objects, selected)} bind:this={scrollDiv}>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<ListView bind:this={list} count={objects.length} bind:selection>
|
<ListView bind:this={list} count={objects.length} bind:selection>
|
||||||
<svelte:fragment slot="category" let:item>
|
<svelte:fragment slot="category" let:item>
|
||||||
|
@ -85,6 +85,35 @@
|
|||||||
$: filteredObjects = value.filter((el) => (el.label ?? el.text ?? '').toLowerCase().includes(search.toLowerCase()))
|
$: filteredObjects = value.filter((el) => (el.label ?? el.text ?? '').toLowerCase().includes(search.toLowerCase()))
|
||||||
|
|
||||||
$: huge = size === 'medium' || size === 'large'
|
$: huge = size === 'medium' || size === 'large'
|
||||||
|
|
||||||
|
let selectedDiv: HTMLElement | undefined
|
||||||
|
let scrollDiv: HTMLElement | undefined
|
||||||
|
let cHeight = 0
|
||||||
|
|
||||||
|
const updateLocation = (scrollDiv?: HTMLElement, selectedDiv?: HTMLElement, objects?: ValueType[]) => {
|
||||||
|
const objIt = objects?.find((it) => it.isSelected)
|
||||||
|
if (objIt === undefined) {
|
||||||
|
cHeight = 0
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if (scrollDiv && selectedDiv) {
|
||||||
|
const r = selectedDiv.getBoundingClientRect()
|
||||||
|
const r2 = scrollDiv.getBoundingClientRect()
|
||||||
|
if (r && r2) {
|
||||||
|
if (r.top > r2.top && r.bottom < r2.bottom) {
|
||||||
|
cHeight = 0
|
||||||
|
} else {
|
||||||
|
if (r.bottom < r2.bottom) {
|
||||||
|
cHeight = 1
|
||||||
|
} else {
|
||||||
|
cHeight = -1
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$: updateLocation(scrollDiv, selectedDiv, filteredObjects)
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<FocusHandler {manager} />
|
<FocusHandler {manager} />
|
||||||
@ -111,7 +140,10 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
<div class="scroll">
|
{#if cHeight === 1}
|
||||||
|
<div class="background-theme-content-accent" style:height={'2px'} />
|
||||||
|
{/if}
|
||||||
|
<div class="scroll" on:scroll={() => updateLocation(scrollDiv, selectedDiv, filteredObjects)} bind:this={scrollDiv}>
|
||||||
<div class="box">
|
<div class="box">
|
||||||
<ListView
|
<ListView
|
||||||
bind:this={list}
|
bind:this={list}
|
||||||
@ -131,7 +163,9 @@
|
|||||||
{#if hasSelected}
|
{#if hasSelected}
|
||||||
<div class="icon">
|
<div class="icon">
|
||||||
{#if item.isSelected}
|
{#if item.isSelected}
|
||||||
|
<div bind:this={selectedDiv}>
|
||||||
<Icon icon={IconCheck} {size} />
|
<Icon icon={IconCheck} {size} />
|
||||||
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
{/if}
|
{/if}
|
||||||
@ -170,4 +204,7 @@
|
|||||||
</ListView>
|
</ListView>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
{#if cHeight === -1}
|
||||||
|
<div class="background-theme-content-accent" style:height={'2px'} />
|
||||||
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
|
@ -75,11 +75,12 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
const projectsInfo = [
|
const projectsInfo = [
|
||||||
{ id: null, icon: tracker.icon.Projects, label: tracker.string.NoProject },
|
{ id: null, icon: tracker.icon.Projects, label: tracker.string.NoProject, isSelected: !selectedProject },
|
||||||
...rawProjects.map((p) => ({
|
...rawProjects.map((p) => ({
|
||||||
id: p._id,
|
id: p._id,
|
||||||
icon: p.icon,
|
icon: p.icon,
|
||||||
text: p.label
|
text: p.label,
|
||||||
|
isSelected: selectedProject ? p._id === selectedProject._id : false
|
||||||
}))
|
}))
|
||||||
]
|
]
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user