([
+ [BadgeStyle.ORIGINAL, {
+ iOS: 'assets/android-ios-stores-badges/ios_store_en_black_badge.svg',
+ android: 'assets/android-ios-stores-badges/android_store_en_black_badge.svg'
+ }],
+ [BadgeStyle.WHITE, {
+ iOS: 'assets/android-ios-stores-badges/ios_store_en_white_badge.svg',
+ android: 'assets/android-ios-stores-badges/android_store_en_black_badge.svg'
+ }]
+]);
diff --git a/ui-ngx/src/assets/android-ios-stores-badges/android_store_en_black_badge.svg b/ui-ngx/src/assets/android-ios-stores-badges/android_store_en_black_badge.svg
new file mode 100644
index 0000000000..2ef3c8fc10
--- /dev/null
+++ b/ui-ngx/src/assets/android-ios-stores-badges/android_store_en_black_badge.svg
@@ -0,0 +1,35 @@
+
+
diff --git a/ui-ngx/src/assets/android-ios-stores-badges/ios_store_en_black_badge.svg b/ui-ngx/src/assets/android-ios-stores-badges/ios_store_en_black_badge.svg
new file mode 100755
index 0000000000..072b425a1a
--- /dev/null
+++ b/ui-ngx/src/assets/android-ios-stores-badges/ios_store_en_black_badge.svg
@@ -0,0 +1,46 @@
+
diff --git a/ui-ngx/src/assets/android-ios-stores-badges/ios_store_en_white_badge.svg b/ui-ngx/src/assets/android-ios-stores-badges/ios_store_en_white_badge.svg
new file mode 100755
index 0000000000..16c0496ca7
--- /dev/null
+++ b/ui-ngx/src/assets/android-ios-stores-badges/ios_store_en_white_badge.svg
@@ -0,0 +1,46 @@
+
diff --git a/ui-ngx/src/assets/dashboard/sys_admin_home_page.json b/ui-ngx/src/assets/dashboard/sys_admin_home_page.json
index a47103059e..24bac97279 100644
--- a/ui-ngx/src/assets/dashboard/sys_admin_home_page.json
+++ b/ui-ngx/src/assets/dashboard/sys_admin_home_page.json
@@ -377,38 +377,6 @@
"id": "867f82cf-ecf2-2d5c-35cb-08c6f2edc3a4",
"typeFullFqn": "system.home_page_widgets.documentation_links"
},
- "a23185ad-dc46-806c-0e50-5b21fb080ace": {
- "type": "static",
- "sizeX": 7.5,
- "sizeY": 6.5,
- "config": {
- "datasources": [],
- "timewindow": {
- "realtime": {
- "timewindowMs": 60000
- }
- },
- "showTitle": false,
- "backgroundColor": "rgb(255, 255, 255)",
- "color": "rgba(0, 0, 0, 0.87)",
- "padding": "16px",
- "settings": {
- "columns": 3
- },
- "title": "Getting started",
- "dropShadow": false,
- "enableFullscreen": false,
- "widgetStyle": {},
- "widgetCss": "",
- "pageSize": 1024,
- "noDataDisplayMessage": "",
- "showLegend": false
- },
- "row": 0,
- "col": 0,
- "id": "a23185ad-dc46-806c-0e50-5b21fb080ace",
- "typeFullFqn": "system.home_page_widgets.getting_started"
- },
"b35fa1b0-7f95-0b23-fade-d066653a40e1": {
"type": "latest",
"sizeX": 5,
@@ -2640,6 +2608,94 @@
"row": 0,
"col": 0,
"id": "b9174a99-2a00-3dbe-0eae-927fd8506345"
+ },
+ "c02d59a0-c979-5ec6-7f58-a5d89ff66236": {
+ "type": "static",
+ "sizeX": 7.5,
+ "sizeY": 6.5,
+ "config": {
+ "showTitle": false,
+ "backgroundColor": "rgb(255, 255, 255)",
+ "color": "rgba(0, 0, 0, 0.87)",
+ "padding": "16px",
+ "settings": {
+ "columns": 3
+ },
+ "title": "Getting started",
+ "dropShadow": false,
+ "enableFullscreen": false,
+ "widgetStyle": {},
+ "widgetCss": "",
+ "noDataDisplayMessage": ""
+ },
+ "row": 0,
+ "col": 0,
+ "id": "c02d59a0-c979-5ec6-7f58-a5d89ff66236",
+ "typeFullFqn": "system.home_page_widgets.getting_started"
+ },
+ "53d5f2dd-d432-5362-745f-63bf4487dc96": {
+ "typeFullFqn": "system.mobile_app_qr_code",
+ "type": "static",
+ "sizeX": 6,
+ "sizeY": 3,
+ "config": {
+ "showTitle": true,
+ "backgroundColor": "rgb(255, 255, 255)",
+ "color": "rgba(0, 0, 0, 0.87)",
+ "padding": "8px",
+ "settings": {},
+ "title": "{i18n:admin.mobile-app.connect-mobile-app}",
+ "dropShadow": false,
+ "enableFullscreen": false,
+ "widgetStyle": {},
+ "widgetCss": ".tb-widget-container > .tb-widget > .tb-widget-header > .tb-widget-title {\n padding: 0;\n}\n\n.tb-widget-container > .tb-widget > .tb-widget-header > .tb-widget-title > .title-row > .title {\n padding-bottom: 12px;\n font-weight: 600;\n font-size: 20px;\n line-height: 24px;\n letter-spacing: 0.1px;\n color: rgba(0, 0, 0, 0.76);\n}\n\n@media screen and (min-width: 960px) and (max-width: 1819px) {\n .tb-widget-container > .tb-widget > .tb-widget-header > .tb-widget-title > .title-row > .title {\n padding-bottom: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n letter-spacing: 0.25px;\n }\n}\n",
+ "showTitleIcon": false,
+ "titleTooltip": "",
+ "titleStyle": null
+ },
+ "row": 0,
+ "col": 0,
+ "id": "53d5f2dd-d432-5362-745f-63bf4487dc96"
+ },
+ "0d34fa85-914f-30de-e3dd-7b7879f8d593": {
+ "typeFullFqn": "system.cards.markdown_card",
+ "type": "latest",
+ "sizeX": 5,
+ "sizeY": 3.5,
+ "config": {
+ "showTitle": false,
+ "backgroundColor": "#fff",
+ "color": "rgba(0, 0, 0, 0.87)",
+ "padding": "0px",
+ "settings": {
+ "useMarkdownTextFunction": true,
+ "markdownTextPattern": "### Markdown/HTML card\n - **Current entity**: ${entityName}.\n - **Current value**: ${Random}.",
+ "markdownTextFunction": "let html = '';\nlet supportMobile = '${mobileQrEnabled}' || false;\nif (supportMobile && typeof supportMobile === 'boolean') {\n ctx.dashboardWidget.widgetLayout.mobileHide = false;\n html += '';\n} else {\n ctx.dashboardWidget.widgetLayout.mobileHide = true;\n html += '';\n}\nhtml += '
';\nreturn html;",
+ "applyDefaultMarkdownStyle": false,
+ "markdownCss": ""
+ },
+ "title": "Select show mobile QR code",
+ "showTitleIcon": false,
+ "iconColor": "rgba(0, 0, 0, 0.87)",
+ "iconSize": "24px",
+ "titleTooltip": "",
+ "dropShadow": true,
+ "enableFullscreen": false,
+ "widgetStyle": {
+ "border": "none",
+ "boxShadow": "none",
+ "padding": 0
+ },
+ "titleStyle": {
+ "fontSize": "16px",
+ "fontWeight": 400
+ },
+ "widgetCss": "",
+ "noDataDisplayMessage": ""
+ },
+ "row": 0,
+ "col": 0,
+ "id": "0d34fa85-914f-30de-e3dd-7b7879f8d593"
}
},
"states": {
@@ -2695,13 +2751,6 @@
"col": 0,
"mobileHide": true
},
- "a23185ad-dc46-806c-0e50-5b21fb080ace": {
- "sizeX": 35,
- "sizeY": 58,
- "row": 0,
- "col": 85,
- "mobileHide": true
- },
"163025d8-3ca4-dd1e-c17b-e40d8e03e8a8": {
"sizeX": 44,
"sizeY": 15,
@@ -2709,6 +2758,14 @@
"mobileHeight": 7,
"row": 0,
"col": 0
+ },
+ "0d34fa85-914f-30de-e3dd-7b7879f8d593": {
+ "sizeX": 35,
+ "sizeY": 58,
+ "row": 0,
+ "col": 85,
+ "mobileHide": false,
+ "mobileHeight": 7
}
},
"gridSettings": {
@@ -2936,6 +2993,40 @@
}
}
}
+ },
+ "mobile_app_qr_code": {
+ "name": "Mobile App QR code",
+ "root": false,
+ "layouts": {
+ "main": {
+ "widgets": {
+ "c02d59a0-c979-5ec6-7f58-a5d89ff66236": {
+ "sizeX": 120,
+ "sizeY": 45,
+ "row": 0,
+ "col": 0,
+ "mobileHide": true
+ },
+ "53d5f2dd-d432-5362-745f-63bf4487dc96": {
+ "sizeX": 120,
+ "sizeY": 17,
+ "row": 45,
+ "col": 0
+ }
+ },
+ "gridSettings": {
+ "backgroundColor": "#eeeeee",
+ "columns": 120,
+ "margin": 12,
+ "outerMargin": false,
+ "backgroundSizeMode": "100%",
+ "autoFillHeight": true,
+ "backgroundImageUrl": null,
+ "mobileAutoFillHeight": false,
+ "mobileRowHeight": 20
+ }
+ }
+ }
}
},
"entityAliases": {
@@ -3051,4 +3142,4 @@
}
},
"name": "System Administrator Home Page"
-}
\ No newline at end of file
+}
diff --git a/ui-ngx/src/assets/dashboard/tenant_admin_home_page.json b/ui-ngx/src/assets/dashboard/tenant_admin_home_page.json
index 85669b8bf4..40792caf09 100644
--- a/ui-ngx/src/assets/dashboard/tenant_admin_home_page.json
+++ b/ui-ngx/src/assets/dashboard/tenant_admin_home_page.json
@@ -101,38 +101,6 @@
"id": "867f82cf-ecf2-2d5c-35cb-08c6f2edc3a4",
"typeFullFqn": "system.home_page_widgets.documentation_links"
},
- "a23185ad-dc46-806c-0e50-5b21fb080ace": {
- "type": "static",
- "sizeX": 7.5,
- "sizeY": 6.5,
- "config": {
- "datasources": [],
- "timewindow": {
- "realtime": {
- "timewindowMs": 60000
- }
- },
- "showTitle": false,
- "backgroundColor": "rgb(255, 255, 255)",
- "color": "rgba(0, 0, 0, 0.87)",
- "padding": "16px",
- "settings": {
- "columns": 3
- },
- "title": "Getting started",
- "dropShadow": false,
- "enableFullscreen": false,
- "widgetStyle": {},
- "widgetCss": "",
- "pageSize": 1024,
- "noDataDisplayMessage": "",
- "showLegend": false
- },
- "row": 0,
- "col": 0,
- "id": "a23185ad-dc46-806c-0e50-5b21fb080ace",
- "typeFullFqn": "system.home_page_widgets.getting_started"
- },
"ebbd0a6e-8a47-e770-5086-7f4974250f2d": {
"type": "static",
"sizeX": 7.5,
@@ -1143,6 +1111,94 @@
"row": 0,
"col": 0,
"id": "8e71a398-caf5-540d-cec5-6e5dc264343e"
+ },
+ "35bda856-2495-4f72-e35e-925bac8b8da7": {
+ "typeFullFqn": "system.cards.markdown_card",
+ "type": "latest",
+ "sizeX": 5,
+ "sizeY": 3.5,
+ "config": {
+ "showTitle": false,
+ "backgroundColor": "#fff",
+ "color": "rgba(0, 0, 0, 0.87)",
+ "padding": "0px",
+ "settings": {
+ "useMarkdownTextFunction": true,
+ "markdownTextPattern": "### Markdown/HTML card\n - **Current entity**: ${entityName}.\n - **Current value**: ${Random}.",
+ "markdownTextFunction": "let html = '';\nlet supportMobile = '${mobileQrEnabled}' || false;\nif (supportMobile && typeof supportMobile === 'boolean') {\n ctx.dashboardWidget.widgetLayout.mobileHide = false;\n html += '';\n} else {\n ctx.dashboardWidget.widgetLayout.mobileHide = true;\n html += '';\n}\nhtml += '
';\nreturn html;",
+ "applyDefaultMarkdownStyle": false,
+ "markdownCss": ""
+ },
+ "title": "Select show mobile QR code",
+ "showTitleIcon": false,
+ "iconColor": "rgba(0, 0, 0, 0.87)",
+ "iconSize": "24px",
+ "titleTooltip": "",
+ "dropShadow": true,
+ "enableFullscreen": false,
+ "widgetStyle": {
+ "border": "none",
+ "boxShadow": "none",
+ "padding": 0
+ },
+ "titleStyle": {
+ "fontSize": "16px",
+ "fontWeight": 400
+ },
+ "widgetCss": "",
+ "noDataDisplayMessage": ""
+ },
+ "row": 0,
+ "col": 0,
+ "id": "35bda856-2495-4f72-e35e-925bac8b8da7"
+ },
+ "ed33e56f-293b-aaaa-ad19-0cf499dc926f": {
+ "type": "static",
+ "sizeX": 7.5,
+ "sizeY": 6.5,
+ "config": {
+ "showTitle": false,
+ "backgroundColor": "rgb(255, 255, 255)",
+ "color": "rgba(0, 0, 0, 0.87)",
+ "padding": "16px",
+ "settings": {
+ "columns": 3
+ },
+ "title": "Getting started",
+ "dropShadow": false,
+ "enableFullscreen": false,
+ "widgetStyle": {},
+ "widgetCss": "",
+ "noDataDisplayMessage": ""
+ },
+ "row": 0,
+ "col": 0,
+ "id": "ed33e56f-293b-aaaa-ad19-0cf499dc926f",
+ "typeFullFqn": "system.home_page_widgets.getting_started"
+ },
+ "8c5207d8-7103-4dc2-db48-d61c0c8c61fd": {
+ "typeFullFqn": "system.mobile_app_qr_code",
+ "type": "static",
+ "sizeX": 6,
+ "sizeY": 3,
+ "config": {
+ "showTitle": true,
+ "backgroundColor": "rgb(255, 255, 255)",
+ "color": "rgba(0, 0, 0, 0.87)",
+ "padding": "8px",
+ "settings": {},
+ "title": "{i18n:admin.mobile-app.connect-mobile-app}",
+ "dropShadow": false,
+ "enableFullscreen": false,
+ "widgetStyle": {},
+ "widgetCss": ".tb-widget-container > .tb-widget > .tb-widget-header > .tb-widget-title {\n padding: 0;\n}\n\n.tb-widget-container > .tb-widget > .tb-widget-header > .tb-widget-title > .title-row > .title {\n padding-bottom: 12px;\n font-weight: 600;\n font-size: 20px;\n line-height: 24px;\n letter-spacing: 0.1px;\n color: rgba(0, 0, 0, 0.76);\n}\n\n@media screen and (min-width: 960px) and (max-width: 1819px) {\n .tb-widget-container > .tb-widget > .tb-widget-header > .tb-widget-title > .title-row > .title {\n padding-bottom: 0;\n font-weight: 500;\n font-size: 14px;\n line-height: 20px;\n letter-spacing: 0.25px;\n }\n}\n",
+ "showTitleIcon": false,
+ "titleTooltip": "",
+ "titleStyle": null
+ },
+ "row": 0,
+ "col": 0,
+ "id": "8c5207d8-7103-4dc2-db48-d61c0c8c61fd"
}
},
"states": {
@@ -1167,13 +1223,6 @@
"col": 28,
"mobileHide": true
},
- "a23185ad-dc46-806c-0e50-5b21fb080ace": {
- "sizeX": 35,
- "sizeY": 58,
- "row": 0,
- "col": 85,
- "mobileHide": true
- },
"ebbd0a6e-8a47-e770-5086-7f4974250f2d": {
"sizeX": 28,
"sizeY": 16,
@@ -1212,6 +1261,14 @@
"row": 0,
"col": 43,
"mobileOrder": 0
+ },
+ "35bda856-2495-4f72-e35e-925bac8b8da7": {
+ "sizeX": 35,
+ "sizeY": 58,
+ "row": 0,
+ "col": 85,
+ "mobileHide": false,
+ "mobileHeight": 10
}
},
"gridSettings": {
@@ -1281,6 +1338,40 @@
}
}
}
+ },
+ "mobile_app_qr_code": {
+ "name": "Mobile App QR code",
+ "root": false,
+ "layouts": {
+ "main": {
+ "widgets": {
+ "ed33e56f-293b-aaaa-ad19-0cf499dc926f": {
+ "sizeX": 120,
+ "sizeY": 45,
+ "row": 0,
+ "col": 0,
+ "mobileHide": true
+ },
+ "8c5207d8-7103-4dc2-db48-d61c0c8c61fd": {
+ "sizeX": 120,
+ "sizeY": 17,
+ "row": 45,
+ "col": 0
+ }
+ },
+ "gridSettings": {
+ "backgroundColor": "#eeeeee",
+ "columns": 120,
+ "margin": 12,
+ "outerMargin": false,
+ "backgroundSizeMode": "100%",
+ "autoFillHeight": true,
+ "backgroundImageUrl": null,
+ "mobileAutoFillHeight": false,
+ "mobileRowHeight": 20
+ }
+ }
+ }
}
},
"entityAliases": {
@@ -1416,4 +1507,4 @@
}
},
"name": "Tenant Administrator Home Page"
-}
\ No newline at end of file
+}
diff --git a/ui-ngx/src/assets/locale/locale.constant-en_US.json b/ui-ngx/src/assets/locale/locale.constant-en_US.json
index 6de2d81900..c2fb5e2a1c 100644
--- a/ui-ngx/src/assets/locale/locale.constant-en_US.json
+++ b/ui-ngx/src/assets/locale/locale.constant-en_US.json
@@ -419,6 +419,36 @@
"no-auto-commit-entities-prompt": "No entities configured for auto-commit",
"delete-auto-commit-settings-title": "Are you sure you want to delete auto-commit settings?",
"delete-auto-commit-settings-text": "Be careful, after the confirmation the auto-commit settings will be removed and auto-commit will be disabled for all entities.",
+ "mobile-app": {
+ "mobile-app": "Mobile app",
+ "mobile-app-qr-code-widget-settings": "Mobile app QR code widget settings",
+ "applications": "Applications",
+ "default": "Default",
+ "custom": "Custom",
+ "android": "Android",
+ "app-package-name": "App package name",
+ "app-package-name-required": "App package name is required",
+ "sha256-certificate-fingerprints": "SHA256 certificate fingerprints",
+ "sha256-certificate-fingerprints-required": "SHA256 certificate fingerprints is required",
+ "ios": "iOS",
+ "app-id": "App ID",
+ "app-id-required": "App ID is required",
+ "appearance": "Appearance",
+ "appearance-on-home-page": "Appearance on Home page",
+ "enabled": "Enabled",
+ "disabled": "Disabled",
+ "badges": "Badges",
+ "original": "Original",
+ "white": "White",
+ "label": "Label",
+ "label-required": "Label is required",
+ "right": "Right",
+ "left": "Left",
+ "set": "Set",
+ "preview": "Preview",
+ "connect-mobile-app": "Connect mobile app",
+ "use-system-settings": "Use system settings"
+ },
"2fa": {
"2fa": "Two-factor authentication",
"available-providers": "Available providers",
diff --git a/ui-ngx/src/form.scss b/ui-ngx/src/form.scss
index 18f5f6755d..f38d459b97 100644
--- a/ui-ngx/src/form.scss
+++ b/ui-ngx/src/form.scss
@@ -234,6 +234,12 @@
}
.fixed-title-width {
min-width: 200px;
+
+ &-230 {
+ min-width: 230px;
+ }
+ }
+ [class^="fixed-title-width"] {
@media #{$mat-xs} {
min-width: fit-content;
}
@@ -263,9 +269,15 @@
&.row {
flex-direction: row;
}
+ &.row-reverse {
+ flex-direction: row-reverse;
+ }
&.column {
flex-direction: column;
}
+ &.center {
+ justify-content: center;
+ }
&.flex-start {
justify-content: flex-start;
}
@@ -290,6 +302,9 @@
&.fill-height {
height: 100%;
}
+ &.shrink {
+ flex: 0;
+ }
}
.tb-form-panel, .tb-form-row {