react-input-emoji 5.6.11 → 5.7.1

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/README.md CHANGED
@@ -1,22 +1,35 @@
1
- # react-input-emoji
1
+ # react-input-emoji 😍 😜 😂 😛
2
2
 
3
- > A React input with an option to pick emojis
3
+ > A powerful and customizable React component that seamlessly integrates emoji picker functionality into any input element, enhancing user experience.
4
4
 
5
5
  [![NPM](https://img.shields.io/npm/v/react-input-emoji.svg)](https://www.npmjs.com/package/react-input-emoji) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://standardjs.com)
6
6
 
7
7
  <a href="https://cesarwbr.github.io/react-input-emoji/"><img width="500" src="https://cesarwbr.github.io/react-input-emoji/assets/images/screely-1566732641740.png" alt="Demo"></a>
8
8
 
9
- ## About
9
+ ## 📝 About
10
10
 
11
- InputEmoji provides a simple way to have an input element with emoji picker support. Click the picker button next to the input field and select an emoji from the popup window. Done!
11
+ InputEmoji provides a simple and intuitive way to add emoji picker functionality to any input element in your React application. With just a few lines of code, you can enable your users to easily select and insert emojis into their text input.
12
12
 
13
- ## Install
13
+ The component is highly customizable, allowing you to control the styling, positioning and behavior of the emoji picker. It also supports various useful features out of the box, such as:
14
+
15
+ - Easy integration with any input element
16
+ - Customizable appearance via props
17
+ - Built-in support for cleaning input on enter
18
+ - Callback functions for onChange, onClick and onEnter events
19
+ - Ability to keep the picker open after selecting an emoji
20
+ - Internationalization support for multiple languages
21
+
22
+ InputEmoji leverages the power of the emoji-mart library to provide a wide range of emojis across different categories and styles. The internationalization capabilities allow you to cater to users from diverse linguistic backgrounds, making your application more inclusive and accessible.
23
+
24
+ Whether you're building a chat app, social media platform, or any other application that could benefit from emoji input, InputEmoji has you covered. Give your users a fun and engaging way to express themselves with this powerful yet easy-to-use component!
25
+
26
+ ## 📦 Install
14
27
 
15
28
  ```bash
16
29
  npm install --save react-input-emoji
17
30
  ```
18
31
 
19
- ## Usage
32
+ ## 🚀 Usage
20
33
 
21
34
  After install import the react-input-emoji component to display your input with emoji support like so:
22
35
 
@@ -43,29 +56,33 @@ export default function Example() {
43
56
  }
44
57
  ```
45
58
 
46
- ## Props
59
+ ## 🧩 Props
47
60
 
48
61
  | Prop | Type | Default | Description |
49
62
  | ------------------ | ------------------------ | ---------------- | ------------------------------------------------------------------------------------------------------------------------ |
50
- | `borderColor` | string | "#EAEAEA" | The border color of the input container. |
51
- | `borderRadius` | number | 21 | The border radius of the input container. |
52
- | `buttonElement` | HTMLElement | - | An HTMLElement that, when clicked, triggers the emoji picker. If this prop is provided, the default emoji picker button is removed. |
53
- | `buttonRef` | React.MutableRefObject | - | A React mutable ref object that, when referenced, triggers the emoji picker. If this prop is provided, the default emoji picker button is removed. |
54
- | `cleanOnEnter` | boolean | false | Clean the input value after the keydown event. |
55
- | `fontSize` | number | 15 | The font size of the placeholder and input container. |
56
- | `fontFamily` | string | "sans-serif" | The font family of the placeholder and input container. |
57
- | `height` | number | 40 | The total height of the area in which the element is rendered. |
58
- | `keepOpened` | boolean | false | If set to true, the emoji picker will remain open after selecting an emoji. Defaults to false. |
59
- | `maxLength` | number | - | The maximum number of characters allowed in the element. |
60
- | `onChange` | function | - | This function is called when the value of the input changes. The first argument is the current value. |
61
- | `onClick` | function | - | This function is called when the input is clicked. |
62
- | `onEnter` | function | - | This function is called after the keydown event is fired with the `keyCode === 13` returning the last value. |
63
- | `onFocus` | function | - | This function is called when the input has received focus. |
64
- | `onResize` | function | - | This function is called when the width or the height of the input changes. The first argument is the current size value. |
65
- | `placeholder` | string | "Type a message" | Set the placeholder of the input. |
66
- | `shouldReturn` | boolean | - | Allows the user to use the `Shift + Enter` or `Ctrl + Enter` keyboard shortcut to create a new line. |
67
- | `theme` | string | - | Set theme for emoji popup. Available values "light", "dark", "auto" |
68
- | `value` | string | "" | The input value. |
63
+ | `background` | string | "white" | Specifies the background color of the input element. Accepts any valid CSS color value. |
64
+ | `borderColor` | string | "#EAEAEA" | Specifies the border color of the input container. Accepts any valid CSS color value. |
65
+ | `borderRadius` | number | 21 | Determines the border radius of the input container in pixels. Higher values result in more rounded corners. |
66
+ | `buttonElement` | HTMLElement | - | Allows you to provide a custom HTMLElement that, when clicked, triggers the emoji picker. If this prop is provided, the default emoji picker button is removed. |
67
+ | `buttonRef` | React.MutableRefObject | - | Accepts a React mutable ref object that, when referenced, triggers the emoji picker. If this prop is provided, the default emoji picker button is removed. |
68
+ | `cleanOnEnter` | boolean | false | When set to true, the input value will be cleared after the user presses the Enter key. |
69
+ | `color` | string | "black" | Specifies the color of the input text. Accepts any valid CSS color value. |
70
+ | `fontSize` | number | 15 | Controls the font size (in pixels) of the placeholder text and input value. |
71
+ | `fontFamily` | string | "sans-serif" | Specifies the font family for the placeholder text and input value. Accepts any valid CSS font-family value. |
72
+ | `height` | number | 40 | Sets the total height (in pixels) of the area in which the input element is rendered. |
73
+ | `keepOpened` | boolean | false | When set to true, the emoji picker will remain open after the user selects an emoji. Defaults to false. |
74
+ | `language` | string | 'en' | Specifies the language to be used for the emoji picker. Available values: 'ar', 'be', 'cs', 'de', 'en', 'es', 'fa', 'fi', 'fr', 'hi', 'it', 'ja', 'kr', 'pl', 'pt', 'ru', 'sa', 'tr', 'uk', 'vi', 'zh'. |
75
+ | `maxLength` | number | - | Limits the maximum number of characters that can be entered in the input element. |
76
+ | `onChange` | function | - | A callback function that is invoked whenever the input value changes. It receives the current value as its argument. |
77
+ | `onClick` | function | - | A callback function that is invoked when the input element is clicked. |
78
+ | `onEnter` | function | - | A callback function that is invoked when the Enter key is pressed. It receives the current input value as its argument. |
79
+ | `onFocus` | function | - | A callback function that is invoked when the input element receives focus. |
80
+ | `onResize` | function | - | A callback function that is invoked when the width or height of the input element changes. It receives the current size value as its argument. |
81
+ | `placeholder` | string | "Type a message" | Specifies the placeholder text to be displayed when the input is empty. |
82
+ | `placeholderColor` | string | "#C4C4C4" | Specifies the color of the placeholder text. Accepts any valid CSS color value. |
83
+ | `shouldReturn` | boolean | - | When set to true, allows the user to create a new line using the `Shift + Enter` or `Ctrl + Enter` keyboard shortcuts. |
84
+ | `theme` | string | - | Specifies the theme for the emoji picker popup. Available values: "light", "dark", "auto". |
85
+ | `value` | string | "" | The current value of the input element. |
69
86
 
70
87
  ## License
71
88
 
package/dist/index.es.js CHANGED
@@ -1,4 +1,4 @@
1
- import React, { useRef, useCallback, useImperativeHandle, useEffect, forwardRef, useState, memo, useMemo } from 'react';
1
+ import React, { useRef, useCallback, useImperativeHandle, useEffect, forwardRef, useMemo, useState, memo } from 'react';
2
2
  import ReactDOM from 'react-dom';
3
3
 
4
4
  function styleInject(css, ref) {
@@ -936,7 +936,7 @@ var _excluded = ["placeholder", "style", "tabIndex", "className", "onChange"];
936
936
  * @property {(event: React.ClipboardEvent) => void} onCopy
937
937
  * @property {(event: React.ClipboardEvent) => void} onPaste
938
938
  * @property {string} placeholder
939
- * @property {React.CSSProperties} style
939
+ * @property {{borderRadius?: number; color?: string; borderColor?: string; fontSize?: number; fontFamily?: string; background: string; placeholderColor?: string;}} style
940
940
  * @property {number} tabIndex
941
941
  * @property {string} className
942
942
  * @property {(html: string) => void} onChange
@@ -1023,6 +1023,24 @@ var TextInput = function TextInput(_ref, ref) {
1023
1023
  };
1024
1024
  });
1025
1025
 
1026
+ /** @type {React.CSSProperties} */
1027
+ var placeholderStyle = useMemo(function () {
1028
+ var placeholderStyle = {};
1029
+ if (style.placeholderColor) {
1030
+ placeholderStyle.color = style.placeholderColor;
1031
+ }
1032
+ return placeholderStyle;
1033
+ }, [style === null || style === void 0 ? void 0 : style.placeholderColor]);
1034
+
1035
+ /** @type {React.CSSProperties} */
1036
+ var inputStyle = useMemo(function () {
1037
+ var inputStyle = {};
1038
+ if (style.color) {
1039
+ inputStyle.color = style.color;
1040
+ }
1041
+ return inputStyle;
1042
+ }, [style === null || style === void 0 ? void 0 : style.color]);
1043
+
1026
1044
  /** @type {React.MutableRefObject<HTMLDivElement | null>} */
1027
1045
  var placeholderRef = useRef(null);
1028
1046
  /** @type {React.MutableRefObject<HTMLDivElement | null>} */
@@ -1086,7 +1104,8 @@ var TextInput = function TextInput(_ref, ref) {
1086
1104
  onClick: handleClick
1087
1105
  }, /*#__PURE__*/React.createElement("div", {
1088
1106
  ref: placeholderRef,
1089
- className: "react-input-emoji--placeholder"
1107
+ className: "react-input-emoji--placeholder",
1108
+ style: placeholderStyle
1090
1109
  }, placeholder), /*#__PURE__*/React.createElement("div", {
1091
1110
  ref: textInputRef,
1092
1111
  onKeyDown: handleKeyDown,
@@ -1097,7 +1116,8 @@ var TextInput = function TextInput(_ref, ref) {
1097
1116
  onBlur: props.onBlur,
1098
1117
  onCopy: props.onCopy,
1099
1118
  onPaste: props.onPaste,
1100
- "data-testid": "react-input-emoji--input"
1119
+ "data-testid": "react-input-emoji--input",
1120
+ style: inputStyle
1101
1121
  })));
1102
1122
  };
1103
1123
  var TextInputWithRef = /*#__PURE__*/forwardRef(TextInput);
@@ -4490,6 +4510,8 @@ function usePollute() {
4490
4510
  * @property {boolean=} cleanOnEnter
4491
4511
  * @property {(text: string) => void=} onEnter
4492
4512
  * @property {string=} placeholder
4513
+ * @property {string=} placeholderColor
4514
+ * @property {string=} color
4493
4515
  * @property {(size: {width: number, height: number}) => void=} onResize
4494
4516
  * @property {() => void=} onClick
4495
4517
  * @property {() => void=} onFocus
@@ -4506,6 +4528,7 @@ function usePollute() {
4506
4528
  * @property {string=} borderColor
4507
4529
  * @property {number=} fontSize
4508
4530
  * @property {string=} fontFamily
4531
+ * @property {string=} background
4509
4532
  * @property {{id: string; name: string; emojis: {id: string; name: string; keywords: string[], skins: {src: string}[]}}[]=} customEmojis
4510
4533
  * @property {import('./types/types').Languages=} language
4511
4534
  * @property {(text: string) => Promise<MetionUser[]>=} searchMention
@@ -4545,7 +4568,10 @@ function InputEmoji(props, ref) {
4545
4568
  borderRadius = props.borderRadius,
4546
4569
  borderColor = props.borderColor,
4547
4570
  fontSize = props.fontSize,
4548
- fontFamily = props.fontFamily;
4571
+ fontFamily = props.fontFamily,
4572
+ background = props.background,
4573
+ placeholderColor = props.placeholderColor,
4574
+ color = props.color;
4549
4575
 
4550
4576
  /** @type {React.MutableRefObject<import('./text-input').Ref | null>} */
4551
4577
  var textInputRef = useRef(null);
@@ -4714,7 +4740,10 @@ function InputEmoji(props, ref) {
4714
4740
  borderRadius: borderRadius,
4715
4741
  borderColor: borderColor,
4716
4742
  fontSize: fontSize,
4717
- fontFamily: fontFamily
4743
+ fontFamily: fontFamily,
4744
+ background: background,
4745
+ placeholderColor: placeholderColor,
4746
+ color: color
4718
4747
  },
4719
4748
  tabIndex: tabIndex,
4720
4749
  className: inputClass,
@@ -4739,8 +4768,10 @@ InputEmojiWithRef.defaultProps = {
4739
4768
  placeholder: "Type a message",
4740
4769
  borderRadius: 21,
4741
4770
  borderColor: "#EAEAEA",
4771
+ color: "black",
4742
4772
  fontSize: 15,
4743
4773
  fontFamily: "sans-serif",
4774
+ background: "white",
4744
4775
  tabIndex: 0,
4745
4776
  shouldReturn: false,
4746
4777
  customEmojis: [],