Task: Add Hybrid for Vaadin Fusion and Flow together, but have some issues with Login recursively routes

This commit is contained in:
Sambo Chea 2021-07-25 20:04:59 +07:00
parent 85b1573391
commit 05e6fe2447
11 changed files with 54 additions and 28 deletions

View File

@ -1,9 +1,14 @@
import { Flow } from "@vaadin/flow-frontend";
import { Route } from '@vaadin/router'; import { Route } from '@vaadin/router';
import Role from './generated/com/cubetiqs/fusion/data/Role'; import Role from './generated/com/cubetiqs/fusion/data/Role';
import { appStore } from './stores/app-store'; import { appStore } from './stores/app-store';
import './views/home/home-view'; import './views/home/home-view';
import './views/main-layout'; import './views/main-layout';
const { serverSideRoutes } = new Flow({
imports: () => import('../target/frontend/generated-flow-imports'),
});
export type ViewRoute = Route & { export type ViewRoute = Route & {
title?: string; title?: string;
icon?: string; icon?: string;
@ -65,7 +70,11 @@ export const routes: ViewRoute[] = [
{ {
path: '', path: '',
component: 'main-layout', component: 'main-layout',
children: [...views], children: [
...views,
// for server-side, the next magic line sends all unmatched routes:
...serverSideRoutes, // IMPORTANT: this must be the last entry in the array
],
}, },
{ {
path: 'login', path: 'login',

View File

@ -30,7 +30,7 @@ export class LoginView extends View {
action="login" action="login"
no-forgot-password no-forgot-password
.i18n=${Object.assign( .i18n=${Object.assign(
{ header: { title: 'Fusion Management', description: 'Login using user/user or admin/admin' } }, { header: { title: 'Fusion', description: 'Login using user/user or admin/admin' } },
loginI18nDefault loginI18nDefault
)} )}
> >

View File

@ -90,6 +90,8 @@
}, },
"vaadin": { "vaadin": {
"dependencies": { "dependencies": {
"@adobe/lit-mobx": "2.0.0-rc.4",
"@fontsource/roboto": "4.5.0",
"@polymer/iron-icon": "3.0.1", "@polymer/iron-icon": "3.0.1",
"@polymer/iron-list": "3.1.0", "@polymer/iron-list": "3.1.0",
"@polymer/polymer": "3.2.0", "@polymer/polymer": "3.2.0",
@ -139,7 +141,9 @@
"@vaadin/vaadin-upload": "21.0.0-alpha13", "@vaadin/vaadin-upload": "21.0.0-alpha13",
"@vaadin/vaadin-virtual-list": "21.0.0-alpha13", "@vaadin/vaadin-virtual-list": "21.0.0-alpha13",
"construct-style-sheets-polyfill": "2.4.16", "construct-style-sheets-polyfill": "2.4.16",
"lit": "2.0.0-rc.1" "line-awesome": "1.3.0",
"lit": "2.0.0-rc.1",
"mobx": "^6.1.5"
}, },
"devDependencies": { "devDependencies": {
"@types/validator": "13.1.0", "@types/validator": "13.1.0",

View File

@ -106,7 +106,6 @@
<artifactId>a-vaadin-helper</artifactId> <artifactId>a-vaadin-helper</artifactId>
<version>1.7.1</version> <version>1.7.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.vaadin.artur.exampledata</groupId> <groupId>org.vaadin.artur.exampledata</groupId>
<artifactId>exampledata</artifactId> <artifactId>exampledata</artifactId>
@ -132,14 +131,6 @@
<artifactId>spring-boot-devtools</artifactId> <artifactId>spring-boot-devtools</artifactId>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session-data-redis</artifactId>
</dependency>
<!-- Test Framework--> <!-- Test Framework-->
<dependency> <dependency>

View File

@ -33,6 +33,9 @@ public class SecurityConfiguration extends VaadinWebSecurityConfigurerAdapter {
@Override @Override
public void configure(WebSecurity web) throws Exception { public void configure(WebSecurity web) throws Exception {
super.configure(web); super.configure(web);
web.ignoring().antMatchers("/images/logo.png"); web.ignoring()
.antMatchers(
"/images/logo.png"
);
} }
} }

View File

@ -1,15 +1,22 @@
package com.cubetiqs.fusion package com.cubetiqs.fusion
import org.springframework.boot.autoconfigure.SpringBootApplication import com.vaadin.flow.component.dependency.NpmPackage
import com.vaadin.flow.server.PWA
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
import com.vaadin.flow.component.page.AppShellConfigurator import com.vaadin.flow.component.page.AppShellConfigurator
import com.vaadin.flow.server.PWA
import com.vaadin.flow.theme.Theme import com.vaadin.flow.theme.Theme
import org.springframework.boot.SpringApplication import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
@SpringBootApplication @SpringBootApplication
@Theme(value = "fusionmanagement") @Theme(value = "fusionmanagement")
@PWA(name = "Fusion Management", shortName = "Fusion Management", offlineResources = ["images/logo.png"]) @PWA(name = "Fusion Management", shortName = "Fusion Management", offlineResources = ["images/logo.png"])
@NpmPackage.Container(
NpmPackage(value = "@fontsource/roboto", version = "4.5.0"),
NpmPackage(value = "@adobe/lit-mobx", version = "2.0.0-rc.4"),
NpmPackage(value = "mobx", version = "^6.1.5"),
NpmPackage(value = "line-awesome", version = "1.3.0"),
)
class Application : SpringBootServletInitializer(), AppShellConfigurator class Application : SpringBootServletInitializer(), AppShellConfigurator
fun main(args: Array<String>) { fun main(args: Array<String>) {

View File

@ -0,0 +1,6 @@
package com.cubetiqs.fusion.config
import org.springframework.context.annotation.Configuration
@Configuration
class DefaultConfig

View File

@ -1,8 +0,0 @@
package com.cubetiqs.fusion.config
import org.springframework.context.annotation.Configuration
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession
@Configuration
@EnableRedisHttpSession
class SessionConfig

View File

@ -0,0 +1,5 @@
package com.cubetiqs.fusion.frontend
import com.vaadin.flow.component.UI
class MainView : UI()

View File

@ -0,0 +1,11 @@
package com.cubetiqs.fusion.frontend.views.test
import com.vaadin.flow.component.html.Div
import com.vaadin.flow.router.Route
@Route("/views/test")
class TestView : Div() {
init {
add("Hello World")
}
}

View File

@ -3,12 +3,10 @@ server:
logging: logging:
level: level:
org.atmosphere: warn org:
atmosphere: warn
spring: spring:
session:
store-type: redis
mustache: mustache:
check-template-location: false check-template-location: false