@chayns-components/emoji-input 5.5.30 → 5.5.33-alpha.0
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/AGENTS.md +6 -1
- package/lib/cjs/components/emoji-input/EmojiInput.js +28 -10
- package/lib/cjs/components/emoji-input/EmojiInput.js.map +1 -1
- package/lib/cjs/components/emoji-input/EmojiInput.styles.js +1 -0
- package/lib/cjs/components/emoji-input/EmojiInput.styles.js.map +1 -1
- package/lib/cjs/components/emoji-picker/EmojiPicker.js +5 -6
- package/lib/cjs/components/emoji-picker/EmojiPicker.js.map +1 -1
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +3 -3
- package/lib/cjs/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -1
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.js +50 -5
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -1
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.styles.js +14 -0
- package/lib/cjs/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -1
- package/lib/cjs/constants/textStrings.js +9 -1
- package/lib/cjs/constants/textStrings.js.map +1 -1
- package/lib/esm/components/emoji-input/EmojiInput.js +20 -3
- package/lib/esm/components/emoji-input/EmojiInput.js.map +1 -1
- package/lib/esm/components/emoji-input/EmojiInput.styles.js +1 -0
- package/lib/esm/components/emoji-input/EmojiInput.styles.js.map +1 -1
- package/lib/esm/components/emoji-picker/EmojiPicker.js +5 -6
- package/lib/esm/components/emoji-picker/EmojiPicker.js.map +1 -1
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js +3 -3
- package/lib/esm/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.js.map +1 -1
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.js +50 -6
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.js.map +1 -1
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.styles.js +14 -0
- package/lib/esm/components/emoji-picker-popup/EmojiPickerPopup.styles.js.map +1 -1
- package/lib/esm/constants/textStrings.js +9 -1
- package/lib/esm/constants/textStrings.js.map +1 -1
- package/lib/types/components/emoji-input/EmojiInput.d.ts +9 -0
- package/lib/types/components/emoji-picker/EmojiPicker.d.ts +1 -1
- package/lib/types/components/emoji-picker/emoji-picker-emojis/EmojiPickerEmojis.d.ts +1 -1
- package/lib/types/components/emoji-picker-popup/EmojiPickerPopup.d.ts +12 -0
- package/lib/types/constants/textStrings.d.ts +9 -1
- package/package.json +4 -4
|
@@ -1,27 +1,59 @@
|
|
|
1
|
-
import { AreaProvider, Icon, Popup } from '@chayns-components/core';
|
|
1
|
+
import { AreaProvider, Icon, Popup, useFocusRingPortal, useKeyboardFocusHighlighting } from '@chayns-components/core';
|
|
2
2
|
import React, { useCallback, useEffect, useRef } from 'react';
|
|
3
3
|
import EmojiPicker from '../emoji-picker/EmojiPicker';
|
|
4
4
|
import { StyledEmojiPickerPopup } from './EmojiPickerPopup.styles';
|
|
5
|
+
import { useTranslation } from '@chayns/textstrings';
|
|
6
|
+
import textStrings from '../../constants/textStrings';
|
|
5
7
|
const EmojiPickerPopup = ({
|
|
6
8
|
accessToken,
|
|
7
9
|
container,
|
|
10
|
+
isDisabled,
|
|
8
11
|
onPopupVisibilityChange,
|
|
9
12
|
onSelect,
|
|
10
|
-
|
|
13
|
+
onSelectWithKeyboard,
|
|
14
|
+
personId,
|
|
15
|
+
shouldEnableKeyboardHighlighting
|
|
11
16
|
}) => {
|
|
17
|
+
const {
|
|
18
|
+
t
|
|
19
|
+
} = useTranslation();
|
|
12
20
|
const popupRef = useRef(null);
|
|
21
|
+
const triggerRef = useRef(null);
|
|
22
|
+
const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(isDisabled ? false : shouldEnableKeyboardHighlighting);
|
|
23
|
+
useFocusRingPortal(triggerRef, {
|
|
24
|
+
isEnabled: shouldShowKeyboardHighlighting,
|
|
25
|
+
shape: 'circle',
|
|
26
|
+
padding: 4
|
|
27
|
+
});
|
|
13
28
|
const handleKeyPress = useCallback(event => {
|
|
14
29
|
if (event.key === 'Escape' && !event.shiftKey) {
|
|
15
30
|
popupRef.current?.hide();
|
|
16
31
|
}
|
|
17
32
|
}, []);
|
|
33
|
+
const handleTriggerKeyDown = useCallback(event => {
|
|
34
|
+
if (isDisabled) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (event.key === 'Enter' || event.key === ' ') {
|
|
38
|
+
event.preventDefault();
|
|
39
|
+
popupRef.current?.show();
|
|
40
|
+
}
|
|
41
|
+
}, [isDisabled]);
|
|
42
|
+
const handleSelect = useCallback((emoji, shouldRestoreInputFocus) => {
|
|
43
|
+
onSelect(emoji);
|
|
44
|
+
if (shouldRestoreInputFocus) {
|
|
45
|
+
onSelectWithKeyboard?.(emoji);
|
|
46
|
+
}
|
|
47
|
+
}, [onSelect, onSelectWithKeyboard]);
|
|
18
48
|
useEffect(() => {
|
|
19
49
|
document.addEventListener('keydown', handleKeyPress);
|
|
20
50
|
return () => {
|
|
21
51
|
document.removeEventListener('keydown', handleKeyPress);
|
|
22
52
|
};
|
|
23
53
|
}, [handleKeyPress]);
|
|
24
|
-
return /*#__PURE__*/React.createElement(StyledEmojiPickerPopup,
|
|
54
|
+
return /*#__PURE__*/React.createElement(StyledEmojiPickerPopup, {
|
|
55
|
+
"aria-hidden": isDisabled
|
|
56
|
+
}, /*#__PURE__*/React.createElement(Popup, {
|
|
25
57
|
container: container,
|
|
26
58
|
ref: popupRef,
|
|
27
59
|
onHide: () => typeof onPopupVisibilityChange === 'function' ? onPopupVisibilityChange(false) : undefined,
|
|
@@ -30,14 +62,26 @@ const EmojiPickerPopup = ({
|
|
|
30
62
|
shouldChangeColor: false
|
|
31
63
|
}, /*#__PURE__*/React.createElement(EmojiPicker, {
|
|
32
64
|
accessToken: accessToken,
|
|
33
|
-
onSelect:
|
|
65
|
+
onSelect: handleSelect,
|
|
34
66
|
personId: personId
|
|
35
67
|
}))
|
|
36
|
-
}, /*#__PURE__*/React.createElement(
|
|
68
|
+
}, /*#__PURE__*/React.createElement("button", {
|
|
69
|
+
"aria-label": t(textStrings.emojiPickerPopup.accessibility.open),
|
|
37
70
|
className: "prevent-lose-focus",
|
|
71
|
+
disabled: isDisabled,
|
|
72
|
+
onClick: event => {
|
|
73
|
+
if (isDisabled) {
|
|
74
|
+
event.stopPropagation();
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
onKeyDown: handleTriggerKeyDown,
|
|
78
|
+
ref: triggerRef,
|
|
79
|
+
tabIndex: isDisabled ? -1 : 0,
|
|
80
|
+
type: "button"
|
|
81
|
+
}, /*#__PURE__*/React.createElement(Icon, {
|
|
38
82
|
icons: ['far fa-smile'],
|
|
39
83
|
size: 18
|
|
40
|
-
})));
|
|
84
|
+
}))));
|
|
41
85
|
};
|
|
42
86
|
EmojiPickerPopup.displayName = 'EmojiPickerPopup';
|
|
43
87
|
export default EmojiPickerPopup;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPickerPopup.js","names":["AreaProvider","Icon","Popup","React","useCallback","useEffect","useRef","EmojiPicker","StyledEmojiPickerPopup","EmojiPickerPopup","accessToken","container","onPopupVisibilityChange","onSelect","personId","popupRef","handleKeyPress","event","key","shiftKey","current","hide","document","addEventListener","removeEventListener","createElement","ref","onHide","undefined","onShow","content","shouldChangeColor","className","icons","size","displayName"],"sources":["../../../../src/components/emoji-picker-popup/EmojiPickerPopup.tsx"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"EmojiPickerPopup.js","names":["AreaProvider","Icon","Popup","useFocusRingPortal","useKeyboardFocusHighlighting","React","useCallback","useEffect","useRef","EmojiPicker","StyledEmojiPickerPopup","useTranslation","textStrings","EmojiPickerPopup","accessToken","container","isDisabled","onPopupVisibilityChange","onSelect","onSelectWithKeyboard","personId","shouldEnableKeyboardHighlighting","t","popupRef","triggerRef","shouldShowKeyboardHighlighting","isEnabled","shape","padding","handleKeyPress","event","key","shiftKey","current","hide","handleTriggerKeyDown","preventDefault","show","handleSelect","emoji","shouldRestoreInputFocus","document","addEventListener","removeEventListener","createElement","ref","onHide","undefined","onShow","content","shouldChangeColor","emojiPickerPopup","accessibility","open","className","disabled","onClick","stopPropagation","onKeyDown","tabIndex","type","icons","size","displayName"],"sources":["../../../../src/components/emoji-picker-popup/EmojiPickerPopup.tsx"],"sourcesContent":["import {\n AreaProvider,\n Icon,\n Popup,\n PopupAlignment,\n useFocusRingPortal,\n useKeyboardFocusHighlighting,\n type PopupRef,\n} from '@chayns-components/core';\nimport React, { FC, KeyboardEventHandler, useCallback, useEffect, useRef } from 'react';\nimport EmojiPicker from '../emoji-picker/EmojiPicker';\nimport { StyledEmojiPickerPopup } from './EmojiPickerPopup.styles';\nimport { useTranslation } from '@chayns/textstrings';\nimport textStrings from '../../constants/textStrings';\n\nexport type EmojiPickerPopupProps = {\n /**\n * Access token of the logged-in user. Is needed to load and save the history of the emojis.\n */\n accessToken?: string;\n /**\n * The DOM element that should receive the popup portal.\n */\n container?: Element;\n /**\n * Whether the picker trigger is disabled.\n */\n isDisabled?: boolean;\n /**\n * Function that is executed when the visibility of the popup changes.\n * @param {boolean} isVisible - Whether the popup is visible or not\n */\n onPopupVisibilityChange?: (isVisible: boolean) => void;\n /**\n * Person id of the logged-in user. Is needed to load and save the history of the emojis.\n */\n personId?: string;\n /**\n * Function executed when an emoji is selected in the popup\n * @param {string} emoji - Emoji that was selected\n */\n onSelect: (emoji: string) => void;\n /**\n * Enables keyboard-only focus highlighting for the picker trigger.\n */\n shouldEnableKeyboardHighlighting?: boolean;\n /**\n * Receives focus after an emoji is selected with the keyboard.\n */\n onSelectWithKeyboard?: (emoji: string) => void;\n};\n\nconst EmojiPickerPopup: FC<EmojiPickerPopupProps> = ({\n accessToken,\n container,\n isDisabled,\n onPopupVisibilityChange,\n onSelect,\n onSelectWithKeyboard,\n personId,\n shouldEnableKeyboardHighlighting,\n}) => {\n const { t } = useTranslation();\n const popupRef = useRef<PopupRef>(null);\n const triggerRef = useRef<HTMLButtonElement>(null);\n const shouldShowKeyboardHighlighting = useKeyboardFocusHighlighting(\n isDisabled ? false : shouldEnableKeyboardHighlighting,\n );\n\n useFocusRingPortal(triggerRef, {\n isEnabled: shouldShowKeyboardHighlighting,\n shape: 'circle',\n padding: 4,\n });\n\n const handleKeyPress = useCallback((event: KeyboardEvent) => {\n if (event.key === 'Escape' && !event.shiftKey) {\n popupRef.current?.hide();\n }\n }, []);\n\n const handleTriggerKeyDown = useCallback<KeyboardEventHandler<HTMLButtonElement>>(\n (event) => {\n if (isDisabled) {\n return;\n }\n\n if (event.key === 'Enter' || event.key === ' ') {\n event.preventDefault();\n popupRef.current?.show();\n }\n },\n [isDisabled],\n );\n\n const handleSelect = useCallback(\n (emoji: string, shouldRestoreInputFocus?: boolean) => {\n onSelect(emoji);\n\n if (shouldRestoreInputFocus) {\n onSelectWithKeyboard?.(emoji);\n }\n },\n [onSelect, onSelectWithKeyboard],\n );\n\n useEffect(() => {\n document.addEventListener('keydown', handleKeyPress);\n\n return () => {\n document.removeEventListener('keydown', handleKeyPress);\n };\n }, [handleKeyPress]);\n\n return (\n <StyledEmojiPickerPopup aria-hidden={isDisabled}>\n <Popup\n container={container}\n ref={popupRef}\n onHide={() =>\n typeof onPopupVisibilityChange === 'function'\n ? onPopupVisibilityChange(false)\n : undefined\n }\n onShow={() =>\n typeof onPopupVisibilityChange === 'function'\n ? onPopupVisibilityChange(true)\n : undefined\n }\n content={\n <AreaProvider shouldChangeColor={false}>\n <EmojiPicker\n accessToken={accessToken}\n onSelect={handleSelect}\n personId={personId}\n />\n </AreaProvider>\n }\n >\n <button\n aria-label={t(textStrings.emojiPickerPopup.accessibility.open)}\n className=\"prevent-lose-focus\"\n disabled={isDisabled}\n onClick={(event) => {\n if (isDisabled) {\n event.stopPropagation();\n }\n }}\n onKeyDown={handleTriggerKeyDown}\n ref={triggerRef}\n tabIndex={isDisabled ? -1 : 0}\n type=\"button\"\n >\n <Icon icons={['far fa-smile']} size={18} />\n </button>\n </Popup>\n </StyledEmojiPickerPopup>\n );\n};\n\nEmojiPickerPopup.displayName = 'EmojiPickerPopup';\n\nexport default EmojiPickerPopup;\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,5 +4,19 @@ export const StyledEmojiPickerPopup = styled.div`
|
|
|
4
4
|
display: flex;
|
|
5
5
|
height: ${() => getComputedStyle(document.body).getPropertyValue('line-height')};
|
|
6
6
|
position: relative;
|
|
7
|
+
|
|
8
|
+
button {
|
|
9
|
+
background: none;
|
|
10
|
+
border: 0;
|
|
11
|
+
color: inherit;
|
|
12
|
+
cursor: pointer;
|
|
13
|
+
font: inherit;
|
|
14
|
+
padding: 0;
|
|
15
|
+
|
|
16
|
+
&:disabled {
|
|
17
|
+
cursor: default;
|
|
18
|
+
opacity: 0.5;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
7
21
|
`;
|
|
8
22
|
//# sourceMappingURL=EmojiPickerPopup.styles.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmojiPickerPopup.styles.js","names":["styled","StyledEmojiPickerPopup","div","getComputedStyle","document","body","getPropertyValue"],"sources":["../../../../src/components/emoji-picker-popup/EmojiPickerPopup.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledEmojiPickerPopup = styled.div`\n align-items: center;\n display: flex;\n height: ${() => getComputedStyle(document.body).getPropertyValue('line-height')};\n position: relative;\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,sBAAsB,GAAGD,MAAM,CAACE,GAAG;AAChD;AACA;AACA,cAAc,MAAMC,gBAAgB,CAACC,QAAQ,CAACC,IAAI,CAAC,CAACC,gBAAgB,CAAC,aAAa,CAAC;AACnF;AACA,CAAC","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"EmojiPickerPopup.styles.js","names":["styled","StyledEmojiPickerPopup","div","getComputedStyle","document","body","getPropertyValue"],"sources":["../../../../src/components/emoji-picker-popup/EmojiPickerPopup.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledEmojiPickerPopup = styled.div`\n align-items: center;\n display: flex;\n height: ${() => getComputedStyle(document.body).getPropertyValue('line-height')};\n position: relative;\n\n button {\n background: none;\n border: 0;\n color: inherit;\n cursor: pointer;\n font: inherit;\n padding: 0;\n\n &:disabled {\n cursor: default;\n opacity: 0.5;\n }\n }\n`;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,sBAAsB,GAAGD,MAAM,CAACE,GAAG;AAChD;AACA;AACA,cAAc,MAAMC,gBAAgB,CAACC,QAAQ,CAACC,IAAI,CAAC,CAACC,gBAAgB,CAAC,aAAa,CAAC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC","ignoreList":[]}
|
|
@@ -3,11 +3,19 @@ export default {
|
|
|
3
3
|
emojiPicker: {
|
|
4
4
|
input: {
|
|
5
5
|
placeholder: {
|
|
6
|
-
stringName: '
|
|
6
|
+
stringName: 'chayns_components_emoji_input_components_emojiPicker_input_placeholder',
|
|
7
7
|
fallback: 'Suchen'
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
|
+
},
|
|
12
|
+
emojiPickerPopup: {
|
|
13
|
+
accessibility: {
|
|
14
|
+
open: {
|
|
15
|
+
stringName: 'chayns_components_emoji_input_emojiPickerPopup_accessibility_open',
|
|
16
|
+
fallback: 'Emoji-Auswahl öffnen'
|
|
17
|
+
}
|
|
18
|
+
}
|
|
11
19
|
}
|
|
12
20
|
};
|
|
13
21
|
//# sourceMappingURL=textStrings.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textStrings.js","names":["components","emojiPicker","input","placeholder","stringName","fallback"],"sources":["../../../src/constants/textStrings.ts"],"sourcesContent":["export default {\n components: {\n emojiPicker: {\n input: {\n placeholder: {\n stringName:\n '
|
|
1
|
+
{"version":3,"file":"textStrings.js","names":["components","emojiPicker","input","placeholder","stringName","fallback","emojiPickerPopup","accessibility","open"],"sources":["../../../src/constants/textStrings.ts"],"sourcesContent":["export default {\n components: {\n emojiPicker: {\n input: {\n placeholder: {\n stringName:\n 'chayns_components_emoji_input_components_emojiPicker_input_placeholder',\n fallback: 'Suchen',\n },\n },\n },\n },\n emojiPickerPopup: {\n accessibility: {\n open: {\n stringName: 'chayns_components_emoji_input_emojiPickerPopup_accessibility_open',\n fallback: 'Emoji-Auswahl öffnen',\n },\n },\n },\n} as const;\n"],"mappings":"AAAA,eAAe;EACXA,UAAU,EAAE;IACRC,WAAW,EAAE;MACTC,KAAK,EAAE;QACHC,WAAW,EAAE;UACTC,UAAU,EACN,wEAAwE;UAC5EC,QAAQ,EAAE;QACd;MACJ;IACJ;EACJ,CAAC;EACDC,gBAAgB,EAAE;IACdC,aAAa,EAAE;MACXC,IAAI,EAAE;QACFJ,UAAU,EAAE,mEAAmE;QAC/EC,QAAQ,EAAE;MACd;IACJ;EACJ;AACJ,CAAC","ignoreList":[]}
|
|
@@ -91,6 +91,15 @@ export type EmojiInputProps = {
|
|
|
91
91
|
* Prevents the EmojiPickerPopup icon from being displayed
|
|
92
92
|
*/
|
|
93
93
|
shouldPreventEmojiPicker?: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Enables keyboard-only focus highlighting.
|
|
96
|
+
*/
|
|
97
|
+
shouldEnableKeyboardHighlighting?: boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Disables keyboard-only focus highlighting for the editor while preserving it for child controls.
|
|
100
|
+
* @optional
|
|
101
|
+
*/
|
|
102
|
+
shouldDisableEditorKeyboardHighlighting?: boolean;
|
|
94
103
|
/**
|
|
95
104
|
* The plain text value of the input field. Instead of HTML elements BB codes must be used at
|
|
96
105
|
* this point. These are then converted by the input field into corresponding HTML elements.
|
|
@@ -8,7 +8,7 @@ export type EmojiPickerProps = {
|
|
|
8
8
|
* Function executed when an emoji is selected in the popup
|
|
9
9
|
* @param {string} emoji - Emoji that was selected
|
|
10
10
|
*/
|
|
11
|
-
onSelect: (emoji: string) => void;
|
|
11
|
+
onSelect: (emoji: string, shouldRestoreInputFocus?: boolean) => void;
|
|
12
12
|
/**
|
|
13
13
|
* Person id of the logged-in user. Is needed to load and save the history of the emojis.
|
|
14
14
|
*/
|
|
@@ -2,7 +2,7 @@ import { FC } from 'react';
|
|
|
2
2
|
import type { Category } from '../../../types/category';
|
|
3
3
|
export type EmojiPickerEmojisProps = {
|
|
4
4
|
accessToken?: string;
|
|
5
|
-
onSelect: (emoji: string) => void;
|
|
5
|
+
onSelect: (emoji: string, shouldRestoreInputFocus?: boolean) => void;
|
|
6
6
|
personId?: string;
|
|
7
7
|
searchString: string;
|
|
8
8
|
selectedCategory: Category;
|
|
@@ -8,6 +8,10 @@ export type EmojiPickerPopupProps = {
|
|
|
8
8
|
* The DOM element that should receive the popup portal.
|
|
9
9
|
*/
|
|
10
10
|
container?: Element;
|
|
11
|
+
/**
|
|
12
|
+
* Whether the picker trigger is disabled.
|
|
13
|
+
*/
|
|
14
|
+
isDisabled?: boolean;
|
|
11
15
|
/**
|
|
12
16
|
* Function that is executed when the visibility of the popup changes.
|
|
13
17
|
* @param {boolean} isVisible - Whether the popup is visible or not
|
|
@@ -22,6 +26,14 @@ export type EmojiPickerPopupProps = {
|
|
|
22
26
|
* @param {string} emoji - Emoji that was selected
|
|
23
27
|
*/
|
|
24
28
|
onSelect: (emoji: string) => void;
|
|
29
|
+
/**
|
|
30
|
+
* Enables keyboard-only focus highlighting for the picker trigger.
|
|
31
|
+
*/
|
|
32
|
+
shouldEnableKeyboardHighlighting?: boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Receives focus after an emoji is selected with the keyboard.
|
|
35
|
+
*/
|
|
36
|
+
onSelectWithKeyboard?: (emoji: string) => void;
|
|
25
37
|
};
|
|
26
38
|
declare const EmojiPickerPopup: FC<EmojiPickerPopupProps>;
|
|
27
39
|
export default EmojiPickerPopup;
|
|
@@ -3,11 +3,19 @@ declare const _default: {
|
|
|
3
3
|
readonly emojiPicker: {
|
|
4
4
|
readonly input: {
|
|
5
5
|
readonly placeholder: {
|
|
6
|
-
readonly stringName: "
|
|
6
|
+
readonly stringName: "chayns_components_emoji_input_components_emojiPicker_input_placeholder";
|
|
7
7
|
readonly fallback: "Suchen";
|
|
8
8
|
};
|
|
9
9
|
};
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
+
readonly emojiPickerPopup: {
|
|
13
|
+
readonly accessibility: {
|
|
14
|
+
readonly open: {
|
|
15
|
+
readonly stringName: "chayns_components_emoji_input_emojiPickerPopup_accessibility_open";
|
|
16
|
+
readonly fallback: "Emoji-Auswahl öffnen";
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
12
20
|
};
|
|
13
21
|
export default _default;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/emoji-input",
|
|
3
|
-
"version": "5.5.
|
|
3
|
+
"version": "5.5.33-alpha.0",
|
|
4
4
|
"description": "Input field that supports HTML elements and emojis",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -75,8 +75,8 @@
|
|
|
75
75
|
"vitest": "^1.6.1"
|
|
76
76
|
},
|
|
77
77
|
"dependencies": {
|
|
78
|
-
"@chayns-components/core": "^5.5.
|
|
79
|
-
"@chayns
|
|
78
|
+
"@chayns-components/core": "^5.5.31-alpha.0",
|
|
79
|
+
"@chayns/textstrings": "^1.0.1",
|
|
80
80
|
"emojilib": "^3.0.12",
|
|
81
81
|
"react-compiler-runtime": "^1.0.0",
|
|
82
82
|
"unicode-emoji-json": "^0.9.0"
|
|
@@ -91,5 +91,5 @@
|
|
|
91
91
|
"publishConfig": {
|
|
92
92
|
"access": "public"
|
|
93
93
|
},
|
|
94
|
-
"gitHead": "
|
|
94
|
+
"gitHead": "0f3671424b04650c8c56d8b90b4a0397a60e78ba"
|
|
95
95
|
}
|