1
0
Fork 0
mirror of synced 2024-07-07 15:25:52 +12:00

Refactored naming logic into common area in the event that there is no title.

This commit is contained in:
Dean 2023-10-20 09:44:42 +01:00
parent 41e5bba533
commit 3e9104a4d1
5 changed files with 68 additions and 24 deletions

View file

@ -5,6 +5,7 @@ import {
encodeJSBinding,
findHBSBlocks,
} from "@budibase/string-templates"
import { capitalise } from "helpers"
/**
* Recursively searches for a specific component ID
@ -235,3 +236,13 @@ export const makeComponentUnique = component => {
// Recurse on all children
return JSON.parse(definition)
}
export const getComponentText = component => {
if (component?._instanceName) {
return component._instanceName
}
const type =
component._component.replace("@budibase/standard-components/", "") ||
"component"
return capitalise(type)
}

View file

@ -16,6 +16,7 @@
export let closeButtonIcon = "Close"
$: customHeaderContent = $$slots["panel-header-content"]
$: customTitleContent = $$slots["panel-title-content"]
</script>
<div
@ -33,7 +34,11 @@
<Icon name={icon} />
{/if}
<div class="title">
<Body size="S">{title}</Body>
{#if customTitleContent}
<slot name="panel-title-content" />
{:else}
<Body size="S">{title || ""}</Body>
{/if}
</div>
{#if showAddButton}
<div class="add-button" on:click={onClickAddButton}>
@ -134,4 +139,7 @@
.custom-content-wrap {
border-bottom: var(--border-light);
}
.title {
display: flex;
}
</style>

View file

@ -1,6 +1,7 @@
<script>
import Panel from "components/design/Panel.svelte"
import { store, selectedComponent, selectedScreen } from "builderStore"
import { getComponentText } from "builderStore/componentUtils"
import ComponentSettingsSection from "./ComponentSettingsSection.svelte"
import DesignSection from "./DesignSection.svelte"
import CustomStylesSection from "./CustomStylesSection.svelte"
@ -13,6 +14,14 @@
import { ActionButton } from "@budibase/bbui"
import { capitalise } from "helpers"
const onUpdateName = async value => {
try {
await store.actions.components.updateSetting("_instanceName", value)
} catch (error) {
notifications.error("Error updating component name")
}
}
$: componentInstance = $selectedComponent
$: componentDefinition = store.actions.components.getDefinition(
$selectedComponent?._component
@ -39,6 +48,20 @@
{#if $selectedComponent}
{#key $selectedComponent._id}
<Panel {title} icon={componentDefinition?.icon} borderLeft wide>
<span class="panel-title-content" slot="panel-title-content">
<input
class="input"
value={title}
{title}
placeholder={getComponentText(componentInstance)}
on:change={e => {
onUpdateName(e.target.value)
if (e.target === document.activeElement) {
e.target.blur()
}
}}
/>
</span>
<span slot="panel-header-content">
<div class="settings-tabs">
{#each tabs as tab}
@ -90,4 +113,24 @@
padding: 0 var(--spacing-l);
padding-bottom: var(--spacing-l);
}
.input {
color: inherit;
font-family: inherit;
font-size: inherit;
background-color: transparent;
border: none;
flex: 1;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.panel-title-content {
display: contents;
}
.input:focus {
outline: none;
}
input::placeholder {
color: var(--spectrum-global-color-gray-600);
}
</style>

View file

@ -1,6 +1,6 @@
<script>
import { isEmpty } from "lodash/fp"
import { Input, DetailSummary, notifications } from "@budibase/bbui"
import { DetailSummary, notifications } from "@budibase/bbui"
import { store } from "builderStore"
import PropertyControl from "components/design/settings/controls/PropertyControl.svelte"
import ResetFieldsButton from "components/design/settings/controls/ResetFieldsButton.svelte"
@ -16,7 +16,6 @@
export let isScreen = false
export let onUpdateSetting
export let showSectionTitle = true
export let showInstanceName = true
$: sections = getSections(componentInstance, componentDefinition, isScreen)
@ -138,15 +137,6 @@
/>
{/if}
<div class="settings">
{#if idx === 0 && !componentInstance._component.endsWith("/layout") && !isScreen && showInstanceName}
<PropertyControl
control={Input}
label="Name"
key="_instanceName"
value={componentInstance._instanceName}
onChange={val => updateSetting({ key: "_instanceName" }, val)}
/>
{/if}
{#each section.settings as setting (setting.key)}
{#if setting.visible}
<PropertyControl

View file

@ -2,14 +2,16 @@
import { store, userSelectedResourceMap } from "builderStore"
import ComponentDropdownMenu from "./ComponentDropdownMenu.svelte"
import NavItem from "components/common/NavItem.svelte"
import { capitalise } from "helpers"
import { notifications } from "@budibase/bbui"
import {
selectedComponentPath,
selectedComponent,
selectedScreen,
} from "builderStore"
import { findComponentPath } from "builderStore/componentUtils"
import {
findComponentPath,
getComponentText,
} from "builderStore/componentUtils"
import { get } from "svelte/store"
import { dndStore } from "./dndStore"
@ -35,16 +37,6 @@
return false
}
const getComponentText = component => {
if (component._instanceName) {
return component._instanceName
}
const type =
component._component.replace("@budibase/standard-components/", "") ||
"component"
return capitalise(type)
}
const getComponentIcon = component => {
const def = store.actions.components.getDefinition(component?._component)
return def?.icon