diff --git a/packages/builder/cypress/integration/createScreen.js b/packages/builder/cypress/integration/createScreen.js index 4e166daaec..26c7cdd846 100644 --- a/packages/builder/cypress/integration/createScreen.js +++ b/packages/builder/cypress/integration/createScreen.js @@ -7,5 +7,15 @@ context("Screen Tests", () => { it("Should successfully create a screen", () => { cy.createScreen("Test Screen", "/test") + cy.get(".nav-items-container").within(() => { + cy.contains("/test").should("exist") + }) + }) + + it("Should update the url", () => { + cy.createScreen("Test Screen", "test with spaces") + cy.get(".nav-items-container").within(() => { + cy.contains("/test-with-spaces").should("exist") + }) }) }) diff --git a/packages/builder/cypress/support/commands.js b/packages/builder/cypress/support/commands.js index d7452284a4..261b840577 100644 --- a/packages/builder/cypress/support/commands.js +++ b/packages/builder/cypress/support/commands.js @@ -160,7 +160,4 @@ Cypress.Commands.add("createScreen", (screenName, route) => { cy.get("input").eq(1).type(route) cy.get(".spectrum-Button--cta").click() }) - cy.get(".nav-items-container").within(() => { - cy.contains(route).should("exist") - }) }) diff --git a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte index a4c057abba..fb6b1c5ffa 100644 --- a/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte +++ b/packages/builder/src/components/design/NavigationPanel/NewScreenModal.svelte @@ -84,6 +84,7 @@ if (!event.detail.startsWith("/")) { route = "/" + event.detail } + route = route.replaceAll(" ", "-") } diff --git a/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte b/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte index 79f262eaae..81c18d9f18 100644 --- a/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/ScreenSettingsSection.svelte @@ -11,7 +11,11 @@ export let componentInstance export let bindings - function setAssetProps(name, value) { + function setAssetProps(name, value, parser) { + if (parser && typeof parser === "function") { + value = parser(value) + } + const selectedAsset = get(currentAsset) store.update(state => { if ( @@ -29,7 +33,12 @@ const screenSettings = [ // { key: "description", label: "Description", control: Input }, - { key: "routing.route", label: "Route", control: Input }, + { + key: "routing.route", + label: "Route", + control: Input, + parser: val => val.replaceAll(" ", "-"), + }, { key: "routing.roleId", label: "Access", control: RoleSelect }, { key: "layoutId", label: "Layout", control: LayoutSelect }, ] @@ -44,7 +53,7 @@ label={def.label} key={def.key} value={deepGet($currentAsset, def.key)} - onChange={val => setAssetProps(def.key, val)} + on:change={event => setAssetProps(def.key, event.detail, def.parser)} {bindings} /> {/each}