Browse Source

PageView - editing html

gh-pages
michael shanks 7 years ago
parent
commit
53287779f2
  1. 6
      packages/builder/src/builderStore/store.js
  2. 48
      packages/builder/src/userInterface/PageView.svelte
  3. 4
      packages/builder/src/userInterface/PagesList.svelte
  4. 13
      packages/builder/src/userInterface/UserInterfaceRoot.svelte
  5. 10
      packages/builder/src/userInterface/pagesParsing/searchComponents.js
  6. 20
      packages/server/appPackages/testApp2/appDefinition.json
  7. 14
      packages/server/appPackages/testApp2/pages.json
  8. 1
      packages/server/builder/bundle.css
  9. 12
      packages/server/builder/bundle.css.map
  10. 1088
      packages/server/builder/bundle.js
  11. 2
      packages/server/builder/bundle.js.map

6
packages/builder/src/builderStore/store.js

@ -483,9 +483,9 @@ const savePage = store => async page => {
return; return;
} }
s.pages[currentPageName] = page; s.pages[s.currentPageName] = page;
savePackage(); savePackage(store, s);
return s;
}); });
} }

48
packages/builder/src/userInterface/PageView.svelte

@ -5,40 +5,58 @@ import Dropdown from "../common/Dropdown.svelte";
import Button from "../common/Button.svelte"; import Button from "../common/Button.svelte";
import { store } from "../builderStore"; import { store } from "../builderStore";
import { isRootComponent } from "./pagesParsing/searchComponents"; import { isRootComponent } from "./pagesParsing/searchComponents";
import {
filter,
find
} from "lodash/fp";
let entryComponent; let entryComponent;
let title = ""; let title = "";
let components = []; let components = [];
store.subscribe(s => { store.subscribe(s => {
title = s.currentFrontEndItem.title; title = s.currentFrontEndItem.index.title;
entryComponent = s.currentFrontEndItem.entryComponent;
components = filter(s => !isRootComponent(s))(s.allComponents); components = filter(s => !isRootComponent(s))(s.allComponents);
entryComponent = find(c => c.name === s.currentFrontEndItem.appBody)(components);
}); });
const save = () => { const save = () => {
const page = { const page = {
title, index: {
entryComponent, title
},
appBody: entryComponent.name,
} }
store.savePage(page); store.savePage(page);
} }
</script> </script>
<p>{$store.currentPageName}</p> <div class="root">
<form class="uk-form-horizontal"> <h3>{$store.currentPageName}</h3>
<Textbox bind:value={title} label="Title" />
<Dropdown bind:value={title}
label="App Entry Component"
options={components}
selected={entryComponent}
textMember="name" />
<Button on:click={save}>Save</Button> <form class="uk-form-horizontal">
</form> <Textbox bind:text={title} label="Title" />
<div class="help-text">The title of your page, displayed in the bowser tab</div>
<Dropdown label="App Entry Component"
options={components}
bind:selected={entryComponent}
textMember={(v) => v.name} />
<style> <div class="help-text">The component that will be loaded into the body of the page</div>
<div style="margin-top: 20px"></div>
<Button on:click={save}>Save</Button>
</form>
</div>
<style>
.root {
padding: 15px;
}
.help-text {
color: var(--slate);
font-size: 10pt;
}
</style> </style>

4
packages/builder/src/userInterface/PagesList.svelte

@ -10,13 +10,13 @@ const getPage = (s, name) => {
</script> </script>
<div class="root"> <div class="root">
<div class="hierarchy-item component" class:selected={$store.currentFrontEndItem && $store.currentFrontEndItem.name === "main"} <div class="hierarchy-item component" class:selected={$store.currentFrontEndItem && $store.currentPageName === "main"}
on:click|stopPropagation={() => store.setCurrentPage("main")}> on:click|stopPropagation={() => store.setCurrentPage("main")}>
<span>{@html getIcon("circle", "7")}</span> <span>{@html getIcon("circle", "7")}</span>
<span class="title">Main</span> <span class="title">Main</span>
</div> </div>
<div class="hierarchy-item component" class:selected={$store.currentFrontEndItem && $store.currentFrontEndItem.name === "unauthenticated"} <div class="hierarchy-item component" class:selected={$store.currentFrontEndItem && $store.currentPageName === "unauthenticated"}
on:click|stopPropagation={() => store.setCurrentPage("unauthenticated")}> on:click|stopPropagation={() => store.setCurrentPage("unauthenticated")}>
<span>{@html getIcon("circle", "7")}</span> <span>{@html getIcon("circle", "7")}</span>
<span class="title">Login</span> <span class="title">Login</span>

13
packages/builder/src/userInterface/UserInterfaceRoot.svelte

@ -5,12 +5,13 @@ import PagesList from "./PagesList.svelte"
import EditComponent from "./EditComponent.svelte"; import EditComponent from "./EditComponent.svelte";
import { store } from "../builderStore"; import { store } from "../builderStore";
import getIcon from "../common/icon"; import getIcon from "../common/icon";
import { isRootComponent } from "./pagesParsing/searchComponents"; import { isComponent } from "./pagesParsing/searchComponents";
import IconButton from "../common/IconButton.svelte"; import IconButton from "../common/IconButton.svelte";
import Modal from "../common/Modal.svelte"; import Modal from "../common/Modal.svelte";
import NewComponent from "./NewComponent.svelte"; import NewComponent from "./NewComponent.svelte";
import CurrentItemPreview from "./CurrentItemPreview.svelte"; import CurrentItemPreview from "./CurrentItemPreview.svelte";
import SettingsView from "./SettingsView.svelte"; import SettingsView from "./SettingsView.svelte";
import PageView from "./PageView.svelte";
let newComponentPicker; let newComponentPicker;
const newComponent = () => { const newComponent = () => {
@ -59,15 +60,19 @@ const settings = () => {
<div> <div>
{#if $store.currentFrontEndItem} {#if $store.currentFrontEndItem}
<CurrentItemPreview /> {#if isComponent($store.currentFrontEndItem)}
<CurrentItemPreview />
{:else}
<PageView />
{/if}
{/if} {/if}
</div> </div>
{#if $store.currentFrontEndItem && isComponent($store.currentFrontEndItem)}
<div class="properties-pane"> <div class="properties-pane">
{#if $store.currentFrontEndItem && !isRootComponent($store.currentFrontEndItem)}
<EditComponent /> <EditComponent />
{/if}
</div> </div>
{/if}
</div> </div>

10
packages/builder/src/userInterface/pagesParsing/searchComponents.js

@ -5,12 +5,18 @@ import {
isUndefined, isUndefined,
filter, filter,
some, some,
includes includes,
has
} from "lodash/fp"; } from "lodash/fp";
const normalString = s => (s||"").trim().toLowerCase(); const normalString = s => (s||"").trim().toLowerCase();
export const isRootComponent = c => isUndefined(c.inherits); export const isRootComponent = c => isComponent(c) && isUndefined(c.inherits);
export const isComponent = c => {
const hasProp = (n) => !isUndefined(c[n]);
return hasProp("name") && hasProp("props");
}
export const searchAllComponents = (allComponents, phrase) => { export const searchAllComponents = (allComponents, phrase) => {

20
packages/server/appPackages/testApp2/appDefinition.json

@ -127,12 +127,20 @@
[ [
[ [
[ [
{ [
"name": "output_to_file", [
"behaviourSource": "main", [
"behaviourName": "outputToFile", [
"initialOptions": {} {
} "name": "output_to_file",
"behaviourSource": "main",
"behaviourName": "outputToFile",
"initialOptions": {}
}
]
]
]
]
] ]
] ]
] ]

14
packages/server/appPackages/testApp2/pages.json

@ -1,17 +1,15 @@
{ {
"main": { "main": {
"index": {}, "index": {
"appBody": "./main.app.json" "title": "yyyaaa"
},
"appBody": "Random Button"
}, },
"unauthenticated": { "unauthenticated": {
"index": { "index": {
"_component": "budibase-components/indexHtml", "title": "Test App 1 - Login"
"title": "Test App 1 - Login",
"customScripts": [
"MyCustomComponents.js"
]
}, },
"appBody": "./unauthenticated.app.json" "appBody": "login_screen"
}, },
"componentLibraries": [ "componentLibraries": [
"./standard-components" "./standard-components"

1
packages/server/builder/bundle.css

@ -38,5 +38,6 @@ input.svelte-66516k{margin-right:7px}
.root.svelte-bv289q{padding:10px}.option-container.svelte-bv289q{border-style:dotted;border-width:1px;border-color:var(--primary75);padding:3px;margin-right:5px} .root.svelte-bv289q{padding:10px}.option-container.svelte-bv289q{border-style:dotted;border-width:1px;border-color:var(--primary75);padding:3px;margin-right:5px}
.addelement-container.svelte-jliz3p{cursor:pointer;padding:3px 0px;text-align:center}.addelement-container.svelte-jliz3p:hover{background-color:var(--primary25)}.item-container.svelte-jliz3p{padding-left:3px;background:var(--secondary10)} .addelement-container.svelte-jliz3p{cursor:pointer;padding:3px 0px;text-align:center}.addelement-container.svelte-jliz3p:hover{background-color:var(--primary25)}.item-container.svelte-jliz3p{padding-left:3px;background:var(--secondary10)}
textarea.svelte-1wfv4cc{width:300px;height:200px} textarea.svelte-1wfv4cc{width:300px;height:200px}
.root.svelte-1ersoxu{padding:15px}.help-text.svelte-1ersoxu{color:var(--slate);font-size:10pt}
/*# sourceMappingURL=bundle.css.map */ /*# sourceMappingURL=bundle.css.map */

12
packages/server/builder/bundle.css.map

File diff suppressed because one or more lines are too long

1088
packages/server/builder/bundle.js

File diff suppressed because it is too large

2
packages/server/builder/bundle.js.map

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save