|
|
|
@ -8,6 +8,7 @@ |
|
|
|
import UIkit from "uikit" |
|
|
|
import { isRootComponent } from "./pagesParsing/searchComponents" |
|
|
|
import { splitName } from "./pagesParsing/splitRootComponentName.js" |
|
|
|
import { Input, Select } from "@budibase/bbui" |
|
|
|
|
|
|
|
import { find, filter, some, map, includes } from "lodash/fp" |
|
|
|
import { assign } from "lodash" |
|
|
|
@ -21,6 +22,8 @@ |
|
|
|
let layoutComponent |
|
|
|
let screens |
|
|
|
let name = "" |
|
|
|
let nameError = "" |
|
|
|
let routeError |
|
|
|
|
|
|
|
let saveAttempted = false |
|
|
|
|
|
|
|
@ -39,12 +42,27 @@ |
|
|
|
const save = () => { |
|
|
|
saveAttempted = true |
|
|
|
|
|
|
|
const isValid = |
|
|
|
name.length > 0 && |
|
|
|
!screenNameExists(name) && |
|
|
|
route.length > 0 && |
|
|
|
!routeNameExists(route) && |
|
|
|
layoutComponent |
|
|
|
if (name.length === 0) { |
|
|
|
nameError = "Name is required" |
|
|
|
} else { |
|
|
|
if (screenNameExists(name)) { |
|
|
|
nameError = "This name is already taken" |
|
|
|
} else { |
|
|
|
nameError = "" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (route.length === 0) { |
|
|
|
routeError = "Url is required" |
|
|
|
} else { |
|
|
|
if (routeNameExists(name)) { |
|
|
|
routeError = "This url is already taken" |
|
|
|
} else { |
|
|
|
routeError = "" |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
const isValid = !routeError && !nameError |
|
|
|
|
|
|
|
if (!isValid) return |
|
|
|
|
|
|
|
@ -82,40 +100,26 @@ |
|
|
|
onOk={save} |
|
|
|
okText="Create Screen"> |
|
|
|
|
|
|
|
<div class="uk-form-horizontal"> |
|
|
|
<div> |
|
|
|
<div class="uk-margin"> |
|
|
|
<label class="uk-form-label">Name</label> |
|
|
|
<div class="uk-form-controls"> |
|
|
|
<input |
|
|
|
class="uk-input uk-form-small" |
|
|
|
class:uk-form-danger={saveAttempted && (name.length === 0 || screenNameExists(name))} |
|
|
|
bind:value={name} /> |
|
|
|
</div> |
|
|
|
<Input label="Name" error={nameError} bind:value={name} /> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="uk-margin"> |
|
|
|
<label class="uk-form-label">Route (URL)</label> |
|
|
|
<div class="uk-form-controls"> |
|
|
|
<input |
|
|
|
class="uk-input uk-form-small" |
|
|
|
class:uk-form-danger={saveAttempted && (route.length === 0 || routeNameExists(route))} |
|
|
|
bind:value={route} |
|
|
|
on:change={routeChanged} /> |
|
|
|
</div> |
|
|
|
<Input |
|
|
|
label="Url" |
|
|
|
error={routeError} |
|
|
|
bind:value={route} |
|
|
|
on:change={routeChanged} /> |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="uk-margin"> |
|
|
|
<label class="uk-form-label">Layout Component</label> |
|
|
|
<div class="uk-form-controls"> |
|
|
|
<select |
|
|
|
class="uk-select uk-form-small" |
|
|
|
bind:value={layoutComponent} |
|
|
|
class:uk-form-danger={saveAttempted && !layoutComponent}> |
|
|
|
{#each layoutComponents as { _component, name }} |
|
|
|
<option value={_component}>{name}</option> |
|
|
|
{/each} |
|
|
|
</select> |
|
|
|
</div> |
|
|
|
<label>Layout Component</label> |
|
|
|
<Select bind:value={layoutComponent}> |
|
|
|
{#each layoutComponents as { _component, name }} |
|
|
|
<option value={_component}>{name}</option> |
|
|
|
{/each} |
|
|
|
</Select> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
|
|
|
|
@ -126,28 +130,4 @@ |
|
|
|
display: flex; |
|
|
|
flex-direction: column; |
|
|
|
} |
|
|
|
|
|
|
|
.uk-form-controls { |
|
|
|
margin-left: 0 !important; |
|
|
|
} |
|
|
|
|
|
|
|
.uk-form-label { |
|
|
|
padding-bottom: 10px; |
|
|
|
font-weight: 500; |
|
|
|
font-size: 16px; |
|
|
|
color: var(--grey-7); |
|
|
|
} |
|
|
|
|
|
|
|
.uk-input { |
|
|
|
height: 40px !important; |
|
|
|
border-radius: 3px; |
|
|
|
} |
|
|
|
|
|
|
|
.uk-select { |
|
|
|
height: 40px !important; |
|
|
|
font-weight: 500px; |
|
|
|
color: var(--grey-5); |
|
|
|
border: 1px solid var(--grey-2); |
|
|
|
border-radius: 3px; |
|
|
|
} |
|
|
|
</style> |
|
|
|
|