diff --git a/src/ui/src/builder/BuilderSelect.vue b/src/ui/src/builder/BuilderSelect.vue
index 1c273b26..9f29c898 100644
--- a/src/ui/src/builder/BuilderSelect.vue
+++ b/src/ui/src/builder/BuilderSelect.vue
@@ -65,7 +65,7 @@ const { floatingStyles, update: updateFloatingStyle } = useFloating(
dropdown,
{
placement: "bottom",
- middleware: [autoPlacement()],
+ middleware: [autoPlacement({ allowedPlacements: ["bottom", "top"] })],
},
);
@@ -131,6 +131,11 @@ function onSelect(value: string) {
cursor: pointer;
}
+.BuilderSelect__trigger:focus {
+ border: 1px solid var(--softenedAccentColor);
+ box-shadow: 0px 0px 0px 3px rgba(81, 31, 255, 0.05);
+ outline: none;
+}
.BuilderSelect__trigger__label {
text-overflow: ellipsis;
overflow: hidden;
diff --git a/src/ui/src/builder/settings/BuilderSettingsHandlers.vue b/src/ui/src/builder/settings/BuilderSettingsHandlers.vue
index 5a363339..d93c3d43 100644
--- a/src/ui/src/builder/settings/BuilderSettingsHandlers.vue
+++ b/src/ui/src/builder/settings/BuilderSettingsHandlers.vue
@@ -31,6 +31,9 @@
+
+ addAdd custom handler
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+ addAdd
+
+
@@ -116,6 +114,7 @@ import BuilderSelect from "../BuilderSelect.vue";
import type { Option } from "../BuilderSelect.vue";
import WdsFieldWrapper from "@/wds/WdsFieldWrapper.vue";
import WdsTextInput from "@/wds/WdsTextInput.vue";
+import WdsButton from "@/wds/WdsButton.vue";
const wf = inject(injectionKeys.core);
const ssbm = inject(injectionKeys.builderManager);
@@ -343,10 +342,6 @@ const copyToClipboard = (text: string) => {
gap: 24px;
}
-.customHandler {
- margin-top: 24px;
-}
-
.addHandler .fields {
display: flex;
gap: 16px;
diff --git a/src/ui/src/builder/settings/BuilderSettingsProperties.vue b/src/ui/src/builder/settings/BuilderSettingsProperties.vue
index c0415f41..b760fac0 100644
--- a/src/ui/src/builder/settings/BuilderSettingsProperties.vue
+++ b/src/ui/src/builder/settings/BuilderSettingsProperties.vue
@@ -144,11 +144,13 @@ const fields = computed(() => {
return definition.fields;
});
-const fieldCategories = [
- FieldCategory.General,
- FieldCategory.Style,
- FieldCategory.Tools,
-];
+const fieldCategories = computed(() => {
+ return [
+ FieldCategory.General,
+ FieldCategory.Style,
+ FieldCategory.Tools,
+ ].filter((c) => fieldsByCategory.value[c]?.length);
+});
const fieldsByCategory = computed(() => {
const entries = Object.entries(fields.value);
diff --git a/src/ui/src/wds/WdsDropdownMenu.vue b/src/ui/src/wds/WdsDropdownMenu.vue
index 04d893e7..96ce9446 100644
--- a/src/ui/src/wds/WdsDropdownMenu.vue
+++ b/src/ui/src/wds/WdsDropdownMenu.vue
@@ -1,15 +1,17 @@