87 lines
1.6 KiB
Svelte
87 lines
1.6 KiB
Svelte
<script>
|
|
import { onMount } from "svelte"
|
|
import { store, backendUiStore } from "../builderStore"
|
|
import api from "../builderStore/api"
|
|
import getIcon from "../common/icon"
|
|
import { CheckIcon } from "../common/Icons"
|
|
|
|
const getPage = (s, name) => {
|
|
const props = s.pages[name]
|
|
return { name, props }
|
|
}
|
|
|
|
let users = []
|
|
|
|
$: currentAppInfo = {
|
|
appname: $store.appname,
|
|
instanceId: $backendUiStore.selectedDatabase.id,
|
|
}
|
|
|
|
async function fetchUsers() {
|
|
const FETCH_USERS_URL = `/_builder/instance/${currentAppInfo.appname}/${currentAppInfo.instanceId}/api/users`
|
|
const response = await api.get(FETCH_USERS_URL)
|
|
users = await response.json()
|
|
backendUiStore.update(state => {
|
|
state.users = users
|
|
return state
|
|
})
|
|
}
|
|
|
|
onMount(fetchUsers)
|
|
</script>
|
|
|
|
<div class="root">
|
|
<ul>
|
|
{#each users as user}
|
|
<li>
|
|
<i class="ri-user-4-line" />
|
|
<button class:active={user.id === $store.currentUserId}>
|
|
{user.name}
|
|
</button>
|
|
</li>
|
|
{/each}
|
|
</ul>
|
|
</div>
|
|
|
|
<style>
|
|
.root {
|
|
padding-bottom: 10px;
|
|
font-size: 0.9rem;
|
|
color: var(--secondary50);
|
|
font-weight: bold;
|
|
position: relative;
|
|
padding-left: 1.8rem;
|
|
}
|
|
|
|
ul {
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
li {
|
|
margin: 0.5rem 0;
|
|
}
|
|
|
|
button {
|
|
margin: 0 0 0 6px;
|
|
padding: 0;
|
|
border: none;
|
|
font-family: Roboto;
|
|
font-size: 0.8rem;
|
|
outline: none;
|
|
cursor: pointer;
|
|
background: rgba(0, 0, 0, 0);
|
|
}
|
|
|
|
.active {
|
|
font-weight: 500;
|
|
}
|
|
|
|
.icon {
|
|
display: inline-block;
|
|
width: 14px;
|
|
color: #333;
|
|
}
|
|
</style>
|