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.
@@ -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 ? 'bottom' : _d, onImageUpload = _a.onImageUpload;
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 - 150, "px");
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 - 150, "px");
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-mention-input",
3
- "version": "1.1.25",
3
+ "version": "1.1.26",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
@@ -50,7 +50,7 @@ const MentionInput: React.FC<MentionInputProps> = ({
50
50
  sendButtonIcon,
51
51
  attachmentButtonIcon,
52
52
  onSendMessage,
53
- suggestionPosition = 'bottom',
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 - 150}px`;
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 - 150}px`;
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;