diff --git a/src/elements/caprover/Caprover.wc.svelte b/src/elements/caprover/Caprover.wc.svelte index 33be85c2..e306df10 100644 --- a/src/elements/caprover/Caprover.wc.svelte +++ b/src/elements/caprover/Caprover.wc.svelte @@ -17,6 +17,7 @@ import Modal from "../../components/DeploymentModal.svelte"; import hasEnoughBalance from "../../utils/hasEnoughBalance"; import validateName from "../../utils/validateName"; +import validateDomainName from "../../utils/validateDomainName"; const data = new Caprover(); let loading = false; @@ -39,11 +40,11 @@ { label: "CPU", symbol: "cpu", placeholder: "CPU", type: "number" }, { label: "Memory (MB)", symbol: 'memory', placeholder: "Memory in MB", type: "number" }, { label: "Disk Size (GB)", symbol: "diskSize", placeholder: "Disk size in GB", type: "number" }, - { label: "Domain", symbol: "domain", placeholder: "domain configured in your name provider.", type: "text" }, + { label: "Domain", symbol: "domain", placeholder: "domain configured in your name provider.", type: "text", validator: validateDomainName, invalid: false }, { label: "Password", symbol: "password", placeholder: "Caprover new password", type: "text" }, ]; - $: disabled = ((loading || !data.valid) && !(success || failed)) || !profile || status !== "valid" || fields[0].invalid; // prettier-ignore + $: disabled = ((loading || !data.valid) && !(success || failed)) || !profile || status !== "valid" || fields[0].invalid || fields[4].invalid; // prettier-ignore let message: string; let modalData: Object; async function deployCaproverHandler() { diff --git a/src/utils/validateDomainName.ts b/src/utils/validateDomainName.ts new file mode 100644 index 00000000..21263669 --- /dev/null +++ b/src/utils/validateDomainName.ts @@ -0,0 +1,7 @@ +// regex patter for validating domain name +const DOMAIN_NAME_REGEX = /^\b((?=[a-z0-9-]{1,63}\.)(xn--)?[a-z0-9]+(-[a-z0-9]+)*\.)+[a-z]{2,63}\b$/ + +// prettier-ignore +export default function validateDomainName(domain: string): string | void { + if (!DOMAIN_NAME_REGEX.test(domain)) return "Domain name is not valid"; +}