diff --git a/packages/bbui/src/Form/Core/Combobox.svelte b/packages/bbui/src/Form/Core/Combobox.svelte index e2e2792f54..38cc3ec091 100644 --- a/packages/bbui/src/Form/Core/Combobox.svelte +++ b/packages/bbui/src/Form/Core/Combobox.svelte @@ -11,6 +11,7 @@ import { createEventDispatcher } from "svelte" import clickOutside from "../../Actions/click_outside" import Popover from "../../Popover/Popover.svelte" + import { PopoverAlignment } from "../../constants" export let value: string | undefined = undefined export let id: string | undefined = undefined @@ -97,11 +98,16 @@ (open = false)} useAnchorWidth > -
(open = false)}> +
{ + open = false + }} + >
    {#if options && Array.isArray(options)} {#each options as option} diff --git a/packages/bbui/src/Form/Core/Picker.svelte b/packages/bbui/src/Form/Core/Picker.svelte index 88866196a7..8541858923 100644 --- a/packages/bbui/src/Form/Core/Picker.svelte +++ b/packages/bbui/src/Form/Core/Picker.svelte @@ -1,4 +1,9 @@ - + + + +
    diff --git a/packages/bbui/src/Form/Input.svelte b/packages/bbui/src/Form/Input.svelte index 47962720af..b1a8669135 100644 --- a/packages/bbui/src/Form/Input.svelte +++ b/packages/bbui/src/Form/Input.svelte @@ -1,24 +1,24 @@ - + + diff --git a/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte b/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte index aec23f6ccc..8957fa9a77 100644 --- a/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte +++ b/packages/builder/src/components/common/bindings/DrawerBindableInput.svelte @@ -1,4 +1,4 @@ - diff --git a/packages/builder/src/components/design/settings/controls/PropertyControl.svelte b/packages/builder/src/components/design/settings/controls/PropertyControl.svelte index 65b3ed9395..fa337e085b 100644 --- a/packages/builder/src/components/design/settings/controls/PropertyControl.svelte +++ b/packages/builder/src/components/design/settings/controls/PropertyControl.svelte @@ -5,7 +5,6 @@ runtimeToReadableBinding, } from "@/dataBinding" import { builderStore } from "@/stores/builder" - import { onDestroy } from "svelte" export let label = "" export let labelHidden = false @@ -32,7 +31,7 @@ $: safeValue = getSafeValue(value, defaultValue, allBindings) $: replaceBindings = val => readableToRuntimeBinding(allBindings, val) - $: if (!Array.isArray(value)) { + $: if (value) { highlightType = highlightedProp?.key === key ? `highlighted-${highlightedProp?.type}` : "" } @@ -75,12 +74,6 @@ ? defaultValue : enriched } - - onDestroy(() => { - if (highlightedProp) { - builderStore.highlightSetting(null) - } - })
    { * Returns an array of the keys of any state variables which are set anywhere * in the app. */ -export const getAllStateVariables = () => { - // Find all button action settings in all components +export const getAllStateVariables = screen => { + let assets = [] + if (screen) { + // only include state variables from a specific screen + assets.push(screen) + } else { + // otherwise include state variables from all screens + assets = getAllAssets() + } let eventSettings = [] - getAllAssets().forEach(asset => { + assets.forEach(asset => { findAllMatchingComponents(asset.props, component => { const settings = componentStore.getComponentSettings(component._component) const nestedTypes = [ @@ -1214,11 +1221,17 @@ export const getAllStateVariables = () => { }) // Add on load settings from screens - get(screenStore).screens.forEach(screen => { + if (screen) { if (screen.onLoad) { eventSettings.push(screen.onLoad) } - }) + } else { + get(screenStore).screens.forEach(screen => { + if (screen.onLoad) { + eventSettings.push(screen.onLoad) + } + }) + } // Extract all state keys from any "update state" actions in each setting let bindingSet = new Set() diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ComponentSettingsPanel.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ComponentSettingsPanel.svelte index 30f11e6cab..fcd0ddaafc 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ComponentSettingsPanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ComponentSettingsPanel.svelte @@ -16,6 +16,7 @@ } from "@/dataBinding" import { ActionButton, notifications } from "@budibase/bbui" import { capitalise } from "@/helpers" + import { builderStore } from "@/stores/builder" import TourWrap from "@/components/portal/onboarding/TourWrap.svelte" import { TOUR_STEP_KEYS } from "@/components/portal/onboarding/tours.js" @@ -55,6 +56,17 @@ $: id = $selectedComponent?._id $: id, (section = tabs[0]) $: componentName = getComponentName(componentInstance) + + $: highlightedSetting = $builderStore.highlightedSetting + $: if (highlightedSetting) { + if (highlightedSetting.key === "_conditions") { + section = "conditions" + } else if (highlightedSetting.key === "_styles") { + section = "styles" + } else if (highlightedSetting.key === "_settings") { + section = "settings" + } + } {#if $selectedComponent} diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ConditionalUISection.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ConditionalUISection.svelte index b40a6af3c6..965aee33f4 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ConditionalUISection.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/ConditionalUISection.svelte @@ -9,6 +9,7 @@ import { componentStore } from "@/stores/builder" import ConditionalUIDrawer from "./ConditionalUIDrawer.svelte" import ComponentSettingsSection from "./ComponentSettingsSection.svelte" + import { builderStore } from "@/stores/builder" export let componentInstance export let componentDefinition @@ -18,6 +19,8 @@ let tempValue let drawer + $: highlighted = $builderStore.highlightedSetting?.key === "_conditions" + const openDrawer = () => { tempValue = JSON.parse(JSON.stringify(componentInstance?._conditions ?? [])) drawer.show() @@ -52,7 +55,9 @@ /> - {conditionText} +
    + {conditionText} +
    @@ -61,3 +66,17 @@ + + diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/CustomStylesSection.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/CustomStylesSection.svelte index 30e448774b..7879a606a7 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/CustomStylesSection.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/[componentId]/_components/Component/CustomStylesSection.svelte @@ -16,6 +16,7 @@ readableToRuntimeBinding, runtimeToReadableBinding, } from "@/dataBinding" + import { builderStore } from "@/stores/builder" export let componentInstance export let componentDefinition @@ -32,6 +33,8 @@ $: icon = componentDefinition?.icon + $: highlighted = $builderStore.highlightedSetting?.key === "_styles" + const openDrawer = () => { tempValue = runtimeToReadableBinding( bindings, @@ -55,7 +58,7 @@ name={`Custom CSS${componentInstance?._styles?.custom ? " *" : ""}`} collapsible={false} > -
    +
    Edit custom CSS
    @@ -97,4 +100,16 @@ align-items: center; gap: var(--spacing-m); } + + .highlighted { + background: var(--spectrum-global-color-gray-300); + border-left: 4px solid var(--spectrum-semantic-informative-color-background); + transition: background 130ms ease-out, border-color 130ms ease-out; + margin-top: -3.5px; + margin-bottom: -3.5px; + padding-bottom: 3.5px; + padding-top: 3.5px; + padding-left: 5px; + padding-right: 5px; + } diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/LeftPanel.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/LeftPanel.svelte index 1ffefbaa32..ba08804a3f 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/LeftPanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/LeftPanel.svelte @@ -3,6 +3,7 @@ import ComponentList from "./ComponentList/index.svelte" import { getHorizontalResizeActions } from "@/components/common/resizable" import { ActionButton } from "@budibase/bbui" + import StatePanel from "./StatePanel.svelte" import BindingsPanel from "./BindingsPanel.svelte" import ComponentKeyHandler from "./ComponentKeyHandler.svelte" @@ -36,7 +37,7 @@ {:else if activeTab === Tabs.Bindings} {:else if activeTab === Tabs.State} -
    State
    +
    {/if}
    diff --git a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/StatePanel.svelte b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/StatePanel.svelte index b9cd2002d0..af0903276e 100644 --- a/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/StatePanel.svelte +++ b/packages/builder/src/pages/builder/app/[application]/design/[screenId]/_components/StatePanel.svelte @@ -1,13 +1,342 @@ - -State +
    +