react-mention-input 1.1.25 → 1.1.26
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/MentionInput.js +15 -9
- package/package.json +1 -1
- package/src/MentionInput.tsx +16 -9
package/dist/MentionInput.js
CHANGED
|
@@ -48,7 +48,7 @@ import ReactDOM from "react-dom";
|
|
|
48
48
|
import "./MentionInput.css";
|
|
49
49
|
var MentionInput = function (_a) {
|
|
50
50
|
var _b;
|
|
51
|
-
var users = _a.users, _c = _a.placeholder, placeholder = _c === void 0 ? "Type a message... (or drag & drop an image)" : _c, containerClassName = _a.containerClassName, inputContainerClassName = _a.inputContainerClassName, inputClassName = _a.inputClassName, sendBtnClassName = _a.sendBtnClassName, suggestionListClassName = _a.suggestionListClassName, suggestionItemClassName = _a.suggestionItemClassName, imgClassName = _a.imgClassName, imgStyle = _a.imgStyle, attachedImageContainerClassName = _a.attachedImageContainerClassName, attachedImageContainerStyle = _a.attachedImageContainerStyle, sendButtonIcon = _a.sendButtonIcon, attachmentButtonIcon = _a.attachmentButtonIcon, onSendMessage = _a.onSendMessage, _d = _a.suggestionPosition, suggestionPosition = _d === void 0 ? '
|
|
51
|
+
var users = _a.users, _c = _a.placeholder, placeholder = _c === void 0 ? "Type a message... (or drag & drop an image)" : _c, containerClassName = _a.containerClassName, inputContainerClassName = _a.inputContainerClassName, inputClassName = _a.inputClassName, sendBtnClassName = _a.sendBtnClassName, suggestionListClassName = _a.suggestionListClassName, suggestionItemClassName = _a.suggestionItemClassName, imgClassName = _a.imgClassName, imgStyle = _a.imgStyle, attachedImageContainerClassName = _a.attachedImageContainerClassName, attachedImageContainerStyle = _a.attachedImageContainerStyle, sendButtonIcon = _a.sendButtonIcon, attachmentButtonIcon = _a.attachmentButtonIcon, onSendMessage = _a.onSendMessage, _d = _a.suggestionPosition, suggestionPosition = _d === void 0 ? 'top' : _d, onImageUpload = _a.onImageUpload;
|
|
52
52
|
var _e = useState(""), inputValue = _e[0], setInputValue = _e[1]; // Plain text
|
|
53
53
|
var _f = useState([]), suggestions = _f[0], setSuggestions = _f[1];
|
|
54
54
|
var _g = useState(false), showSuggestions = _g[0], setShowSuggestions = _g[1];
|
|
@@ -229,6 +229,7 @@ var MentionInput = function (_a) {
|
|
|
229
229
|
}
|
|
230
230
|
};
|
|
231
231
|
var renderSuggestions = function () {
|
|
232
|
+
var _a, _b, _c, _d, _e, _f;
|
|
232
233
|
if (!showSuggestions || !inputRef.current)
|
|
233
234
|
return null;
|
|
234
235
|
var getInitials = function (name) {
|
|
@@ -240,27 +241,32 @@ var MentionInput = function (_a) {
|
|
|
240
241
|
return initials;
|
|
241
242
|
};
|
|
242
243
|
var inputRect = inputRef.current.getBoundingClientRect();
|
|
244
|
+
var scrollLeft = (_c = (_b = (_a = window.scrollX) !== null && _a !== void 0 ? _a : window.pageXOffset) !== null && _b !== void 0 ? _b : document.documentElement.scrollLeft) !== null && _c !== void 0 ? _c : 0;
|
|
245
|
+
var scrollTop = (_f = (_e = (_d = window.scrollY) !== null && _d !== void 0 ? _d : window.pageYOffset) !== null && _e !== void 0 ? _e : document.documentElement.scrollTop) !== null && _f !== void 0 ? _f : 0;
|
|
243
246
|
var styles = {
|
|
244
247
|
position: 'absolute',
|
|
245
248
|
zIndex: 1000,
|
|
249
|
+
minWidth: inputRect.width,
|
|
246
250
|
};
|
|
247
251
|
// Use suggestionPosition prop to adjust tooltip position
|
|
248
252
|
switch (suggestionPosition) {
|
|
249
253
|
case 'top':
|
|
250
|
-
styles.left = "".concat(inputRect.left, "px");
|
|
251
|
-
styles.top = "".concat(inputRect.top -
|
|
254
|
+
styles.left = "".concat(inputRect.left + scrollLeft, "px");
|
|
255
|
+
styles.top = "".concat(inputRect.top + scrollTop - 8, "px");
|
|
256
|
+
styles.transform = 'translateY(-100%)';
|
|
252
257
|
break;
|
|
253
258
|
case 'bottom':
|
|
254
|
-
styles.left = "".concat(inputRect.left, "px");
|
|
255
|
-
styles.top = "".concat(inputRect.bottom, "px");
|
|
259
|
+
styles.left = "".concat(inputRect.left + scrollLeft, "px");
|
|
260
|
+
styles.top = "".concat(inputRect.bottom + scrollTop + 8, "px");
|
|
256
261
|
break;
|
|
257
262
|
case 'left':
|
|
258
|
-
styles.left = "".concat(inputRect.left -
|
|
259
|
-
styles.top = "".concat(inputRect.top, "px");
|
|
263
|
+
styles.left = "".concat(inputRect.left + scrollLeft - 8, "px");
|
|
264
|
+
styles.top = "".concat(inputRect.top + scrollTop, "px");
|
|
265
|
+
styles.transform = "".concat(styles.transform ? "".concat(styles.transform, " ") : '', "translateX(-100%)");
|
|
260
266
|
break;
|
|
261
267
|
case 'right':
|
|
262
|
-
styles.left = "".concat(inputRect.right, "px");
|
|
263
|
-
styles.top = "".concat(inputRect.top, "px");
|
|
268
|
+
styles.left = "".concat(inputRect.right + scrollLeft + 8, "px");
|
|
269
|
+
styles.top = "".concat(inputRect.top + scrollTop, "px");
|
|
264
270
|
break;
|
|
265
271
|
default:
|
|
266
272
|
break;
|
package/package.json
CHANGED
package/src/MentionInput.tsx
CHANGED
|
@@ -50,7 +50,7 @@ const MentionInput: React.FC<MentionInputProps> = ({
|
|
|
50
50
|
sendButtonIcon,
|
|
51
51
|
attachmentButtonIcon,
|
|
52
52
|
onSendMessage,
|
|
53
|
-
suggestionPosition = '
|
|
53
|
+
suggestionPosition = 'top',
|
|
54
54
|
onImageUpload,
|
|
55
55
|
}) => {
|
|
56
56
|
const [inputValue, setInputValue] = useState<string>(""); // Plain text
|
|
@@ -302,28 +302,35 @@ const MentionInput: React.FC<MentionInputProps> = ({
|
|
|
302
302
|
};
|
|
303
303
|
|
|
304
304
|
const inputRect = inputRef.current.getBoundingClientRect();
|
|
305
|
+
const scrollLeft =
|
|
306
|
+
window.scrollX ?? window.pageXOffset ?? document.documentElement.scrollLeft ?? 0;
|
|
307
|
+
const scrollTop =
|
|
308
|
+
window.scrollY ?? window.pageYOffset ?? document.documentElement.scrollTop ?? 0;
|
|
305
309
|
const styles: React.CSSProperties = {
|
|
306
310
|
position: 'absolute',
|
|
307
311
|
zIndex: 1000,
|
|
312
|
+
minWidth: inputRect.width,
|
|
308
313
|
};
|
|
309
314
|
|
|
310
315
|
// Use suggestionPosition prop to adjust tooltip position
|
|
311
316
|
switch (suggestionPosition) {
|
|
312
317
|
case 'top':
|
|
313
|
-
styles.left = `${inputRect.left}px`;
|
|
314
|
-
styles.top = `${inputRect.top -
|
|
318
|
+
styles.left = `${inputRect.left + scrollLeft}px`;
|
|
319
|
+
styles.top = `${inputRect.top + scrollTop - 8}px`;
|
|
320
|
+
styles.transform = 'translateY(-100%)';
|
|
315
321
|
break;
|
|
316
322
|
case 'bottom':
|
|
317
|
-
styles.left = `${inputRect.left}px`;
|
|
318
|
-
styles.top = `${inputRect.bottom}px`;
|
|
323
|
+
styles.left = `${inputRect.left + scrollLeft}px`;
|
|
324
|
+
styles.top = `${inputRect.bottom + scrollTop + 8}px`;
|
|
319
325
|
break;
|
|
320
326
|
case 'left':
|
|
321
|
-
styles.left = `${inputRect.left -
|
|
322
|
-
styles.top = `${inputRect.top}px`;
|
|
327
|
+
styles.left = `${inputRect.left + scrollLeft - 8}px`;
|
|
328
|
+
styles.top = `${inputRect.top + scrollTop}px`;
|
|
329
|
+
styles.transform = `${styles.transform ? `${styles.transform} ` : ''}translateX(-100%)`;
|
|
323
330
|
break;
|
|
324
331
|
case 'right':
|
|
325
|
-
styles.left = `${inputRect.right}px`;
|
|
326
|
-
styles.top = `${inputRect.top}px`;
|
|
332
|
+
styles.left = `${inputRect.right + scrollLeft + 8}px`;
|
|
333
|
+
styles.top = `${inputRect.top + scrollTop}px`;
|
|
327
334
|
break;
|
|
328
335
|
default:
|
|
329
336
|
break;
|