@openremote/or-app 1.8.0-snapshot.20250723203453 → 1.8.0-snapshot.20250725074716
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/app.js +1 -1
- package/lib/index.js +14 -14
- package/lib/or-header.js +32 -32
- package/lib/page-offline.js +3 -3
- package/lib/types.d.ts +1 -1
- package/lib/types.js +1 -1
- package/package.json +17 -17
package/lib/app.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{createSlice}from"@reduxjs/toolkit";
|
|
1
|
+
import{createSlice as a}from"@reduxjs/toolkit";let INITIAL_STATE={page:"",params:null,offline:!1,visible:!0,resolved:!1,drawerOpened:!1,scrollTop:0,realm:void 0},appSlice=a({name:"app",initialState:INITIAL_STATE,reducers:{updatePage:(a,e)=>Object.assign(Object.assign({},a),{page:"string"==typeof e.payload?e.payload:e.payload.page,params:"string"==typeof e.payload?null:e.payload.params}),updateDrawer:(a,e)=>Object.assign(Object.assign({},a),{drawerOpened:e.payload}),scrollToTop:(a,e)=>Object.assign(Object.assign({},a),{scrollTop:e.payload}),updateRealm:(a,e)=>Object.assign(Object.assign({},a),{realm:e.payload}),setOffline:(a,e)=>Object.assign(Object.assign({},a),{offline:e.payload}),setVisibility:(a,e)=>Object.assign(Object.assign({},a),{visible:e.payload})}});export const{updatePage,updateDrawer,scrollToTop,updateRealm,setOffline,setVisibility}=appSlice.actions;export const appReducer=appSlice.reducer;
|
package/lib/index.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,o
|
|
1
|
+
var __decorate=this&&this.__decorate||function(e,i,t,o){var r,n=arguments.length,a=n<3?i:null===o?o=Object.getOwnPropertyDescriptor(i,t):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,i,t,o);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(a=(n<3?r(a):n>3?r(i,t,a):r(i,t))||a);return n>3&&a&&Object.defineProperty(i,t,a),a},__awaiter=this&&this.__awaiter||function(e,i,t,o){return new(t||(t=Promise))(function(r,n){function a(e){try{l(o.next(e))}catch(e){n(e)}}function s(e){try{l(o.throw(e))}catch(e){n(e)}}function l(e){var i;e.done?r(e.value):((i=e.value)instanceof t?i:new t(function(e){e(i)})).then(a,s)}l((o=o.apply(e,i||[])).next())})};import{css as e,html as i,LitElement as t,unsafeCSS as o}from"lit";import{customElement as r,property as n,query as a,state as s}from"lit/decorators.js";import{router as l}from"./types";import"@openremote/or-translate";import"@openremote/or-mwc-components/or-mwc-menu";import"@openremote/or-mwc-components/or-mwc-snackbar";import"./or-header";import"@openremote/or-icon";import{updateMetadata as p}from"pwa-helpers/metadata";import c from"i18next";import h,{DefaultColor2 as f,DefaultColor3 as d,DefaultColor4 as g,normaliseConfig as m,ORError as _,OREvent as u,Util as v}from"@openremote/core";import{DEFAULT_LANGUAGES as y}from"./or-header";import{OrMwcDialog as b,showDialog as C,showErrorDialog as w}from"@openremote/or-mwc-components/or-mwc-dialog";import{OrMwcSnackbar as E}from"@openremote/or-mwc-components/or-mwc-snackbar";import{setOffline as A,setVisibility as O,updatePage as k,updateRealm as F}from"./app";import{InputType as $}from"@openremote/or-mwc-components/or-mwc-input";import{pageOfflineProvider as L}from"./page-offline";export const DefaultLogo=require("../images/logo.svg");export const DefaultMobileLogo=require("../images/logo-mobile.svg");export const DefaultFavIcon=require("../images/favicon.ico");export*from"./app";export*from"./or-header";export*from"./types";export function getDefaultManagerConfig(){return m(DEFAULT_MANAGER_CONFIG)}let DEFAULT_MANAGER_CONFIG={managerUrl:MANAGER_URL||"",keycloakUrl:KEYCLOAK_URL||"",auth:"KEYCLOAK",autoLogin:!0,realm:void 0,consoleAutoEnable:!0,loadTranslations:["or"]},OrApp=class extends t{static get styles(){return e`
|
|
2
2
|
:host {
|
|
3
|
-
--or-app-color2: ${
|
|
4
|
-
--or-app-color3: ${
|
|
5
|
-
--or-app-color4: ${
|
|
3
|
+
--or-app-color2: ${o(f)};
|
|
4
|
+
--or-app-color3: ${o(d)};
|
|
5
|
+
--or-app-color4: ${o(g)};
|
|
6
6
|
--or-console-primary-color: #4D9D2A;
|
|
7
|
-
color: ${
|
|
8
|
-
fill: ${
|
|
7
|
+
color: ${o(d)};
|
|
8
|
+
fill: ${o(d)};
|
|
9
9
|
font-size: 14px;
|
|
10
10
|
|
|
11
11
|
height: 100vh; /* Fallback */
|
|
@@ -47,10 +47,10 @@ var __decorate=this&&this.__decorate||function(e,t,o,i){var a,r=arguments.length
|
|
|
47
47
|
or-header a > or-icon {
|
|
48
48
|
margin-right: 10px;
|
|
49
49
|
}
|
|
50
|
-
`}constructor(e){super(),this._initialised=!1,this._offline=!1,this._showOfflineFallback=!1,this._onEvent=e=>this._handleEvent(e),this._onVisibilityChanged=e=>this._handleVisibilityChange(e),this._store=e,
|
|
51
|
-
${this._config.styles?"string"==typeof this._config.styles?
|
|
50
|
+
`}constructor(e){super(),this._initialised=!1,this._offline=!1,this._showOfflineFallback=!1,this._onEvent=e=>this._handleEvent(e),this._onVisibilityChanged=e=>this._handleVisibilityChange(e),this._store=e,b.DialogHostElement=this,E.DialogHostElement=this}getState(){return this._store.getState()}_handleVisibilityChange(e){var i;"visible"===document.visibilityState?(this._store.dispatch(O(!0)),(null==(i=h.console)?void 0:i.isMobile)&&this._offline&&this._startOfflineFallbackTimer(!0),h.reconnect()):this._store.dispatch(O(!1))}connectedCallback(){super.connectedCallback(),this._storeUnsubscribe=this._store.subscribe(()=>this.stateChanged(this.getState())),document.addEventListener("visibilitychange",this._onVisibilityChanged),this.stateChanged(this.getState())}disconnectedCallback(){this._storeUnsubscribe(),document.removeEventListener("visibilityChange",this._onVisibilityChanged),h.removeListener(this._onEvent),super.disconnectedCallback()}firstUpdated(e){super.firstUpdated(e);let i=this.managerConfig?Object.assign(Object.assign({},DEFAULT_MANAGER_CONFIG),this.managerConfig):DEFAULT_MANAGER_CONFIG;i.realm||(i.realm=v.getQueryParameter("realm")),i.defaultLanguage||(i.defaultLanguage=v.getBrowserLanguage()),i.skipFallbackToBasicAuth=!0,i.basicLoginProvider=(e,i)=>this.doBasicLogin(e,i),console.info("Initialising the manager"),h.init(i).then(e=>__awaiter(this,void 0,void 0,function*(){if(e||h.error!==_.AUTH_FAILED||i.auth&&"KEYCLOAK"!==i.auth||(this.doAppConfigInit(),i.auth="BASIC",e=yield h.init(i)),e){let e;if(this.doAppConfigInit(),!this.appConfig){w("appError.noConfig",document.body),console.error("No AppConfig supplied");return}if(!this._config){w("appError.noConfig",document.body),console.error("No default AppConfig or realm specific config provided so cannot render");return}if(!this._store){w("appError.noReduxStore",document.body),console.error("No Redux store supplied");return}if(!this.appConfig.pages||0===Object.keys(this.appConfig.pages).length){w("appError.noPages",document.body),console.error("No page providers");return}let i=yield h.rest.api.RealmResource.getAccessible();this._realms=i.data,h.isSuperUser()&&(e=window.sessionStorage.getItem("realm"))&&!this._realms.some(i=>i.name===e)&&(e=void 0),this._store.dispatch(F(e||h.getRealm()||"master")),this._initialised=!0,h.addListener(this._onEvent),l.hooks({before(e,i){var t;t=i?i.url.split("/")[0]:void 0,this._activeMenu=t,e()}}),this.appConfig.pages.forEach((e,i)=>{e.routes&&e.routes.forEach(i=>{l.on(i,i=>{this._store.dispatch(k({page:e.name,params:i.data}))})})}),this.appConfig.pages.length>0&&l.notFound(()=>{this._store.dispatch(k(this.appConfig.pages[0].name))}),l.resolve()}else w(h.isError?"managerError."+h.error:"")}))}updated(e){var i,t;if(super.updated(e),this._initialised&&(e.has("_page")||e.has("_offline")||e.has("_showOfflineFallback"))){if(this._mainElem){let o=this.appConfig.pages.find(e=>e.name===this._page),r=this._showOfflineFallback&&!(null==o?void 0:o.allowOffline),n=this._mainElem.querySelector("#offline-page");if(e.has("_page")&&o){let e=this._mainElem.firstElementChild;if(e){let i=o.pageCreator();r&&(i.style.setProperty("display","none"),i.setAttribute("loadedDuringOffline","true")),this._mainElem.replaceChild(i,e)}else this._mainElem.appendChild(o.pageCreator())}if(n&&!r){this._mainElem.removeChild(n);let e=this._mainElem.firstElementChild;null==e||e.style.removeProperty("display"),(null==e?void 0:e.onRefresh)&&e.onRefresh()}else if(!n&&r){let e=(null==(i=this.appConfig)?void 0:i.offlinePage)?this.appConfig.offlinePage.pageCreator():L(this._store).pageCreator();null==(t=this._mainElem.firstElementChild)||t.style.setProperty("display","none"),e.id="offline-page",this._mainElem.appendChild(e)}}this.updateWindowTitle()}}shouldUpdate(e){var i,t;if(e.has("_realm")&&(this._config=this._getConfig(),this._realm?(h.displayRealm=this._realm,window.sessionStorage.setItem("realm",this._realm)):window.sessionStorage.removeItem("realm")),e.has("_config")&&this._config){this._config.logo?this._config.logo=(null!=(i=h.managerUrl)?i:"")+this._config.logo:this._config.logo=DefaultLogo,this._config.logoMobile?this._config.logoMobile=(null!=(t=h.managerUrl)?t:"")+this._config.logoMobile:this._config.logoMobile=DefaultMobileLogo;let e=this._config&&this._config.favicon?(h.managerUrl||"")+this._config.favicon:DefaultFavIcon,o=document.querySelector("link[rel~='icon']");o||((o=document.createElement("link")).rel="icon",document.getElementsByTagName("head")[0].appendChild(o)),o.href=e}return this.updateWindowTitle(),super.shouldUpdate(e)}render(){let e;if(!this._initialised)return i`<or-mwc-dialog id="app-modal"></or-mwc-dialog>`;if(h.consoleAppConfig){let t=h.consoleAppConfig,o=t.primaryColor,r=t.secondaryColor;e=i`<style>:host {--or-console-primary-color:${o};--or-console-secondary-color:${r};}</style>`}return i`
|
|
51
|
+
${this._config.styles?"string"==typeof this._config.styles?i`<style>${this._config.styles}</style>`:this._config.styles.strings:""}
|
|
52
52
|
${e}
|
|
53
|
-
${this._config.header?
|
|
53
|
+
${this._config.header?i`
|
|
54
54
|
<or-header .activeMenu="${this._activeMenu}" .store="${this._store}" .realm="${this._realm}" .realms="${this._realms}" .logo="${this._config.logo}" .logoMobile="${this._config.logoMobile}" .config="${this._config.header}"></or-header>
|
|
55
55
|
`:""}
|
|
56
56
|
|
|
@@ -58,7 +58,7 @@ var __decorate=this&&this.__decorate||function(e,t,o,i){var a,r=arguments.length
|
|
|
58
58
|
<main role="main" class="main-content d-none"></main>
|
|
59
59
|
|
|
60
60
|
<slot></slot>
|
|
61
|
-
`}stateChanged(e){this._realm=e.app.realm,this._page=e.app.page,this._offline=e.app.offline}_handleEvent(e){e===
|
|
61
|
+
`}stateChanged(e){this._realm=e.app.realm,this._page=e.app.page,this._offline=e.app.offline}_handleEvent(e){e===u.OFFLINE?(this._offline||this._store.dispatch(A(!0)),this._startOfflineFallbackTimer()):e===u.ONLINE&&this._offline&&(this._showOfflineFallback=!1,this._completeOfflineFallbackTimer(),this._store.dispatch(A(!1)))}_startOfflineFallbackTimer(e=!1){var i;if(e)this._completeOfflineFallbackTimer(!0);else if(this._offlineFallbackDeferred||this._showOfflineFallback)return;let t=new v.Deferred,o=!1;t.promise.then(()=>{this._showOfflineFallback=this._offline}).finally(()=>{o=!0}),setTimeout(()=>{o||t.resolve()},(null==(i=this.appConfig)?void 0:i.offlineTimeout)||2e4),this._offlineFallbackDeferred=t}_completeOfflineFallbackTimer(e=!1){var i,t;e?null==(i=this._offlineFallbackDeferred)||i.reject():null==(t=this._offlineFallbackDeferred)||t.resolve(),this._offlineFallbackDeferred=void 0}logout(){h.logout()}setLanguage(e){h.language=e}showLanguageModal(){C(new b().setHeading("language").setDismissAction(null).setStyles(i`<style>.selected { color: ${o(g)} }</style>`).setActions(Object.entries(this.appConfig.languages||y).map(([e,t])=>({content:i`<span class="${e===h.language?"selected":""}">${c.t(t)}</span>`,actionName:e,action:()=>{h.language=e}}))))}doAppConfigInit(){this.appConfig=this.appConfig||(this.appConfigProvider?this.appConfigProvider(h):void 0),this.appConfig&&(this._config||(this._config=this._getConfig()))}doBasicLogin(e,t){let o=new v.Deferred,r=e,n=t,a=i`
|
|
62
62
|
#login-logo {
|
|
63
63
|
width: 24px;
|
|
64
64
|
height: 24px;
|
|
@@ -68,9 +68,9 @@ var __decorate=this&&this.__decorate||function(e,t,o,i){var a,r=arguments.length
|
|
|
68
68
|
margin: 10px 0;
|
|
69
69
|
width: 100%;
|
|
70
70
|
}
|
|
71
|
-
`;return
|
|
71
|
+
`;return C(new b().setStyles(i`<style>${a}</style>`).setHeading(i`<img id="login-logo" src="${this._config.logoMobile||this._config.logo}" /></or-icon><or-translate value="login"></or-translate>`).setContent(i`
|
|
72
72
|
<div id="login_wrapper">
|
|
73
|
-
<or-mwc-input .label="${
|
|
74
|
-
<or-mwc-input .label="${
|
|
73
|
+
<or-mwc-input .label="${c.t("user")}" .type="${$.TEXT}" min="1" required .value="${e}" @or-mwc-input-changed="${e=>r=e.detail.value}"></or-mwc-input>
|
|
74
|
+
<or-mwc-input .label="${c.t("password")}" .type="${$.PASSWORD}" min="1" required .value="${t}" @or-mwc-input-changed="${e=>n=e.detail.value}"></or-mwc-input>
|
|
75
75
|
</div>
|
|
76
|
-
`).setActions([{actionName:"submit",default:!0,action:()=>{o.resolve({cancel:!1,username:
|
|
76
|
+
`).setActions([{actionName:"submit",default:!0,action:()=>{o.resolve({cancel:!1,username:r,password:n})},content:i`<or-mwc-input .type=${$.BUTTON} .label="${c.t("submit")}" raised></or-mwc-input>`}]),document.body),o.promise}updateWindowTitle(){if(!this._initialised)return;let e=this._config.appTitle||"",i=c.isInitialized?c.t(e):e,t=this._mainElem?this._mainElem.firstElementChild:void 0;t&&(i+=c.isInitialized?" - "+c.t(t.name):" - "+t.name),p({title:i,description:i})}_getConfig(){let e=this.appConfig.realms?this.appConfig.realms.default:{},i=this.appConfig.realms?this.appConfig.realms[this._realm||""]:void 0;return i=v.mergeObjects(e,i,!1),this.appConfig&&this.appConfig.superUserHeader&&h.isSuperUser()&&(i.header=this.appConfig.superUserHeader),i}};__decorate([n({type:Object})],OrApp.prototype,"appConfig",void 0),__decorate([n({type:Object})],OrApp.prototype,"managerConfig",void 0),__decorate([a("main")],OrApp.prototype,"_mainElem",void 0),__decorate([s()],OrApp.prototype,"_initialised",void 0),__decorate([s()],OrApp.prototype,"_page",void 0),__decorate([s()],OrApp.prototype,"_config",void 0),__decorate([s()],OrApp.prototype,"_realm",void 0),__decorate([s()],OrApp.prototype,"_offline",void 0),__decorate([s()],OrApp.prototype,"_showOfflineFallback",void 0),__decorate([s()],OrApp.prototype,"_activeMenu",void 0),OrApp=__decorate([r("or-app")],OrApp);export{y as DEFAULT_LANGUAGES,OrApp};
|
package/lib/or-header.js
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,r,t
|
|
1
|
+
var __decorate=this&&this.__decorate||function(e,r,o,t){var i,a=arguments.length,n=a<3?r:null===t?t=Object.getOwnPropertyDescriptor(r,o):t;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)n=Reflect.decorate(e,r,o,t);else for(var l=e.length-1;l>=0;l--)(i=e[l])&&(n=(a<3?i(n):a>3?i(r,o,n):i(r,o))||n);return a>3&&n&&Object.defineProperty(r,o,n),n},__awaiter=this&&this.__awaiter||function(e,r,o,t){return new(o||(o=Promise))(function(i,a){function n(e){try{d(t.next(e))}catch(e){a(e)}}function l(e){try{d(t.throw(e))}catch(e){a(e)}}function d(e){var r;e.done?i(e.value):((r=e.value)instanceof o?r:new o(function(e){e(r)})).then(n,l)}d((t=t.apply(e,r||[])).next())})};import{css as e,html as r,LitElement as o,unsafeCSS as t}from"lit";import{customElement as i,property as a,query as n,state as l}from"lit/decorators.js";import d,{DefaultBoxShadowBottom as s,DefaultColor1 as c,DefaultColor2 as h,DefaultColor3 as p,DefaultColor4 as m,DefaultColor5 as u,DefaultHeaderHeight as v,Util as g,DEFAULT_LANGUAGES as b}from"@openremote/core";import"@openremote/or-mwc-components/or-mwc-dialog";import"@openremote/or-icon";import{getContentWithMenuTemplate as f}from"@openremote/or-mwc-components/or-mwc-menu";import{router as x,updateRealm as w}from"./index";import{i18next as _}from"@openremote/or-translate";function getHeaderMenuItems(e){return e.filter(hasRequiredRole).map(e=>({text:e.text,value:e.value?e.value:"",icon:e.icon,href:e.href}))}function hasRequiredRole(e){return!e.roles||(Array.isArray(e.roles)?e.roles.some(e=>d.hasRole(e)):g.isFunction(e.roles)?e.roles():Object.entries(e.roles).some(([e,r])=>r.some(r=>d.hasRole(r,e))))}function getCurrentMenuItemRef(e){return window.location.hash.substr(2).split("/")[0]||e}let OrHeader=class extends o{constructor(){super(...arguments),this._drawerOpened=!1,this.alarmButton="bell-outline",this.alarmColor="--or-app-color3, ${unsafeCSS(DefaultColor3)}"}static get styles(){return e`
|
|
2
2
|
|
|
3
3
|
:host {
|
|
4
|
-
--internal-or-header-color: var(--or-header-color, var(--or-app-color1, ${
|
|
5
|
-
--internal-or-header-selected-color: var(--or-header-selected-color, var(--or-app-color4, ${
|
|
4
|
+
--internal-or-header-color: var(--or-header-color, var(--or-app-color1, ${t(c)}));
|
|
5
|
+
--internal-or-header-selected-color: var(--or-header-selected-color, var(--or-app-color4, ${t(m)}));
|
|
6
6
|
--internal-or-header-text-color: var(--or-header-text-color, var(--or-app-color3, inherit));
|
|
7
|
-
--internal-or-header-height: var(--or-header-height, ${
|
|
7
|
+
--internal-or-header-height: var(--or-header-height, ${t(v)});
|
|
8
8
|
--internal-or-header-logo-margin: var(--or-header-logo-margin, 0 40px 0 0);
|
|
9
|
-
--internal-or-header-logo-height: var(--or-header-logo-height, var(--internal-or-header-height, ${
|
|
10
|
-
--internal-or-header-item-size: var(--or-header-item-size, calc(${
|
|
11
|
-
--internal-or-header-drawer-color: var(--or-header-drawer-color, var(--or-app-color2, ${
|
|
12
|
-
--internal-or-header-drawer-text-color: var(--or-header-drawer-text-color, var(--or-app-color3, ${
|
|
9
|
+
--internal-or-header-logo-height: var(--or-header-logo-height, var(--internal-or-header-height, ${t(v)}));
|
|
10
|
+
--internal-or-header-item-size: var(--or-header-item-size, calc(${t(v)} - 20px));
|
|
11
|
+
--internal-or-header-drawer-color: var(--or-header-drawer-color, var(--or-app-color2, ${t(h)}));
|
|
12
|
+
--internal-or-header-drawer-text-color: var(--or-header-drawer-text-color, var(--or-app-color3, ${t(p)}));
|
|
13
13
|
--internal-or-header-drawer-item-size: var(--or-header-drawer-item-size, 30px);
|
|
14
|
-
--internal-or-header-drawer-separator-color: var(--or-header-drawer-separator-color, var(--or-app-color5, ${
|
|
14
|
+
--internal-or-header-drawer-separator-color: var(--or-header-drawer-separator-color, var(--or-app-color5, ${t(u)}));
|
|
15
15
|
|
|
16
16
|
display: block;
|
|
17
17
|
z-index: 4;
|
|
@@ -46,9 +46,9 @@ var __decorate=this&&this.__decorate||function(e,r,t,o){var a,i=arguments.length
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
.shadow {
|
|
49
|
-
-webkit-box-shadow: ${
|
|
50
|
-
-moz-box-shadow: ${
|
|
51
|
-
box-shadow: ${
|
|
49
|
+
-webkit-box-shadow: ${t(s)};
|
|
50
|
+
-moz-box-shadow: ${t(s)};
|
|
51
|
+
box-shadow: ${t(s)};
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
#drawer {
|
|
@@ -241,7 +241,7 @@ var __decorate=this&&this.__decorate||function(e,r,t,o){var a,i=arguments.length
|
|
|
241
241
|
display: inline-block;
|
|
242
242
|
}
|
|
243
243
|
}
|
|
244
|
-
`}_onRealmSelect(e){this.store.dispatch(
|
|
244
|
+
`}_onRealmSelect(e){this.store.dispatch(w(e))}shouldUpdate(e){return e.has("config")&&(this.activeMenu=getCurrentMenuItemRef(this.config&&this.config.mainMenu&&this.config.mainMenu.length>0?this.config.mainMenu[0].href:void 0)),e.has("realm")&&this._getAlarmButton(),super.shouldUpdate(e)}connectedCallback(){super.connectedCallback(),this._subscribeEvents()}disconnectedCallback(){super.disconnectedCallback(),this._unsubscribeEvents()}_subscribeEvents(){return __awaiter(this,void 0,void 0,function*(){d.events&&(this._eventSubscriptionId=yield d.events.subscribe({eventType:"alarm"},e=>this._getAlarmButton()))})}_unsubscribeEvents(){this._eventSubscriptionId&&(d.events.unsubscribe(this._eventSubscriptionId),this._eventSubscriptionId=void 0)}render(){if(!this.config)return r``;let e=this.config.mainMenu,o=this.config.secondaryMenu;return r`
|
|
245
245
|
<!-- Header -->
|
|
246
246
|
<div id="header" class="shadow">
|
|
247
247
|
<div id="toolbar-top">
|
|
@@ -250,24 +250,24 @@ var __decorate=this&&this.__decorate||function(e,r,t,o){var a,i=arguments.length
|
|
|
250
250
|
<!-- This gets hidden on a small screen-->
|
|
251
251
|
<nav id="toolbar-list">
|
|
252
252
|
<div id="desktop-left">
|
|
253
|
-
${e?e.filter(hasRequiredRole).map(
|
|
253
|
+
${e?e.filter(hasRequiredRole).map(e=>r`
|
|
254
254
|
<a class="menu-item" @click="${r=>this._onHeaderItemSelect(e)}" ?selected="${this.activeMenu===e.href}"><or-icon icon="${e.icon}"></or-icon><or-translate value="${e.text}"></or-translate></a>
|
|
255
|
-
`)
|
|
255
|
+
`):""}
|
|
256
256
|
</div>
|
|
257
257
|
</nav>
|
|
258
258
|
<div id="desktop-right">
|
|
259
259
|
<div id="alarm-btn">
|
|
260
|
-
<a class="menu-item" @click="${e=>
|
|
261
|
-
<or-icon icon="${this.alarmButton}" style="color:var(${this.alarmColor})" title="${
|
|
260
|
+
<a class="menu-item" @click="${e=>x.navigate("alarms")}">
|
|
261
|
+
<or-icon icon="${this.alarmButton}" style="color:var(${this.alarmColor})" title="${_.t("alarm.alarm_plural")}"></or-icon>
|
|
262
262
|
</a>
|
|
263
263
|
</div>
|
|
264
|
-
${this._getRealmMenu(
|
|
265
|
-
${
|
|
264
|
+
${this._getRealmMenu(e=>this._onRealmSelect(e))}
|
|
265
|
+
${o?f(r`
|
|
266
266
|
<button id="menu-btn-desktop" class="menu-btn" title="Menu"><or-icon icon="dots-vertical"></or-icon></button>
|
|
267
|
-
`,getHeaderMenuItems(
|
|
267
|
+
`,getHeaderMenuItems(o),void 0,e=>this._onSecondaryMenuSelect(e)):""}
|
|
268
268
|
</div>
|
|
269
269
|
<div id="menu-btn-mobile">
|
|
270
|
-
${this._getRealmMenu(
|
|
270
|
+
${this._getRealmMenu(e=>this._onRealmSelect(e))}
|
|
271
271
|
<button id="menu-btn" class="menu-btn" title="Menu" @click="${this._toggleDrawer}"><or-icon icon="${this._drawerOpened?"close":"menu"}"></or-icon></button>
|
|
272
272
|
</div>
|
|
273
273
|
</div>
|
|
@@ -276,27 +276,27 @@ var __decorate=this&&this.__decorate||function(e,r,t,o){var a,i=arguments.length
|
|
|
276
276
|
<div>
|
|
277
277
|
<div id="mobile-top">
|
|
278
278
|
<nav id="drawer-list">
|
|
279
|
-
${e?e.filter(
|
|
279
|
+
${e?e.filter(e=>!e.hideMobile&&hasRequiredRole(e)).map(e=>r`
|
|
280
280
|
<a class="menu-item" @click="${r=>this._onHeaderItemSelect(e)}" ?selected="${this.activeMenu===e.href}"><or-icon icon="${e.icon}"></or-icon><or-translate value="${e.text}"></or-translate></a>
|
|
281
|
-
`)
|
|
281
|
+
`):""}
|
|
282
282
|
</nav>
|
|
283
283
|
</div>
|
|
284
284
|
|
|
285
|
-
${r
|
|
285
|
+
${o?r`
|
|
286
286
|
<div id="mobile-bottom" class="${e.length>0?"mobile-bottom-border":""}">
|
|
287
|
-
${
|
|
287
|
+
${o.filter(e=>!e.hideMobile&&hasRequiredRole(e)).map(e=>r`
|
|
288
288
|
<a class="menu-item" @click="${r=>this._onHeaderItemSelect(e)}" ?selected="${this.activeMenu===e.href}"><or-icon icon="${e.icon}"></or-icon><or-translate value="${e.text}"></or-translate></a>
|
|
289
|
-
`)
|
|
289
|
+
`)}
|
|
290
290
|
</div>`:""}
|
|
291
291
|
</div>
|
|
292
292
|
</div>
|
|
293
|
-
`}_getRealmMenu(e){
|
|
293
|
+
`}_getRealmMenu(e){let o=this.realms.find(e=>e.name===this.realm),t=r`
|
|
294
294
|
<div id="realm-picker">
|
|
295
|
-
${this.realms.length>1?
|
|
296
|
-
<span>${
|
|
295
|
+
${this.realms.length>1?r`
|
|
296
|
+
<span>${o?o.displayName:""}</span>
|
|
297
297
|
<or-icon icon="chevron-down"></or-icon>
|
|
298
298
|
`:""}
|
|
299
299
|
</div>
|
|
300
|
-
`;if(
|
|
301
|
-
${
|
|
302
|
-
`}return t}_getAlarmButton(){return __awaiter(this,void 0,void 0,
|
|
300
|
+
`;if(d.isSuperUser()){let i=this.realms.map(e=>({text:e.displayName,value:e.name}));t=r`
|
|
301
|
+
${f(t,i,o?o.name:void 0,r=>e(r))}
|
|
302
|
+
`}return t}_getAlarmButton(){return __awaiter(this,void 0,void 0,function*(){let e=!1;(d.hasRole("read:alarms")||d.hasRole("read:admin"))&&(e=(yield d.rest.api.AlarmResource.getAlarms({realm:d.displayRealm,status:"OPEN"})).data.length>0),this.alarmButton=e?"bell-badge-outline":"bell-outline",this.alarmColor=e?"--or-app-color4, ${unsafeCSS(DefaultColor4)}":"--or-app-color3, ${unsafeCSS(DefaultColor3)}"})}_onSecondaryMenuSelect(e){let r=this.config.secondaryMenu.find(r=>r.value===e);r&&this._onHeaderItemSelect(r)}_onHeaderItemSelect(e){e.action?e.action():e.href&&(e.absolute?window.location.href=e.href:x.navigate(e.href))}_closeDrawer(){this._drawerOpened=!1}_toggleDrawer(){this._drawerOpened=!this._drawerOpened}};__decorate([a({type:Array})],OrHeader.prototype,"realms",void 0),__decorate([a({type:String})],OrHeader.prototype,"realm",void 0),__decorate([a({type:Object})],OrHeader.prototype,"store",void 0),__decorate([a({type:String})],OrHeader.prototype,"logo",void 0),__decorate([a({type:String})],OrHeader.prototype,"logoMobile",void 0),__decorate([a({type:Object})],OrHeader.prototype,"config",void 0),__decorate([n("div[id=mobile-bottom]")],OrHeader.prototype,"_mobileBottomDiv",void 0),__decorate([a()],OrHeader.prototype,"activeMenu",void 0),__decorate([l()],OrHeader.prototype,"_drawerOpened",void 0),__decorate([l()],OrHeader.prototype,"alarmButton",void 0),__decorate([l()],OrHeader.prototype,"alarmColor",void 0),OrHeader=__decorate([i("or-header")],OrHeader);export{b as DEFAULT_LANGUAGES,OrHeader};
|
package/lib/page-offline.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var __decorate=this&&this.__decorate||function(e,t,n,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var f=e.length-1;f>=0;f--)(o=e[f])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a},__await=this&&this.__await||function(e){return this instanceof __await?(this.v=e,this):new __await(e)},__asyncGenerator=this&&this.__asyncGenerator||function(e,t,n){if(!Symbol.asyncIterator)throw
|
|
1
|
+
var __decorate=this&&this.__decorate||function(e,t,n,i){var o,r=arguments.length,a=r<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)a=Reflect.decorate(e,t,n,i);else for(var f=e.length-1;f>=0;f--)(o=e[f])&&(a=(r<3?o(a):r>3?o(t,n,a):o(t,n))||a);return r>3&&a&&Object.defineProperty(t,n,a),a},__await=this&&this.__await||function(e){return this instanceof __await?(this.v=e,this):new __await(e)},__asyncGenerator=this&&this.__asyncGenerator||function(e,t,n){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var i,o=n.apply(e,t||[]),r=[];return i=Object.create(("function"==typeof AsyncIterator?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",function(e){return function(t){return Promise.resolve(t).then(e,l)}}),i[Symbol.asyncIterator]=function(){return this},i;function a(e,t){o[e]&&(i[e]=function(t){return new Promise(function(n,i){r.push([e,t,n,i])>1||f(e,t)})},t&&(i[e]=t(i[e])))}function f(e,t){try{var n;(n=o[e](t)).value instanceof __await?Promise.resolve(n.value.v).then(c,l):s(r[0][2],n)}catch(e){s(r[0][3],e)}}function c(e){f("next",e)}function l(e){f("throw",e)}function s(e,t){e(t),r.shift(),r.length&&f(r[0][0],r[0][1])}};import{Page as e}from"./types";import{css as t,html as n}from"lit";import{customElement as i}from"lit/decorators.js";let styling=t`
|
|
2
2
|
#offline-wrapper {
|
|
3
3
|
display: flex;
|
|
4
4
|
justify-content: center;
|
|
@@ -39,7 +39,7 @@ var __decorate=this&&this.__decorate||function(e,t,n,i){var o,r=arguments.length
|
|
|
39
39
|
75% { content: '...'; }
|
|
40
40
|
100% { content: ''; }
|
|
41
41
|
}
|
|
42
|
-
`;function countDown(e){return __asyncGenerator(this,arguments,
|
|
42
|
+
`;function countDown(e){return __asyncGenerator(this,arguments,function*(){for(;e>0;)yield yield __await(e--),yield __await(new Promise(e=>setTimeout(e,1e3)))})}export function pageOfflineProvider(e){return{name:"offline",routes:["offline"],pageCreator:()=>new PageOffline(e)}}let PageOffline=class extends e{static get styles(){return[styling]}stateChanged(e){}render(){return n`
|
|
43
43
|
<div id="offline-wrapper">
|
|
44
44
|
<or-icon id="offline-icon" icon="web-off"></or-icon>
|
|
45
45
|
<div id="offline-text-container">
|
|
@@ -50,4 +50,4 @@ var __decorate=this&&this.__decorate||function(e,t,n,i){var o,r=arguments.length
|
|
|
50
50
|
<span><or-translate id="reconnecting-text" value="reconnecting"></or-translate></span>
|
|
51
51
|
</div>
|
|
52
52
|
</div>
|
|
53
|
-
`}get name(){return"offline"}};PageOffline=__decorate([
|
|
53
|
+
`}get name(){return"offline"}};PageOffline=__decorate([i("page-offline")],PageOffline);export{PageOffline};
|
package/lib/types.d.ts
CHANGED
|
@@ -34,7 +34,7 @@ declare const Page_base: (new (...args: any[]) => {
|
|
|
34
34
|
_i18nextJustInitialized: boolean;
|
|
35
35
|
connectedCallback(): void;
|
|
36
36
|
disconnectedCallback(): void;
|
|
37
|
-
shouldUpdate(changedProps: import("lit").
|
|
37
|
+
shouldUpdate(changedProps: import("lit").PropertyValues): any;
|
|
38
38
|
initCallback: (options: import("i18next").InitOptions) => void;
|
|
39
39
|
langChangedCallback: () => void;
|
|
40
40
|
readonly isConnected: boolean;
|
package/lib/types.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{LitElement}from"lit";import
|
|
1
|
+
import{LitElement as t}from"lit";import e from"i18next";import{translate as s}from"@openremote/or-translate";import r from"navigo";export const router=new r("/",{hash:!0});export class Page extends s(e)(t){constructor(t){super(),this._store=t}connectedCallback(){super.connectedCallback(),this._storeUnsubscribe=this._store.subscribe(()=>this.stateChanged(this._store.getState())),this.stateChanged(this._store.getState())}disconnectedCallback(){this._storeUnsubscribe(),super.disconnectedCallback()}getState(){return this._store.getState()}}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@openremote/or-app",
|
|
3
|
-
"version": "1.8.0-snapshot.
|
|
3
|
+
"version": "1.8.0-snapshot.20250725074716",
|
|
4
4
|
"description": "OpenRemote app template",
|
|
5
5
|
"author": "OpenRemote",
|
|
6
6
|
"license": "AGPL-3.0-or-later",
|
|
@@ -16,26 +16,26 @@
|
|
|
16
16
|
"clean": "npx tsc -b --clean && npx shx rm -rf dist lib",
|
|
17
17
|
"modelBuild": "npx orutil build",
|
|
18
18
|
"modelWatch": "npx orutil watch",
|
|
19
|
-
"build": "npx cross-env NODE_OPTIONS=--max_old_space_size=4096
|
|
19
|
+
"build": "npx cross-env NODE_OPTIONS=--max_old_space_size=4096 rspack --mode production",
|
|
20
20
|
"test": "echo \"Error: no test specified\" && exit 1",
|
|
21
21
|
"prepack": "npx tsc -b"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
24
|
"@lit/task": "^1.0.0",
|
|
25
|
-
"@openremote/core": "1.8.0-snapshot.
|
|
26
|
-
"@openremote/or-asset-tree": "1.8.0-snapshot.
|
|
27
|
-
"@openremote/or-asset-viewer": "1.8.0-snapshot.
|
|
28
|
-
"@openremote/or-attribute-input": "1.8.0-snapshot.
|
|
29
|
-
"@openremote/or-attribute-picker": "1.8.0-snapshot.
|
|
30
|
-
"@openremote/or-chart": "1.8.0-snapshot.
|
|
31
|
-
"@openremote/or-dashboard-builder": "1.8.0-snapshot.
|
|
32
|
-
"@openremote/or-gauge": "1.8.0-snapshot.
|
|
33
|
-
"@openremote/or-map": "1.8.0-snapshot.
|
|
34
|
-
"@openremote/or-mwc-components": "1.8.0-snapshot.
|
|
35
|
-
"@openremote/or-rules": "1.8.0-snapshot.
|
|
36
|
-
"@openremote/or-smart-notify": "1.8.0-snapshot.
|
|
37
|
-
"@openremote/or-timeline": "1.8.0-snapshot.
|
|
38
|
-
"@openremote/rest": "1.8.0-snapshot.
|
|
25
|
+
"@openremote/core": "1.8.0-snapshot.20250725074716",
|
|
26
|
+
"@openremote/or-asset-tree": "1.8.0-snapshot.20250725074716",
|
|
27
|
+
"@openremote/or-asset-viewer": "1.8.0-snapshot.20250725074716",
|
|
28
|
+
"@openremote/or-attribute-input": "1.8.0-snapshot.20250725074716",
|
|
29
|
+
"@openremote/or-attribute-picker": "1.8.0-snapshot.20250725074716",
|
|
30
|
+
"@openremote/or-chart": "1.8.0-snapshot.20250725074716",
|
|
31
|
+
"@openremote/or-dashboard-builder": "1.8.0-snapshot.20250725074716",
|
|
32
|
+
"@openremote/or-gauge": "1.8.0-snapshot.20250725074716",
|
|
33
|
+
"@openremote/or-map": "1.8.0-snapshot.20250725074716",
|
|
34
|
+
"@openremote/or-mwc-components": "1.8.0-snapshot.20250725074716",
|
|
35
|
+
"@openremote/or-rules": "1.8.0-snapshot.20250725074716",
|
|
36
|
+
"@openremote/or-smart-notify": "1.8.0-snapshot.20250725074716",
|
|
37
|
+
"@openremote/or-timeline": "1.8.0-snapshot.20250725074716",
|
|
38
|
+
"@openremote/rest": "1.8.0-snapshot.20250725074716",
|
|
39
39
|
"@reduxjs/toolkit": "^1.8.1",
|
|
40
40
|
"@webcomponents/webcomponentsjs": "^2.6.0",
|
|
41
41
|
"lit": "^2.0.2",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"pwa-helpers": "^0.9.0"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@openremote/util": "1.8.0-snapshot.
|
|
47
|
+
"@openremote/util": "1.8.0-snapshot.20250725074716"
|
|
48
48
|
},
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|