@microsoft/windows-admin-center-sdk
Version:
Microsoft - Windows Admin Center Shell
1 lines • 2.76 kB
Source Map (JSON)
{"version":3,"sources":["../../../packages/core/rpc/dialog/rpc-dialog-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,QAAQ,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,eAAe,EAA+B,MAAM,oBAAoB,CAAC;AAEjG,qBAAa,eAAe;IACxB;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,aAAa,CAAwC;IAEpE;;;;;OAKG;WACW,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC;IAuB7E;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,WAAW;CAc7B","file":"rpc-dialog-client.d.ts","sourcesContent":["import { Dom } from '../../dom/dom';\r\nimport { Rpc } from '../rpc';\r\nimport { RpcInboundClient } from '../rpc-inbound-client';\r\nimport { RpcDialogData, RpcDialogResult, RpcDialogType, RpcDialogKey } from './rpc-dialog-model';\r\n\r\nexport class RpcDialogClient {\r\n /**\r\n * Elements that open a dialog, used for resuming focus\r\n */\r\n private static dialogOrigins: { [index: string]: HTMLElement } = {};\r\n\r\n /**\r\n * The dialog command.\r\n *\r\n * @param data the dialog data object.\r\n * @return Promise<RpcDialogResult> the promise object of dialog result.\r\n */\r\n public static dialog(rpc: Rpc, data: RpcDialogData): Promise<RpcDialogResult> {\r\n if (data.type === RpcDialogType.OpenMessageDialog\r\n || data.type === RpcDialogType.OpenConfirmationDialog\r\n || data.type === RpcDialogType.OpenConfirmationListDialog\r\n || data.type === RpcDialogType.OpenChoiceDialog) {\r\n // open a dialog, store element that opens it\r\n const origin = document.activeElement as HTMLElement;\r\n if (origin) {\r\n RpcDialogClient.dialogOrigins[data.dialogId] = origin;\r\n }\r\n }\r\n\r\n return RpcInboundClient.call(rpc, RpcDialogKey.command, RpcDialogKey.version, data)\r\n .then((result: RpcDialogResult) => {\r\n if (data.type === RpcDialogType.Close) {\r\n // successfully close a dialog, resume focus\r\n RpcDialogClient.resumeFocus(data.dialogId);\r\n }\r\n\r\n return result;\r\n });\r\n }\r\n\r\n /**\r\n * Resume focus back to the original element that shows the dialog.\r\n * @param id The id of dialog\r\n */\r\n private static resumeFocus(id: string): void {\r\n if (!RpcDialogClient.dialogOrigins[id]) {\r\n return;\r\n }\r\n\r\n const element = RpcDialogClient.dialogOrigins[id];\r\n setTimeout(() => {\r\n const focusOn: HTMLElement = Dom.getFocusOrigin(element);\r\n if (focusOn) {\r\n focusOn.focus();\r\n }\r\n delete RpcDialogClient.dialogOrigins[id];\r\n });\r\n }\r\n}\r\n"]}