Added support for Iframe-based extension interfaces
This commit is contained in:
parent
d79580d44d
commit
744ded1d9e
5 changed files with 41 additions and 1 deletions
17
package-lock.json
generated
17
package-lock.json
generated
|
|
@ -16198,6 +16198,23 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"vue-friendly-iframe": {
|
||||||
|
"version": "0.17.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/vue-friendly-iframe/-/vue-friendly-iframe-0.17.0.tgz",
|
||||||
|
"integrity": "sha512-2IEHRpz2KIZ7wSXd3h1n6EEQ9HEU6GRC4DNdQ7w5Dm31Udf/xGjWfHErXJUsUw3Qal0fga8SrA6aOPTOX7mg+Q==",
|
||||||
|
"dev": true,
|
||||||
|
"requires": {
|
||||||
|
"uuid": "3.1.0"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"uuid": {
|
||||||
|
"version": "3.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.1.0.tgz",
|
||||||
|
"integrity": "sha512-DIWtzUkw04M4k3bf1IcpS2tngXEL26YUD2M0tMDUpnUrz2hgzUBlD55a4FjdLGPvfHxS6uluGWvaVEqgBcVa+g==",
|
||||||
|
"dev": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"vue-hot-reload-api": {
|
"vue-hot-reload-api": {
|
||||||
"version": "2.3.4",
|
"version": "2.3.4",
|
||||||
"resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
|
"resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz",
|
||||||
|
|
|
||||||
|
|
@ -53,6 +53,7 @@
|
||||||
"mdns-js": "^1.0.3",
|
"mdns-js": "^1.0.3",
|
||||||
"uikit": "^3.4.2",
|
"uikit": "^3.4.2",
|
||||||
"vue": "^2.6.11",
|
"vue": "^2.6.11",
|
||||||
|
"vue-friendly-iframe": "^0.17.0",
|
||||||
"vue-plugin-load-script": "^1.2.0",
|
"vue-plugin-load-script": "^1.2.0",
|
||||||
"vue-template-compiler": "^2.6.11",
|
"vue-template-compiler": "^2.6.11",
|
||||||
"vue-tour": "^1.3.0",
|
"vue-tour": "^1.3.0",
|
||||||
|
|
|
||||||
|
|
@ -141,6 +141,7 @@
|
||||||
>
|
>
|
||||||
<extensionContent
|
<extensionContent
|
||||||
:forms="plugin.forms"
|
:forms="plugin.forms"
|
||||||
|
:frame="plugin.frame"
|
||||||
:web-component="plugin.wc"
|
:web-component="plugin.wc"
|
||||||
:view-panel="plugin.viewPanel"
|
:view-panel="plugin.viewPanel"
|
||||||
@reloadForms="updatePlugins()"
|
@reloadForms="updatePlugins()"
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,8 @@
|
||||||
<!-- Grid managing tab content -->
|
<!-- Grid managing tab content -->
|
||||||
<div uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove">
|
<div uk-grid class="uk-height-1-1 uk-margin-remove uk-padding-remove">
|
||||||
<div class="control-component">
|
<div class="control-component">
|
||||||
<div v-if="webComponent">
|
<vue-friendly-iframe v-if="frame" :src="frame.href"></vue-friendly-iframe>
|
||||||
|
<div v-else-if="webComponent">
|
||||||
<WebComponentLoader
|
<WebComponentLoader
|
||||||
:component-u-r-l="webComponent.href"
|
:component-u-r-l="webComponent.href"
|
||||||
:component-name="webComponent.name"
|
:component-name="webComponent.name"
|
||||||
|
|
@ -11,6 +12,7 @@
|
||||||
<!-- Handle OpenFlexure eV Forms -->
|
<!-- Handle OpenFlexure eV Forms -->
|
||||||
<div
|
<div
|
||||||
v-for="form in forms"
|
v-for="form in forms"
|
||||||
|
v-else-if="forms"
|
||||||
:key="`${form.route}/${form.name}`.replace(/\s+/g, '-').toLowerCase()"
|
:key="`${form.route}/${form.name}`.replace(/\s+/g, '-').toLowerCase()"
|
||||||
class="uk-height-1-1 uk-width-1-1"
|
class="uk-height-1-1 uk-width-1-1"
|
||||||
>
|
>
|
||||||
|
|
@ -62,6 +64,11 @@ export default {
|
||||||
required: false,
|
required: false,
|
||||||
default: null
|
default: null
|
||||||
},
|
},
|
||||||
|
frame: {
|
||||||
|
type: Object,
|
||||||
|
required: false,
|
||||||
|
default: null
|
||||||
|
},
|
||||||
viewPanel: {
|
viewPanel: {
|
||||||
type: String,
|
type: String,
|
||||||
required: false,
|
required: false,
|
||||||
|
|
@ -70,3 +77,13 @@ export default {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
.vue-friendly-iframe {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.vue-friendly-iframe iframe {
|
||||||
|
height: 100%;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,7 @@ import store from "./store";
|
||||||
import UIkit from "uikit";
|
import UIkit from "uikit";
|
||||||
import VueTour from "vue-tour";
|
import VueTour from "vue-tour";
|
||||||
import LoadScript from "vue-plugin-load-script";
|
import LoadScript from "vue-plugin-load-script";
|
||||||
|
import VueFriendlyIframe from "vue-friendly-iframe";
|
||||||
|
|
||||||
require("vue-tour/dist/vue-tour.css");
|
require("vue-tour/dist/vue-tour.css");
|
||||||
|
|
||||||
|
|
@ -16,6 +17,9 @@ Vue.use(LoadScript);
|
||||||
// Use vue-tour module
|
// Use vue-tour module
|
||||||
Vue.use(VueTour);
|
Vue.use(VueTour);
|
||||||
|
|
||||||
|
// Use Friendly Iframe module
|
||||||
|
Vue.use(VueFriendlyIframe);
|
||||||
|
|
||||||
Vue.config.productionTip = false;
|
Vue.config.productionTip = false;
|
||||||
|
|
||||||
Vue.mixin({
|
Vue.mixin({
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue