diff --git a/frontend/src/lib/components/DeployWorkspace.svelte b/frontend/src/lib/components/DeployWorkspace.svelte
index a539fbeedf..d4e6bd6fec 100644
--- a/frontend/src/lib/components/DeployWorkspace.svelte
+++ b/frontend/src/lib/components/DeployWorkspace.svelte
@@ -100,7 +100,7 @@
})
}
if (x.value.type == 'script') {
- if (x.value.path) {
+ if (x.value.path && !x.value.path.startsWith('hub/')) {
result.push({ kind: 'script', path: x.value.path })
}
} else if (x.value.type == 'flow') {
@@ -336,7 +336,7 @@
}
}
- function deployAll() {
+ export function deployAll() {
dependencies?.slice().forEach(async ({ kind, path, include }) => {
if (include) {
await deploy(kind, path)
diff --git a/frontend/src/lib/components/ScriptBuilder.svelte b/frontend/src/lib/components/ScriptBuilder.svelte
index 34015884f5..b542e480c5 100644
--- a/frontend/src/lib/components/ScriptBuilder.svelte
+++ b/frontend/src/lib/components/ScriptBuilder.svelte
@@ -548,7 +548,7 @@
size="sm"
startIcon={{ icon: faSave }}
on:click={() => editScript()}
- dropdownItems={initialPath != '' ? computeDropdownItems : []}
+ dropdownItems={initialPath != '' ? computeDropdownItems : undefined}
>
Deploy
diff --git a/frontend/src/lib/components/apps/components/layout/AppList.svelte b/frontend/src/lib/components/apps/components/layout/AppList.svelte
new file mode 100644
index 0000000000..9dda380d8a
--- /dev/null
+++ b/frontend/src/lib/components/apps/components/layout/AppList.svelte
@@ -0,0 +1,85 @@
+
+
+{#each Object.keys(components['listcomponent'].initialData.configuration) as key (key)}
+
+{/each}
+
+
+
+
+ {#if $app.subgrids?.[`${id}-0`]}
+ {#each result ?? [] as value, index}
+
+
+ {
+ if (!$connectingInput.opened) {
+ $selectedComponent = [id]
+ }
+ onFocus()
+ }}
+ />
+
+
+ {/each}
+ {/if}
+
+
diff --git a/frontend/src/lib/components/apps/components/layout/ListWrapper.svelte b/frontend/src/lib/components/apps/components/layout/ListWrapper.svelte
new file mode 100644
index 0000000000..38cf6376e4
--- /dev/null
+++ b/frontend/src/lib/components/apps/components/layout/ListWrapper.svelte
@@ -0,0 +1,11 @@
+
+
+
diff --git a/frontend/src/lib/components/apps/editor/SubGridEditor.svelte b/frontend/src/lib/components/apps/editor/SubGridEditor.svelte
index dfca892fcc..bae0054e07 100644
--- a/frontend/src/lib/components/apps/editor/SubGridEditor.svelte
+++ b/frontend/src/lib/components/apps/editor/SubGridEditor.svelte
@@ -22,6 +22,7 @@
export let visible: boolean = true
export let id: string
export let shouldHighlight: boolean = true
+ export let forceView = false
const dispatch = createEventDispatcher()
@@ -77,7 +78,7 @@
)}
style="{containerHeight ? `height: ${containerHeight}px;` : ''} {style ?? ''}"
>
- {#if $mode !== 'preview'}
+ {#if $mode !== 'preview' || forceView}
diff --git a/frontend/src/lib/components/apps/editor/component/Component.svelte b/frontend/src/lib/components/apps/editor/component/Component.svelte
index 1ff0283e99..8e9a513fd9 100644
--- a/frontend/src/lib/components/apps/editor/component/Component.svelte
+++ b/frontend/src/lib/components/apps/editor/component/Component.svelte
@@ -50,6 +50,7 @@
import AppFlowStatusComponent from '../../components/display/AppFlowStatusComponent.svelte'
import AppChartJs from '../../components/display/AppChartJs.svelte'
import AppQuillEditor from '../../components/inputs/AppQuillEditor.svelte'
+ import AppList from '../../components/layout/AppList.svelte'
export let component: AppComponent
export let selected: boolean
@@ -453,6 +454,16 @@
{componentContainerHeight}
{render}
/>
+ {:else if component.type === 'listcomponent'}
+
{:else if component.type === 'verticalsplitpanescomponent'}
& {
tabs: string[]
disabledTabs: RichConfiguration[]
}
+export type ListComponent = BaseComponent<'listcomponent'>
export type ContainerComponent = BaseComponent<'containercomponent'>
export type DrawerComponent = BaseComponent<'drawercomponent'>
export type MapComponent = BaseComponent<'mapcomponent'>
@@ -163,6 +165,7 @@ export type TypedComponent =
| PlotlyComponent
| TabsComponent
| ContainerComponent
+ | ListComponent
| IconComponent
| HorizontalDividerComponent
| VerticalDividerComponent
@@ -469,6 +472,38 @@ export const components = {
numberOfSubgrids: 1
}
},
+ listcomponent: {
+ name: 'List',
+ icon: ListIcon,
+ dims: '2:8-6:8' as AppComponentDimensions,
+
+ customCss: {
+ container: { class: '', style: '' }
+ },
+ initialData: {
+ configuration: {
+ minWidthPx: {
+ type: 'static',
+ fieldType: 'number',
+ value: 300,
+ tooltip: 'Min Width in pixels'
+ },
+ maxHeightPx: {
+ type: 'static',
+ fieldType: 'number',
+ value: 300,
+ tooltip: 'Max Height in pixels'
+ }
+ },
+ componentInput: {
+ type: 'static',
+ fieldType: 'array',
+ subFieldType: 'object',
+ value: [{ foo: 1 }, { foo: 2 }, { foo: 3 }] as object[]
+ },
+ numberOfSubgrids: 1
+ }
+ },
textcomponent: {
name: 'Text',
icon: Type,
diff --git a/frontend/src/lib/components/apps/editor/component/sets.ts b/frontend/src/lib/components/apps/editor/component/sets.ts
index aa450c193b..32548294ab 100644
--- a/frontend/src/lib/components/apps/editor/component/sets.ts
+++ b/frontend/src/lib/components/apps/editor/component/sets.ts
@@ -10,6 +10,7 @@ const layout: ComponentSet = {
title: 'Layout',
components: [
'containercomponent',
+ // 'listcomponent',
'horizontaldividercomponent',
'verticaldividercomponent',
'drawercomponent',
diff --git a/frontend/src/lib/components/apps/types.ts b/frontend/src/lib/components/apps/types.ts
index 272142cdd1..4941a99d7b 100644
--- a/frontend/src/lib/components/apps/types.ts
+++ b/frontend/src/lib/components/apps/types.ts
@@ -150,6 +150,11 @@ export interface CancelablePromise extends Promise {
cancel: () => void
}
+export type ListContext = {
+ index: number
+ value: any
+}
+
export type AppViewerContext = {
worldStore: Writable
app: Writable