Display errors

This commit is contained in:
Adria Navarro 2025-02-03 11:05:14 +01:00
parent 6d98424323
commit 4d732dd142
3 changed files with 48 additions and 7 deletions

View File

@ -1,6 +1,10 @@
<script lang="ts">
import { screenComponentErrorList } from "@/stores/builder"
import { ActionButton, Popover } from "@budibase/bbui"
import {
componentStore,
screenComponentErrorList,
screenComponents,
} from "@/stores/builder"
import { ActionButton, Icon, Popover } from "@budibase/bbui"
let button: any
let popover: any
@ -11,4 +15,35 @@
>Errors ({$screenComponentErrorList.length})</ActionButton
>
</div>
<Popover bind:this={popover} anchor={button} align={"right"}>TODO</Popover>
<Popover bind:this={popover} open anchor={button} align={"right"}>
<div class="errors">
{#each $screenComponentErrorList as error}
<div class="error">
<Icon
name="Alert"
color="var(--spectrum-global-color-static-red-600)"
/>
<div>
{$screenComponents[error.componentId]._instanceName}:
{error.message}
</div>
</div>
{/each}
</div>
</Popover>
<style>
.errors {
display: flex;
flex-direction: column;
}
.error {
display: inline-flex;
flex-direction: row;
padding: var(--spacing-l);
gap: var(--spacing-s);
}
.error:not(:last-child) {
border-bottom: 1px solid var(--spectrum-global-color-gray-300);
}
</style>

View File

@ -450,7 +450,7 @@ export class ComponentStore extends BudiStore<ComponentState> {
}
const componentName = getSequentialName(
get(screenComponents),
Object.values(get(screenComponents)),
`New ${definition.friendlyName || definition.name}`,
{
getName: c => c._instanceName,

View File

@ -286,10 +286,16 @@ export const screenComponentErrorList = derived(
export const screenComponents = derived(
[selectedScreen],
([$selectedScreen]) => {
([$selectedScreen]): Record<string, Component> => {
if (!$selectedScreen) {
return []
return {}
}
return findAllComponents($selectedScreen.props) as Component[]
return findAllComponents($selectedScreen.props).reduce<
Record<string, Component>
>((obj, component) => {
obj[component._id] = component
return obj
}, {})
}
)