diff --git a/frontend/package.json b/frontend/package.json index 7522d322cd..118b0390b5 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -49,7 +49,6 @@ "svelte-grid": "^5.1.1", "svelte-heros": "^2.3.5", "svelte-highlight": "^6.2.1", - "svelte-markdown": "^0.2.3", "svelte-overlay": "^1.4.1", "svelte-popperjs": "^1.3.2", "svelte-preprocess": "^5.0.0", diff --git a/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte b/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte index 921fe991bf..9a9b2bcfcb 100644 --- a/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte +++ b/frontend/src/lib/components/apps/components/dataDisplay/AppText.svelte @@ -1,35 +1,68 @@ + + + - {#if result === ''} + {#if !result || result === ''}
No text
- {:else} -
- -
+ {:else}{String(result)} {/if}
- - diff --git a/frontend/src/lib/components/apps/editor/AppEditor.svelte b/frontend/src/lib/components/apps/editor/AppEditor.svelte index d65fbaa926..e34c8ebd80 100644 --- a/frontend/src/lib/components/apps/editor/AppEditor.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditor.svelte @@ -82,7 +82,7 @@ $: mounted && ($worldStore = buildWorld($staticOutputs, $worldStore)) $: previewing = $mode === 'preview' - $: width = $breakpoint === 'sm' ? 'w-[640px]' : 'w-full' + $: width = $breakpoint === 'sm' ? 'min-w-[400px] max-w-[656px]' : 'min-w-[657px] w-full' let selectedTab: 'insert' | 'settings' = 'insert' $: if ($selectedComponent) { @@ -108,24 +108,19 @@ -
-
- {#if $appStore.grid} -
- -
- {/if} - {#if $connectingInput.opened} -
- {/if} -
+
+ {#if $appStore.grid} +
+ +
+ {/if} + {#if $connectingInput.opened} +
+ {/if}
@@ -160,7 +155,7 @@ {#if $selectedComponent !== undefined} {:else} -
No component selected.
+
No component selected.
{/if} diff --git a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte index a0c3d095e2..1303b600d0 100644 --- a/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte +++ b/frontend/src/lib/components/apps/editor/AppEditorHeader.svelte @@ -3,10 +3,11 @@ import { page } from '$app/stores' import { Drawer, DrawerContent } from '$lib/components/common' import Button from '$lib/components/common/button/Button.svelte' + import { dirtyStore } from '$lib/components/common/confirmationModal/dirtyStore' import ToggleButton from '$lib/components/common/toggleButton/ToggleButton.svelte' import ToggleButtonGroup from '$lib/components/common/toggleButton/ToggleButtonGroup.svelte' import Path from '$lib/components/Path.svelte' - import Toggle from '$lib/components/Toggle.svelte' + import Tooltip from '$lib/components/Tooltip.svelte' import { AppService, Policy } from '$lib/gen' import { userStore, workspaceStore } from '$lib/stores' import { faExternalLink, faSave } from '@fortawesome/free-solid-svg-icons' @@ -57,6 +58,7 @@ } async function save() { + $dirtyStore = false if ($page.params.path == undefined) { drawerOpen = true return @@ -107,7 +109,7 @@ -
+
@@ -133,8 +135,13 @@
- Centered - Full Width + Centered   The max width is 1168px and the content stay centered instead of taking the full page + width + Full
diff --git a/frontend/src/lib/components/apps/editor/AppExportButton.svelte b/frontend/src/lib/components/apps/editor/AppExportButton.svelte index 504d9d57ca..272a74ef07 100644 --- a/frontend/src/lib/components/apps/editor/AppExportButton.svelte +++ b/frontend/src/lib/components/apps/editor/AppExportButton.svelte @@ -24,7 +24,7 @@ on:click={() => jsonViewerDrawer.toggleDrawer()} > - Export JSON + JSON diff --git a/frontend/src/lib/components/apps/editor/AppPreview.svelte b/frontend/src/lib/components/apps/editor/AppPreview.svelte index 23648a977e..1e83673d4f 100644 --- a/frontend/src/lib/components/apps/editor/AppPreview.svelte +++ b/frontend/src/lib/components/apps/editor/AppPreview.svelte @@ -53,12 +53,12 @@ }) $: mounted && ($worldStore = buildWorld($staticOutputs, undefined)) - $: width = $breakpoint === 'sm' ? 'w-[640px]' : 'w-full ' + $: width = $breakpoint === 'sm' ? 'max-w-[640px]' : 'w-full '
{#if $appStore.grid} -
+
{/if} diff --git a/frontend/src/lib/components/apps/editor/ComponentHeader.svelte b/frontend/src/lib/components/apps/editor/ComponentHeader.svelte index f4e64b712d..e988f98772 100644 --- a/frontend/src/lib/components/apps/editor/ComponentHeader.svelte +++ b/frontend/src/lib/components/apps/editor/ComponentHeader.svelte @@ -15,9 +15,10 @@ {component.id} @@ -25,18 +26,18 @@ {#if pointerdown || selected || hover} {/if} @@ -45,8 +46,8 @@ {/if} diff --git a/frontend/src/lib/components/apps/editor/GridEditor.svelte b/frontend/src/lib/components/apps/editor/GridEditor.svelte index 2d4d00d0af..ac0349c44d 100644 --- a/frontend/src/lib/components/apps/editor/GridEditor.svelte +++ b/frontend/src/lib/components/apps/editor/GridEditor.svelte @@ -100,7 +100,7 @@ } -
+

{$app.title}

@@ -112,7 +112,7 @@ selectComponent(detail.id)} diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte b/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte index b99ae35f82..dba2ffbb20 100644 --- a/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte +++ b/frontend/src/lib/components/apps/editor/componentsPanel/ComponentList.svelte @@ -19,7 +19,7 @@ function getMinDimensionsByComponent(componentType: AppComponent['type'], column: number): Size { // Dimensions key formula: :-: const dimensions: Record<`${number}:${number}-${number}:${number}`, AppComponent['type'][]> = { - '1:1-2:1': [ + '1:2-2:2': [ 'buttoncomponent', 'textcomponent', 'checkboxcomponent', @@ -29,7 +29,7 @@ 'passwordinputcomponent', 'dateinputcomponent' ], - '2:6-4:6': ['barchartcomponent', 'piechartcomponent', 'formcomponent', 'displaycomponent'], + '2:12-4:12': ['barchartcomponent', 'piechartcomponent', 'formcomponent', 'displaycomponent'], '3:6-6:8': ['tablecomponent'] } // Finds the key that is associated with the component type and extracts the dimensions from it @@ -74,8 +74,17 @@ y: 0 } + let newData: AppComponent = JSON.parse(JSON.stringify(appComponent)) + Object.values(newData.configuration).forEach((x) => { + if (x.type == 'static') { + x.value = x.defaultValue + } + }) + if (newData?.componentInput?.type == 'static') { + newData.componentInput.value = newData.componentInput.defaultValue + } const newItem: GridItem = { - data: JSON.parse(JSON.stringify(appComponent)), + data: newData, id: id } diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/componentStaticValues.ts b/frontend/src/lib/components/apps/editor/componentsPanel/componentStaticValues.ts index c754680b24..14666c9c1e 100644 --- a/frontend/src/lib/components/apps/editor/componentsPanel/componentStaticValues.ts +++ b/frontend/src/lib/components/apps/editor/componentsPanel/componentStaticValues.ts @@ -6,5 +6,6 @@ export const staticValues = { buttonColorOptions, buttonSizeOptions: ['xs', 'sm', 'md', 'lg', 'xl'], tableSearchOptions: ['Component', 'Runnable', 'Disabled'], - chartThemeOptions: ['theme1', 'theme2', 'theme3'] + chartThemeOptions: ['theme1', 'theme2', 'theme3'], + textStyleOptions: ['Title', 'Subtitle', 'Body', 'Label', 'Caption'] } as const diff --git a/frontend/src/lib/components/apps/editor/componentsPanel/data.ts b/frontend/src/lib/components/apps/editor/componentsPanel/data.ts index 09e7a3335f..faee1a3a4f 100644 --- a/frontend/src/lib/components/apps/editor/componentsPanel/data.ts +++ b/frontend/src/lib/components/apps/editor/componentsPanel/data.ts @@ -122,21 +122,21 @@ const buttons: ComponentSet = { configuration: { label: { type: 'static', - value: 'Lorem ipsum', + value: undefined, fieldType: 'text', defaultValue: 'Lorem ipsum' }, color: { fieldType: 'select', type: 'static', - value: 'blue', + value: undefined, optionValuesKey: 'buttonColorOptions', defaultValue: 'blue' }, size: { fieldType: 'select', type: 'static', - value: 'xs', + value: undefined, optionValuesKey: 'buttonSizeOptions', defaultValue: 'xs' } @@ -193,11 +193,27 @@ const display: ComponentSet = { type: 'textcomponent', componentInput: { type: 'static', - value: 'Lorem ipsum', fieldType: 'textarea', - defaultValue: 'Lorem ipsum' + defaultValue: 'Lorem ipsum', + value: undefined + }, + configuration: { + style: { + fieldType: 'select', + type: 'static', + value: undefined, + optionValuesKey: 'textStyleOptions', + defaultValue: 'Body' + }, + extraStyle: + { + type: 'static', + fieldType: 'text', + defaultValue: '', + value: undefined + }, + }, - configuration: {}, card: false }, { @@ -207,13 +223,13 @@ const display: ComponentSet = { search: { fieldType: 'select', type: 'static', - value: 'Disabled', + value: undefined, optionValuesKey: 'tableSearchOptions', defaultValue: 'Disabled' }, pagination: { type: 'static', - value: false, + value: undefined, fieldType: 'boolean', defaultValue: false } @@ -234,18 +250,7 @@ const display: ComponentSet = { age: 42 } ], - value: [ - { - id: 1, - name: 'Lorem ipsum', - age: 42 - }, - { - id: 2, - name: 'Lorem ipsum', - age: 42 - } - ] + value: undefined }, card: true, actionButtons: [] @@ -256,7 +261,7 @@ const display: ComponentSet = { configuration: { theme: { type: 'static', - value: 'theme1', + value: undefined, fieldType: 'select', optionValuesKey: 'chartThemeOptions', defaultValue: 'theme1' @@ -275,7 +280,7 @@ const display: ComponentSet = { fieldType: 'array', subFieldType: 'number', defaultValue: [25, 50, 25], - value: [25, 50, 25] + value: undefined }, card: true }, @@ -285,14 +290,14 @@ const display: ComponentSet = { configuration: { theme: { type: 'static', - value: 'theme1', + value: undefined, fieldType: 'select', optionValuesKey: 'chartThemeOptions', defaultValue: 'theme1' }, labels: { type: 'static', - value: ['Lorem ipsum', 'Lorem ipsum', 'Lorem ipsum'], + value: undefined, fieldType: 'array', subFieldType: 'text', defaultValue: ['Lorem ipsum', 'Lorem ipsum', 'Lorem ipsum'] @@ -303,7 +308,7 @@ const display: ComponentSet = { fieldType: 'array', subFieldType: 'number', defaultValue: [25, 50, 25], - value: [25, 50, 25] + value: undefined }, card: true }, @@ -314,7 +319,7 @@ const display: ComponentSet = { type: 'static', fieldType: 'text', defaultValue: 'Lorem Ipsum', - value: 'Lorem Ipsum' + value: undefined }, configuration: {}, card: false diff --git a/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte b/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte index 21d24e92e3..c8135c2b19 100644 --- a/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte +++ b/frontend/src/lib/components/apps/editor/contextPanel/ContextPanel.svelte @@ -36,7 +36,7 @@ -
+
{#each Object.entries($staticOutputs) as [componentId, outputs] (componentId)} {#if outputs.length > 0 && $worldStore?.outputsById[componentId]}
@@ -66,7 +66,7 @@
diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/AlignmentEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/AlignmentEditor.svelte index f47a77e15f..8530de522d 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/AlignmentEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/AlignmentEditor.svelte @@ -16,38 +16,43 @@ {#if component.verticalAlignment !== undefined} - {#if component.horizontalAlignment} -
Horizontal
- -
- - - - - - - - - - - -
- {/if} - {#if component.type !== 'formcomponent' && component.verticalAlignment} -
Vertical
-
- - - - - - - - - - - -
- {/if} +
+ {#if component.horizontalAlignment} +
+
Horizontal
+
+ + + + + + + + + + + +
+
+ {/if} + {#if component.type !== 'formcomponent' && component.verticalAlignment} +
+
Vertical
+
+ + + + + + + + + + + +
+
+ {/if} +
{/if} diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte index bfa859c9b5..4fb8ad3fde 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/ComponentInputTypeEditor.svelte @@ -12,10 +12,12 @@ } const brackets = '${}' + + let clientWidth: number {#if componentInput.fieldType !== 'any'} -
+
{#if componentInput.fieldType === 'textarea'} @@ -29,7 +31,9 @@ size="xs" disable={disableStatic} > - + {#if clientWidth > 250} + + {/if} {/if} @@ -39,10 +43,14 @@ startIcon={{ icon: faArrowRight }} size="xs" > - + {#if clientWidth > 250} + + {/if} - + {#if clientWidth > 250} + + {/if}
diff --git a/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte b/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte index 83fe61de43..2ea0e72aad 100644 --- a/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte +++ b/frontend/src/lib/components/apps/editor/settingsPanel/ComponentPanel.svelte @@ -90,11 +90,9 @@ declare const ${k} = ${JSON.stringify(v)}; {#if component} -
+
{#if component.componentInput} - + diff --git a/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte b/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte index d0bbfc6db3..03dd0c83e4 100644 --- a/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte +++ b/frontend/src/lib/components/propertyPicker/ObjectViewer.svelte @@ -57,7 +57,7 @@
    {#each keys as key, index}
  • -