diff --git a/packages/builder/src/builderStore/store/index.js b/packages/builder/src/builderStore/store/index.js
index 9f91550bca..80fc9eb8f3 100644
--- a/packages/builder/src/builderStore/store/index.js
+++ b/packages/builder/src/builderStore/store/index.js
@@ -1,4 +1,5 @@
import { values } from "lodash/fp"
+import { get_capitalised_name } from "../../helpers"
import { backendUiStore } from "builderStore"
import * as backendStoreActions from "./backend"
import { writable, get } from "svelte/store"
@@ -153,7 +154,6 @@ const createScreen = store => (screenName, route, layoutComponentName) => {
const rootComponent = state.components[layoutComponentName]
const newScreen = {
- name: screenName || "",
description: "",
url: "",
_css: "",
@@ -161,6 +161,7 @@ const createScreen = store => (screenName, route, layoutComponentName) => {
}
newScreen.route = route
+ newScreen.props._instanceName = screenName || ""
state.currentPreviewItem = newScreen
state.currentComponentInfo = newScreen.props
state.currentFrontEndType = "screen"
@@ -336,12 +337,14 @@ const addChildComponent = store => (componentToAdd, presetName) => {
const presetProps = presetName ? component.presets[presetName] : {}
const instanceId = get(backendUiStore).selectedDatabase._id
+ const instanceName = get_capitalised_name(componentToAdd)
const newComponent = createProps(
component,
{
...presetProps,
_instanceId: instanceId,
+ _instanceName: instanceName,
},
state
)
diff --git a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte
index 7d33b9c963..2716cb751b 100644
--- a/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte
+++ b/packages/builder/src/components/userInterface/ComponentPropertiesPanel.svelte
@@ -66,6 +66,8 @@
const onStyleChanged = store.setComponentStyle
const onPropChanged = store.setComponentProp
+ $: displayName = $store.currentFrontEndType === "screen" && componentInstance._instanceName
+
function walkProps(component, action) {
action(component)
if (component.children) {
@@ -99,6 +101,12 @@
{categories}
{selectedCategory} />
+ {#if displayName}
+
+ {componentInstance._instanceName}
+
+ {/if}
+
{#if selectedCategory.value === 'design'}
@@ -107,6 +115,7 @@
{componentInstance}
{componentDefinition}
{panelDefinition}
+ displayNameField={displayName}
onChange={onPropChanged} />
{:else if selectedCategory.value === 'events'}
@@ -137,9 +146,14 @@
}
.component-props-container {
- margin-top: 20px;
+ margin-top: 10px;
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
}
+
+ .instance-name {
+ margin-top: 10px;
+ font-size: 12px;
+ }
diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte
index 041377aedc..69edfe53da 100644
--- a/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte
+++ b/packages/builder/src/components/userInterface/ComponentsHierarchy.svelte
@@ -22,48 +22,35 @@
trimChars(" "),
])
- const lastPartOfName = c => {
- if (!c) return ""
- const name = c.name ? c.name : c._component ? c._component : c
- return last(name.split("/"))
- }
-
- const isComponentSelected = (current, comp) => current === comp
-
- $: _screens = pipe(screens, [
- map(c => ({ component: c, title: lastPartOfName(c) })),
- sortBy("title"),
- ])
-
const changeScreen = screen => {
- store.setCurrentScreen(screen.title)
+ store.setCurrentScreen(screen.props._instanceName)
$goto(`./:page/${screen.title}`)
}
- {#each _screens as screen}
+ {#each screens as screen}
changeScreen(screen)}>
- {#if screen.component.props._children.length}
+ class:rotate={$store.currentPreviewItem.name !== screen.props._instanceName}>
+ {#if screen.props._children.length}
{/if}
-
{screen.title}
+
{screen.props._instanceName}
- {#if $store.currentPreviewItem.name === screen.title && screen.component.props._children}
+ {#if $store.currentPreviewItem.props._instanceName && $store.currentPreviewItem.props._instanceName === screen.props._instanceName && screen.props._children}
{/if}
{/each}
diff --git a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte
index 43473a85a3..67d8cc096a 100644
--- a/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte
+++ b/packages/builder/src/components/userInterface/ComponentsHierarchyChildren.svelte
@@ -42,7 +42,7 @@
style="padding-left: {level * 20 + 53}px">
- {get_capitalised_name(component._component)}
+ {component._instanceName}
diff --git a/packages/builder/src/components/userInterface/SettingsView.svelte b/packages/builder/src/components/userInterface/SettingsView.svelte
index 99e704d1d9..bde6ce2455 100644
--- a/packages/builder/src/components/userInterface/SettingsView.svelte
+++ b/packages/builder/src/components/userInterface/SettingsView.svelte
@@ -1,6 +1,7 @@
+{#if displayNameField}
+
+{/if}
+
{#if panelDefinition && panelDefinition.length > 0}
{#each panelDefinition as definition}
{#if propExistsOnComponentDef(definition.key)}
diff --git a/packages/builder/src/components/userInterface/pagesParsing/searchComponents.js b/packages/builder/src/components/userInterface/pagesParsing/searchComponents.js
index 8269f3521b..b4c6c1fee2 100644
--- a/packages/builder/src/components/userInterface/pagesParsing/searchComponents.js
+++ b/packages/builder/src/components/userInterface/pagesParsing/searchComponents.js
@@ -30,8 +30,9 @@ export const searchAllComponents = (components, phrase) => {
export const getExactComponent = (components, name) => {
const stringEquals = (s1, s2) => normalString(s1) === normalString(s2)
-
- return pipe(components, [find(c => stringEquals(c.name, name))])
+ return pipe(components, [
+ find(c => stringEquals(c.props._instanceName, name)),
+ ])
}
export const getAncestorProps = (components, name, found = []) => {
diff --git a/packages/builder/src/helpers.js b/packages/builder/src/helpers.js
index 5d9ff750af..3ea37e5a67 100644
--- a/packages/builder/src/helpers.js
+++ b/packages/builder/src/helpers.js
@@ -1,3 +1,6 @@
+import { last } from "lodash/fp"
+import { pipe } from "components/common/core"
+
export const buildStyle = styles => {
let str = ""
for (let s in styles) {
@@ -12,3 +15,9 @@ export const buildStyle = styles => {
export const convertCamel = str => {
return str.replace(/[A-Z]/g, match => `-${match.toLowerCase()}`)
}
+
+export const capitalise = s => s.substring(0, 1).toUpperCase() + s.substring(1)
+
+export const get_name = s => (!s ? "" : last(s.split("/")))
+
+export const get_capitalised_name = name => pipe(name, [get_name, capitalise])