diff --git a/bom/application/pom.xml b/bom/application/pom.xml
index 4a9dc0075cb59..a6a5c8374d208 100644
--- a/bom/application/pom.xml
+++ b/bom/application/pom.xml
@@ -220,7 +220,7 @@
0.8.9
1.0.0
- 1.0.7
+ 1.0.8
24.0.2
2.7.2
3.3.1
diff --git a/extensions/kubernetes/vanilla/deployment/src/main/resources/dev-ui/qwc-kubernetes-manifest.js b/extensions/kubernetes/vanilla/deployment/src/main/resources/dev-ui/qwc-kubernetes-manifest.js
index ae3c64d3954e3..6c33ed70fb676 100644
--- a/extensions/kubernetes/vanilla/deployment/src/main/resources/dev-ui/qwc-kubernetes-manifest.js
+++ b/extensions/kubernetes/vanilla/deployment/src/main/resources/dev-ui/qwc-kubernetes-manifest.js
@@ -1,16 +1,12 @@
import { LitElement, html, css} from 'lit';
import { JsonRpc } from 'jsonrpc';
-import { until } from 'lit/directives/until.js';
-import { observeState } from 'lit-element-state';
-import { themeState } from 'theme-state';
-import '@vanillawc/wc-codemirror';
-import '@vanillawc/wc-codemirror/mode/yaml/yaml.js';
+import 'qui-code-block';
import '@vaadin/icon';
import '@vaadin/tabs';
import '@vaadin/tabsheet';
import '@vaadin/progress-bar';
-export class QwcKubernetesManifest extends observeState(LitElement) {
+export class QwcKubernetesManifest extends LitElement {
jsonRpc = new JsonRpc(this);
@@ -101,13 +97,10 @@ export class QwcKubernetesManifest extends observeState(LitElement) {
let yaml = this._manifests.get(key);
return html`
-
-
-
-
+
+
`;
}
diff --git a/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/BuildTimeContentProcessor.java b/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/BuildTimeContentProcessor.java
index 8c86ff8afb119..78074c4e63ed4 100644
--- a/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/BuildTimeContentProcessor.java
+++ b/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/BuildTimeContentProcessor.java
@@ -69,6 +69,8 @@ InternalImportMapBuildItem createKnownInternalImportMap(NonApplicationRootPathBu
internalImportMapBuildItem.add("qui/", contextRoot + "qui/");
internalImportMapBuildItem.add("qui-badge", contextRoot + "qui/qui-badge.js");
internalImportMapBuildItem.add("qui-alert", contextRoot + "qui/qui-alert.js");
+ internalImportMapBuildItem.add("qui-code-block", contextRoot + "qui/qui-code-block.js");
+
// Echarts
internalImportMapBuildItem.add("echarts/", contextRoot + "echarts/");
internalImportMapBuildItem.add("echarts-gauge-grade", contextRoot + "echarts/echarts-gauge-grade.js");
@@ -231,13 +233,15 @@ QuteTemplateBuildItem createIndexHtmlTemplate(
Map importMap = importMapBuildItem.getImportMap();
aggregator.addMappings(importMap);
}
- String importmap = aggregator.aggregateAsJson();
+ String importmap = aggregator.aggregateAsJson(nonApplicationRootPathBuildItem.getNonApplicationRootPath());
aggregator.reset();
String themeVars = themeVarsBuildItem.getTemplateValue();
- String contextRoot = nonApplicationRootPathBuildItem.getNonApplicationRootPath() + DEV_UI + SLASH;
+ String nonApplicationRoot = nonApplicationRootPathBuildItem.getNonApplicationRootPath();
+ String contextRoot = nonApplicationRoot + DEV_UI + SLASH;
Map data = Map.of(
+ "nonApplicationRoot", nonApplicationRoot,
"contextRoot", contextRoot,
"importmap", importmap,
"themeVars", themeVars);
diff --git a/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/DevUIProcessor.java b/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/DevUIProcessor.java
index 53edd36dc8eff..848f1969df0f8 100644
--- a/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/DevUIProcessor.java
+++ b/extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/DevUIProcessor.java
@@ -193,15 +193,17 @@ void registerDevUiHandlers(
}
// Static mvnpm jars
- routeProducer.produce(RouteBuildItem.builder()
- .route("/_static" + SLASH_ALL)
- .handler(recorder.mvnpmHandler(mvnpmBuildItem.getMvnpmJars()))
- .build());
+ String contextRoot = nonApplicationRootPathBuildItem.getNonApplicationRootPath();
+ routeProducer.produce(
+ nonApplicationRootPathBuildItem.routeBuilder()
+ .route("_static" + SLASH_ALL)
+ .handler(recorder.mvnpmHandler(contextRoot, mvnpmBuildItem.getMvnpmJars()))
+ .build());
// Redirect /q/dev -> /q/dev-ui
- routeProducer.produce(RouteBuildItem.builder()
- .route("/q/dev")
- .handler(recorder.redirect())
+ routeProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
+ .route("dev")
+ .handler(recorder.redirect(contextRoot))
.build());
}
diff --git a/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui-templates/build-time/index.html b/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui-templates/build-time/index.html
index 1121d8880ab79..d4535e3ddd931 100644
--- a/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui-templates/build-time/index.html
+++ b/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui-templates/build-time/index.html
@@ -5,7 +5,7 @@
-
+
+ `;
+ }
+ }
+
+}
+
+customElements.define('qui-code-block', QuiCodeBlock);
diff --git a/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-dev-services.js b/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-dev-services.js
index 647d99349d61b..f54e9d81a5ab0 100644
--- a/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-dev-services.js
+++ b/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-dev-services.js
@@ -2,6 +2,7 @@ import {LitElement, html, css} from 'lit';
import {devServices} from 'devui-data';
import '@vaadin/vertical-layout';
import '@vaadin/icon';
+import 'qui-code-block';
/**
* This component shows the Dev Services Page
@@ -87,7 +88,7 @@ export class QwcDevServices extends LitElement {
You do not have any Dev Services running.
Read more about Dev Services
- `
+ `;
}
}
@@ -121,7 +122,10 @@ export class QwcDevServices extends LitElement {
let properties = ''.concat(...list);
return html`
-
${properties.trim()}
+
+
`;
}
}
diff --git a/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-external-page.js b/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-external-page.js
index c7cfd0ab7adc3..a6765e54b0463 100644
--- a/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-external-page.js
+++ b/extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-external-page.js
@@ -1,18 +1,13 @@
import { LitElement, html, css} from 'lit';
-import { until } from 'lit/directives/until.js';
import { RouterController } from 'router-controller';
-import { observeState } from 'lit-element-state';
-import { themeState } from 'theme-state';
-import '@vanillawc/wc-codemirror';
-import '@vanillawc/wc-codemirror/mode/yaml/yaml.js';
-import '@vanillawc/wc-codemirror/mode/properties/properties.js';
-import '@vanillawc/wc-codemirror/mode/javascript/javascript.js';
import '@vaadin/icon';
+import 'qui-code-block';
+import '@vaadin/progress-bar';
/**
* This component loads an external page
*/
-export class QwcExternalPage extends observeState(LitElement) {
+export class QwcExternalPage extends LitElement {
routerController = new RouterController(this);
static styles = css`
@@ -52,7 +47,15 @@ export class QwcExternalPage extends observeState(LitElement) {
}
render() {
- return html`${until(this._loadExternal(), html`Loading with ${themeState.theme.name} theme`)}`;
+ if(this._mode){
+ return this._loadExternal();
+ }else {
+ return html`
+ `;
+ }
}
_autoDetectMimeType(){
@@ -89,17 +92,17 @@ export class QwcExternalPage extends observeState(LitElement) {
height='100%'>
`;
} else {
+ let currentPath = window.location.pathname;
+ currentPath = currentPath.substring(0, currentPath.indexOf('/dev'));
return html`
Download
-
-
-
+
+
`;
}
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
index 6702ee7c3ce43..4b8eca0d50688 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
@@ -90,16 +90,16 @@ public Handler vaadinRouterHandler(String basePath) {
return new VaadinRouterHandler(basePath);
}
- public Handler mvnpmHandler(Set mvnpmJarFiles) {
- return new MvnpmHandler(mvnpmJarFiles);
+ public Handler mvnpmHandler(String root, Set mvnpmJarFiles) {
+ return new MvnpmHandler(root, mvnpmJarFiles);
}
- public Handler redirect() {
+ public Handler redirect(String contextRoot) {
return new Handler() {
@Override
public void handle(RoutingContext rc) {
// 308 because we also want to redirect other HTTP Methods (and not only GET).
- rc.response().putHeader("Location", "/q/dev-ui").setStatusCode(308).end();
+ rc.response().putHeader("Location", contextRoot + "dev-ui").setStatusCode(308).end();
}
};
}
diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/MvnpmHandler.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/MvnpmHandler.java
index 9c8f99e8f5a1e..5d68e31d9c382 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/MvnpmHandler.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/MvnpmHandler.java
@@ -18,15 +18,17 @@
public class MvnpmHandler implements Handler {
private final URLClassLoader mvnpmLoader;
+ private final String root;
- public MvnpmHandler(Set mvnpmJars) {
+ public MvnpmHandler(String root, Set mvnpmJars) {
+ this.root = root;
this.mvnpmLoader = new URLClassLoader(mvnpmJars.toArray(new URL[] {}));
}
@Override
public void handle(RoutingContext event) {
+ String fullPath = event.normalizedPath().replaceFirst(root, SLASH);
// Find the "filename" and see if it has a file extension
- String fullPath = event.normalizedPath();
String parts[] = fullPath.split(SLASH);
String fileName = parts[parts.length - 1];