Improve sorting
This commit is contained in:
parent
dd24d7d9ee
commit
6f20c3dff8
|
@ -163,8 +163,20 @@
|
||||||
>
|
>
|
||||||
Use as display column
|
Use as display column
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
<MenuItem icon="SortOrderUp" on:click={sortAscending}>Sort A-Z</MenuItem>
|
<MenuItem
|
||||||
<MenuItem icon="SortOrderDown" on:click={sortDescending}>Sort Z-A</MenuItem>
|
icon="SortOrderUp"
|
||||||
|
on:click={sortAscending}
|
||||||
|
disabled={column.name === $sort.column && $sort.order === "ascending"}
|
||||||
|
>
|
||||||
|
Sort A-Z
|
||||||
|
</MenuItem>
|
||||||
|
<MenuItem
|
||||||
|
icon="SortOrderDown"
|
||||||
|
on:click={sortDescending}
|
||||||
|
disabled={column.name === $sort.column && $sort.order === "descending"}
|
||||||
|
>
|
||||||
|
Sort Z-A
|
||||||
|
</MenuItem>
|
||||||
<MenuItem
|
<MenuItem
|
||||||
disabled={!canMoveLeft}
|
disabled={!canMoveLeft}
|
||||||
icon="ChevronDoubleLeft"
|
icon="ChevronDoubleLeft"
|
||||||
|
|
|
@ -76,7 +76,7 @@
|
||||||
<Popover bind:open {anchor} align="left">
|
<Popover bind:open {anchor} align="left">
|
||||||
<div class="content">
|
<div class="content">
|
||||||
<Select
|
<Select
|
||||||
placeholder="Default"
|
placeholder={null}
|
||||||
value={$sort.column}
|
value={$sort.column}
|
||||||
options={columnOptions}
|
options={columnOptions}
|
||||||
autoWidth
|
autoWidth
|
||||||
|
|
|
@ -192,7 +192,7 @@
|
||||||
border-bottom: 2px solid var(--spectrum-global-color-gray-200);
|
border-bottom: 2px solid var(--spectrum-global-color-gray-200);
|
||||||
padding: var(--cell-padding);
|
padding: var(--cell-padding);
|
||||||
gap: var(--cell-spacing);
|
gap: var(--cell-spacing);
|
||||||
background: var(--spectrum-global-color-gray-100);
|
background: var(--background);
|
||||||
}
|
}
|
||||||
.controls-left,
|
.controls-left,
|
||||||
.controls-right {
|
.controls-right {
|
||||||
|
|
|
@ -88,7 +88,6 @@ export const deriveStores = context => {
|
||||||
instanceLoaded.set(false)
|
instanceLoaded.set(false)
|
||||||
|
|
||||||
// Reset state
|
// Reset state
|
||||||
sort.set(initialSortState)
|
|
||||||
filter.set([])
|
filter.set([])
|
||||||
|
|
||||||
// Create new fetch model
|
// Create new fetch model
|
||||||
|
@ -110,19 +109,25 @@ export const deriveStores = context => {
|
||||||
// Subscribe to changes of this fetch model
|
// Subscribe to changes of this fetch model
|
||||||
unsubscribe = newFetch.subscribe($fetch => {
|
unsubscribe = newFetch.subscribe($fetch => {
|
||||||
if ($fetch.loaded && !$fetch.loading) {
|
if ($fetch.loaded && !$fetch.loading) {
|
||||||
|
const $instanceLoaded = get(instanceLoaded)
|
||||||
const resetRows = $fetch.resetKey !== lastResetKey
|
const resetRows = $fetch.resetKey !== lastResetKey
|
||||||
lastResetKey = $fetch.resetKey
|
lastResetKey = $fetch.resetKey
|
||||||
|
|
||||||
// Reset scroll state when data changes
|
// Reset state properties when dataset changes
|
||||||
if (!get(instanceLoaded)) {
|
if (!$instanceLoaded || resetRows) {
|
||||||
table.set($fetch.definition)
|
table.set($fetch.definition)
|
||||||
|
sort.set({
|
||||||
|
column: $fetch.sortColumn,
|
||||||
|
order: $fetch.sortOrder,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Reset scroll state when data changes
|
||||||
|
if (!$instanceLoaded) {
|
||||||
// Reset both top and left for a new table ID
|
// Reset both top and left for a new table ID
|
||||||
instanceLoaded.set(true)
|
instanceLoaded.set(true)
|
||||||
scroll.set({ top: 0, left: 0 })
|
scroll.set({ top: 0, left: 0 })
|
||||||
} else if (resetRows) {
|
} else if (resetRows) {
|
||||||
table.set($fetch.definition)
|
|
||||||
|
|
||||||
// Only reset top scroll position when resetting rows
|
// Only reset top scroll position when resetting rows
|
||||||
scroll.update(state => ({ ...state, top: 0 }))
|
scroll.update(state => ({ ...state, top: 0 }))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue