bugfixes.

This commit is contained in:
michael shanks 2019-09-09 05:24:14 +01:00
parent ef9a0853a0
commit e0abcdaa0e
51 changed files with 566 additions and 506 deletions

View File

@ -1 +1,75 @@
{"levels":[{"name":"owner","permissions":[{"type":"create record","nodeKey":"/customers/1-{id}"},{"type":"delete record","nodeKey":"/customers/1-{id}"},{"type":"update record","nodeKey":"/customers/1-{id}"},{"type":"read record","nodeKey":"/customers/1-{id}"},{"type":"create record","nodeKey":"/customers/1-{id}/invoices/2-{id}"},{"type":"update record","nodeKey":"/customers/1-{id}/invoices/2-{id}"},{"type":"delete record","nodeKey":"/customers/1-{id}/invoices/2-{id}"},{"type":"read record","nodeKey":"/customers/1-{id}/invoices/2-{id}"},{"type":"write templates"},{"type":"create user"},{"type":"set password"},{"type":"create temporary access"},{"type":"enable or disable user"},{"type":"write access levels"},{"type":"list users"},{"type":"list access levels"},{"type":"manage index"},{"type":"set user access levels"},{"type":"manage collection"}]}],"version":0}
{
"levels": [
{
"name": "owner",
"permissions": [
{
"type": "create record",
"nodeKey": "/customers/1-{id}"
},
{
"type": "delete record",
"nodeKey": "/customers/1-{id}"
},
{
"type": "update record",
"nodeKey": "/customers/1-{id}"
},
{
"type": "read record",
"nodeKey": "/customers/1-{id}"
},
{
"type": "create record",
"nodeKey": "/customers/1-{id}/invoices/2-{id}"
},
{
"type": "update record",
"nodeKey": "/customers/1-{id}/invoices/2-{id}"
},
{
"type": "delete record",
"nodeKey": "/customers/1-{id}/invoices/2-{id}"
},
{
"type": "read record",
"nodeKey": "/customers/1-{id}/invoices/2-{id}"
},
{
"type": "write templates"
},
{
"type": "create user"
},
{
"type": "set password"
},
{
"type": "create temporary access"
},
{
"type": "enable or disable user"
},
{
"type": "write access levels"
},
{
"type": "list users"
},
{
"type": "list access levels"
},
{
"type": "manage index"
},
{
"type": "set user access levels"
},
{
"type": "manage collection"
}
]
}
],
"version": 0
}

View File

@ -74,13 +74,19 @@
}
],
"actions": {
"output_to_file":
{
"name": "output_to_file",
"behaviourSource": "main",
"behaviourName": "outputToFile",
"initialOptions": {}
"output_to_file": {
"name": "output_to_file",
"behaviourSource": "main",
"behaviourName": "outputToFile",
"initialOptions": {}
}
},
"props": {
"main": {
"_component": "some_component"
},
"unauthenticated": {
"_component": "some_other_component"
}
}
}

View File

@ -1,4 +1,5 @@
{
"_lib": "index.js",
"textbox" : {
"path": "./textbox",
"name": "Textbox",

View File

@ -0,0 +1,15 @@
{
"name": "testapp",
"version": "1.0.0",
"description": "",
"main": "plugins.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"budibase-client": "file:../../../client/dist",
"budibase-standard-components": "file:../../../standard-components/dist"
}
}

View File

@ -1,19 +1,25 @@
{
"main" : {
"index" : {
},
"appBody" : "./main.app.json"
"main": {
"index": {},
"appBody": "./main.app.json"
},
"unauthenticated": {
"index": {
"_component": "budibase-components/indexHtml",
"title": "Test App 1 - Login",
"customScripts": [
"MyCustomComponents.js"
]
},
"unauthenticated" : {
"index" : {
"_component": "budibase-components/indexHtml",
"title": "Test App 1 - Login",
"customScripts": [
"MyCustomComponents.js"
]
},
"appBody" : "./unauthenticated.app.json"
},
"componentLibraries": ["./customComponents", "./moreCustomComponents"]
"appBody": "./unauthenticated.app.json"
},
"componentLibraries": [
"./customComponents",
"./moreCustomComponents",
"budibase-standard-components"
],
"stylesheets": [
"https://css-r-us.com/myawesomestyles.css",
"/local.css"
]
}

View File

@ -1 +0,0 @@
console.log("test app 1 - main");

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
window['##BUDIBASE_APPDEFINITION##'] = {"hierarchy":{"name":"root","type":"root","children":[{"name":"customer","type":"record","fields":[{"name":"name","type":"string","typeOptions":{"maxLength":1000,"values":null,"allowDeclaredValuesOnly":false},"label":"name","getInitialValue":"default","getUndefinedValue":"default"}],"children":[{"name":"invoiceyooo","type":"record","fields":[{"name":"amount","type":"number","typeOptions":{"minValue":99999999999,"maxValue":99999999999,"decimalPlaces":2},"label":"amount","getInitialValue":"default","getUndefinedValue":"default"}],"children":[],"validationRules":[],"nodeId":2,"indexes":[],"allidsShardFactor":1,"collectionName":"invoices","isSingle":false}],"validationRules":[],"nodeId":1,"indexes":[],"allidsShardFactor":64,"collectionName":"customers","isSingle":false}],"pathMaps":[],"indexes":[],"nodeId":0},"componentLibraries":["./customComponents","./moreCustomComponents","budibase-standard-components"],"appRootPath":"","props":{"_component":"some_component"}}

View File

@ -1,3 +1,21 @@
<!doctype html>
<html>
<body>MAIN - TEST APP 1</body>
<head>
<meta charset='utf8'>
<meta name='viewport' content='width=device-width'>
<title>Budibase App</title>
<link rel='icon' type='image/png' href='//assets/favicon.png'>
<link rel='stylesheet' href='https://css-r-us.com/myawesomestyles.css'>
<link rel='stylesheet' href='///local.css'>
<script src='/budibase-client.js'></script>
</head>
<body id="app">
<script src='/clientAppDefinition.js'></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
window['##BUDIBASE_APPDEFINITION##'] = {"hierarchy":{"name":"root","type":"root","children":[{"name":"customer","type":"record","fields":[{"name":"name","type":"string","typeOptions":{"maxLength":1000,"values":null,"allowDeclaredValuesOnly":false},"label":"name","getInitialValue":"default","getUndefinedValue":"default"}],"children":[{"name":"invoiceyooo","type":"record","fields":[{"name":"amount","type":"number","typeOptions":{"minValue":99999999999,"maxValue":99999999999,"decimalPlaces":2},"label":"amount","getInitialValue":"default","getUndefinedValue":"default"}],"children":[],"validationRules":[],"nodeId":2,"indexes":[],"allidsShardFactor":1,"collectionName":"invoices","isSingle":false}],"validationRules":[],"nodeId":1,"indexes":[],"allidsShardFactor":64,"collectionName":"customers","isSingle":false}],"pathMaps":[],"indexes":[],"nodeId":0},"componentLibraries":["./customComponents","./moreCustomComponents","budibase-standard-components"],"appRootPath":"","props":{"_component":"some_other_component"}}

View File

@ -1,3 +1,21 @@
<!doctype html>
<html>
<body>UNAUTHENTICATED - TEST APP 1</body>
<head>
<meta charset='utf8'>
<meta name='viewport' content='width=device-width'>
<title>Test App 1 - Login</title>
<link rel='icon' type='image/png' href='//assets/favicon.png'>
<link rel='stylesheet' href='https://css-r-us.com/myawesomestyles.css'>
<link rel='stylesheet' href='///local.css'>
<script src='/budibase-client.js'></script>
</head>
<body id="app">
<script src='/clientAppDefinition.js'></script>
</body>
</html>

View File

@ -0,0 +1,9 @@
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"budibase-client@file:../../../client/dist":
version "0.0.1"
"budibase-standard-components@file:../../../standard-components/dist":
version "1.0.0"

View File

@ -131,12 +131,14 @@
[
[
[
{
"name": "output_to_file",
"behaviourSource": "main",
"behaviourName": "outputToFile",
"initialOptions": {}
}
[
{
"name": "output_to_file",
"behaviourSource": "main",
"behaviourName": "outputToFile",
"initialOptions": {}
}
]
]
]
]
@ -151,6 +153,8 @@
]
]
},
"mainUi": {},
"unauthenticatedUi": {}
"props": {
"main": {},
"unauthenticated": {}
}
}

View File

@ -1,11 +0,0 @@
{
"name": "Joes Button",
"description": "",
"inherits": "./standard-components/button",
"props": {
"className": "btn btn-danger"
},
"tags": [
"button"
]
}

View File

@ -1,46 +0,0 @@
{
"name": "Mikes Panel",
"description": "",
"inherits": "./standard-components/stackpanel",
"props": {
"children": [
{
"_component": "Mikes Panel:children",
"control": {
"_component": "Primary Button",
"contentText": "Button",
"contentComponent": {
"_component": ""
},
"className": "btn btn-primary",
"disabled": false
}
},
{
"_component": "Mikes Panel:children",
"control": {
"_component": ""
}
}
],
"_component": "Mikes Panel",
"children[0].control": {
"_component": "Primary Button",
"contentText": "yeo",
"contentComponent": {
"_component": ""
},
"className": "btn btn-primary",
"disabled": false
},
"direction": "vertical",
"height": "200px",
"width": "200px"
},
"tags": [
"div",
"container",
"layout",
"panel"
]
}

View File

@ -1,11 +1,9 @@
{
"name": "Primary Button",
"description": "",
"inherits": "./standard-components/button",
"inherits": "budibase-standard-components/button",
"props": {
"className": "btn btn-primary",
"_component": "Primary Button",
"disabled": false
"className": "btn btn-pimary"
},
"tags": [
"button"

View File

@ -1,19 +0,0 @@
{
"name": "Random Button",
"description": "",
"inherits": "./standard-components/button",
"props": {
"contentComponent": {
"_component": "./standard-components/button",
"contentText": "Inner Button",
"contentComponent": {
"_component": ""
},
"className": "default",
"disabled": false
}
},
"tags": [
"button"
]
}

View File

@ -1,12 +0,0 @@
{
"name": "Success Button",
"description": "",
"inherits": "./standard-components/button",
"props": {
"className": "btn btn-primary",
"_component": "Success Button"
},
"tags": [
"button"
]
}

View File

@ -1,11 +0,0 @@
{
"name": "another noubtbtk",
"description": "",
"inherits": "./standard-components/button",
"props": {
"contentText": "Mike"
},
"tags": [
"button"
]
}

View File

@ -1,41 +0,0 @@
{
"name": "listofstuff",
"description": "",
"inherits": "./standard-components/stackpanel",
"props": {
"children": [
{
"_component": "listofstuff:children",
"control": {
"_component": "Primary Button",
"contentText": "Button",
"contentComponent": {
"_component": ""
},
"className": "btn btn-primary",
"disabled": false
}
},
{
"_component": "listofstuff:children",
"control": {
"_component": "Joes Button",
"contentText": "Button",
"contentComponent": {
"_component": ""
},
"className": "btn btn-danger",
"disabled": false
}
}
],
"_component": "listofstuff",
"direction": "vertical"
},
"tags": [
"div",
"container",
"layout",
"panel"
]
}

View File

@ -1,9 +1,9 @@
{
"name": "login2",
"name": "login",
"description": "",
"inherits": "./standard-components/login",
"inherits": "budibase-standard-components/login",
"props": {
"usernameLabel": "User"
"logo": "/assets/budibase-logo.png"
},
"tags": [
"login",

View File

@ -1,16 +0,0 @@
{
"name": "login_screen",
"description": "",
"inherits": "./standard-components/login",
"props": {
"usernameLabel": "User",
"_component": "login_screen",
"passwordLabel": "Secret"
},
"tags": [
"login",
"credentials",
"password",
"logon"
]
}

View File

@ -1,28 +0,0 @@
{
"name": "mikes",
"description": "",
"inherits": "./standard-components/stackpanel",
"props": {
"children": [
{
"_component": "undefined:children",
"control": {
"_component": "Primary Button",
"contentText": "Button",
"contentComponent": {
"_component": ""
},
"className": "btn btn-primary",
"disabled": false
}
}
],
"_component": "mikes"
},
"tags": [
"div",
"container",
"layout",
"panel"
]
}

View File

@ -1,27 +0,0 @@
{
"name": "schpanel",
"description": "",
"inherits": "./standard-components/stackpanel",
"props": {
"children": [
{
"_component": "undefined:children",
"control": {
"_component": "Primary Button",
"contentText": "Button",
"contentComponent": {
"_component": ""
},
"className": "btn btn-primary",
"disabled": false
}
}
]
},
"tags": [
"div",
"container",
"layout",
"panel"
]
}

View File

@ -0,0 +1,9 @@
{
"name": "subfolder/path/buttony",
"description": "",
"inherits": "budibase-standard-components/button",
"props": {},
"tags": [
"button"
]
}

View File

@ -1,51 +0,0 @@
{
"name": "yeeeeo",
"description": "",
"inherits": "./standard-components/stackpanel",
"props": {
"children": [
{
"_component": "yeeeeo:children",
"control": {
"_component": "Primary Button",
"contentText": "Button",
"contentComponent": {
"_component": ""
},
"className": "btn btn-primary",
"disabled": false
}
},
{
"_component": "yeeeeo:children",
"control": {
"_component": "Random Button",
"contentText": "Button",
"contentComponent": {
"_component": "./standard-components/button",
"contentText": "Inner Button",
"contentComponent": {
"_component": ""
},
"className": "default",
"disabled": false
},
"className": "default",
"disabled": false
}
}
],
"_component": "yeeeeo",
"height": "400px",
"width": "400px",
"direction": "vertical",
"itemContainerClass": "",
"containerClass": ""
},
"tags": [
"div",
"container",
"layout",
"panel"
]
}

View File

@ -7,6 +7,8 @@
"index": {},
"appBody": ""
},
"componentLibraries": [],
"componentLibraries": [
"budibase-standard-components"
],
"stylesheets": []
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
window['##BUDIBASE_APPDEFINITION##'] = {"hierarchy":{"name":"root","type":"root","children":[{"name":"customer","type":"record","fields":[{"name":"name","type":"string","typeOptions":{"maxLength":1000,"values":null,"allowDeclaredValuesOnly":false},"label":"name","getInitialValue":"default","getUndefinedValue":"default"}],"children":[{"name":"invoiceyooo","type":"record","fields":[{"name":"amount","type":"number","typeOptions":{"minValue":99999999999,"maxValue":99999999999,"decimalPlaces":2},"label":"amount","getInitialValue":"default","getUndefinedValue":"default"}],"children":[],"validationRules":[],"nodeId":2,"indexes":[],"allidsShardFactor":1,"collectionName":"invoices","isSingle":false}],"validationRules":[],"nodeId":1,"indexes":[{"name":"customer_invoices","type":"index","map":"return {...record};","filter":"","indexType":"ancestor","getShardName":"","getSortKey":"record.id","aggregateGroups":[],"allowedRecordNodeIds":[2],"nodeId":5}],"allidsShardFactor":64,"collectionName":"customers","isSingle":false}],"pathMaps":[],"indexes":[{"name":"Yeo index","type":"index","map":"return {...record};","filter":"","indexType":"ancestor","getShardName":"","getSortKey":"record.id","aggregateGroups":[],"allowedRecordNodeIds":[1],"nodeId":4},{"name":"everyones_invoices","type":"index","map":"return {...record};","filter":"","indexType":"ancestor","getShardName":"","getSortKey":"record.id","aggregateGroups":[],"allowedRecordNodeIds":[2],"nodeId":6}],"nodeId":0},"componentLibraries":["budibase-standard-components"],"appRootPath":"/testApp2","props":{}}

View File

@ -1,3 +1,19 @@
<!doctype html>
<html>
<body>MAIN - TEST APP 1</body>
<head>
<meta charset='utf8'>
<meta name='viewport' content='width=device-width'>
<title>Budibase App</title>
<link rel='icon' type='image/png' href='/testApp2//assets/favicon.png'>
<script src='/testApp2/budibase-client.js'></script>
</head>
<body id="app">
<script src='/testApp2/clientAppDefinition.js'></script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
window['##BUDIBASE_APPDEFINITION##'] = {"hierarchy":{"name":"root","type":"root","children":[{"name":"customer","type":"record","fields":[{"name":"name","type":"string","typeOptions":{"maxLength":1000,"values":null,"allowDeclaredValuesOnly":false},"label":"name","getInitialValue":"default","getUndefinedValue":"default"}],"children":[{"name":"invoiceyooo","type":"record","fields":[{"name":"amount","type":"number","typeOptions":{"minValue":99999999999,"maxValue":99999999999,"decimalPlaces":2},"label":"amount","getInitialValue":"default","getUndefinedValue":"default"}],"children":[],"validationRules":[],"nodeId":2,"indexes":[],"allidsShardFactor":1,"collectionName":"invoices","isSingle":false}],"validationRules":[],"nodeId":1,"indexes":[{"name":"customer_invoices","type":"index","map":"return {...record};","filter":"","indexType":"ancestor","getShardName":"","getSortKey":"record.id","aggregateGroups":[],"allowedRecordNodeIds":[2],"nodeId":5}],"allidsShardFactor":64,"collectionName":"customers","isSingle":false}],"pathMaps":[],"indexes":[{"name":"Yeo index","type":"index","map":"return {...record};","filter":"","indexType":"ancestor","getShardName":"","getSortKey":"record.id","aggregateGroups":[],"allowedRecordNodeIds":[1],"nodeId":4},{"name":"everyones_invoices","type":"index","map":"return {...record};","filter":"","indexType":"ancestor","getShardName":"","getSortKey":"record.id","aggregateGroups":[],"allowedRecordNodeIds":[2],"nodeId":6}],"nodeId":0},"componentLibraries":["budibase-standard-components"],"appRootPath":"/testApp2","props":{}}

View File

@ -1,3 +1,19 @@
<!doctype html>
<html>
<body>UNAUTHENTICATED - TEST APP 1</body>
<head>
<meta charset='utf8'>
<meta name='viewport' content='width=device-width'>
<title>Budibase App</title>
<link rel='icon' type='image/png' href='/testApp2//assets/favicon.png'>
<script src='/testApp2/budibase-client.js'></script>
</head>
<body id="app">
<script src='/testApp2/clientAppDefinition.js'></script>
</body>
</html>

View File

@ -1,43 +1,43 @@
main.svelte-j8mzr7{height:100%;width:100%;font-family:"Lato", Helvetica, Arial, sans-serif}
.root.svelte-e4n7zy{position:fixed;margin:0 auto;text-align:center;top:20%;width:100%}.inner.svelte-e4n7zy{display:inline-block;margin:auto}.logo.svelte-e4n7zy{width:300px;margin-bottom:40px}.root.svelte-e4n7zy .option{width:250px}.app-link.svelte-e4n7zy{margin-top:10px;display:block}
.root.svelte-fkeby9{height:100%;width:100%;display:flex;flex-direction:column}.top-nav.svelte-fkeby9{flex:0 0 auto;height:25px;background:white;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);padding:5px;width:100%}.content.svelte-fkeby9{flex:1 1 auto;width:100%;height:100px}.content.svelte-fkeby9>div.svelte-fkeby9{height:100%;width:100%}.topnavitem.svelte-fkeby9{cursor:pointer;color:var(--slate);padding:0px 15px}.topnavitem.svelte-fkeby9:hover{color:var(--secondary75)}.active.svelte-fkeby9{color:var(--secondary100)}
button.svelte-bxuckr{border-style:none;background-color:rgba(0,0,0,0);cursor:pointer;outline:none}button.svelte-bxuckr:hover{color:var(--hovercolor)}button.svelte-bxuckr:active{outline:none}
.border-normal.svelte-7rfkdx{border-radius:var(--borderradiusall)}.border-left.svelte-7rfkdx{border-radius:var(--borderradius) 0 0 var(--borderradius)}.border-right.svelte-7rfkdx{border-radius:0 var(--borderradius) var(--borderradius) 0}.border-middle.svelte-7rfkdx{border-radius:0}button.svelte-7rfkdx{border-style:solid;padding:7px 15px;cursor:pointer}.primary.svelte-7rfkdx{background-color:var(--primary100);border-color:var(--primary100);color:var(--white)}.primary.svelte-7rfkdx:hover{background-color:var(--primary75);border-color:var(--primary75)}.primary.svelte-7rfkdx:active{background-color:var(--primarydark);border-color:var(--primarydark)}.primary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--primary100);color:var(--primary100)}.primary-outline.svelte-7rfkdx:hover{background-color:var(--primary10)}.primary-outline.svelte-7rfkdx:pressed{background-color:var(--primary25)}.secondary.svelte-7rfkdx{background-color:var(--secondary100);border-color:var(--secondary100);color:var(--white)}.secondary.svelte-7rfkdx:hover{background-color:var(--secondary75);border-color:var(--secondary75)}.secondary.svelte-7rfkdx:pressed{background-color:var(--secondarydark);border-color:var(--secondarydark)}.secondary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--secondary100);color:var(--secondary100)}.secondary-outline.svelte-7rfkdx:hover{background-color:var(--secondary10)}.secondary-outline.svelte-7rfkdx:pressed{background-color:var(--secondary25)}.success.svelte-7rfkdx{background-color:var(--success100);border-color:var(--success100);color:var(--white)}.success.svelte-7rfkdx:hover{background-color:var(--success75);border-color:var(--success75)}.success.svelte-7rfkdx:pressed{background-color:var(--successdark);border-color:var(--successdark)}.success-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--success100);color:var(--success100)}.success-outline.svelte-7rfkdx:hover{background-color:var(--success10)}.success-outline.svelte-7rfkdx:pressed{background-color:var(--success25)}.deletion.svelte-7rfkdx{background-color:var(--deletion100);border-color:var(--deletion100);color:var(--white)}.deletion.svelte-7rfkdx:hover{background-color:var(--deletion75);border-color:var(--deletion75)}.deletion.svelte-7rfkdx:pressed{background-color:var(--deletiondark);border-color:var(--deletiondark)}.deletion-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--deletion100);color:var(--deletion100)}.deletion-outline.svelte-7rfkdx:hover{background-color:var(--deletion10)}.deletion-outline.svelte-7rfkdx:pressed{background-color:var(--deletion25)}
.root.svelte-q8uz1n{height:100%;display:flex}.content.svelte-q8uz1n{flex:1 1 auto;height:100%;background-color:var(--white);margin:0}.nav.svelte-q8uz1n{flex:0 1 auto;width:300px;height:100%}
.border-normal.svelte-7rfkdx{border-radius:var(--borderradiusall)}.border-left.svelte-7rfkdx{border-radius:var(--borderradius) 0 0 var(--borderradius)}.border-right.svelte-7rfkdx{border-radius:0 var(--borderradius) var(--borderradius) 0}.border-middle.svelte-7rfkdx{border-radius:0}button.svelte-7rfkdx{border-style:solid;padding:7px 15px;cursor:pointer}.primary.svelte-7rfkdx{background-color:var(--primary100);border-color:var(--primary100);color:var(--white)}.primary.svelte-7rfkdx:hover{background-color:var(--primary75);border-color:var(--primary75)}.primary.svelte-7rfkdx:active{background-color:var(--primarydark);border-color:var(--primarydark)}.primary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--primary100);color:var(--primary100)}.primary-outline.svelte-7rfkdx:hover{background-color:var(--primary10)}.primary-outline.svelte-7rfkdx:pressed{background-color:var(--primary25)}.secondary.svelte-7rfkdx{background-color:var(--secondary100);border-color:var(--secondary100);color:var(--white)}.secondary.svelte-7rfkdx:hover{background-color:var(--secondary75);border-color:var(--secondary75)}.secondary.svelte-7rfkdx:pressed{background-color:var(--secondarydark);border-color:var(--secondarydark)}.secondary-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--secondary100);color:var(--secondary100)}.secondary-outline.svelte-7rfkdx:hover{background-color:var(--secondary10)}.secondary-outline.svelte-7rfkdx:pressed{background-color:var(--secondary25)}.success.svelte-7rfkdx{background-color:var(--success100);border-color:var(--success100);color:var(--white)}.success.svelte-7rfkdx:hover{background-color:var(--success75);border-color:var(--success75)}.success.svelte-7rfkdx:pressed{background-color:var(--successdark);border-color:var(--successdark)}.success-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--success100);color:var(--success100)}.success-outline.svelte-7rfkdx:hover{background-color:var(--success10)}.success-outline.svelte-7rfkdx:pressed{background-color:var(--success25)}.deletion.svelte-7rfkdx{background-color:var(--deletion100);border-color:var(--deletion100);color:var(--white)}.deletion.svelte-7rfkdx:hover{background-color:var(--deletion75);border-color:var(--deletion75)}.deletion.svelte-7rfkdx:pressed{background-color:var(--deletiondark);border-color:var(--deletiondark)}.deletion-outline.svelte-7rfkdx{background-color:var(--white);border-color:var(--deletion100);color:var(--deletion100)}.deletion-outline.svelte-7rfkdx:hover{background-color:var(--deletion10)}.deletion-outline.svelte-7rfkdx:pressed{background-color:var(--deletion25)}
button.svelte-bxuckr{border-style:none;background-color:rgba(0,0,0,0);cursor:pointer;outline:none}button.svelte-bxuckr:hover{color:var(--hovercolor)}button.svelte-bxuckr:active{outline:none}
.root.svelte-1dih19s{display:grid;grid-template-columns:[uiNav] 250px [preview] auto [properties] 300px;height:100%;width:100%}.ui-nav.svelte-1dih19s{grid-column-start:uiNav;background-color:var(--primary10);height:100%}.properties-pane.svelte-1dih19s{grid-column-start:properties;background-color:var(--primary10);height:100%}.pages-list-container.svelte-1dih19s{padding-top:20px}.nav-group-header.svelte-1dih19s{font-size:10pt;padding-left:10px}.nav-items-container.svelte-1dih19s{padding-top:10px}.nav-group-header.svelte-1dih19s{display:grid;grid-template-columns:[icon] auto [title] 1fr [button] auto;padding:10px 2px 0px 7px}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(1){padding:0px 7px 0px 0px;vertical-align:bottom;grid-column-start:icon;margin-right:5px}.nav-group-header.svelte-1dih19s>span.svelte-1dih19s:nth-child(2){margin-left:5px;vertical-align:bottom;grid-column-start:title;margin-top:auto}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(3){vertical-align:bottom;grid-column-start:button;cursor:pointer;color:var(--slate)}.nav-group-header.svelte-1dih19s>div.svelte-1dih19s:nth-child(3):hover{color:var(--primary75)}
h4.svelte-o0id5a{margin-top:20px}
.root.svelte-1cnqtw{color:var(--secondary50)}.hierarchy-item.svelte-1cnqtw{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-1cnqtw:hover{color:var(--secondary75)}.component.svelte-1cnqtw{margin-left:5px}.currentfolder.svelte-1cnqtw{color:var(--secondary100)}.selected.svelte-1cnqtw{color:var(--primary100)}.title.svelte-1cnqtw{margin-left:10px}
.root.svelte-183dehm{height:100%;border-style:solid;border-color:var(--lightslate);border-width:0px 0px 0px 1px}.padding.svelte-183dehm{padding:0px 5px 0px 10px}.title.svelte-183dehm{background-color:white;padding:3px;display:grid;grid-template-columns:[name] 1fr [actions] auto}.title.svelte-183dehm>div.svelte-183dehm:nth-child(1){grid-column-start:name;color:var(--secondary100)}.title.svelte-183dehm>div.svelte-183dehm:nth-child(2){grid-column-start:actions}.section-header.svelte-183dehm{font-style:italic;color:var(--slate);border-style:solid;border-color:var(--lightslate);border-width:0px 0px 1px 0px}.section-header.svelte-183dehm{vertical-align:middle;margin-top:20px}
h1.svelte-2ukyrk{font-size:1.2em}
.root.svelte-ffb307{padding-bottom:10px;padding-left:10px;font-size:16px;color:var(--secondary50)}.hierarchy-item.svelte-ffb307{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-ffb307:hover{color:var(--secondary75)}.component.svelte-ffb307{margin-left:5px}.selected.svelte-ffb307{color:var(--primary100)}.title.svelte-ffb307{margin-left:10px}
.section-container.svelte-1t0x31f{padding:15px;border-style:dotted;border-width:1px;border-color:var(--lightslate);border-radius:2px}.section-container.svelte-1t0x31f:nth-child(1){margin-bottom:15px}.row-text.svelte-1t0x31f{margin-right:15px;color:var(--primary100)}input.svelte-1t0x31f{margin-right:15px}p.svelte-1t0x31f>span.svelte-1t0x31f{margin-left:30px}.header.svelte-1t0x31f{display:grid;grid-template-columns:[title] 1fr [icon] auto}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(1){grid-column-start:title}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(2){grid-column-start:icon}
.root.svelte-1ersoxu{padding:15px}.help-text.svelte-1ersoxu{color:var(--slate);font-size:10pt}
.component-preview.svelte-1jir83x{display:grid;grid-template-rows:[top] 1fr [middle] auto [bottom] 1fr;grid-template-columns:[left] 1fr [middle] auto [right] 1fr;grid-column-start:preview;height:100%}.component-container.svelte-1jir83x{grid-row-start:middle;grid-column-start:middle}
.root.svelte-zy9ybu{height:100%;background-color:var(--primary10)}.items-root.svelte-zy9ybu{display:flex;flex-direction:column;max-height:100%;height:10px}.hierarchy.svelte-zy9ybu{flex:1 1 auto}.hierarchy-title-row.svelte-zy9ybu{padding:15px 7px;font-size:12pt;display:flex;font-weight:bold}.hierarchy-title.svelte-zy9ybu{flex:auto 1 1}.space-filler.svelte-zy9ybu{flex:1 1 auto}
.root.svelte-zzs4qg{padding:10px}
.root.svelte-apja7r{height:100%;position:relative}.actions-header.svelte-apja7r{flex:0 1 auto}.node-view.svelte-apja7r{overflow-y:auto;flex:1 1 auto}
.root.svelte-1qmjs65{padding:10px}.edit-button.svelte-1qmjs65{cursor:pointer;color:var(--white)}tr.svelte-1qmjs65:hover .edit-button.svelte-1qmjs65{color:var(--secondary75)}
.root.svelte-zzs4qg{padding:10px}
.root.svelte-d6wwkb{display:flex}.root.svelte-d6wwkb:last-child{border-radius:0 var(--borderradius) var(--borderradius) 0}.root.svelte-d6wwkb:first-child{border-radius:var(--borderradius) 0 0 var(--borderradius)}.root.svelte-d6wwkb:not(:first-child):not(:last-child){border-radius:0}
.info-text.svelte-um9cf7{font-size:0.8em;color:var(--slate)}
.title.svelte-1pp53c5{padding:3px;background-color:white;color:var(--secondary100);border-style:solid;border-width:1px 0 0 0;border-color:var(--lightslate)}.title.svelte-1pp53c5>span.svelte-1pp53c5{margin-left:10px}
.root.svelte-1sxai5n{font-size:10pt}.padding.svelte-1sxai5n{padding:0 10px}.inherited-title.svelte-1sxai5n{margin-top:40px;display:grid;grid-template-columns:[name] 1fr [actions] auto;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);font-style:italic}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(1){grid-column-start:name;color:var(--slate)}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(2){grid-column-start:actions;color:var(--secondary100)}
.component.svelte-13tuzj8{padding:5px;border-style:solid;border-width:0 0 1px 0;border-color:var(--lightslate);cursor:pointer}.component.svelte-13tuzj8:hover{background-color:var(--primary10)}.component.svelte-13tuzj8>.title.svelte-13tuzj8{font-size:13pt;color:var(--secondary100)}.component.svelte-13tuzj8>.description.svelte-13tuzj8{font-size:10pt;color:var(--primary75);font-style:italic}
.root.svelte-1cnqtw{color:var(--secondary50)}.hierarchy-item.svelte-1cnqtw{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-1cnqtw:hover{color:var(--secondary75)}.component.svelte-1cnqtw{margin-left:5px}.currentfolder.svelte-1cnqtw{color:var(--secondary100)}.selected.svelte-1cnqtw{color:var(--primary100)}.title.svelte-1cnqtw{margin-left:10px}
.root.svelte-ffb307{padding-bottom:10px;padding-left:10px;font-size:16px;color:var(--secondary50)}.hierarchy-item.svelte-ffb307{cursor:pointer;padding:5px 0px}.hierarchy-item.svelte-ffb307:hover{color:var(--secondary75)}.component.svelte-ffb307{margin-left:5px}.selected.svelte-ffb307{color:var(--primary100)}.title.svelte-ffb307{margin-left:10px}
h1.svelte-2ukyrk{font-size:1.2em}
.root.svelte-183dehm{height:100%;border-style:solid;border-color:var(--lightslate);border-width:0px 0px 0px 1px}.padding.svelte-183dehm{padding:0px 5px 0px 10px}.title.svelte-183dehm{background-color:white;padding:3px;display:grid;grid-template-columns:[name] 1fr [actions] auto}.title.svelte-183dehm>div.svelte-183dehm:nth-child(1){grid-column-start:name;color:var(--secondary100)}.title.svelte-183dehm>div.svelte-183dehm:nth-child(2){grid-column-start:actions}.section-header.svelte-183dehm{font-style:italic;color:var(--slate);border-style:solid;border-color:var(--lightslate);border-width:0px 0px 1px 0px}.section-header.svelte-183dehm{vertical-align:middle;margin-top:20px}
.section-container.svelte-1t0x31f{padding:15px;border-style:dotted;border-width:1px;border-color:var(--lightslate);border-radius:2px}.section-container.svelte-1t0x31f:nth-child(1){margin-bottom:15px}.row-text.svelte-1t0x31f{margin-right:15px;color:var(--primary100)}input.svelte-1t0x31f{margin-right:15px}p.svelte-1t0x31f>span.svelte-1t0x31f{margin-left:30px}.header.svelte-1t0x31f{display:grid;grid-template-columns:[title] 1fr [icon] auto}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(1){grid-column-start:title}.header.svelte-1t0x31f>div.svelte-1t0x31f:nth-child(2){grid-column-start:icon}
.component-preview.svelte-1jir83x{display:grid;grid-template-rows:[top] 1fr [middle] auto [bottom] 1fr;grid-template-columns:[left] 1fr [middle] auto [right] 1fr;grid-column-start:preview;height:100%}.component-container.svelte-1jir83x{grid-row-start:middle;grid-column-start:middle}
.root.svelte-1ersoxu{padding:15px}.help-text.svelte-1ersoxu{color:var(--slate);font-size:10pt}
.root.svelte-1bn4xbe{display:block;font-size:12pt;width:100%;cursor:pointer}.title.svelte-1bn4xbe{padding-top:5px;padding-right:5px;padding-bottom:5px;color:var(--secondary100)}.title.svelte-1bn4xbe:hover{background-color:var(--secondary10)}.active.svelte-1bn4xbe{background-color:var(--primary10)}
.nav-item.svelte-1y614ns{padding:7px;font-size:12pt;font-weight:bold;cursor:pointer;flex:0 0 auto}.nav-item.svelte-1y614ns:hover{background-color:var(--primary10)}.active.svelte-1y614ns{background-color:var(--primary10)}
.dropdown-background.svelte-179p8ge{position:fixed;top:0;left:0;width:100vw;height:100vh}.root.svelte-179p8ge{cursor:pointer;z-index:1}.dropdown-content.svelte-179p8ge{position:absolute;background-color:var(--white);min-width:160px;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);z-index:1;font-weight:normal;border-style:solid;border-width:1px;border-color:var(--secondary10)}.dropdown-content.svelte-179p8ge:not(:focus){display:none}.action-row.svelte-179p8ge{padding:7px 10px;cursor:pointer}.action-row.svelte-179p8ge:hover{background-color:var(--primary100);color:var(--white)}
.root.svelte-d6wwkb{display:flex}.root.svelte-d6wwkb:last-child{border-radius:0 var(--borderradius) var(--borderradius) 0}.root.svelte-d6wwkb:first-child{border-radius:var(--borderradius) 0 0 var(--borderradius)}.root.svelte-d6wwkb:not(:first-child):not(:last-child){border-radius:0}
.edit-button.svelte-9z4fqi{cursor:pointer;color:var(--white)}tr.svelte-9z4fqi:hover .edit-button.svelte-9z4fqi{color:var(--secondary75)}
.edit-button.svelte-neetem{cursor:pointer;color:var(--white)}tr.svelte-neetem:hover .edit-button.svelte-neetem{color:var(--secondary75)}
.root.svelte-1tilbnf{padding:5px;top:0;width:100%}
.root.svelte-1q40nqm{display:block;font-size:13pt;width:100%;cursor:pointer}.title.svelte-1q40nqm{font:var(--bodytext);padding-top:10px;padding-right:5px;padding-bottom:10px;color:var(--secondary100)}.title.svelte-1q40nqm:hover{background-color:var(--secondary10)}
.root.svelte-pq2tmv{height:100%;padding:15px}.allowed-records.svelte-pq2tmv{margin:20px 0px}.allowed-records.svelte-pq2tmv>span.svelte-pq2tmv{margin-right:30px}
.root.svelte-kswv5p{height:100%;padding:15px}.fields-table.svelte-kswv5p{margin:10px;border-collapse:collapse}.add-field-button.svelte-kswv5p{margin-left:15px;cursor:pointer}.edit-button.svelte-kswv5p{cursor:pointer;color:var(--white)}.edit-button.svelte-kswv5p:hover{color:var(--secondary75)}th.svelte-kswv5p{text-align:left}td.svelte-kswv5p{padding:5px 30px 5px 0px;margin:0}thead.svelte-kswv5p>tr.svelte-kswv5p{border-width:0px 0px 1px 0px;border-style:solid;border-color:var(--secondary75);margin-bottom:20px}tbody.svelte-kswv5p>tr.svelte-kswv5p{border-width:0px 0px 1px 0px;border-style:solid;border-color:var(--primary10)}tbody.svelte-kswv5p>tr.svelte-kswv5p:hover{background-color:var(--primary10)}tbody.svelte-kswv5p>tr:hover .edit-button.svelte-kswv5p{color:var(--secondary75)}.index-container.svelte-kswv5p{border-style:solid;border-width:0 0 1px 0;border-color:var(--secondary25);padding:10px;margin-bottom:5px}.index-label.svelte-kswv5p{color:var(--slate)}.index-name.svelte-kswv5p{font-weight:bold;color:var(--primary100)}.index-container.svelte-kswv5p code.svelte-kswv5p{margin:0;display:inline;background-color:var(--primary10);color:var(--secondary100);padding:3px}.index-field-row.svelte-kswv5p{margin-top:7px}
.edit-button.svelte-neetem{cursor:pointer;color:var(--white)}tr.svelte-neetem:hover .edit-button.svelte-neetem{color:var(--secondary75)}
.edit-button.svelte-9z4fqi{cursor:pointer;color:var(--white)}tr.svelte-9z4fqi:hover .edit-button.svelte-9z4fqi{color:var(--secondary75)}
.root.svelte-w5on8s{padding:3px 5px 7px 10px;border-style:dotted;border-width:0 0 1px 0;border-color:var(--primary25)}
input.svelte-66516k{margin-right:7px}
.root.svelte-woqcuf{display:grid;grid-template-columns:[name] 1fr [actions] auto}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(1){grid-column-start:name;color:var(--secondary50)}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(2){grid-column-start:actions}.selectedname.svelte-woqcuf{font-weight:bold;color:var(--secondary)}
.root.svelte-pq2tmv{height:100%;padding:15px}.allowed-records.svelte-pq2tmv{margin:20px 0px}.allowed-records.svelte-pq2tmv>span.svelte-pq2tmv{margin-right:30px}
.component.svelte-13tuzj8{padding:5px;border-style:solid;border-width:0 0 1px 0;border-color:var(--lightslate);cursor:pointer}.component.svelte-13tuzj8:hover{background-color:var(--primary10)}.component.svelte-13tuzj8>.title.svelte-13tuzj8{font-size:13pt;color:var(--secondary100)}.component.svelte-13tuzj8>.description.svelte-13tuzj8{font-size:10pt;color:var(--primary75);font-style:italic}
.info-text.svelte-um9cf7{font-size:0.8em;color:var(--slate)}
.title.svelte-1pp53c5{padding:3px;background-color:white;color:var(--secondary100);border-style:solid;border-width:1px 0 0 0;border-color:var(--lightslate)}.title.svelte-1pp53c5>span.svelte-1pp53c5{margin-left:10px}
.root.svelte-1sxai5n{font-size:10pt}.padding.svelte-1sxai5n{padding:0 10px}.inherited-title.svelte-1sxai5n{margin-top:40px;display:grid;grid-template-columns:[name] 1fr [actions] auto;border-style:solid;border-width:0px 0px 1px 0px;border-color:var(--lightslate);font-style:italic}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(1){grid-column-start:name;color:var(--slate)}.inherited-title.svelte-1sxai5n>div.svelte-1sxai5n:nth-child(2){grid-column-start:actions;color:var(--secondary100)}
.root.svelte-bv289q{padding:10px}.option-container.svelte-bv289q{border-style:dotted;border-width:1px;border-color:var(--primary75);padding:3px;margin-right:5px}
.error-container.svelte-jwy920{padding:10px;border-style:solid;border-color:var(--deletion100);border-radius:var(--borderradiusall);background:var(--deletion75)}.error-row.svelte-jwy920{padding:5px 0px}
textarea.svelte-1ooq0hh{padding:3px;background:var(--darkslate);color:var(--white);font-family:'Courier New', Courier, monospace;width:95%;height:100px}
.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)}
input.svelte-66516k{margin-right:7px}
.root.svelte-woqcuf{display:grid;grid-template-columns:[name] 1fr [actions] auto}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(1){grid-column-start:name;color:var(--secondary50)}.root.svelte-woqcuf>div.svelte-woqcuf:nth-child(2){grid-column-start:actions}.selectedname.svelte-woqcuf{font-weight:bold;color:var(--secondary)}
.root.svelte-w5on8s{padding:3px 5px 7px 10px;border-style:dotted;border-width:0 0 1px 0;border-color:var(--primary25)}
textarea.svelte-1wfv4cc{width:300px;height:200px}
.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)}
/*# sourceMappingURL=bundle.css.map */

File diff suppressed because one or more lines are too long

View File

@ -28039,69 +28039,6 @@
});
const apiCall = (method, returnJson) => (url, body, returnJsonOverride) =>
fetch(url, {
method: method,
headers: {
'Content-Type': 'application/json',
},
body: body && JSON.stringify(body),
}).then(r => {
if(!fp_3(returnJsonOverride))
returnJson = returnJsonOverride;
return returnJson ? r.json() : r
});
const post = apiCall("POST", true);
const get$2 = apiCall("GET", true);
const patch = apiCall("PATCH", true);
const del = apiCall("DELETE", false);
var api$1 = {
post, get: get$2, patch, delete:del
};
const normalString = s => (s||"").trim().toLowerCase();
const isRootComponent = c => isComponent(c) && fp_3(c.inherits);
const isComponent = c => {
const hasProp = (n) => !fp_3(c[n]);
return hasProp("name") && hasProp("props");
};
const searchAllComponents = (allComponents, phrase) => {
const hasPhrase = (...vals) =>
pipe(vals, [
fp_6(v => fp_11(normalString(phrase))(normalString(v)))
]);
const componentMatches = c => {
if(hasPhrase(c.name, ...(c.tags || []))) return true;
if(isRootComponent(c)) return false;
const parent = getExactComponent(
allComponents,
c.inherits);
return componentMatches(parent);
};
return fp_8(componentMatches)(allComponents);
};
const getExactComponent = (allComponents, name) => {
const stringEquals = (s1, s2) =>
normalString(s1) === normalString(s2);
return pipe(allComponents,[
fp_13(c => stringEquals(c.name, name))
]);
};
const defaultDef = typeName => () => ({
type: typeName,
required:false,
@ -28142,7 +28079,7 @@
return expandedProps;
};
const isComponent$1 = fp_55;
const isComponent = fp_55;
const types = {
string: propType(() => "", fp_22, defaultDef("string")),
@ -28150,10 +28087,51 @@
number: propType(() => 0, fp_21, defaultDef("number")),
array: propType(() => [], fp_25, defaultDef("array")),
options: propType(() => "", fp_22, defaultDef("options")),
component: propType(() => ({_component:""}), isComponent$1, defaultDef("component")),
component: propType(() => ({_component:""}), isComponent, defaultDef("component")),
asset: propType(() => "", fp_22, defaultDef("asset")),
};
const normalString = s => (s||"").trim().toLowerCase();
const isRootComponent = c => isComponent$1(c) && fp_3(c.inherits);
const isComponent$1 = c => {
const hasProp = (n) => !fp_3(c[n]);
return hasProp("name") && hasProp("props");
};
const searchAllComponents = (allComponents, phrase) => {
const hasPhrase = (...vals) =>
pipe(vals, [
fp_6(v => fp_11(normalString(phrase))(normalString(v)))
]);
const componentMatches = c => {
if(hasPhrase(c.name, ...(c.tags || []))) return true;
if(isRootComponent(c)) return false;
const parent = getExactComponent(
allComponents,
c.inherits);
return componentMatches(parent);
};
return fp_8(componentMatches)(allComponents);
};
const getExactComponent = (allComponents, name) => {
const stringEquals = (s1, s2) =>
normalString(s1) === normalString(s2);
return pipe(allComponents,[
fp_13(c => stringEquals(c.name, name))
]);
};
const getInstanceProps = (componentInfo, props) => {
const finalProps = fp_4(componentInfo.fullProps);
@ -28303,6 +28281,85 @@
- required: field is required
*/
const buildPropsHierarchy = (allComponents, baseComponent) => {
const buildProps = (componentName, propsDefinition, derivedFromProps) => {
const {props} = createProps(componentName, propsDefinition, derivedFromProps);
props._component = componentName;
for(let propName in props) {
if(propName === "_component") continue;
const propDef = propsDefinition[propName];
if(propDef.type === "component") {
const subComponentProps = props[propName];
if(!subComponentProps._component) continue;
const propComponentInfo = getComponentInfo(
allComponents, subComponentProps._component);
const subComponentInstanceProps = getInstanceProps(
propComponentInfo,
subComponentProps
);
props[propName] = buildProps(
propComponentInfo.rootComponent.name,
propComponentInfo.propsDefinition,
subComponentInstanceProps);
} else if(propDef.type === "array") {
const propsArray = props[propName];
const newPropsArray = [];
let index = 0;
for(let element of propsArray) {
newPropsArray.push(
buildProps(
`${propName}[${index}]`,
propDef.elementDefinition,
element));
index++;
}
props[propName] = newPropsArray;
}
}
return props;
};
if(!baseComponent) return {};
const baseComponentInfo = getComponentInfo(allComponents, baseComponent);
return buildProps(
baseComponentInfo.rootComponent.name,
baseComponentInfo.propsDefinition,
baseComponentInfo.fullProps);
};
const apiCall = (method) => (url, body) =>
fetch(url, {
method: method,
headers: {
'Content-Type': 'application/json',
},
body: body && JSON.stringify(body),
});
const post = apiCall("POST");
const get$2 = apiCall("GET");
const patch = apiCall("PATCH");
const del = apiCall("DELETE");
var api$1 = {
post, get: get$2, patch, delete:del
};
const loadLibs = async (appName, appPackage) => {
const allLibraries = {};
@ -28315,7 +28372,9 @@
};
const makeLibraryUrl = (appName, lib) =>
`/_builder/api/${appName}/componentlibrary?lib=${encodeURI(lib)}`;
`/_builder/${appName}/componentlibrary?lib=${encodeURI(lib)}`;
let appname = "";
const getStore = () => {
@ -28382,18 +28441,19 @@
const initialise = (store, initial) => async () => {
const appname = window.location.hash
? fp_12(window.location.hash.substr(1).split("/"))
: "";
appname = window.location.hash
? fp_12(window.location.hash.substr(1).split("/"))
: "";
if(!appname) {
initial.apps = await api$1.get(`/_builder/api/apps`);
initial.apps = await api$1.get(`/_builder/api/apps`).then(r => r.json());
initial.hasAppPackage = false;
store.set(initial);
return initial;
}
const pkg = await api$1.get(`/_builder/api/${appname}/appPackage`);
const pkg = await api$1.get(`/_builder/api/${appname}/appPackage`)
.then(r => r.json());
initial.libraries = await loadLibs(appname, pkg);
initial.appname = appname;
@ -28694,7 +28754,13 @@
fp_32([derivedComponent])
]);
const derivedComponents = pipe(s.derivedComponents, [
fp_8(c => c.name !== derivedComponent.name),
fp_32([derivedComponent])
]);
s.allComponents = components;
s.derivedComponents = derivedComponents;
s.currentFrontEndItem = derivedComponent;
s.currentComponentInfo = getNewComponentInfo(
s.allComponents, derivedComponent.name);
@ -28725,7 +28791,12 @@
fp_8(c => c.name !== name)
]);
const derivedComponents = pipe(s.derivedComponents, [
fp_8(c => c.name !== name)
]);
s.allComponents = allComponents;
s.derivedComponents = derivedComponents;
if(s.currentFrontEndItem.name === name) {
s.currentFrontEndItem = null;
}
@ -28775,7 +28846,7 @@
const addComponentLibrary = store => async lib => {
const response =
await api$1.get(`/_builder/api/${db.appname}/components?${encodeURI(lib)}`,undefined, false);
await api$1.get(`/_builder/api/${appname}/componentlibrary?lib=${encodeURI(lib)}`,undefined, false);
const success = response.status === 200;
@ -28790,12 +28861,16 @@
: [];
store.update(s => {
s.componentsErrors.addComponent = error;
if(success) {
const componentsArray = [];
for(let c in components) {
componentsArray.push(components[c]);
}
s.allComponents = pipe(s.allComponents, [
fp_8(c => !isRootComponent(c)),
fp_32(components)
fp_8(c => !c.name.startsWith(`${lib}/`)),
fp_32(componentsArray)
]);
s.pages.componentLibraries.push(lib);
@ -28840,7 +28915,7 @@
const refreshComponents = store => async () => {
const components =
await api$1.get(`/_builder/api/${db.appname}/components`);
await api$1.get(`/_builder/api/${db.appname}/components`).then(r => r.json());
const rootComponents = pipe(components, [
fp_30,
@ -28862,8 +28937,10 @@
hierarchy:s.hierarchy,
triggers:s.triggers,
actions: fp_45("name")(s.actions),
mainUi: s.mainUi,
unauthenticatedUi: s.unauthenticatedUi
props: {
main: buildPropsHierarchy(s.allComponents, s.pages.main.appBody),
unauthenticated: buildPropsHierarchy(s.allComponents, s.pages.unauthenticated.appBody)
}
};
const data = {
@ -31455,7 +31532,7 @@
/******/ });
});
//# sourceMappingURL=feather.js.map
});
var feather$1 = unwrapExports(feather);
@ -50504,7 +50581,7 @@
var if_blocks = [];
function select_block_type(changed, ctx) {
if ((show_if == null) || changed.$store) show_if = !!(isComponent(ctx.$store.currentFrontEndItem));
if ((show_if == null) || changed.$store) show_if = !!(isComponent$1(ctx.$store.currentFrontEndItem));
if (show_if) return 0;
return 1;
}
@ -50676,7 +50753,7 @@
}
function create_fragment$l(ctx) {
var div11, div9, div4, div2, div0, raw0_value = getIcon("sidebar","18") + "", t0, span0, t2, div1, t3, t4, div3, t5, div8, div6, div5, raw1_value = getIcon("grid","18") + "", t6, span1, t8, div7, t9, div10, t10, show_if = ctx.$store.currentFrontEndItem && isComponent(ctx.$store.currentFrontEndItem), t11, t12, current;
var div11, div9, div4, div2, div0, raw0_value = getIcon("sidebar","18") + "", t0, span0, t2, div1, t3, t4, div3, t5, div8, div6, div5, raw1_value = getIcon("grid","18") + "", t6, span1, t8, div7, t9, div10, t10, show_if = ctx.$store.currentFrontEndItem && isComponent$1(ctx.$store.currentFrontEndItem), t11, t12, current;
var iconbutton0 = new IconButton({
props: { icon: "settings", size: "14" },
@ -50846,7 +50923,7 @@
check_outros();
}
if (changed.$store) show_if = ctx.$store.currentFrontEndItem && isComponent(ctx.$store.currentFrontEndItem);
if (changed.$store) show_if = ctx.$store.currentFrontEndItem && isComponent$1(ctx.$store.currentFrontEndItem);
if (show_if) {
if (!if_block1) {

File diff suppressed because one or more lines are too long

View File

@ -65,6 +65,13 @@ module.exports = (config, app) => {
await send(ctx, "/index.html", { root: builderPath });
})
.get("/_builder/:appname/componentlibrary", async (ctx) => {
const info = await componentLibraryInfo(
config,
ctx.params.appname,
ctx.query.lib);
await send(ctx, info.components._lib || "index.js", { root: info.libDir});
})
.get("/_builder/*", async (ctx, next) => {
if(!config.dev) {
ctx.response.status = StatusCodes.FORBIDDEN;
@ -161,12 +168,14 @@ module.exports = (config, app) => {
}
}
})
.get("/:appname/componentlibrary", async (ctx) => {
.get("/_builder/api/:appname/componentlibrary", async (ctx) => {
const info = await componentLibraryInfo(
config,
ctx.params.appname,
ctx.query.lib);
await send(ctx, info.libDir, { root: info.components._lib });
ctx.query.lib ? decodeURI(ctx.query.lib) : "");
ctx.body = info.components;
ctx.response.status = StatusCodes.OK;
})
.post("/_builder/api/:appname/derivedcomponent", async (ctx) => {
await saveDerivedComponent(
@ -190,7 +199,7 @@ module.exports = (config, app) => {
await deleteDerivedComponent(
config,
ctx.params.appname,
name);
decodeURI(name));
ctx.response.status = StatusCodes.OK;
})
.get("/:appname", async (ctx) => {

View File

@ -132,3 +132,35 @@ it("should be able to delete derived component", async () => {
expect(await pathExists(componentFile)).toBe(false);
expect(await pathExists(componentDir)).toBe(false);
});
it("/savePackage should prepare all necessary client files", async () => {
await app.post("/_builder/api/testApp/appPackage", {
appDefinition: testAppDef,
accessLevels: testAccessLevels,
pages: testPages
})
.expect(statusCodes.OK);
const publicFolderMain = relative => "./appPackages/testApp/public/main" + relative;
const publicFolderUnauth = relative => "./appPackages/testApp/public/unauthenticated" + relative;
expect(await pathExists(publicFolderMain("/index.html"))).toBe(true);
expect(await pathExists(publicFolderUnauth("/index.html"))).toBe(true);
expect(await pathExists(publicFolderMain("/lib/customComponents/index.js"))).toBe(true);
expect(await pathExists(publicFolderUnauth("/lib/customComponents/index.js"))).toBe(true);
expect(await pathExists(publicFolderMain("/lib/moreCustomComponents/index.js"))).toBe(true);
expect(await pathExists(publicFolderUnauth("/lib/moreCustomComponents/index.js"))).toBe(true);
expect(await pathExists(publicFolderMain("/lib/node_modules/budibase-standard-components/index.js"))).toBe(true);
expect(await pathExists(publicFolderUnauth("/lib/node_modules/budibase-standard-components/index.js"))).toBe(true);
expect(await pathExists(publicFolderUnauth("/budibase-client.js"))).toBe(true);
expect(await pathExists(publicFolderUnauth("/clientAppDefinition.js"))).toBe(true);
})

View File

@ -7,7 +7,7 @@ const {
constants, copyFile, writeFile,
readFile
} = require("fs-extra");
const { join } = require("path");
const { join, resolve } = require("path");
const sqrl = require('squirrelly');
module.exports = async (config, appname, pages, appdefinition) => {
@ -16,12 +16,12 @@ module.exports = async (config, appname, pages, appdefinition) => {
await buildClientAppDefinition(
config, appname,
appdefinition, componentLibraries,
appdefinition,
appPath, pages, "main");
await buildClientAppDefinition(
config, appname,
appdefinition, componentLibraries,
appdefinition,
appPath, pages, "unauthenticated")
await buildIndexHtml(
@ -37,7 +37,7 @@ module.exports = async (config, appname, pages, appdefinition) => {
}
const publicPath = async (appPath, pageName) => join(appPath, "public", pageName);
const publicPath = (appPath, pageName) => join(appPath, "public", pageName);
const rootPath = (config, appname) => config.useAppRootPath ? `/${appname}` : "";
const copyClientLib = async (appPath, pageName) => {
@ -64,19 +64,22 @@ const buildIndexHtml = async (config, appname, appPath, pages, pageName) => {
const templateObj = {
title: pages[pageName].index.title || "Budibase App",
favicon: `${appRootPath}/${pages[pageName].index.favicon || "/assets/favicon.png"}`,
stylesheets: pages.stylesheets.map(stylesheetUrl),
stylesheets: (pages.stylesheets || []).map(stylesheetUrl),
appRootPath
}
const indexHtmlTemplate = await readFile(
resolve(__dirname, "index.template.html"));
resolve(__dirname, "index.template.html"), "utf8");
const indexHtmlPath = join(appPublicPath, "index.html");
const indexHtml = sqrl.Render(indexHtmlTemplate, templateObj)
await writeFile(
indexHtmlPath,
sqrl.Render(indexHtmlTemplate, templateObj),
indexHtml,
{flag:"w+"});
}
@ -91,11 +94,17 @@ const buildClientAppDefinition = async (config, appname, appdefinition, appPath,
for(let lib of pages.componentLibraries) {
const info = await componentLibraryInfo(appPath, lib);
const source = join(info.libDir, info.components._lib);
const libFile = info.components._lib || "index.js";
let source;
try {
source = join(info.libDir, libFile);
} catch(e) {
console.log(e);
}
const destDir = join(appPublicPath, "lib", info.libDir.replace(appPath, ""));
await ensureDir(destDir);
const destPath = join(destDir, info.components._lib);
const destPath = join(destDir, libFile);
componentLibraries.push(destPath);
let shouldCopy = !(await pathExists(destPath));

View File

@ -34,8 +34,16 @@ module.exports.componentLibraryInfo = async (appPath, libname) => {
}
try {
const components = await readJSON(componentsPath);
const namespacedComponents = {}
for(let cname in components) {
if(cname === "_lib") continue;
const namespacedName = `${libname}/${cname}`;
components[cname].name = namespacedName;
namespacedComponents[namespacedName] = components[cname];
}
return ({
components: await readJSON(componentsPath),
components: namespacedComponents,
libDir,
componentsPath
});

View File

@ -18,10 +18,7 @@ const {
} = require("path");
const { $ } = require("budibase-core").common;
const {
keys,
reduce,
keyBy,
filter
keyBy
} = require("lodash/fp");
const {merge} = require("lodash");
@ -61,9 +58,10 @@ const componentPath = (appPath, name) =>
module.exports.saveDerivedComponent = async (config, appname, component) => {
const appPath = appPackageFolder(config, appname);
const compPath = componentPath(appPath, component.name);
await ensureDir(dirname(compPath));
await writeJSON(
componentPath(appPath, component.name),
compPath,
component,
{encoding:"utf8", flag:"w", spaces:2});
}
@ -94,27 +92,14 @@ module.exports.deleteDerivedComponent = async (config, appname, name) => {
}
}
module.exports.componentLibraryInfo = componentLibraryInfo;
module.exports.componentLibraryInfo = async (config, appname, lib) => {
const appPath = appPackageFolder(config, appname);
return await componentLibraryInfo(appPath, lib);
};
const getRootComponents = async (appPath, pages ,lib) => {
const componentsInLibrary = async (libname) => {
const { components } = await componentLibraryInfo(appPath, libname);
return $(components, [
keys,
filter(k => k !== "_lib"),
reduce((obj, k) => {
const component = components[k];
component.name = `${libname}/${k}`;
obj[component.name] = component;
return obj;
}, {})
])
}
let libs;
if(!lib) {
pages = pages || await readJSON(
@ -129,7 +114,8 @@ const getRootComponents = async (appPath, pages ,lib) => {
const components = {};
for(let l of libs) {
merge(components, await componentsInLibrary(l))
const info = await componentLibraryInfo(appPath, l);
merge(components, info.components);
}
return components;

View File

@ -7,7 +7,7 @@
<title>{{ title }}</title>
<link rel='icon' type='image/png' href='{{ favicon }}'>
{{ each(stylesheets) }}
{{ each(options.stylesheets) }}
<link rel='stylesheet' href='{{ @this }}'>
{{ /each }}

View File

@ -1,7 +1,5 @@
{
"_lib": {
"path":"./dist/index.js"
},
"_lib": "./index.js",
"button" : {
"importPath": "button",
"name": "Button",