minor UX improvements

This commit is contained in:
Ruben Fiszel
2023-11-05 11:18:18 +01:00
parent aceb4476c5
commit 4269f9467f
6 changed files with 73 additions and 32 deletions
@@ -31,6 +31,7 @@
}
</script>
<h3 class="mb-4">Add new user to instance</h3>
<div class="flex flex-row flex-wrap gap-2 mb-2 items-end">
<label class="block shrink min-w-0">
<span class="text-secondary text-sm">Email</span>
@@ -44,6 +44,8 @@
}
let tab: 'users' | 'settings' = 'users'
let nbDisplayed = 50
</script>
<SearchItems
@@ -75,6 +77,8 @@
<div class="py-2 mb-4">
<InviteGlobalUser on:new={listUsers} />
</div>
<h3>All instance users</h3>
<div class="pb-1" />
<div>
<input placeholder="Search users" bind:value={filter} class="input mt-1" />
@@ -90,7 +94,7 @@
</tr>
<tbody slot="body" class="overflow-y-auto w-full h-full max-h-full">
{#if filteredUsers && users}
{#each filteredUsers as { email, super_admin, login_type, name } (email)}
{#each filteredUsers.slice(0, nbDisplayed) as { email, super_admin, login_type, name } (email)}
<tr class="border">
<td>{email}</td>
<td>{login_type}</td>
@@ -136,6 +140,13 @@
</tbody>
</TableCustom>
</div>
{#if filteredUsers && filteredUsers?.length > 50 && nbDisplayed < filteredUsers.length}
<span class="text-xs"
>{nbDisplayed} users out of {filteredUsers.length}
<button class="ml-4" on:click={() => (nbDisplayed += 50)}>load 50 more</button
></span
>
{/if}
</div>
</TabContent>
<TabContent value="settings">
@@ -387,30 +387,12 @@
{/each}
{:else if filteredItems.length === 0}
<NoItemFound />
{:else}
{:else if treeView}
{@const groupedItems = groupItems(items)}
<div class="border rounded-md">
{#if treeView}
{#each (groupItems(items) ?? []).slice(0, nbDisplayed) as item (item['folderName'] ?? 'user__' + item['username'])}
{#if item}
<TreeView
{item}
on:scriptChanged={loadScripts}
on:flowChanged={loadFlows}
on:appChanged={loadApps}
on:rawAppChanged={loadRawApps}
on:reload={() => {
loadScripts()
loadFlows()
loadApps()
loadRawApps()
}}
{showCode}
/>
{/if}
{/each}
{:else}
{#each (items ?? []).slice(0, nbDisplayed) as item (item.type + '/' + item.path)}
<Item
{#each groupedItems.slice(0, nbDisplayed) as item (item['folderName'] ?? 'user__' + item['username'])}
{#if item}
<TreeView
{item}
on:scriptChanged={loadScripts}
on:flowChanged={loadFlows}
@@ -424,10 +406,35 @@
}}
{showCode}
/>
{/each}
{/if}
{/if}
{/each}
</div>
{#if items && items?.length > 30 && !treeView && nbDisplayed < items.length}
{#if groupedItems.length > 30 && nbDisplayed < groupedItems.length}
<span class="text-xs"
>{nbDisplayed} root nodes out of {groupedItems.length}
<button class="ml-4" on:click={() => (nbDisplayed += 30)}>load 30 more</button></span
>
{/if}
{:else}
<div class="border rounded-md">
{#each (items ?? []).slice(0, nbDisplayed) as item (item.type + '/' + item.path)}
<Item
{item}
on:scriptChanged={loadScripts}
on:flowChanged={loadFlows}
on:appChanged={loadApps}
on:rawAppChanged={loadRawApps}
on:reload={() => {
loadScripts()
loadFlows()
loadApps()
loadRawApps()
}}
{showCode}
/>
{/each}
</div>
{#if items && items?.length > 30 && nbDisplayed < items.length}
<span class="text-xs"
>{nbDisplayed} items out of {items.length}
<button class="ml-4" on:click={() => (nbDisplayed += 30)}>load 30 more</button></span
@@ -59,7 +59,7 @@
</div>
{#if opened}
<div transition:slide>
{#each item.items.slice(0, showMax) as subItem (subItem['path'] ?? 'folder__' + subItem['folderName'])}
{#each item.items.slice(0, showMax) as subItem ((subItem['path'] ? subItem['type'] + '__' + subItem['path'] : undefined) ?? 'folder__' + subItem['folderName'])}
<svelte:self
item={subItem}
on:scriptChanged
@@ -71,6 +71,8 @@
/>
{/each}
{#if showMax < item.items.length}
<!-- svelte-ignore a11y-click-events-have-key-events -->
<!-- svelte-ignore a11y-no-static-element-interactions -->
<div
class="text-center text-sm text-secondary cursor-pointer hover:text-primary"
on:click={() => {
@@ -117,7 +119,7 @@
</div>
{#if opened}
<div transition:slide>
{#each item.items.slice(0, showMax) as subItem (subItem['path'] ?? 'folder__' + subItem['folderName'])}
{#each item.items.slice(0, showMax) as subItem ((subItem['path'] ? subItem['type'] + '__' + subItem['path'] : undefined) ?? 'folder__' + subItem['folderName'])}
<svelte:self
item={subItem}
on:scriptChanged
@@ -78,6 +78,8 @@
)
)
}
let nbInviteDisplayed = 50
</script>
<SearchItems
@@ -273,7 +275,7 @@
</Head>
<tbody class="divide-y bg-surface">
{#if invites?.length > 0}
{#each invites as { email, is_admin, operator }}
{#each invites.slice(0, nbInviteDisplayed) as { email, is_admin, operator }}
<Row>
<Cell first>{email}</Cell>
<Cell>
@@ -314,6 +316,12 @@
{/if}
</tbody>
</DataTable>
{#if invites && invites?.length > 50 && nbInviteDisplayed < invites.length}
<span class="text-xs"
>{nbInviteDisplayed} invites out of {invites.length}
<button class="ml-4" on:click={() => (nbInviteDisplayed += 50)}>load 50 more</button></span
>
{/if}
</div>
<PageHeader
@@ -26,12 +26,13 @@
import { sendUserToast } from '$lib/toast'
import { setQueryWithoutLoad, emptyString } from '$lib/utils'
import { faSlack } from '@fortawesome/free-brands-svg-icons'
import { faBarsStaggered, faScroll } from '@fortawesome/free-solid-svg-icons'
import { faBarsStaggered, faCrown, faScroll } from '@fortawesome/free-solid-svg-icons'
import { Slack } from 'lucide-svelte'
import PremiumInfo from '$lib/components/settings/PremiumInfo.svelte'
import Toggle from '$lib/components/Toggle.svelte'
import TestOpenaiKey from '$lib/components/copilot/TestOpenaiKey.svelte'
import { Icon } from 'svelte-awesome'
const slackErrorHandler = 'hub/5792/workspace-or-schedule-error-handler-slack'
@@ -209,7 +210,18 @@
<CenteredPage>
{#if $userStore?.is_admin || $superadmin}
<PageHeader title="Workspace settings: {$workspaceStore}" />
<PageHeader title="Workspace settings: {$workspaceStore}"
>{#if $superadmin}
<Button
variant="border"
color="dark"
size="sm"
on:click={() => goto('#superadmin-settings')}
>
Superadmin settings
</Button>
{/if}</PageHeader
>
<div class="overflow-x-auto scrollbar-hidden">
<Tabs