From 9b6c8c74f3698728446a2c5935510c67861ba02c Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 3 Feb 2025 10:32:56 +0100 Subject: [PATCH 01/34] Add error button --- .../design/[screenId]/_components/AppPanel.svelte | 11 ++++++++++- packages/builder/src/stores/builder/index.js | 2 ++ .../builder/src/stores/builder/screenComponent.ts | 14 ++++++++++++++ packages/types/src/ui/components/errors.ts | 1 + 4 files changed, 27 insertions(+), 1 deletion(-) diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte index b04cd8b956..98a3f129a2 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte @@ -1,8 +1,13 @@
@@ -15,6 +20,10 @@ {#if $appStore.clientFeatures.devicePreview} {/if} + + {}} + >Errors ({$screenComponentErrorList.length})
diff --git a/packages/builder/src/stores/builder/index.js b/packages/builder/src/stores/builder/index.js index c6dc631e5c..5856a394e0 100644 --- a/packages/builder/src/stores/builder/index.js +++ b/packages/builder/src/stores/builder/index.js @@ -20,6 +20,7 @@ import { screenComponents, screenComponentErrors, findComponentsBySettingsType, + screenComponentErrorList, } from "./screenComponent" // Backend @@ -75,6 +76,7 @@ export { screenComponents, screenComponentErrors, findComponentsBySettingsType, + screenComponentErrorList, } export const reset = () => { diff --git a/packages/builder/src/stores/builder/screenComponent.ts b/packages/builder/src/stores/builder/screenComponent.ts index 62bc97cc27..0ee64501f0 100644 --- a/packages/builder/src/stores/builder/screenComponent.ts +++ b/packages/builder/src/stores/builder/screenComponent.ts @@ -115,6 +115,7 @@ function getInvalidDatasources( const friendlyTypeName = friendlyNameByType[type] ?? type result[component._id!] = [ { + componentId: component._id!, key: setting.key, message: `The ${friendlyTypeName} named "${label}" could not be found`, errorType: "setting", @@ -174,6 +175,7 @@ function getMissingRequiredSettings( if (missingRequiredSettings?.length) { result[component._id!] = missingRequiredSettings.map((s: any) => ({ + componentId: component._id!, key: s.key, message: `Add the ${s.label} setting to start using your component`, errorType: "setting", @@ -214,6 +216,7 @@ function getMissingAncestors( result[component._id!] = missingAncestors.map(ancestor => { const ancestorDefinition = definitions[`${BudibasePrefix}${ancestor}`] return { + componentId: component._id!, message: `${pluralise(definition.name)} need to be inside a ${ancestorDefinition.name}`, errorType: "ancestor-setting", @@ -270,6 +273,17 @@ export function findComponentsBySettingsType( return result } +export const screenComponentErrorList = derived( + [screenComponentErrors], + ([$screenComponentErrors]): UIComponentError[] => { + if (!featureFlag.isEnabled("CHECK_COMPONENT_SETTINGS_ERRORS")) { + return [] + } + + return Object.values($screenComponentErrors).flatMap(errors => errors) + } +) + export const screenComponents = derived( [selectedScreen], ([$selectedScreen]) => { diff --git a/packages/types/src/ui/components/errors.ts b/packages/types/src/ui/components/errors.ts index 9725ed8a33..58c36c7248 100644 --- a/packages/types/src/ui/components/errors.ts +++ b/packages/types/src/ui/components/errors.ts @@ -1,4 +1,5 @@ interface BaseUIComponentError { + componentId: string message: string } From 6d984243230e02a10bd15fbeb710fd8847345b63 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 3 Feb 2025 10:47:50 +0100 Subject: [PATCH 02/34] Show popover --- .../design/[screenId]/_components/AppPanel.svelte | 12 +++--------- .../_components/ScreenErrorsButton.svelte | 14 ++++++++++++++ 2 files changed, 17 insertions(+), 9 deletions(-) create mode 100644 packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte index 98a3f129a2..120d9eeeeb 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/AppPanel.svelte @@ -1,13 +1,9 @@
@@ -21,9 +17,7 @@ {/if} - {}} - >Errors ({$screenComponentErrorList.length}) +
diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte new file mode 100644 index 0000000000..8fd23d47c8 --- /dev/null +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte @@ -0,0 +1,14 @@ + + +
+ popover.show()} + >Errors ({$screenComponentErrorList.length}) +
+TODO From 4d732dd142563d1d35366c2f7ae3f5d1eecc83f5 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 3 Feb 2025 11:05:14 +0100 Subject: [PATCH 03/34] Display errors --- .../_components/ScreenErrorsButton.svelte | 41 +++++++++++++++++-- .../builder/src/stores/builder/components.ts | 2 +- .../src/stores/builder/screenComponent.ts | 12 ++++-- 3 files changed, 48 insertions(+), 7 deletions(-) diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte index 8fd23d47c8..3766c2794c 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte @@ -1,6 +1,10 @@
- popover.show()} - >Errors ({$screenComponentErrorList.length}) + popover.show()}> +
+ Errors + {#if $screenComponentErrorList.length} +
+ {$screenComponentErrorList.length} +
+ {/if} +
+
- +
{#each $screenComponentErrorList as error}
@@ -24,8 +27,11 @@ color="var(--spectrum-global-color-static-red-600)" />
- {$screenComponents[error.componentId]._instanceName}: - {error.message} + + {$screenComponents[error.componentId]._instanceName}: + + + {@html error.message}
{/each} @@ -33,6 +39,21 @@ From 7b0a8165ea325ef4a0ae4adb02ab854fe3d13560 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 3 Feb 2025 12:36:46 +0100 Subject: [PATCH 05/34] Styling --- .../_components/ScreenErrorsButton.svelte | 31 ++++++++++++------- 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte index 8bd8220a1a..95dd3cf85f 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte @@ -6,12 +6,12 @@ let popover: any -
+
popover.show()}> -
+
Errors {#if $screenComponentErrorList.length} -
+
{$screenComponentErrorList.length}
{/if} @@ -19,7 +19,7 @@
-
+
{#each $screenComponentErrorList as error}
From a31eeef87b00c160ff28245eeac16cad6538a33a Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 4 Feb 2025 16:25:43 +0100 Subject: [PATCH 26/34] Fix scrolling --- .../components/design/settings/controls/PropertyControl.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/components/design/settings/controls/PropertyControl.svelte b/packages/builder/src/components/design/settings/controls/PropertyControl.svelte index c8a1f94402..8ba32c47cf 100644 --- a/packages/builder/src/components/design/settings/controls/PropertyControl.svelte +++ b/packages/builder/src/components/design/settings/controls/PropertyControl.svelte @@ -82,7 +82,7 @@ }) } - $: isHighlighted && scrollToElement(domElement) + $: highlightedProp && isHighlighted && scrollToElement(domElement)
Date: Tue, 4 Feb 2025 16:34:54 +0100 Subject: [PATCH 27/34] Fix gaps --- .../design/[screenId]/_components/ScreenErrorsButton.svelte | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte index cf89a21415..f97d0ec062 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte @@ -108,7 +108,7 @@ .error-popover .error { display: inline-flex; flex-direction: row; - padding: var(--spacing-xl) var(--spacing-m); + padding: var(--spacing-m); gap: var(--spacing-s); align-items: start; } From 47a014789f01b3d3aad00195c70b7fcd1e6cf345 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 5 Feb 2025 10:23:07 +0100 Subject: [PATCH 28/34] Change the errors button to an icon --- packages/bbui/src/Divider/Divider.svelte | 4 +- .../[screenId]/_components/AppPanel.svelte | 5 ++- .../_components/ScreenErrorsButton.svelte | 37 +------------------ 3 files changed, 6 insertions(+), 40 deletions(-) diff --git a/packages/bbui/src/Divider/Divider.svelte b/packages/bbui/src/Divider/Divider.svelte index f6837ca97c..5373b1fa16 100644 --- a/packages/bbui/src/Divider/Divider.svelte +++ b/packages/bbui/src/Divider/Divider.svelte @@ -1,7 +1,7 @@ -
@@ -16,7 +17,7 @@ {#if $appStore.clientFeatures.devicePreview} {/if} - +
@@ -65,7 +66,7 @@ flex-direction: row; justify-content: flex-start; align-items: center; - gap: var(--spacing-xl); + gap: var(--spacing-l); } .content { flex: 1 1 auto; diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte index f97d0ec062..85f6aaf13d 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/ScreenErrorsButton.svelte @@ -37,16 +37,7 @@
- popover.show()} size="M"> -
- Errors - {#if $screenComponentErrorList.length} -
- {$screenComponentErrorList.length} -
- {/if} -
-
+ popover.show()} size="M" icon="Alert" />