diff --git a/platypush/backend/http/webapp/src/components/Action/ActionEditor.vue b/platypush/backend/http/webapp/src/components/Action/ActionEditor.vue index 3a5c88ef2..c5af4ea46 100644 --- a/platypush/backend/http/webapp/src/components/Action/ActionEditor.vue +++ b/platypush/backend/http/webapp/src/components/Action/ActionEditor.vue @@ -5,11 +5,13 @@
- -
-
-
-
+
+ +
+
+
+
+
@@ -107,7 +109,7 @@ import ActionArgs from "./ActionArgs" import ActionDoc from "./ActionDoc" import Autocomplete from "@/components/elements/Autocomplete" import Loading from "@/components/Loading" -import Modal from "@/components/Modal"; +import Modal from "@/components/Modal" import Response from "./Response" import Tab from "@/components/elements/Tab" import Tabs from "@/components/elements/Tabs" @@ -127,6 +129,12 @@ export default { Tabs, }, + props: { + value: { + type: Object, + }, + }, + data() { return { loading: false, @@ -295,8 +303,14 @@ export default { } }, - async updateAction(actionName) { - if (actionName === this.action.name) + async updateAction(actionName, params) { + let {force, args, extraArgs} = params || {} + if (!args) + args = {} + if (!extraArgs) + extraArgs = [] + + if (actionName === this.action.name && !force) return this.action.name = actionName @@ -312,15 +326,15 @@ export default { try { this.action = { ...this.actions[this.action.name], - args: Object.entries(this.actions[this.action.name].args).reduce((args, entry) => { - args[entry[0]] = { + args: Object.entries(this.actions[this.action.name].args).reduce((a, entry) => { + a[entry[0]] = { ...entry[1], - value: entry[1].default, + value: args?.[entry[0]] ?? entry[1].default, } - return args + return a }, {}), - extraArgs: [], + extraArgs: extraArgs || [], } } finally { this.docLoading = false @@ -450,10 +464,35 @@ export default { window.open(event.target.getAttribute('href', '_blank')) } }, + + onValueChanged(value) { + value = value || this.value + if (!value) + return + + const action = value.name || value.action + this.$nextTick(() => { + this.updateAction(action, { + force: true, + args: value.args || {}, + extraArgs: value.extraArgs || [], + }) + }) + }, }, - mounted() { - this.refresh() + watch: { + value: { + immediate: true, + handler(value) { + this.onValueChanged(value) + }, + }, + }, + + async mounted() { + await this.refresh() + await this.onValueChanged() }, } @@ -506,5 +545,21 @@ export default { } } } + + .curl-modal-container { + :deep(.modal) { + .content { + width: 100%; + } + + .content .body { + height: auto; + } + + .output { + border-radius: 0; + } + } + } }