diff --git a/package.json b/package.json
index 32832460a22..8891ceacd19 100644
--- a/package.json
+++ b/package.json
@@ -78,6 +78,7 @@
"@nguniversal/express-engine": "^13.0.2",
"@ngx-translate/core": "^13.0.0",
"@nicky-lenaers/ngx-scroll-to": "^9.0.0",
+ "@rezonant/preboot": "^8.0.0",
"angular-idle-preload": "3.0.0",
"angulartics2": "^12.0.0",
"axios": "^0.27.2",
@@ -116,6 +117,7 @@
"ngx-moment": "^5.0.0",
"ngx-pagination": "5.0.0",
"ngx-sortablejs": "^11.1.0",
+ "ngx-ui-switch": "^11.0.1",
"nouislider": "^14.6.3",
"pem": "1.14.4",
"postcss-cli": "^9.1.0",
@@ -128,8 +130,7 @@
"url-parse": "^1.5.6",
"uuid": "^8.3.2",
"webfontloader": "1.6.28",
- "zone.js": "~0.11.5",
- "ngx-ui-switch": "^11.0.1"
+ "zone.js": "~0.11.5"
},
"devDependencies": {
"@angular-builders/custom-webpack": "~13.1.0",
diff --git a/src/app/app.module.ts b/src/app/app.module.ts
index ebf9aa4937a..99a84cfdc5a 100755
--- a/src/app/app.module.ts
+++ b/src/app/app.module.ts
@@ -37,6 +37,7 @@ import { APP_CONFIG, AppConfig } from '../config/app-config.interface';
import { NgxMaskModule } from 'ngx-mask';
import { StoreDevModules } from '../config/store/devtools';
import { RootModule } from './root.module';
+import { defaultOptions, PrebootModule } from '@rezonant/preboot';
export function getConfig() {
return environment;
@@ -77,6 +78,68 @@ const IMPORTS = [
StoreDevModules,
EagerThemesModule,
RootModule,
+ BrowserModule.withServerTransition({ appId: 'dspace-angular' }),
+ PrebootModule.withConfig({
+ appRoot: 'ds-app',
+ eventSelectors: [
+ // Preboot defaults START
+
+ // for recording changes in form elements
+ {
+ selector: 'input,textarea',
+ events: ['keypress', 'keyup', 'keydown', 'input', 'change']
+ },
+ { selector: 'select,option', events: ['change'] },
+
+ // when user hits return button in an input box
+ {
+ selector: 'input',
+ events: ['keyup'],
+ preventDefault: true,
+ keyCodes: [13],
+ freeze: true
+ },
+
+ // when user submit form (press enter, click on button/input[type="submit"])
+ {
+ selector: 'form',
+ events: ['submit'],
+ preventDefault: true,
+ freeze: true
+ },
+
+ // for tracking focus (no need to replay)
+ {
+ selector: 'input,textarea',
+ events: ['focusin', 'focusout', 'mousedown', 'mouseup'],
+ replay: false
+ },
+
+ // // user clicks on a button
+ // {
+ // selector: 'button',
+ // events: ['click'],
+ // preventDefault: true,
+ // freeze: true
+ // },
+
+ // Preboot defaults END
+
+ // we have a lot of "link buttons"
+ // we probably don't want to freeze either (or maybe make the overlay transparent?)
+ {
+ selector: 'a.preboot-replay,a.dropdown-toggle,button',
+ events: ['click'],
+ preventDefault: true,
+ },
+ // router links can misbehave with event replay enabled
+ {
+ selector: 'a',
+ events: ['click'],
+ preventDefault: true,
+ }
+ ]
+ })
];
const PROVIDERS = [
@@ -148,7 +211,6 @@ const EXPORTS = [
@NgModule({
imports: [
- BrowserModule.withServerTransition({ appId: 'dspace-angular' }),
...IMPORTS
],
providers: [
diff --git a/src/app/community-list-page/community-list/community-list.component.html b/src/app/community-list-page/community-list/community-list.component.html
index 821cb58473b..8facc331284 100644
--- a/src/app/community-list-page/community-list/community-list.component.html
+++ b/src/app/community-list-page/community-list/community-list.component.html
@@ -25,6 +25,7 @@
class="example-tree-node expandable-node">