|
|
|
@ -536,37 +536,50 @@ export const getFrontendStore = () => { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
// Find a nav bar in the main layout
|
|
|
|
const nav = findComponentType( |
|
|
|
layout.props, |
|
|
|
"@budibase/standard-components/navigation" |
|
|
|
) |
|
|
|
if (!nav) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
let newLink |
|
|
|
if (nav._children && nav._children.length) { |
|
|
|
// Clone an existing link if one exists
|
|
|
|
newLink = cloneDeep(nav._children[0]) |
|
|
|
|
|
|
|
// Set our new props
|
|
|
|
newLink._id = uuid() |
|
|
|
newLink._instanceName = `${title} Link` |
|
|
|
newLink.url = url |
|
|
|
newLink.text = title |
|
|
|
} else { |
|
|
|
// Otherwise create vanilla new link
|
|
|
|
newLink = { |
|
|
|
...store.actions.components.createInstance("link"), |
|
|
|
url, |
|
|
|
// Add link setting to main layout
|
|
|
|
if (layout.props._component.endsWith("layout")) { |
|
|
|
// If using a new SDK, add to the layout component settings
|
|
|
|
if (!layout.props.links) { |
|
|
|
layout.props.links = [] |
|
|
|
} |
|
|
|
layout.props.links.push({ |
|
|
|
text: title, |
|
|
|
_instanceName: `${title} Link`, |
|
|
|
url, |
|
|
|
}) |
|
|
|
} else { |
|
|
|
// If using an old SDK, add to the navigation component
|
|
|
|
// TODO: remove this when we can assume everyone has updated
|
|
|
|
const nav = findComponentType( |
|
|
|
layout.props, |
|
|
|
"@budibase/standard-components/navigation" |
|
|
|
) |
|
|
|
if (!nav) { |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
let newLink |
|
|
|
if (nav._children && nav._children.length) { |
|
|
|
// Clone an existing link if one exists
|
|
|
|
newLink = cloneDeep(nav._children[0]) |
|
|
|
|
|
|
|
// Set our new props
|
|
|
|
newLink._id = uuid() |
|
|
|
newLink._instanceName = `${title} Link` |
|
|
|
newLink.url = url |
|
|
|
newLink.text = title |
|
|
|
} else { |
|
|
|
// Otherwise create vanilla new link
|
|
|
|
newLink = { |
|
|
|
...store.actions.components.createInstance("link"), |
|
|
|
url, |
|
|
|
text: title, |
|
|
|
_instanceName: `${title} Link`, |
|
|
|
} |
|
|
|
nav._children = [...nav._children, newLink] |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// Save layout
|
|
|
|
nav._children = [...nav._children, newLink] |
|
|
|
await store.actions.layouts.save(layout) |
|
|
|
}, |
|
|
|
}, |
|
|
|
|