bugfixes.
This commit is contained in:
parent
ef9a0853a0
commit
e0abcdaa0e
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
|
||||
}
|
||||
}
|
|
@ -1,4 +1,5 @@
|
|||
{
|
||||
"_lib": "index.js",
|
||||
"textbox" : {
|
||||
"path": "./textbox",
|
||||
"name": "Textbox",
|
||||
|
|
|
@ -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"
|
||||
}
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
console.log("test app 1 - main");
|
File diff suppressed because one or more lines are too long
|
@ -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"}}
|
|
@ -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
|
@ -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"}}
|
|
@ -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>
|
|
@ -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"
|
|
@ -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": {}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"name": "Joes Button",
|
||||
"description": "",
|
||||
"inherits": "./standard-components/button",
|
||||
"props": {
|
||||
"className": "btn btn-danger"
|
||||
},
|
||||
"tags": [
|
||||
"button"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
{
|
||||
"name": "Success Button",
|
||||
"description": "",
|
||||
"inherits": "./standard-components/button",
|
||||
"props": {
|
||||
"className": "btn btn-primary",
|
||||
"_component": "Success Button"
|
||||
},
|
||||
"tags": [
|
||||
"button"
|
||||
]
|
||||
}
|
|
@ -1,11 +0,0 @@
|
|||
{
|
||||
"name": "another noubtbtk",
|
||||
"description": "",
|
||||
"inherits": "./standard-components/button",
|
||||
"props": {
|
||||
"contentText": "Mike"
|
||||
},
|
||||
"tags": [
|
||||
"button"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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",
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"name": "subfolder/path/buttony",
|
||||
"description": "",
|
||||
"inherits": "budibase-standard-components/button",
|
||||
"props": {},
|
||||
"tags": [
|
||||
"button"
|
||||
]
|
||||
}
|
|
@ -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"
|
||||
]
|
||||
}
|
|
@ -7,6 +7,8 @@
|
|||
"index": {},
|
||||
"appBody": ""
|
||||
},
|
||||
"componentLibraries": [],
|
||||
"componentLibraries": [
|
||||
"budibase-standard-components"
|
||||
],
|
||||
"stylesheets": []
|
||||
}
|
||||
|
|
File diff suppressed because one or more lines are too long
|
@ -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":{}}
|
|
@ -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
|
@ -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":{}}
|
|
@ -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>
|
|
@ -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
|
@ -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
|
@ -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) => {
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
||||
|
||||
|
||||
})
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
|
||||
});
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 }}
|
||||
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
{
|
||||
"_lib": {
|
||||
"path":"./dist/index.js"
|
||||
},
|
||||
"_lib": "./index.js",
|
||||
"button" : {
|
||||
"importPath": "button",
|
||||
"name": "Button",
|
||||
|
|
Loading…
Reference in New Issue