New Onboarding URL Validation (#9507)
* New Onboarding URL Validation * linting * PR Feedback
This commit is contained in:
parent
91941a538f
commit
e64e3a9e45
|
@ -26,7 +26,15 @@
|
||||||
|
|
||||||
const values = writable({ name: "", url: null })
|
const values = writable({ name: "", url: null })
|
||||||
const validation = createValidationStore()
|
const validation = createValidationStore()
|
||||||
$: validation.check($values)
|
|
||||||
|
$: {
|
||||||
|
const { name, url } = $values
|
||||||
|
|
||||||
|
validation.check({
|
||||||
|
name,
|
||||||
|
url: url?.[0] === "/" ? url.substring(1, url.length) : url,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
onMount(async () => {
|
onMount(async () => {
|
||||||
const lastChar = $auth.user?.firstName
|
const lastChar = $auth.user?.firstName
|
||||||
|
@ -87,7 +95,11 @@
|
||||||
appValidation.url(validation, { apps: applications })
|
appValidation.url(validation, { apps: applications })
|
||||||
appValidation.file(validation, { template })
|
appValidation.file(validation, { template })
|
||||||
// init validation
|
// init validation
|
||||||
validation.check($values)
|
const { name, url } = $values
|
||||||
|
validation.check({
|
||||||
|
name,
|
||||||
|
url: url?.[0] === "/" ? url.substring(1, url.length) : url,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function createNewApp() {
|
async function createNewApp() {
|
||||||
|
|
|
@ -23,14 +23,25 @@
|
||||||
})
|
})
|
||||||
const validation = createValidationStore()
|
const validation = createValidationStore()
|
||||||
|
|
||||||
$: validation.check($values)
|
$: {
|
||||||
|
const { name, url } = $values
|
||||||
|
|
||||||
|
validation.check({
|
||||||
|
name,
|
||||||
|
url: url?.[0] === "/" ? url.substring(1, url.length) : url,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const setupValidation = async () => {
|
const setupValidation = async () => {
|
||||||
const applications = svelteGet(apps)
|
const applications = svelteGet(apps)
|
||||||
appValidation.name(validation, { apps: applications, currentApp: app })
|
appValidation.name(validation, { apps: applications, currentApp: app })
|
||||||
appValidation.url(validation, { apps: applications, currentApp: app })
|
appValidation.url(validation, { apps: applications, currentApp: app })
|
||||||
// init validation
|
// init validation
|
||||||
validation.check($values)
|
const { name, url } = $values
|
||||||
|
validation.check({
|
||||||
|
name,
|
||||||
|
url: url?.[0] === "/" ? url.substring(1, url.length) : url,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
async function updateApp() {
|
async function updateApp() {
|
||||||
|
|
|
@ -46,7 +46,7 @@ export const LAYOUT_NAMES = {
|
||||||
// one or more word characters and whitespace
|
// one or more word characters and whitespace
|
||||||
export const APP_NAME_REGEX = /^[\w\s]+$/
|
export const APP_NAME_REGEX = /^[\w\s]+$/
|
||||||
// zero or more non-whitespace characters
|
// zero or more non-whitespace characters
|
||||||
export const APP_URL_REGEX = /^\S*$/
|
export const APP_URL_REGEX = /^[0-9a-zA-Z-_]+$/
|
||||||
|
|
||||||
export const DefaultAppTheme = {
|
export const DefaultAppTheme = {
|
||||||
primaryColor: "var(--spectrum-global-color-blue-600)",
|
primaryColor: "var(--spectrum-global-color-blue-600)",
|
||||||
|
|
|
@ -62,11 +62,9 @@ export const url = (validation, { apps, currentApp } = { apps: [] }) => {
|
||||||
}
|
}
|
||||||
// make it clear that this is a url path and cannot be a full url
|
// make it clear that this is a url path and cannot be a full url
|
||||||
return (
|
return (
|
||||||
value.startsWith("/") &&
|
|
||||||
!value.includes("http") &&
|
!value.includes("http") &&
|
||||||
!value.includes("www") &&
|
!value.includes("www") &&
|
||||||
!value.includes(".") &&
|
!value.includes(".")
|
||||||
value.length > 1 // just '/' is not valid
|
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<script>
|
<script>
|
||||||
import { Button, FancyForm, FancyInput } from "@budibase/bbui"
|
import { Button, FancyForm, FancyInput } from "@budibase/bbui"
|
||||||
import PanelHeader from "./PanelHeader.svelte"
|
import PanelHeader from "./PanelHeader.svelte"
|
||||||
|
import { APP_URL_REGEX } from "constants"
|
||||||
|
|
||||||
export let name = ""
|
export let name = ""
|
||||||
export let url = ""
|
export let url = ""
|
||||||
|
@ -25,6 +26,10 @@
|
||||||
if (url.length < 1) {
|
if (url.length < 1) {
|
||||||
return "URL must be provided"
|
return "URL must be provided"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!APP_URL_REGEX.test(url)) {
|
||||||
|
return "Invalid URL"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue