From 88b7fe2de1e3b3f7effa5b0837318458271c80f6 Mon Sep 17 00:00:00 2001 From: Sam Ramon <15154970+samantharamon@users.noreply.github.com> Date: Tue, 30 Sep 2025 10:12:52 -0700 Subject: [PATCH] [Outlook] (drag and drop) Create code snippet and map it to drag-and-drop APIs (#1001) --- playlists-prod/outlook.yaml | 11 ++ playlists/outlook.yaml | 11 ++ samples/outlook/80-events/drag-drop-item.yaml | 72 ++++++++++ snippet-extractor-metadata/outlook.xlsx | Bin 24557 -> 24926 bytes snippet-extractor-output/snippets.yaml | 135 ++++++++++++++++++ view-prod/outlook.json | 1 + view/outlook.json | 1 + 7 files changed, 231 insertions(+) create mode 100644 samples/outlook/80-events/drag-drop-item.yaml diff --git a/playlists-prod/outlook.yaml b/playlists-prod/outlook.yaml index d675b90a6..cdb4674f5 100644 --- a/playlists-prod/outlook.yaml +++ b/playlists-prod/outlook.yaml @@ -455,6 +455,17 @@ group: Regex Matches api_set: Mailbox: '1.6' +- id: outlook-events-drag-drop-item + name: Drag and drop an item into the task pane + fileName: drag-drop-item.yaml + description: >- + Handles the drag-and-drop event when a user drags and drops messages and + file attachments into the add-in task pane. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + group: Events + api_set: + Mailbox: '1.5' - id: outlook-tokens-and-service-calls-ids-and-urls name: Endpoint URLs and item IDs fileName: ids-and-urls.yaml diff --git a/playlists/outlook.yaml b/playlists/outlook.yaml index ca772433b..66855bc23 100644 --- a/playlists/outlook.yaml +++ b/playlists/outlook.yaml @@ -455,6 +455,17 @@ group: Regex Matches api_set: Mailbox: '1.6' +- id: outlook-events-drag-drop-item + name: Drag and drop an item into the task pane + fileName: drag-drop-item.yaml + description: >- + Handles the drag-and-drop event when a user drags and drops messages and + file attachments into the add-in task pane. + rawUrl: >- + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/80-events/drag-drop-item.yaml + group: Events + api_set: + Mailbox: '1.5' - id: outlook-tokens-and-service-calls-ids-and-urls name: Endpoint URLs and item IDs fileName: ids-and-urls.yaml diff --git a/samples/outlook/80-events/drag-drop-item.yaml b/samples/outlook/80-events/drag-drop-item.yaml new file mode 100644 index 000000000..7fb596045 --- /dev/null +++ b/samples/outlook/80-events/drag-drop-item.yaml @@ -0,0 +1,72 @@ +id: outlook-events-drag-drop-item +name: Drag and drop an item into the task pane +description: Handles the drag-and-drop event when a user drags and drops messages and file attachments into the add-in task pane. +host: OUTLOOK +api_set: + Mailbox: '1.5' +script: + content: | + Office.onReady(() => { + dragAndDropEventHandler(event); + }); + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } + language: typescript +template: + content: |- +
+

Drag and drop messages and file attachments into the add-in task pane.

+

To learn more about the drag-and-drop feature, see Drag and drop messages and + attachments into the task pane of an Outlook add-in.

+

Required mode: Compose or Read

+

Supported Outlook clients: Outlook on the web and the new Outlook on Windows

+
+
+

Try it out

+
    +
  1. Drag a message or file attachment from your mailbox to the task pane. As you drag the item across the task pane, the event name and the coordinates of your mouse pointer are displayed in the console.
  2. +
  3. Drop the message or file attachment into the task pane. The properties + of the dropped item are displayed in the console.
  4. +
+
+ language: html +style: + content: |- + section.samples { + margin-top: 20px; + } + + section.samples .ms-Button, section.setup .ms-Button { + display: block; + margin-bottom: 5px; + margin-left: 20px; + min-width: 80px; + } + language: css +libraries: |- + https://appsforoffice.microsoft.com/lib/1/hosted/office.js + https://appsforoffice.microsoft.com/lib/1/hosted/office.d.ts + + https://unpkg.com/office-ui-fabric-core@11.1.0/dist/css/fabric.min.css + https://unpkg.com/office-ui-fabric-js@1.5.0/dist/css/fabric.components.min.css \ No newline at end of file diff --git a/snippet-extractor-metadata/outlook.xlsx b/snippet-extractor-metadata/outlook.xlsx index d3bcea07da6e2dafcc5810793c747628bf50777e..ef99fbe2699190fd28de29aa670d30cf50b8d3c4 100644 GIT binary patch delta 14927 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 UP(uM|N$sRwLuz<)z5mMmf3!~PZ~y=R delta 14526 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 E2SE{?AOHXW diff --git a/snippet-extractor-output/snippets.yaml b/snippet-extractor-output/snippets.yaml index ee07a923e..e4de5bfb1 100644 --- a/snippet-extractor-output/snippets.yaml +++ b/snippet-extractor-output/snippets.yaml @@ -11153,6 +11153,141 @@ Office.DisplayedSubject#setAsync:member(2): console.log("Temporarily set the content displayed in the subject field."); }); +Office.DragAndDropEventArgs:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DragoverEventData:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DropEventData:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DroppedItems:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } +Office.DroppedItemDetails:interface: + - >- + // Link to full sample: + https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml + + + function dragAndDropEventHandler(event) { + Office.context.mailbox.addHandlerAsync(Office.EventType.DragAndDropEvent, (event) => { + console.log(`Event type: ${event.type}`); + + const eventData = event.dragAndDropEventData; + console.log(`x-coordinate: ${eventData.pageX}, y-coordinate: ${eventData.pageY}`); + + if (eventData.type == "drop") { + console.log("Items dropped into task pane."); + const files = eventData.dataTransfer.files; + files.forEach((file) => { + const content = file.fileContent; + const name = file.name; + const fileType = file.type; + console.log(`File name: ${name}`); + console.log(`File type: ${fileType}`); + console.log(`Contents: ${content.text().then((text) => { console.log(text); })}`); + }); + } + }); + } Office.EnhancedLocation#addAsync:member(1): - >- // Link to full sample: diff --git a/view-prod/outlook.json b/view-prod/outlook.json index d9564fc71..9b861d008 100644 --- a/view-prod/outlook.json +++ b/view-prod/outlook.json @@ -47,6 +47,7 @@ "outlook-mime-headers-get-internet-headers-message-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml", "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/75-regex-matches/contextual.yaml", + "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/80-events/drag-drop-item.yaml", "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml", "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml", "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/prod/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml", diff --git a/view/outlook.json b/view/outlook.json index bdd41f2b7..7d57d08cb 100644 --- a/view/outlook.json +++ b/view/outlook.json @@ -47,6 +47,7 @@ "outlook-mime-headers-get-internet-headers-message-read": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/70-mime-headers/get-internet-headers-message-read.yaml", "outlook-mime-headers-manage-custom-internet-headers-message-compose": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/70-mime-headers/manage-custom-internet-headers-message-compose.yaml", "outlook-regex-matches-contextual": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/75-regex-matches/contextual.yaml", + "outlook-events-drag-drop-item": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/80-events/drag-drop-item.yaml", "outlook-tokens-and-service-calls-ids-and-urls": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/ids-and-urls.yaml", "outlook-tokens-and-service-calls-user-identity-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-identity-token.yaml", "outlook-tokens-and-service-calls-user-callback-token": "https://raw.githubusercontent.com/OfficeDev/office-js-snippets/main/samples/outlook/85-tokens-and-service-calls/user-callback-token.yaml",