Iterate Modal Widgets

Signed-off-by: Michael Telatynski <7t3chguy@gmail.com>
t3chguy/feat/modal-widgets
Michael Telatynski 2020-10-19 20:39:44 +01:00
parent 55e6ff9b2d
commit ad15747c21
2 changed files with 27 additions and 9 deletions

View File

@ -18,7 +18,12 @@ limitations under the License.
require("./index.scss");
import * as qs from 'querystring';
import {ModalButtonKind, WidgetApi, WidgetApiToWidgetAction} from 'matrix-widget-api';
import {
ModalButtonKind,
WidgetApi,
WidgetApiToWidgetAction,
IModalWidgetCloseNotificationRequest,
} from 'matrix-widget-api';
let widgetApi: WidgetApi;
(async function() {
@ -38,9 +43,13 @@ let widgetApi: WidgetApi;
const parentOrigin = new URL(qsParam('parentUrl')).origin;
widgetApi = new WidgetApi(qsParam("widgetId"), parentOrigin);
widgetApi.addEventListener(WidgetApiToWidgetAction.CloseModalWidget, (req: CustomEvent) => {
document.getElementById("answer").innerText = "Response from Modal: " + JSON.stringify(req.detail);
});
widgetApi.on(`action:${WidgetApiToWidgetAction.CloseModalWidget}`,
(ev: CustomEvent<IModalWidgetCloseNotificationRequest>) => {
ev.preventDefault();
document.getElementById("answer").innerText = "Response from Modal: " + JSON.stringify(ev.detail);
widgetApi.transport.reply(ev.detail, {}); // ack
},
);
widgetApi.start();

View File

@ -18,7 +18,12 @@ limitations under the License.
require("./index.scss");
import * as qs from 'querystring';
import {WidgetApi, WidgetApiToWidgetAction, IWidgetApiRequest} from 'matrix-widget-api';
import {
WidgetApi,
WidgetApiToWidgetAction,
IModalWidgetButtonClickedRequest,
IModalWidgetOpenRequest,
} from 'matrix-widget-api';
let widgetApi: WidgetApi;
(async function() {
@ -38,22 +43,26 @@ let widgetApi: WidgetApi;
const parentOrigin = new URL(qsParam('parentUrl')).origin;
widgetApi = new WidgetApi(qsParam("widgetId"), parentOrigin);
widgetApi.addEventListener(
widgetApi.on(
`action:${WidgetApiToWidgetAction.ButtonClicked}`,
(ev: CustomEvent<IWidgetApiRequest>) => {
(ev: CustomEvent<IModalWidgetButtonClickedRequest>) => {
ev.preventDefault();
console.log("@@ clickety", ev.detail);
document.getElementById("button").innerText = "BUTTON CLICKED: " + JSON.stringify(ev.detail.data);
setTimeout(() => {
widgetApi.closeModalWidget(ev.detail.data);
}, 3000);
widgetApi.transport.reply(ev.detail, {}); // ack
},
);
widgetApi.addEventListener(
widgetApi.on(
`action:${WidgetApiToWidgetAction.WidgetConfig}`,
(ev: CustomEvent<IWidgetApiRequest>) => {
(ev: CustomEvent<IModalWidgetOpenRequest>) => {
ev.preventDefault();
console.log("Got widget config: ", ev.detail.data);
document.getElementById("question").innerText = "INIT PARAMS: " + JSON.stringify(ev.detail.data);
widgetApi.transport.reply(ev.detail, {}); // ack
},
);
widgetApi.start();