diff --git a/packages/bbui/src/ActionButton/ActionButton.svelte b/packages/bbui/src/ActionButton/ActionButton.svelte index b518ac3d92..2b4d1076c2 100644 --- a/packages/bbui/src/ActionButton/ActionButton.svelte +++ b/packages/bbui/src/ActionButton/ActionButton.svelte @@ -80,4 +80,7 @@ .active svg { color: var(--spectrum-global-color-blue-600); } + :global([dir="ltr"] .spectrum-ActionButton .spectrum-Icon) { + margin-left: 0; + } diff --git a/packages/builder/src/components/design/settings/componentSettings.js b/packages/builder/src/components/design/settings/componentSettings.js index 7f504c4ea8..56ae3de490 100644 --- a/packages/builder/src/components/design/settings/componentSettings.js +++ b/packages/builder/src/components/design/settings/componentSettings.js @@ -18,6 +18,7 @@ import FormFieldSelect from "./controls/FormFieldSelect.svelte" import ValidationEditor from "./controls/ValidationEditor/ValidationEditor.svelte" import DrawerBindableCombobox from "components/common/bindings/DrawerBindableCombobox.svelte" import ColumnEditor from "./controls/ColumnEditor/ColumnEditor.svelte" +import BarButtonList from "./controls/BarButtonList.svelte" const componentMap = { text: DrawerBindableCombobox, @@ -61,6 +62,16 @@ const componentMap = { "validation/link": ValidationEditor, } -export const getComponentForSettingType = type => { +export const getComponentForSetting = setting => { + const { type, showInBar, barStyle } = setting || {} + if (!type) { + return null + } + + // We can show a clone of the bar settings for certain select settings + if (showInBar && type === "select" && barStyle === "buttons") { + return BarButtonList + } + return componentMap[type] } diff --git a/packages/builder/src/components/design/settings/controls/BarButtonList.svelte b/packages/builder/src/components/design/settings/controls/BarButtonList.svelte new file mode 100644 index 0000000000..01f198c5ec --- /dev/null +++ b/packages/builder/src/components/design/settings/controls/BarButtonList.svelte @@ -0,0 +1,17 @@ + + + + {#each options as option} + onChange(option.value)} + /> + {/each} + diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ComponentSettingsSection.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ComponentSettingsSection.svelte index 2e04401b0a..60b0b1b5df 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ComponentSettingsSection.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ComponentSettingsSection.svelte @@ -6,7 +6,7 @@ import LayoutSelect from "components/design/settings/controls/LayoutSelect.svelte" import RoleSelect from "components/design/settings/controls/RoleSelect.svelte" import ResetFieldsButton from "components/design/settings/controls/ResetFieldsButton.svelte" - import { getComponentForSettingType } from "components/design/settings/componentSettings" + import { getComponentForSetting } from "components/design/settings/componentSettings" import { Utils } from "@budibase/frontend-core" export let componentDefinition @@ -51,7 +51,7 @@ }) const canRenderControl = setting => { - const control = getComponentForSettingType(setting?.type) + const control = getComponentForSetting(setting) if (!control) { return false } @@ -104,7 +104,7 @@ {#if canRenderControl(setting)} updateProp(setting.key, val)} props={{ - options: setting.options || [], + // Generic settings placeholder: setting.placeholder || null, + + // Select settings + options: setting.options || [], + + // Number fields min: setting.min || null, max: setting.max || null, }} diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ConditionalUIDrawer.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ConditionalUIDrawer.svelte index 2605343c45..b40b33744f 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ConditionalUIDrawer.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/components/[componentId]/_components/settings/ConditionalUIDrawer.svelte @@ -14,7 +14,7 @@ import DrawerBindableInput from "components/common/bindings/DrawerBindableInput.svelte" import { LuceneUtils, Constants } from "@budibase/frontend-core" import { selectedComponent } from "builderStore" - import { getComponentForSettingType } from "components/design/settings/componentSettings" + import { getComponentForSetting } from "components/design/settings/componentSettings" import PropertyControl from "components/design/settings/controls/PropertyControl.svelte" import { getComponentSettings } from "builderStore/componentUtils" @@ -71,11 +71,6 @@ return settings.find(setting => setting.key === key) } - const getComponentForSetting = key => { - const settingDefinition = getSettingDefinition(key) - return getComponentForSettingType(settingDefinition?.type || "text") - } - const addCondition = () => { conditions = [ ...conditions, @@ -154,6 +149,7 @@ on:consider={updateConditions} > {#each conditions as condition (condition.id)} + {@const definition = getSettingDefinition(condition.setting)}
TO
- {#if getSettingDefinition(condition.setting)} + {#if definition} (condition.settingValue = val)} props={{ - options: getSettingDefinition(condition.setting).options, - placeholder: getSettingDefinition(condition.setting) - .placeholder, + options: definition.options, + placeholder: definition.placeholder, }} {bindings} />