diff --git a/frontend/src/routes/(root)/(logged)/resources/+page.svelte b/frontend/src/routes/(root)/(logged)/resources/+page.svelte index 87b5b0cd4b..96ca164fd1 100644 --- a/frontend/src/routes/(root)/(logged)/resources/+page.svelte +++ b/frontend/src/routes/(root)/(logged)/resources/+page.svelte @@ -77,6 +77,8 @@ schema: emptySchema(), description: '' } + let isNewResourceTypeNameValid: boolean + let editResourceType = { name: '', schema: emptySchema(), @@ -246,6 +248,8 @@ schema: emptySchema(), description: '' } + validateResourceTypeName() + resourceTypeDrawer.openDrawer?.() } @@ -338,6 +342,21 @@ deployUiSettings = settings.deploy_ui ?? ALL_DEPLOYABLE } getDeployUiSettings() + + function validateResourceTypeName() { + const snakeCaseRegex = /^[a-z0-9]+(_[a-z0-9]+)*$/ + isNewResourceTypeNameValid = snakeCaseRegex.test(newResourceType.name) + } + + function toSnakeCase() { + newResourceType.name = newResourceType.name + .replace(/([a-z0-9])([A-Z])/g, '$1_$2') + .replace(/[\W]+/g, '_') + .replace(/_+/g, '_') + .replace(/^_+|_+$/g, '') + .toLowerCase() + validateResourceTypeName() + } - +
@@ -473,6 +497,14 @@ /> {/if} + {#if newResourceType.name} + {#if !isNewResourceTypeNameValid} +

Name must be snake_case! +

+ {/if} + {/if}