forked from tsai/budibase
8 changed files with 70 additions and 92 deletions
@ -1,42 +1,10 @@ |
|||
<!-- Module scoped cache of saved role options --> |
|||
<script context="module"> |
|||
import builderApi from "builderStore/api" |
|||
|
|||
let cachedRoles |
|||
|
|||
async function getRoles(force = false) { |
|||
if (cachedRoles && !force) { |
|||
return await cachedRoles |
|||
} |
|||
cachedRoles = new Promise(resolve => { |
|||
builderApi |
|||
.get("/api/roles") |
|||
.then(response => response.json()) |
|||
.then(resolve) |
|||
}) |
|||
return await cachedRoles |
|||
} |
|||
</script> |
|||
|
|||
<script> |
|||
export let roleId |
|||
|
|||
let roleName |
|||
$: getRole() |
|||
import { backendUiStore } from "builderStore" |
|||
|
|||
async function getRole() { |
|||
// Try to find a matching role |
|||
let roles = await getRoles() |
|||
let role = roles.find(role => role._id === roleId) |
|||
export let roleId |
|||
|
|||
// If we didn't find a matching role, try updating the cached results |
|||
if (!role) { |
|||
let roles = await getRoles(true) |
|||
let role = roles.find(role => role._id === roleId) |
|||
} |
|||
role = roles.find(role => role._id === roleId) |
|||
roleName = role?.name ?? "Unknown role" |
|||
} |
|||
$: role = $backendUiStore.roles.find(role => role._id === roleId) |
|||
$: roleName = role?.name ?? "Unknown role" |
|||
</script> |
|||
|
|||
<div>{roleName}</div> |
|||
|
|||
@ -0,0 +1,15 @@ |
|||
<script> |
|||
import { Select } from "@budibase/bbui" |
|||
import { backendUiStore } from "builderStore" |
|||
|
|||
export let value |
|||
|
|||
let roles = [] |
|||
</script> |
|||
|
|||
<Select bind:value extraThin secondary on:change> |
|||
<option value="">Choose an option</option> |
|||
{#each $backendUiStore.roles as role} |
|||
<option value={role._id}>{role.name}</option> |
|||
{/each} |
|||
</Select> |
|||
Loading…
Reference in new issue