Update grid rows and columns settings and add them to screen settings
This commit is contained in:
parent
8879188595
commit
1219463162
|
@ -6,6 +6,7 @@
|
||||||
Checkbox,
|
Checkbox,
|
||||||
Banner,
|
Banner,
|
||||||
Select,
|
Select,
|
||||||
|
Stepper,
|
||||||
notifications,
|
notifications,
|
||||||
} from "@budibase/bbui"
|
} from "@budibase/bbui"
|
||||||
import PropertyControl from "components/design/settings/controls/PropertyControl.svelte"
|
import PropertyControl from "components/design/settings/controls/PropertyControl.svelte"
|
||||||
|
@ -17,9 +18,113 @@
|
||||||
import BarButtonList from "components/design/settings/controls/BarButtonList.svelte"
|
import BarButtonList from "components/design/settings/controls/BarButtonList.svelte"
|
||||||
|
|
||||||
$: bindings = getBindableProperties($selectedScreen, null)
|
$: bindings = getBindableProperties($selectedScreen, null)
|
||||||
|
$: screenSettings = getScreenSettings($selectedScreen)
|
||||||
|
|
||||||
let errors = {}
|
let errors = {}
|
||||||
|
|
||||||
|
const getScreenSettings = screen => {
|
||||||
|
let settings = [
|
||||||
|
{
|
||||||
|
key: "routing.homeScreen",
|
||||||
|
control: Checkbox,
|
||||||
|
props: {
|
||||||
|
text: "Set as home screen",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "routing.route",
|
||||||
|
label: "Route",
|
||||||
|
control: Input,
|
||||||
|
parser: val => {
|
||||||
|
if (!val.startsWith("/")) {
|
||||||
|
val = "/" + val
|
||||||
|
}
|
||||||
|
return sanitizeUrl(val)
|
||||||
|
},
|
||||||
|
validate: route => {
|
||||||
|
const existingRoute = screen.routing.route
|
||||||
|
if (route !== existingRoute && routeTaken(route)) {
|
||||||
|
return "That URL is already in use for this role"
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "routing.roleId",
|
||||||
|
label: "Access",
|
||||||
|
control: RoleSelect,
|
||||||
|
validate: role => {
|
||||||
|
const existingRole = screen.routing.roleId
|
||||||
|
if (role !== existingRole && roleTaken(role)) {
|
||||||
|
return "That role is already in use for this URL"
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "onLoad",
|
||||||
|
label: "On screen load",
|
||||||
|
control: ButtonActionEditor,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "width",
|
||||||
|
label: "Width",
|
||||||
|
control: Select,
|
||||||
|
props: {
|
||||||
|
options: ["Extra small", "Small", "Medium", "Large", "Max"],
|
||||||
|
placeholder: "Default",
|
||||||
|
disabled: !!screen.layoutId,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "props.layout",
|
||||||
|
label: "Layout",
|
||||||
|
defaultValue: "flex",
|
||||||
|
control: BarButtonList,
|
||||||
|
props: {
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
barIcon: "ModernGridView",
|
||||||
|
value: "flex",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
barIcon: "ViewGrid",
|
||||||
|
value: "grid",
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
// Add grid layout settings if required
|
||||||
|
if (screen.props.layout === "grid") {
|
||||||
|
settings = settings.concat([
|
||||||
|
{
|
||||||
|
key: "props.cols",
|
||||||
|
label: "Columns",
|
||||||
|
control: Stepper,
|
||||||
|
defaultValue: 12,
|
||||||
|
props: {
|
||||||
|
min: 2,
|
||||||
|
max: 50,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
key: "props.rows",
|
||||||
|
label: "Rows",
|
||||||
|
control: Stepper,
|
||||||
|
defaultValue: 12,
|
||||||
|
props: {
|
||||||
|
min: 2,
|
||||||
|
max: 50,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
])
|
||||||
|
}
|
||||||
|
|
||||||
|
return settings
|
||||||
|
}
|
||||||
|
|
||||||
const routeTaken = url => {
|
const routeTaken = url => {
|
||||||
const roleId = get(selectedScreen).routing.roleId || "BASIC"
|
const roleId = get(selectedScreen).routing.roleId || "BASIC"
|
||||||
return get(screenStore).screens.some(
|
return get(screenStore).screens.some(
|
||||||
|
@ -72,79 +177,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$: screenSettings = [
|
|
||||||
{
|
|
||||||
key: "routing.homeScreen",
|
|
||||||
control: Checkbox,
|
|
||||||
props: {
|
|
||||||
text: "Set as home screen",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "routing.route",
|
|
||||||
label: "Route",
|
|
||||||
control: Input,
|
|
||||||
parser: val => {
|
|
||||||
if (!val.startsWith("/")) {
|
|
||||||
val = "/" + val
|
|
||||||
}
|
|
||||||
return sanitizeUrl(val)
|
|
||||||
},
|
|
||||||
validate: route => {
|
|
||||||
const existingRoute = get(selectedScreen).routing.route
|
|
||||||
if (route !== existingRoute && routeTaken(route)) {
|
|
||||||
return "That URL is already in use for this role"
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "routing.roleId",
|
|
||||||
label: "Access",
|
|
||||||
control: RoleSelect,
|
|
||||||
validate: role => {
|
|
||||||
const existingRole = get(selectedScreen).routing.roleId
|
|
||||||
if (role !== existingRole && roleTaken(role)) {
|
|
||||||
return "That role is already in use for this URL"
|
|
||||||
}
|
|
||||||
return null
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "onLoad",
|
|
||||||
label: "On screen load",
|
|
||||||
control: ButtonActionEditor,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "width",
|
|
||||||
label: "Width",
|
|
||||||
control: Select,
|
|
||||||
props: {
|
|
||||||
options: ["Extra small", "Small", "Medium", "Large", "Max"],
|
|
||||||
placeholder: "Default",
|
|
||||||
disabled: !!$selectedScreen.layoutId,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
{
|
|
||||||
key: "props.layout",
|
|
||||||
label: "Layout",
|
|
||||||
defaultValue: "flex",
|
|
||||||
control: BarButtonList,
|
|
||||||
props: {
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
barIcon: "ModernGridView",
|
|
||||||
value: "flex",
|
|
||||||
},
|
|
||||||
{
|
|
||||||
barIcon: "ViewGrid",
|
|
||||||
value: "grid",
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
},
|
|
||||||
]
|
|
||||||
|
|
||||||
const removeCustomLayout = async () => {
|
const removeCustomLayout = async () => {
|
||||||
return screenStore.removeCustomLayout(get(selectedScreen))
|
return screenStore.removeCustomLayout(get(selectedScreen))
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,7 +33,7 @@
|
||||||
{/each}
|
{/each}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<Layout gap="S" paddingX="L" paddingY="XL">
|
<Layout gap="XS" paddingX="L" paddingY="XL">
|
||||||
{#if activeTab === "theme"}
|
{#if activeTab === "theme"}
|
||||||
<ThemePanel />
|
<ThemePanel />
|
||||||
{:else}
|
{:else}
|
||||||
|
|
|
@ -151,7 +151,9 @@
|
||||||
"label": "Columns",
|
"label": "Columns",
|
||||||
"key": "cols",
|
"key": "cols",
|
||||||
"placeholder": 12,
|
"placeholder": 12,
|
||||||
"min": 1,
|
"defaultValue": 12,
|
||||||
|
"min": 2,
|
||||||
|
"max": 50,
|
||||||
"dependsOn": {
|
"dependsOn": {
|
||||||
"setting": "layout",
|
"setting": "layout",
|
||||||
"value": "grid"
|
"value": "grid"
|
||||||
|
@ -162,7 +164,9 @@
|
||||||
"label": "Rows",
|
"label": "Rows",
|
||||||
"key": "rows",
|
"key": "rows",
|
||||||
"placeholder": 12,
|
"placeholder": 12,
|
||||||
"min": 1,
|
"defaultValue": 12,
|
||||||
|
"min": 2,
|
||||||
|
"max": 50,
|
||||||
"dependsOn": {
|
"dependsOn": {
|
||||||
"setting": "layout",
|
"setting": "layout",
|
||||||
"value": "grid"
|
"value": "grid"
|
||||||
|
|
Loading…
Reference in New Issue