react-mention-input 1.1.12 → 1.1.14
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.d.ts
CHANGED
|
@@ -13,7 +13,10 @@ interface MentionInputProps {
|
|
|
13
13
|
sendBtnClassName?: string;
|
|
14
14
|
suggestionListClassName?: string;
|
|
15
15
|
suggestionItemClassName?: string;
|
|
16
|
+
imgClassName?: string;
|
|
17
|
+
imgStyle?: React.CSSProperties;
|
|
16
18
|
sendButtonIcon?: ReactNode;
|
|
19
|
+
attachmentButtonIcon?: ReactNode;
|
|
17
20
|
onSendMessage?: (obj: {
|
|
18
21
|
messageText: string;
|
|
19
22
|
messageHTML: string;
|
package/dist/MentionInput.js
CHANGED
|
@@ -39,7 +39,7 @@ import ReactDOM from "react-dom";
|
|
|
39
39
|
import "./MentionInput.css";
|
|
40
40
|
var MentionInput = function (_a) {
|
|
41
41
|
var _b, _c;
|
|
42
|
-
var users = _a.users, _d = _a.placeholder, placeholder = _d === void 0 ? "Type a message... (or drag & drop an image)" : _d, containerClassName = _a.containerClassName, inputContainerClassName = _a.inputContainerClassName, inputClassName = _a.inputClassName, sendBtnClassName = _a.sendBtnClassName, suggestionListClassName = _a.suggestionListClassName, suggestionItemClassName = _a.suggestionItemClassName, sendButtonIcon = _a.sendButtonIcon, onSendMessage = _a.onSendMessage, _e = _a.suggestionPosition, suggestionPosition = _e === void 0 ? 'bottom' : _e, onImageUpload = _a.onImageUpload;
|
|
42
|
+
var users = _a.users, _d = _a.placeholder, placeholder = _d === void 0 ? "Type a message... (or drag & drop an image)" : _d, containerClassName = _a.containerClassName, inputContainerClassName = _a.inputContainerClassName, inputClassName = _a.inputClassName, sendBtnClassName = _a.sendBtnClassName, suggestionListClassName = _a.suggestionListClassName, suggestionItemClassName = _a.suggestionItemClassName, imgClassName = _a.imgClassName, imgStyle = _a.imgStyle, sendButtonIcon = _a.sendButtonIcon, attachmentButtonIcon = _a.attachmentButtonIcon, onSendMessage = _a.onSendMessage, _e = _a.suggestionPosition, suggestionPosition = _e === void 0 ? 'bottom' : _e, onImageUpload = _a.onImageUpload;
|
|
43
43
|
var _f = useState(""), inputValue = _f[0], setInputValue = _f[1]; // Plain text
|
|
44
44
|
var _g = useState([]), suggestions = _g[0], setSuggestions = _g[1];
|
|
45
45
|
var _h = useState(false), showSuggestions = _h[0], setShowSuggestions = _h[1];
|
|
@@ -339,14 +339,14 @@ var MentionInput = function (_a) {
|
|
|
339
339
|
console.log(inputValue, (_b = inputRef.current) === null || _b === void 0 ? void 0 : _b.innerText.trim(), "inputValue====");
|
|
340
340
|
return (React.createElement("div", { className: "mention-container ".concat(containerClassName || "") },
|
|
341
341
|
imageUrl && selectedImage && (React.createElement("div", { className: "image-preview-card" },
|
|
342
|
-
React.createElement("img", { src: imageUrl, alt: "Preview" }),
|
|
342
|
+
React.createElement("img", { src: imageUrl, alt: "Preview", className: imgClassName || "", style: imgStyle }),
|
|
343
343
|
React.createElement("button", { onClick: removeImage, className: "remove-image-btn", "aria-label": "Remove image" }, "\u00D7"))),
|
|
344
344
|
React.createElement("div", { className: "mention-input-container ".concat(inputContainerClassName || "", " ").concat(isDraggingOver ? 'dragging-over' : ''), onDragOver: handleDragOver, onDragLeave: handleDragLeave, onDragEnd: function () { return setIsDraggingOver(false); }, onDrop: handleDrop },
|
|
345
345
|
isDraggingOver && (React.createElement("div", { className: "drag-overlay" },
|
|
346
346
|
React.createElement("div", { className: "drag-message" },
|
|
347
347
|
React.createElement("span", null, "Drop to upload")))),
|
|
348
348
|
React.createElement("button", { onClick: function () { var _a; return (_a = fileInputRef.current) === null || _a === void 0 ? void 0 : _a.click(); }, className: "attachment-button", type: "button", "aria-label": "Attach image" },
|
|
349
|
-
React.createElement("span", { className: "attachment-icon" }, "
|
|
349
|
+
React.createElement("span", { className: "attachment-icon" }, attachmentButtonIcon || "📷")),
|
|
350
350
|
React.createElement("div", { className: "mention-input-wrapper" },
|
|
351
351
|
(!inputValue || !inputRef.current || ((_c = inputRef.current) === null || _c === void 0 ? void 0 : _c.innerText.trim()) === "") && (React.createElement("span", { className: "placeholder" }, placeholder)),
|
|
352
352
|
React.createElement("div", { ref: inputRef, contentEditable: true, suppressContentEditableWarning: true, className: "mention-input ".concat(inputClassName || ""), onInput: handleInputChange, onKeyDown: handleKeyDown, onFocus: function () { return document.execCommand('styleWithCSS', false, 'false'); } })),
|
|
@@ -9,6 +9,7 @@ interface ShowMessageCardProps {
|
|
|
9
9
|
dateKey?: string;
|
|
10
10
|
commentKey?: string;
|
|
11
11
|
imgSrcKey?: string;
|
|
12
|
+
imageUrlKey?: string;
|
|
12
13
|
containerClassName?: string;
|
|
13
14
|
containerStyle?: CSSProperties;
|
|
14
15
|
cardClassName?: string;
|
|
@@ -27,6 +28,8 @@ interface ShowMessageCardProps {
|
|
|
27
28
|
bodyStyle?: CSSProperties;
|
|
28
29
|
commentClassName?: string;
|
|
29
30
|
commentStyle?: CSSProperties;
|
|
31
|
+
attachedImageClassName?: string;
|
|
32
|
+
attachedImageStyle?: CSSProperties;
|
|
30
33
|
renderItem?: (element: MessageCardProps) => ReactNode;
|
|
31
34
|
}
|
|
32
35
|
export declare const ShowMessageCard: React.FC<ShowMessageCardProps>;
|
package/dist/ShowMessageCard.js
CHANGED
|
@@ -12,9 +12,10 @@ var __assign = (this && this.__assign) || function () {
|
|
|
12
12
|
import React, { useState } from "react";
|
|
13
13
|
import "./ShowMessageCard.css";
|
|
14
14
|
export var ShowMessageCard = function (_a) {
|
|
15
|
-
var data = _a.data, _b = _a.nameKey, nameKey = _b === void 0 ? "name" : _b, _c = _a.dateKey, dateKey = _c === void 0 ? "date" : _c, _d = _a.commentKey, commentKey = _d === void 0 ? "comment" : _d, _e = _a.imgSrcKey, imgSrcKey = _e === void 0 ? "imgSrc" : _e,
|
|
15
|
+
var data = _a.data, _b = _a.nameKey, nameKey = _b === void 0 ? "name" : _b, _c = _a.dateKey, dateKey = _c === void 0 ? "date" : _c, _d = _a.commentKey, commentKey = _d === void 0 ? "comment" : _d, _e = _a.imgSrcKey, imgSrcKey = _e === void 0 ? "imgSrc" : _e, _f = _a.imageUrlKey, imageUrlKey = _f === void 0 ? "imageUrl" : _f, // Default key for attached image
|
|
16
|
+
containerClassName = _a.containerClassName, containerStyle = _a.containerStyle, cardClassName = _a.cardClassName, cardStyle = _a.cardStyle, headerClassName = _a.headerClassName, headerStyle = _a.headerStyle, imgClassName = _a.imgClassName, imgStyle = _a.imgStyle, infoClassName = _a.infoClassName, infoStyle = _a.infoStyle, nameClassName = _a.nameClassName, nameStyle = _a.nameStyle, dateClassName = _a.dateClassName, dateStyle = _a.dateStyle, bodyClassName = _a.bodyClassName, bodyStyle = _a.bodyStyle, commentClassName = _a.commentClassName, commentStyle = _a.commentStyle, attachedImageClassName = _a.attachedImageClassName, attachedImageStyle = _a.attachedImageStyle, renderItem = _a.renderItem;
|
|
16
17
|
// State to manage initials for images that fail to load
|
|
17
|
-
var
|
|
18
|
+
var _g = useState({}), initialsState = _g[0], setInitialsState = _g[1];
|
|
18
19
|
// Handle image load failure
|
|
19
20
|
var handleImageError = function (id) {
|
|
20
21
|
setInitialsState(function (prevState) {
|
|
@@ -44,6 +45,8 @@ export var ShowMessageCard = function (_a) {
|
|
|
44
45
|
React.createElement("h3", { className: "message-card-name ".concat(nameClassName || ""), style: nameStyle }, item[nameKey]),
|
|
45
46
|
React.createElement("p", { className: "message-card-date ".concat(dateClassName || ""), style: dateStyle }, item[dateKey]))),
|
|
46
47
|
React.createElement("div", { className: "message-card-body ".concat(bodyClassName || ""), style: bodyStyle },
|
|
47
|
-
React.createElement("p", { className: "message-card-comment ".concat(commentClassName || ""), style: commentStyle, dangerouslySetInnerHTML: { __html: item[commentKey] } })
|
|
48
|
+
React.createElement("p", { className: "message-card-comment ".concat(commentClassName || ""), style: commentStyle, dangerouslySetInnerHTML: { __html: item[commentKey] } }),
|
|
49
|
+
(item === null || item === void 0 ? void 0 : item[imageUrlKey]) && (React.createElement("div", { className: "message-card-attached-image-container" },
|
|
50
|
+
React.createElement("img", { src: item[imageUrlKey], alt: "Attached", className: "message-card-attached-image ".concat(attachedImageClassName || ""), style: attachedImageStyle }))))));
|
|
48
51
|
})));
|
|
49
52
|
};
|
package/package.json
CHANGED
package/src/MentionInput.tsx
CHANGED
|
@@ -16,7 +16,10 @@ interface MentionInputProps {
|
|
|
16
16
|
sendBtnClassName?: string;
|
|
17
17
|
suggestionListClassName?: string;
|
|
18
18
|
suggestionItemClassName?: string;
|
|
19
|
+
imgClassName?: string; // New prop for image CSS class
|
|
20
|
+
imgStyle?: React.CSSProperties; // New prop for inline image styles
|
|
19
21
|
sendButtonIcon?: ReactNode; // Button icon (MUI icon or image path)
|
|
22
|
+
attachmentButtonIcon?: ReactNode; // New prop for attachment button icon
|
|
20
23
|
onSendMessage?: (obj: {
|
|
21
24
|
messageText: string;
|
|
22
25
|
messageHTML: string;
|
|
@@ -38,7 +41,10 @@ const MentionInput: React.FC<MentionInputProps> = ({
|
|
|
38
41
|
sendBtnClassName,
|
|
39
42
|
suggestionListClassName,
|
|
40
43
|
suggestionItemClassName,
|
|
44
|
+
imgClassName,
|
|
45
|
+
imgStyle,
|
|
41
46
|
sendButtonIcon,
|
|
47
|
+
attachmentButtonIcon,
|
|
42
48
|
onSendMessage,
|
|
43
49
|
suggestionPosition = 'bottom',
|
|
44
50
|
onImageUpload,
|
|
@@ -390,7 +396,12 @@ const MentionInput: React.FC<MentionInputProps> = ({
|
|
|
390
396
|
<div className={`mention-container ${containerClassName || ""}`}>
|
|
391
397
|
{imageUrl && selectedImage && (
|
|
392
398
|
<div className="image-preview-card">
|
|
393
|
-
<img
|
|
399
|
+
<img
|
|
400
|
+
src={imageUrl}
|
|
401
|
+
alt="Preview"
|
|
402
|
+
className={imgClassName || ""}
|
|
403
|
+
style={imgStyle}
|
|
404
|
+
/>
|
|
394
405
|
<button onClick={removeImage} className="remove-image-btn" aria-label="Remove image">
|
|
395
406
|
×
|
|
396
407
|
</button>
|
|
@@ -418,7 +429,7 @@ const MentionInput: React.FC<MentionInputProps> = ({
|
|
|
418
429
|
type="button"
|
|
419
430
|
aria-label="Attach image"
|
|
420
431
|
>
|
|
421
|
-
<span className="attachment-icon"
|
|
432
|
+
<span className="attachment-icon">{attachmentButtonIcon || "📷"}</span>
|
|
422
433
|
</button>
|
|
423
434
|
|
|
424
435
|
<div className="mention-input-wrapper">
|
package/src/ShowMessageCard.tsx
CHANGED
|
@@ -11,6 +11,7 @@ interface ShowMessageCardProps {
|
|
|
11
11
|
dateKey?: string; // Custom key for date
|
|
12
12
|
commentKey?: string; // Custom key for comment
|
|
13
13
|
imgSrcKey?: string; // Custom key for image source
|
|
14
|
+
imageUrlKey?: string; // Custom key for attached image URL
|
|
14
15
|
containerClassName?: string; // Class for the outermost container
|
|
15
16
|
containerStyle?: CSSProperties; // Style for the outermost container
|
|
16
17
|
cardClassName?: string; // Class for the card
|
|
@@ -29,6 +30,8 @@ interface ShowMessageCardProps {
|
|
|
29
30
|
bodyStyle?: CSSProperties; // Style for the card body
|
|
30
31
|
commentClassName?: string; // Class for the comment text
|
|
31
32
|
commentStyle?: CSSProperties; // Style for the comment text
|
|
33
|
+
attachedImageClassName?: string; // Class for the attached image
|
|
34
|
+
attachedImageStyle?: CSSProperties; // Style for the attached image
|
|
32
35
|
renderItem?: (element: MessageCardProps) => ReactNode; // Custom render function
|
|
33
36
|
}
|
|
34
37
|
|
|
@@ -38,6 +41,7 @@ export const ShowMessageCard: React.FC<ShowMessageCardProps> = ({
|
|
|
38
41
|
dateKey = "date",
|
|
39
42
|
commentKey = "comment",
|
|
40
43
|
imgSrcKey = "imgSrc",
|
|
44
|
+
imageUrlKey = "imageUrl", // Default key for attached image
|
|
41
45
|
containerClassName,
|
|
42
46
|
containerStyle,
|
|
43
47
|
cardClassName,
|
|
@@ -56,6 +60,8 @@ export const ShowMessageCard: React.FC<ShowMessageCardProps> = ({
|
|
|
56
60
|
bodyStyle,
|
|
57
61
|
commentClassName,
|
|
58
62
|
commentStyle,
|
|
63
|
+
attachedImageClassName,
|
|
64
|
+
attachedImageStyle,
|
|
59
65
|
renderItem, // Custom render function
|
|
60
66
|
}) => {
|
|
61
67
|
// State to manage initials for images that fail to load
|
|
@@ -146,17 +152,23 @@ export const ShowMessageCard: React.FC<ShowMessageCardProps> = ({
|
|
|
146
152
|
className={`message-card-body ${bodyClassName || ""}`}
|
|
147
153
|
style={bodyStyle}
|
|
148
154
|
>
|
|
149
|
-
|
|
155
|
+
<p
|
|
150
156
|
className={`message-card-comment ${commentClassName || ""}`}
|
|
151
157
|
style={commentStyle}
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
158
|
+
dangerouslySetInnerHTML={{ __html: item[commentKey] }}
|
|
159
|
+
></p>
|
|
160
|
+
|
|
161
|
+
{/* Display attached image if available */}
|
|
162
|
+
{item?.[imageUrlKey] && (
|
|
163
|
+
<div className="message-card-attached-image-container">
|
|
164
|
+
<img
|
|
165
|
+
src={item[imageUrlKey]}
|
|
166
|
+
alt="Attached"
|
|
167
|
+
className={`message-card-attached-image ${attachedImageClassName || ""}`}
|
|
168
|
+
style={attachedImageStyle}
|
|
169
|
+
/>
|
|
170
|
+
</div>
|
|
171
|
+
)}
|
|
160
172
|
</div>
|
|
161
173
|
</div>
|
|
162
174
|
);
|