botframework-webchat-fluent-theme 4.18.1-main.20250127.e44c342 → 4.18.1-main.20250129.b40802d
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/botframework-webchat-fluent-theme.development.js +6 -6
- package/dist/botframework-webchat-fluent-theme.development.js.map +1 -1
- package/dist/botframework-webchat-fluent-theme.js +1 -1
- package/dist/botframework-webchat-fluent-theme.mjs +1 -1
- package/dist/botframework-webchat-fluent-theme.mjs.map +1 -1
- package/dist/botframework-webchat-fluent-theme.production.min.js +6 -6
- package/dist/botframework-webchat-fluent-theme.production.min.js.map +1 -1
- package/package.json +6 -6
- package/src/components/dropZone/DropZone.tsx +25 -5
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "botframework-webchat-fluent-theme",
|
|
3
|
-
"version": "4.18.1-main.
|
|
3
|
+
"version": "4.18.1-main.20250129.b40802d",
|
|
4
4
|
"description": "Fluent theme for Bot Framework Web Chat",
|
|
5
5
|
"main": "./dist/botframework-webchat-fluent-theme.js",
|
|
6
6
|
"types": "./dist/botframework-webchat-fluent-theme.d.ts",
|
|
@@ -68,15 +68,15 @@
|
|
|
68
68
|
"@types/math-random": "^1.0.2",
|
|
69
69
|
"@types/node": "^20.12.11",
|
|
70
70
|
"@types/react": "^16.14.60",
|
|
71
|
-
"botframework-webchat-base": "4.18.1-main.
|
|
72
|
-
"botframework-webchat-styles": "4.18.1-main.
|
|
71
|
+
"botframework-webchat-base": "4.18.1-main.20250129.b40802d",
|
|
72
|
+
"botframework-webchat-styles": "4.18.1-main.20250129.b40802d",
|
|
73
73
|
"tsup": "^8.0.2",
|
|
74
74
|
"typescript": "^5.4.5"
|
|
75
75
|
},
|
|
76
76
|
"dependencies": {
|
|
77
|
-
"botframework-webchat-api": "4.18.1-main.
|
|
78
|
-
"botframework-webchat-component": "4.18.1-main.
|
|
79
|
-
"botframework-webchat-core": "4.18.1-main.
|
|
77
|
+
"botframework-webchat-api": "4.18.1-main.20250129.b40802d",
|
|
78
|
+
"botframework-webchat-component": "4.18.1-main.20250129.b40802d",
|
|
79
|
+
"botframework-webchat-core": "4.18.1-main.20250129.b40802d",
|
|
80
80
|
"classnames": "2.5.1",
|
|
81
81
|
"inject-meta-tag": "0.0.1",
|
|
82
82
|
"math-random": "2.0.1",
|
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { hooks } from 'botframework-webchat-component';
|
|
2
2
|
import cx from 'classnames';
|
|
3
|
-
import React, {
|
|
3
|
+
import React, {
|
|
4
|
+
memo,
|
|
5
|
+
useCallback,
|
|
6
|
+
useEffect,
|
|
7
|
+
useRef,
|
|
8
|
+
useState,
|
|
9
|
+
type DragEvent as ReactDragEvent,
|
|
10
|
+
type DragEventHandler
|
|
11
|
+
} from 'react';
|
|
4
12
|
import { useRefFrom } from 'use-ref-from';
|
|
5
13
|
|
|
6
14
|
import { AddDocumentIcon } from '../../icons';
|
|
@@ -10,8 +18,14 @@ import { useStyles } from '../../styles';
|
|
|
10
18
|
|
|
11
19
|
const { useLocalizer } = hooks;
|
|
12
20
|
|
|
13
|
-
const handleDragOver:
|
|
14
|
-
//
|
|
21
|
+
const handleDragOver = (event: ReactDragEvent<unknown> | DragEvent) => {
|
|
22
|
+
// Prevent default dragover behavior to enable drop event triggering.
|
|
23
|
+
// Browsers require this to fire subsequent drop events - without it,
|
|
24
|
+
// they would handle the drop directly (e.g., open files in new tabs).
|
|
25
|
+
// This is needed regardless of whether we prevent default drop behavior,
|
|
26
|
+
// as it ensures our dropzone receives the drop event first. If we allow
|
|
27
|
+
// default drop handling (by not calling preventDefault there), the browser
|
|
28
|
+
// will still process the drop after our event handlers complete.
|
|
15
29
|
event.preventDefault();
|
|
16
30
|
};
|
|
17
31
|
|
|
@@ -47,6 +61,8 @@ const DropZone = (props: { readonly onFilesAdded: (files: File[]) => void }) =>
|
|
|
47
61
|
let entranceCounter = 0;
|
|
48
62
|
|
|
49
63
|
const handleDragEnter = (event: DragEvent) => {
|
|
64
|
+
document.addEventListener('dragover', handleDragOver);
|
|
65
|
+
|
|
50
66
|
entranceCounter++;
|
|
51
67
|
|
|
52
68
|
if (isFilesTransferEvent(event)) {
|
|
@@ -63,7 +79,10 @@ const DropZone = (props: { readonly onFilesAdded: (files: File[]) => void }) =>
|
|
|
63
79
|
const handleDragLeave = () => --entranceCounter <= 0 && setDropZoneState(false);
|
|
64
80
|
|
|
65
81
|
const handleDragEnd = () => {
|
|
82
|
+
document.removeEventListener('dragover', handleDragOver);
|
|
83
|
+
|
|
66
84
|
entranceCounter = 0;
|
|
85
|
+
|
|
67
86
|
setDropZoneState(false);
|
|
68
87
|
};
|
|
69
88
|
|
|
@@ -73,15 +92,16 @@ const DropZone = (props: { readonly onFilesAdded: (files: File[]) => void }) =>
|
|
|
73
92
|
}
|
|
74
93
|
};
|
|
75
94
|
|
|
95
|
+
document.addEventListener('dragend', handleDragEnd);
|
|
76
96
|
document.addEventListener('dragenter', handleDragEnter);
|
|
77
97
|
document.addEventListener('dragleave', handleDragLeave);
|
|
78
|
-
document.addEventListener('dragend', handleDragEnd);
|
|
79
98
|
document.addEventListener('drop', handleDocumentDrop);
|
|
80
99
|
|
|
81
100
|
return () => {
|
|
101
|
+
document.removeEventListener('dragend', handleDragEnd);
|
|
82
102
|
document.removeEventListener('dragenter', handleDragEnter);
|
|
83
103
|
document.removeEventListener('dragleave', handleDragLeave);
|
|
84
|
-
document.removeEventListener('
|
|
104
|
+
document.removeEventListener('dragover', handleDragOver);
|
|
85
105
|
document.removeEventListener('drop', handleDocumentDrop);
|
|
86
106
|
};
|
|
87
107
|
}, [setDropZoneState]);
|