@razorpay/blade 12.91.0 → 12.92.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/build/lib/web/development/_virtual/cloneDeep.js +1 -1
- package/build/lib/web/development/_virtual/cloneDeep3.js +1 -1
- package/build/lib/web/development/components/ChatInput/ChatInput.web.js +17 -11
- package/build/lib/web/development/components/ChatInput/ChatInput.web.js.map +1 -1
- package/build/lib/web/development/components/ChatInput/useChatInput.js +12 -1
- package/build/lib/web/development/components/ChatInput/useChatInput.js.map +1 -1
- package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js +1 -1
- package/build/lib/web/development/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
- package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js +23 -15
- package/build/lib/web/development/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
- package/build/lib/web/development/components/SideNav/SideNav.web.js +143 -53
- package/build/lib/web/development/components/SideNav/SideNav.web.js.map +1 -1
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
- package/build/lib/web/development/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
- package/build/lib/web/development/node_modules/es-toolkit/dist/compat/object/cloneDeep.js +1 -1
- package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matches.js +2 -2
- package/build/lib/web/development/node_modules/es-toolkit/dist/compat/predicate/matchesProperty.js +2 -2
- package/build/lib/web/development/node_modules/es-toolkit/dist/object/cloneDeep.js +1 -1
- package/build/lib/web/production/_virtual/flatten.js +1 -1
- package/build/lib/web/production/_virtual/flatten3.js +1 -1
- package/build/lib/web/production/components/ChatInput/ChatInput.web.js +17 -11
- package/build/lib/web/production/components/ChatInput/ChatInput.web.js.map +1 -1
- package/build/lib/web/production/components/ChatInput/useChatInput.js +12 -1
- package/build/lib/web/production/components/ChatInput/useChatInput.js.map +1 -1
- package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js +1 -1
- package/build/lib/web/production/components/ChatMessage/SelfMessageBubble.web.js.map +1 -1
- package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js +23 -15
- package/build/lib/web/production/components/Dropdown/FilterChipSelectInput.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNav.web.js +143 -53
- package/build/lib/web/production/components/SideNav/SideNav.web.js.map +1 -1
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js +33 -18
- package/build/lib/web/production/components/SideNav/SideNavItems/SideNavLink.web.js.map +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/array/flatten.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/flatten.js +1 -1
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/array/sortBy.js +2 -2
- package/build/lib/web/production/node_modules/es-toolkit/dist/compat/object/omit.js +2 -2
- package/build/types/components/index.d.ts +123 -74
- package/build/types/components/index.native.d.ts +79 -40
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../node_modules/es-toolkit/dist/
|
|
1
|
+
import '../node_modules/es-toolkit/dist/object/cloneDeep.js';
|
|
2
2
|
//# sourceMappingURL=cloneDeep.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import '../node_modules/es-toolkit/dist/object/cloneDeep.js';
|
|
1
|
+
import '../node_modules/es-toolkit/dist/compat/object/cloneDeep.js';
|
|
2
2
|
//# sourceMappingURL=cloneDeep3.js.map
|
|
@@ -6,21 +6,21 @@ import { AnimatePresence } from 'framer-motion';
|
|
|
6
6
|
import { ChatInputActionBar } from './ChatInputActionBar.js';
|
|
7
7
|
import { ChatInputGhostSuggestion } from './ChatInputGhostSuggestion.js';
|
|
8
8
|
import { useChatInput } from './useChatInput.js';
|
|
9
|
-
import '../../utils/makeAnalyticsAttribute/index.js';
|
|
10
|
-
import '../../utils/metaAttribute/index.js';
|
|
11
|
-
import '../../utils/index.js';
|
|
12
9
|
import '../BladeProvider/index.js';
|
|
13
|
-
import { msToSeconds } from '../../utils/msToSeconds.js';
|
|
14
|
-
import { cssBezierToArray } from '../../utils/cssBezierToArray.js';
|
|
15
10
|
import '../BaseMotion/index.js';
|
|
16
|
-
import { FileUploadItem } from '../FileUpload/FileUploadItem.js';
|
|
17
|
-
import { BaseInput } from '../Input/BaseInput/BaseInput.js';
|
|
18
11
|
import '../Box/BaseBox/index.js';
|
|
19
|
-
import '../../utils/assignWithoutSideEffects/index.js';
|
|
20
12
|
import '../Box/styledProps/index.js';
|
|
13
|
+
import '../Button/IconButton/index.js';
|
|
14
|
+
import { FileUploadItem } from '../FileUpload/FileUploadItem.js';
|
|
21
15
|
import '../Icons/index.js';
|
|
16
|
+
import { BaseInput } from '../Input/BaseInput/BaseInput.js';
|
|
22
17
|
import '../Typography/index.js';
|
|
23
|
-
import '
|
|
18
|
+
import '../../utils/index.js';
|
|
19
|
+
import '../../utils/assignWithoutSideEffects/index.js';
|
|
20
|
+
import '../../utils/makeAnalyticsAttribute/index.js';
|
|
21
|
+
import '../../utils/metaAttribute/index.js';
|
|
22
|
+
import { msToSeconds } from '../../utils/msToSeconds.js';
|
|
23
|
+
import { cssBezierToArray } from '../../utils/cssBezierToArray.js';
|
|
24
24
|
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
25
25
|
import { BaseBox } from '../Box/BaseBox/BaseBox.web.js';
|
|
26
26
|
import useTheme from '../BladeProvider/useTheme.js';
|
|
@@ -37,7 +37,7 @@ import { IconButton } from '../Button/IconButton/IconButton.js';
|
|
|
37
37
|
import CloseIcon from '../Icons/CloseIcon/CloseIcon.js';
|
|
38
38
|
import { assignWithoutSideEffects } from '../../utils/assignWithoutSideEffects/assignWithoutSideEffects.js';
|
|
39
39
|
|
|
40
|
-
var _excluded = ["value", "defaultValue", "onChange", "onSubmit", "placeholder", "isDisabled", "isGenerating", "onStop", "fileList", "onFileChange", "onFileRemove", "onFileReupload", "accept", "suggestions", "onSuggestionAccept", "validationState", "errorText", "onErrorDismiss", "accessibilityLabel", "testID"];
|
|
40
|
+
var _excluded = ["value", "defaultValue", "onChange", "onFocus", "onBlur", "onSubmit", "placeholder", "isDisabled", "isGenerating", "onStop", "fileList", "onFileChange", "onFileRemove", "onFileReupload", "accept", "suggestions", "onSuggestionAccept", "validationState", "errorText", "onErrorDismiss", "accessibilityLabel", "testID"];
|
|
41
41
|
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
42
42
|
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
43
43
|
var HiddenScrollbarBox = /*#__PURE__*/styled(BaseBox).withConfig({
|
|
@@ -55,6 +55,8 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
55
55
|
var value = _ref.value,
|
|
56
56
|
defaultValue = _ref.defaultValue,
|
|
57
57
|
onChange = _ref.onChange,
|
|
58
|
+
onFocus = _ref.onFocus,
|
|
59
|
+
onBlur = _ref.onBlur,
|
|
58
60
|
onSubmit = _ref.onSubmit,
|
|
59
61
|
_ref$placeholder = _ref.placeholder,
|
|
60
62
|
placeholder = _ref$placeholder === void 0 ? 'Ask a question...' : _ref$placeholder,
|
|
@@ -108,7 +110,8 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
108
110
|
handleUploadClick = _useChatInput.handleUploadClick,
|
|
109
111
|
handleFileInputChange = _useChatInput.handleFileInputChange,
|
|
110
112
|
handleFileRemove = _useChatInput.handleFileRemove,
|
|
111
|
-
handlePaste = _useChatInput.handlePaste
|
|
113
|
+
handlePaste = _useChatInput.handlePaste,
|
|
114
|
+
handleInnerMouseDownCapture = _useChatInput.handleInnerMouseDownCapture;
|
|
112
115
|
var errorSlideVariants = {
|
|
113
116
|
initial: {
|
|
114
117
|
opacity: 0
|
|
@@ -219,6 +222,7 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
219
222
|
}), /*#__PURE__*/jsx(BaseBox, {
|
|
220
223
|
position: "relative",
|
|
221
224
|
zIndex: 1,
|
|
225
|
+
onMouseDownCapture: handleInnerMouseDownCapture,
|
|
222
226
|
children: /*#__PURE__*/jsx(BaseInput, _objectSpread({
|
|
223
227
|
ref: mergedRef,
|
|
224
228
|
as: "textarea",
|
|
@@ -231,6 +235,8 @@ var _ChatInput = function _ChatInput(_ref, ref) {
|
|
|
231
235
|
placeholder: showGhostSuggestion ? '' : placeholder,
|
|
232
236
|
value: textValue,
|
|
233
237
|
onChange: handleTextChange,
|
|
238
|
+
onFocus: onFocus,
|
|
239
|
+
onBlur: onBlur,
|
|
234
240
|
onKeyDown: handleKeyDown,
|
|
235
241
|
onPaste: handlePaste,
|
|
236
242
|
isDisabled: isDisabled,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatInput.web.js","sources":["../../../../../../src/components/ChatInput/ChatInput.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { AnimatePresence } from 'framer-motion';\nimport type { ChatInputProps } from './types';\nimport { ChatInputActionBar } from './ChatInputActionBar';\nimport { ChatInputGhostSuggestion } from './ChatInputGhostSuggestion';\nimport { useChatInput } from './useChatInput';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport type { BladeElementRef } from '~utils/types';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport { castWebType, makeSpace } from '~utils';\nimport { useTheme } from '~components/BladeProvider';\nimport { msToSeconds } from '~utils/msToSeconds';\nimport { cssBezierToArray } from '~utils/cssBezierToArray';\nimport { BaseMotionBox, BaseMotionEntryExit } from '~components/BaseMotion';\nimport type { MotionVariantsType } from '~components/BaseMotion';\nimport { FileUploadItem } from '~components/FileUpload/FileUploadItem';\nimport { BaseInput } from '~components/Input/BaseInput/BaseInput';\nimport BaseBox from '~components/Box/BaseBox';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { CloseIcon, InfoIcon } from '~components/Icons';\nimport { Text } from '~components/Typography';\nimport { IconButton } from '~components/Button/IconButton';\n\nconst HiddenScrollbarBox = styled(BaseBox)(() => ({\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none' as const,\n}));\n\nconst _ChatInput: React.ForwardRefRenderFunction<BladeElementRef, ChatInputProps> = (\n {\n value,\n defaultValue,\n onChange,\n onSubmit,\n placeholder = 'Ask a question...',\n isDisabled = false,\n isGenerating = false,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n onFileReupload,\n accept,\n suggestions,\n onSuggestionAccept,\n validationState,\n errorText,\n onErrorDismiss,\n accessibilityLabel = 'Chat input',\n testID,\n ...rest\n },\n ref,\n) => {\n const { theme } = useTheme();\n\n const {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n setActiveSuggestionIndex,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n } = useChatInput(\n {\n value,\n defaultValue,\n onChange,\n onSubmit,\n isDisabled,\n isGenerating,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n },\n ref,\n );\n\n const errorSlideVariants: MotionVariantsType = {\n initial: { opacity: 0 },\n animate: {\n transform: ['translateY(100%)', 'translateY(0%)'],\n opacity: 1,\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n opacity: 0,\n transform: 'translateY(100%)',\n transitionEnd: { transform: 'translateY(100%)' },\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewMotionVariants: MotionVariantsType = {\n initial: { height: '0px', overflow: 'hidden' },\n animate: {\n height: 'auto',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n height: '0px',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewContent = (\n <AnimatePresence>\n {hasFiles ? (\n <BaseMotionBox motionVariants={filePreviewMotionVariants}>\n <HiddenScrollbarBox\n display=\"flex\"\n flexDirection=\"row\"\n gap=\"spacing.3\"\n paddingTop=\"spacing.5\"\n paddingX=\"spacing.5\"\n overflowX=\"auto\"\n height=\"auto\"\n overflowY=\"hidden\"\n flexWrap=\"nowrap\"\n >\n {files.map((file) => (\n <FileUploadItem\n flexShrink={0}\n flexGrow={1}\n flexBasis={1}\n minWidth=\"160px\"\n maxWidth=\"200px\"\n key={file.id ?? file.name}\n file={file}\n onRemove={() => handleFileRemove(file)}\n onReupload={onFileReupload ? () => onFileReupload({ file }) : undefined}\n />\n ))}\n </HiddenScrollbarBox>\n </BaseMotionBox>\n ) : null}\n </AnimatePresence>\n );\n\n const actionBarContent = (\n <ChatInputActionBar\n isDisabled={isDisabled}\n isGenerating={isGenerating}\n isSubmitDisabled={isSubmitDisabled}\n onUploadClick={handleUploadClick}\n onSubmit={handleSubmit}\n onStop={onStop}\n />\n );\n\n const isError = validationState === 'error';\n\n return (\n <BaseBox\n position=\"relative\"\n {...metaAttribute({ name: MetaConstants.ChatInput, testID })}\n {...getStyledProps(rest)}\n >\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={true}\n onChange={handleFileInputChange}\n disabled={isDisabled}\n style={{ display: 'none' }}\n aria-hidden=\"true\"\n />\n\n <BaseBox position=\"relative\" zIndex={1}>\n <BaseInput\n ref={mergedRef}\n as=\"textarea\"\n id=\"chat-input\"\n elevation=\"highRaised\"\n label={undefined}\n accessibilityLabel={accessibilityLabel}\n hideLabelText\n hideFormHint\n placeholder={showGhostSuggestion ? '' : placeholder}\n value={textValue}\n onChange={handleTextChange}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n isDisabled={isDisabled}\n numberOfLines={2}\n size=\"medium\"\n padding={makeSpace(theme.spacing[5])}\n borderRadius=\"large\"\n caretColor=\"surface.icon.onSea.onSubtle\"\n topContent={filePreviewContent}\n bottomContent={actionBarContent}\n inputRowOverlay={\n showGhostSuggestion && suggestions ? (\n <BaseBox\n position=\"absolute\"\n top=\"spacing.5\"\n left=\"spacing.5\"\n right=\"spacing.5\"\n pointerEvents=\"none\"\n zIndex={3}\n >\n <ChatInputGhostSuggestion\n suggestions={suggestions}\n isVisible={showGhostSuggestion}\n onIndexChange={setActiveSuggestionIndex}\n />\n </BaseBox>\n ) : null\n }\n {...makeAnalyticsAttribute(rest)}\n />\n </BaseBox>\n\n {/* Error popup — positioned behind the card (zIndex: 0), slides out from behind the top edge */}\n <BaseBox\n position=\"absolute\"\n bottom=\"calc(100% - 12px)\"\n left=\"spacing.0\"\n right=\"spacing.0\"\n zIndex={0}\n >\n <BaseMotionEntryExit motionVariants={errorSlideVariants} isVisible={isError} type=\"inout\">\n <BaseBox\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap=\"spacing.2\"\n backgroundColor=\"feedback.background.negative.subtle\"\n paddingX=\"spacing.4\"\n paddingTop=\"spacing.3\"\n paddingBottom=\"spacing.6\"\n borderTopLeftRadius=\"medium\"\n borderTopRightRadius=\"medium\"\n role=\"alert\"\n >\n <InfoIcon size=\"small\" color=\"feedback.icon.negative.intense\" />\n <Text size=\"small\" truncateAfterLines={8} color=\"feedback.text.negative.intense\">\n {errorText}\n </Text>\n {onErrorDismiss ? (\n <IconButton\n marginLeft=\"auto\"\n icon={CloseIcon}\n size=\"small\"\n emphasis=\"intense\"\n accessibilityLabel=\"Dismiss error\"\n onClick={() => onErrorDismiss()}\n />\n ) : null}\n </BaseBox>\n </BaseMotionEntryExit>\n </BaseBox>\n </BaseBox>\n );\n};\n\nconst ChatInput = assignWithoutSideEffects(React.forwardRef(_ChatInput), {\n componentId: MetaConstants.ChatInput,\n displayName: 'ChatInput',\n});\n\nexport { ChatInput };\nexport type { ChatInputProps };\n"],"names":["HiddenScrollbarBox","styled","BaseBox","withConfig","displayName","componentId","display","scrollbarWidth","_ChatInput","_ref","ref","value","defaultValue","onChange","onSubmit","_ref$placeholder","placeholder","_ref$isDisabled","isDisabled","_ref$isGenerating","isGenerating","onStop","fileList","onFileChange","onFileRemove","onFileReupload","accept","suggestions","onSuggestionAccept","validationState","errorText","onErrorDismiss","_ref$accessibilityLab","accessibilityLabel","testID","rest","_objectWithoutProperties","_excluded","_useTheme","useTheme","theme","_useChatInput","useChatInput","fileInputRef","mergedRef","textValue","files","setActiveSuggestionIndex","hasFiles","isSubmitDisabled","showGhostSuggestion","handleTextChange","handleSubmit","handleKeyDown","handleUploadClick","handleFileInputChange","handleFileRemove","handlePaste","errorSlideVariants","initial","opacity","animate","transform","transition","duration","msToSeconds","motion","xmoderate","ease","cssBezierToArray","castWebType","easing","emphasized","exit","transitionEnd","filePreviewMotionVariants","height","overflow","quick","filePreviewContent","_jsx","AnimatePresence","children","BaseMotionBox","motionVariants","flexDirection","gap","paddingTop","paddingX","overflowX","overflowY","flexWrap","map","file","_file$id","FileUploadItem","flexShrink","flexGrow","flexBasis","minWidth","maxWidth","onRemove","onReupload","undefined","id","name","actionBarContent","ChatInputActionBar","onUploadClick","isError","_jsxs","_objectSpread","position","metaAttribute","MetaConstants","ChatInput","getStyledProps","type","multiple","disabled","style","zIndex","BaseInput","as","elevation","label","hideLabelText","hideFormHint","onKeyDown","onPaste","numberOfLines","size","padding","makeSpace","spacing","borderRadius","caretColor","topContent","bottomContent","inputRowOverlay","top","left","right","pointerEvents","ChatInputGhostSuggestion","isVisible","onIndexChange","makeAnalyticsAttribute","bottom","BaseMotionEntryExit","alignItems","backgroundColor","paddingBottom","borderTopLeftRadius","borderTopRightRadius","role","InfoIcon","color","Text","truncateAfterLines","IconButton","marginLeft","icon","CloseIcon","emphasis","onClick","assignWithoutSideEffects","React","forwardRef"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ChatInput.web.js","sources":["../../../../../../src/components/ChatInput/ChatInput.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport { AnimatePresence } from 'framer-motion';\nimport type { ChatInputProps } from './types';\nimport { ChatInputActionBar } from './ChatInputActionBar';\nimport { ChatInputGhostSuggestion } from './ChatInputGhostSuggestion';\nimport { useChatInput } from './useChatInput';\nimport { useTheme } from '~components/BladeProvider';\nimport { BaseMotionBox, BaseMotionEntryExit } from '~components/BaseMotion';\nimport type { MotionVariantsType } from '~components/BaseMotion';\nimport BaseBox from '~components/Box/BaseBox';\nimport { getStyledProps } from '~components/Box/styledProps';\nimport { IconButton } from '~components/Button/IconButton';\nimport { FileUploadItem } from '~components/FileUpload/FileUploadItem';\nimport { CloseIcon, InfoIcon } from '~components/Icons';\nimport { BaseInput } from '~components/Input/BaseInput/BaseInput';\nimport { Text } from '~components/Typography';\nimport { castWebType, makeSpace } from '~utils';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { makeAnalyticsAttribute } from '~utils/makeAnalyticsAttribute';\nimport { metaAttribute, MetaConstants } from '~utils/metaAttribute';\nimport type { BladeElementRef } from '~utils/types';\nimport { msToSeconds } from '~utils/msToSeconds';\nimport { cssBezierToArray } from '~utils/cssBezierToArray';\n\nconst HiddenScrollbarBox = styled(BaseBox)(() => ({\n '&::-webkit-scrollbar': { display: 'none' },\n scrollbarWidth: 'none' as const,\n}));\n\nconst _ChatInput: React.ForwardRefRenderFunction<BladeElementRef, ChatInputProps> = (\n {\n value,\n defaultValue,\n onChange,\n onFocus,\n onBlur,\n onSubmit,\n placeholder = 'Ask a question...',\n isDisabled = false,\n isGenerating = false,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n onFileReupload,\n accept,\n suggestions,\n onSuggestionAccept,\n validationState,\n errorText,\n onErrorDismiss,\n accessibilityLabel = 'Chat input',\n testID,\n ...rest\n },\n ref,\n) => {\n const { theme } = useTheme();\n\n const {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n setActiveSuggestionIndex,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n handleInnerMouseDownCapture,\n } = useChatInput(\n {\n value,\n defaultValue,\n onChange,\n onSubmit,\n isDisabled,\n isGenerating,\n onStop,\n fileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n },\n ref,\n );\n\n const errorSlideVariants: MotionVariantsType = {\n initial: { opacity: 0 },\n animate: {\n transform: ['translateY(100%)', 'translateY(0%)'],\n opacity: 1,\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n opacity: 0,\n transform: 'translateY(100%)',\n transitionEnd: { transform: 'translateY(100%)' },\n transition: {\n duration: msToSeconds(theme.motion.duration.xmoderate),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewMotionVariants: MotionVariantsType = {\n initial: { height: '0px', overflow: 'hidden' },\n animate: {\n height: 'auto',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n exit: {\n height: '0px',\n overflow: 'hidden',\n transition: {\n duration: msToSeconds(theme.motion.duration.quick),\n ease: cssBezierToArray(castWebType(theme.motion.easing.emphasized)),\n },\n },\n };\n\n const filePreviewContent = (\n <AnimatePresence>\n {hasFiles ? (\n <BaseMotionBox motionVariants={filePreviewMotionVariants}>\n <HiddenScrollbarBox\n display=\"flex\"\n flexDirection=\"row\"\n gap=\"spacing.3\"\n paddingTop=\"spacing.5\"\n paddingX=\"spacing.5\"\n overflowX=\"auto\"\n height=\"auto\"\n overflowY=\"hidden\"\n flexWrap=\"nowrap\"\n >\n {files.map((file) => (\n <FileUploadItem\n flexShrink={0}\n flexGrow={1}\n flexBasis={1}\n minWidth=\"160px\"\n maxWidth=\"200px\"\n key={file.id ?? file.name}\n file={file}\n onRemove={() => handleFileRemove(file)}\n onReupload={onFileReupload ? () => onFileReupload({ file }) : undefined}\n />\n ))}\n </HiddenScrollbarBox>\n </BaseMotionBox>\n ) : null}\n </AnimatePresence>\n );\n\n const actionBarContent = (\n <ChatInputActionBar\n isDisabled={isDisabled}\n isGenerating={isGenerating}\n isSubmitDisabled={isSubmitDisabled}\n onUploadClick={handleUploadClick}\n onSubmit={handleSubmit}\n onStop={onStop}\n />\n );\n\n const isError = validationState === 'error';\n\n return (\n <BaseBox\n position=\"relative\"\n {...metaAttribute({ name: MetaConstants.ChatInput, testID })}\n {...getStyledProps(rest)}\n >\n {/* Hidden file input */}\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={true}\n onChange={handleFileInputChange}\n disabled={isDisabled}\n style={{ display: 'none' }}\n aria-hidden=\"true\"\n />\n\n <BaseBox position=\"relative\" zIndex={1} onMouseDownCapture={handleInnerMouseDownCapture}>\n <BaseInput\n ref={mergedRef}\n as=\"textarea\"\n id=\"chat-input\"\n elevation=\"highRaised\"\n label={undefined}\n accessibilityLabel={accessibilityLabel}\n hideLabelText\n hideFormHint\n placeholder={showGhostSuggestion ? '' : placeholder}\n value={textValue}\n onChange={handleTextChange}\n onFocus={onFocus}\n onBlur={onBlur}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n isDisabled={isDisabled}\n numberOfLines={2}\n size=\"medium\"\n padding={makeSpace(theme.spacing[5])}\n borderRadius=\"large\"\n caretColor=\"surface.icon.onSea.onSubtle\"\n topContent={filePreviewContent}\n bottomContent={actionBarContent}\n inputRowOverlay={\n showGhostSuggestion && suggestions ? (\n <BaseBox\n position=\"absolute\"\n top=\"spacing.5\"\n left=\"spacing.5\"\n right=\"spacing.5\"\n pointerEvents=\"none\"\n zIndex={3}\n >\n <ChatInputGhostSuggestion\n suggestions={suggestions}\n isVisible={showGhostSuggestion}\n onIndexChange={setActiveSuggestionIndex}\n />\n </BaseBox>\n ) : null\n }\n {...makeAnalyticsAttribute(rest)}\n />\n </BaseBox>\n\n {/* Error popup — positioned behind the card (zIndex: 0), slides out from behind the top edge */}\n <BaseBox\n position=\"absolute\"\n bottom=\"calc(100% - 12px)\"\n left=\"spacing.0\"\n right=\"spacing.0\"\n zIndex={0}\n >\n <BaseMotionEntryExit motionVariants={errorSlideVariants} isVisible={isError} type=\"inout\">\n <BaseBox\n display=\"flex\"\n flexDirection=\"row\"\n alignItems=\"center\"\n gap=\"spacing.2\"\n backgroundColor=\"feedback.background.negative.subtle\"\n paddingX=\"spacing.4\"\n paddingTop=\"spacing.3\"\n paddingBottom=\"spacing.6\"\n borderTopLeftRadius=\"medium\"\n borderTopRightRadius=\"medium\"\n role=\"alert\"\n >\n <InfoIcon size=\"small\" color=\"feedback.icon.negative.intense\" />\n <Text size=\"small\" truncateAfterLines={8} color=\"feedback.text.negative.intense\">\n {errorText}\n </Text>\n {onErrorDismiss ? (\n <IconButton\n marginLeft=\"auto\"\n icon={CloseIcon}\n size=\"small\"\n emphasis=\"intense\"\n accessibilityLabel=\"Dismiss error\"\n onClick={() => onErrorDismiss()}\n />\n ) : null}\n </BaseBox>\n </BaseMotionEntryExit>\n </BaseBox>\n </BaseBox>\n );\n};\n\nconst ChatInput = assignWithoutSideEffects(React.forwardRef(_ChatInput), {\n componentId: MetaConstants.ChatInput,\n displayName: 'ChatInput',\n});\n\nexport { ChatInput };\nexport type { ChatInputProps };\n"],"names":["HiddenScrollbarBox","styled","BaseBox","withConfig","displayName","componentId","display","scrollbarWidth","_ChatInput","_ref","ref","value","defaultValue","onChange","onFocus","onBlur","onSubmit","_ref$placeholder","placeholder","_ref$isDisabled","isDisabled","_ref$isGenerating","isGenerating","onStop","fileList","onFileChange","onFileRemove","onFileReupload","accept","suggestions","onSuggestionAccept","validationState","errorText","onErrorDismiss","_ref$accessibilityLab","accessibilityLabel","testID","rest","_objectWithoutProperties","_excluded","_useTheme","useTheme","theme","_useChatInput","useChatInput","fileInputRef","mergedRef","textValue","files","setActiveSuggestionIndex","hasFiles","isSubmitDisabled","showGhostSuggestion","handleTextChange","handleSubmit","handleKeyDown","handleUploadClick","handleFileInputChange","handleFileRemove","handlePaste","handleInnerMouseDownCapture","errorSlideVariants","initial","opacity","animate","transform","transition","duration","msToSeconds","motion","xmoderate","ease","cssBezierToArray","castWebType","easing","emphasized","exit","transitionEnd","filePreviewMotionVariants","height","overflow","quick","filePreviewContent","_jsx","AnimatePresence","children","BaseMotionBox","motionVariants","flexDirection","gap","paddingTop","paddingX","overflowX","overflowY","flexWrap","map","file","_file$id","FileUploadItem","flexShrink","flexGrow","flexBasis","minWidth","maxWidth","onRemove","onReupload","undefined","id","name","actionBarContent","ChatInputActionBar","onUploadClick","isError","_jsxs","_objectSpread","position","metaAttribute","MetaConstants","ChatInput","getStyledProps","type","multiple","disabled","style","zIndex","onMouseDownCapture","BaseInput","as","elevation","label","hideLabelText","hideFormHint","onKeyDown","onPaste","numberOfLines","size","padding","makeSpace","spacing","borderRadius","caretColor","topContent","bottomContent","inputRowOverlay","top","left","right","pointerEvents","ChatInputGhostSuggestion","isVisible","onIndexChange","makeAnalyticsAttribute","bottom","BaseMotionEntryExit","alignItems","backgroundColor","paddingBottom","borderTopLeftRadius","borderTopRightRadius","role","InfoIcon","color","Text","truncateAfterLines","IconButton","marginLeft","icon","CloseIcon","emphasis","onClick","assignWithoutSideEffects","React","forwardRef"],"mappings":"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"}
|
|
@@ -162,6 +162,16 @@ var useChatInput = function useChatInput(_ref, ref) {
|
|
|
162
162
|
});
|
|
163
163
|
}
|
|
164
164
|
}, [files, setFiles, onFileChange]);
|
|
165
|
+
var handleInnerMouseDownCapture = React__default.useCallback(function (event) {
|
|
166
|
+
var target = event.target;
|
|
167
|
+
if (!target) return;
|
|
168
|
+
|
|
169
|
+
// Allow normal behavior when clicking directly inside textarea.
|
|
170
|
+
if (target.closest('textarea')) return;
|
|
171
|
+
|
|
172
|
+
// Prevent focus from moving to internal controls (submit/upload/file actions).
|
|
173
|
+
event.preventDefault();
|
|
174
|
+
}, []);
|
|
165
175
|
return {
|
|
166
176
|
fileInputRef: fileInputRef,
|
|
167
177
|
mergedRef: mergedRef,
|
|
@@ -179,7 +189,8 @@ var useChatInput = function useChatInput(_ref, ref) {
|
|
|
179
189
|
handleUploadClick: handleUploadClick,
|
|
180
190
|
handleFileInputChange: handleFileInputChange,
|
|
181
191
|
handleFileRemove: handleFileRemove,
|
|
182
|
-
handlePaste: handlePaste
|
|
192
|
+
handlePaste: handlePaste,
|
|
193
|
+
handleInnerMouseDownCapture: handleInnerMouseDownCapture
|
|
183
194
|
};
|
|
184
195
|
};
|
|
185
196
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useChatInput.js","sources":["../../../../../../src/components/ChatInput/useChatInput.ts"],"sourcesContent":["import React from 'react';\nimport type { ChatInputProps } from './types';\nimport { chatInputMaxTextAreaHeight } from './chatInputTokens';\nimport type { BladeElementRef } from '~utils/types';\nimport type { BladeFile, BladeFileList } from '~components/FileUpload/types';\nimport { isFileAccepted } from '~components/FileUpload/isFileAccepted';\nimport { useControllableState } from '~utils/useControllable';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { useMergeRefs } from '~utils/useMergeRefs';\n\ntype UseChatInputProps = Pick<\n ChatInputProps,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onSubmit'\n | 'isDisabled'\n | 'isGenerating'\n | 'onStop'\n | 'fileList'\n | 'onFileChange'\n | 'onFileRemove'\n | 'accept'\n | 'suggestions'\n | 'onSuggestionAccept'\n>;\n\nconst useChatInput = (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n onSubmit,\n fileList: controlledFileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n }: UseChatInputProps,\n ref: React.ForwardedRef<BladeElementRef>,\n): {\n fileInputRef: React.RefObject<HTMLInputElement>;\n mergedRef: React.RefCallback<BladeElementRef>;\n textValue: string;\n files: BladeFileList;\n activeSuggestionIndex: number;\n setActiveSuggestionIndex: React.Dispatch<React.SetStateAction<number>>;\n hasText: boolean;\n hasFiles: boolean;\n isSubmitDisabled: boolean;\n showGhostSuggestion: boolean;\n handleTextChange: (args: { name?: string; value?: string }) => void;\n handleSubmit: () => void;\n handleKeyDown: (args: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => void;\n handleUploadClick: () => void;\n handleFileInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n handleFileRemove: (file: BladeFile) => void;\n handlePaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;\n} => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const textareaRef = React.useRef<BladeElementRef>(null);\n const mergedRef = useMergeRefs(ref, textareaRef);\n\n const [textValue, setTextValue] = useControllableState({\n value: controlledValue,\n defaultValue: defaultValue ?? '',\n onChange: (newValue) => {\n onChange?.({ value: newValue });\n },\n });\n\n const [files, setFiles] = useControllableState<BladeFileList>({\n value: controlledFileList,\n defaultValue: controlledFileList ?? [],\n });\n\n const [activeSuggestionIndex, setActiveSuggestionIndex] = React.useState(0);\n\n const isMobile = useIsMobile();\n\n const hasText = textValue.trim().length > 0;\n const hasFiles = files.length > 0;\n const isSubmitDisabled = !hasText && !hasFiles;\n const showGhostSuggestion = !hasText && Boolean(suggestions?.length) && !isMobile;\n\n const adjustTextareaHeight = React.useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && textarea instanceof HTMLTextAreaElement) {\n textarea.style.height = 'auto';\n textarea.style.height = `${Math.min(textarea.scrollHeight, chatInputMaxTextAreaHeight)}px`;\n }\n }, []);\n\n React.useEffect(() => {\n adjustTextareaHeight();\n }, [textValue, adjustTextareaHeight]);\n\n const handleTextChange = React.useCallback(\n ({ value: newValue }: { name?: string; value?: string }) => {\n setTextValue(() => newValue ?? '');\n },\n [setTextValue],\n );\n\n const handleSubmit = React.useCallback(() => {\n if (isSubmitDisabled) return;\n onSubmit?.({ value: textValue, fileList: files });\n }, [isSubmitDisabled, onSubmit, textValue, files]);\n\n const handleKeyDown = React.useCallback(\n ({\n event,\n }: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => {\n if (!event) return;\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n handleSubmit();\n return;\n }\n\n if (event.key === 'Tab' && showGhostSuggestion && suggestions?.length) {\n event.preventDefault();\n const currentSuggestion = suggestions[activeSuggestionIndex];\n setTextValue(() => currentSuggestion);\n onSuggestionAccept?.({ suggestion: currentSuggestion });\n }\n },\n [\n handleSubmit,\n showGhostSuggestion,\n suggestions,\n activeSuggestionIndex,\n setTextValue,\n onSuggestionAccept,\n ],\n );\n\n const handleUploadClick = React.useCallback(() => {\n fileInputRef.current?.click();\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(event.target.files ?? []) as BladeFileList;\n\n const validFiles = inputFiles.filter((file) => {\n if (accept && !isFileAccepted(file, accept)) return false;\n return true;\n });\n\n for (const file of validFiles) {\n if (!file.id) {\n file.id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (validFiles.length > 0) {\n const newFileList = [...files, ...validFiles];\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n\n event.target.value = '';\n },\n [accept, files, setFiles, onFileChange],\n );\n\n const handleFileRemove = React.useCallback(\n (file: BladeFile) => {\n const newFileList = files.filter((f) => f.id !== file.id);\n setFiles(() => newFileList);\n onFileRemove?.({ file });\n },\n [files, setFiles, onFileRemove],\n );\n\n const handlePaste = React.useCallback(\n (event: React.ClipboardEvent<HTMLInputElement>) => {\n const clipboardFiles = Array.from(event.clipboardData?.files ?? []);\n if (clipboardFiles.length === 0) return;\n\n event.preventDefault();\n\n for (const file of clipboardFiles) {\n if (!(file as BladeFile).id) {\n (file as BladeFile).id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (clipboardFiles.length > 0) {\n const newFileList = [...files, ...clipboardFiles] as BladeFileList;\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n },\n [files, setFiles, onFileChange],\n );\n\n return {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n activeSuggestionIndex,\n setActiveSuggestionIndex,\n hasText,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n };\n};\n\nexport { useChatInput };\nexport type { UseChatInputProps };\n"],"names":["useChatInput","_ref","ref","controlledValue","value","defaultValue","onChange","onSubmit","controlledFileList","fileList","onFileChange","onFileRemove","accept","suggestions","onSuggestionAccept","fileInputRef","React","useRef","textareaRef","mergedRef","useMergeRefs","_useControllableState","useControllableState","newValue","_useControllableState2","_slicedToArray","textValue","setTextValue","_useControllableState3","_useControllableState4","files","setFiles","_React$useState","useState","_React$useState2","activeSuggestionIndex","setActiveSuggestionIndex","isMobile","useIsMobile","hasText","trim","length","hasFiles","isSubmitDisabled","showGhostSuggestion","Boolean","adjustTextareaHeight","useCallback","textarea","current","HTMLTextAreaElement","style","height","concat","Math","min","scrollHeight","chatInputMaxTextAreaHeight","useEffect","handleTextChange","_ref2","handleSubmit","handleKeyDown","_ref3","event","key","shiftKey","preventDefault","currentSuggestion","suggestion","handleUploadClick","_fileInputRef$current","click","handleFileInputChange","_event$target$files","inputFiles","Array","from","target","validFiles","filter","file","isFileAccepted","_iterator","_createForOfIteratorHelper","_step","s","n","done","id","Date","now","floor","random","err","e","f","newFileList","_toConsumableArray","handleFileRemove","handlePaste","_event$clipboardData$","_event$clipboardData","clipboardFiles","clipboardData","_i","_clipboardFiles"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useChatInput.js","sources":["../../../../../../src/components/ChatInput/useChatInput.ts"],"sourcesContent":["import React from 'react';\nimport type { ChatInputProps } from './types';\nimport { chatInputMaxTextAreaHeight } from './chatInputTokens';\nimport type { BladeElementRef } from '~utils/types';\nimport type { BladeFile, BladeFileList } from '~components/FileUpload/types';\nimport { isFileAccepted } from '~components/FileUpload/isFileAccepted';\nimport { useControllableState } from '~utils/useControllable';\nimport { useIsMobile } from '~utils/useIsMobile';\nimport { useMergeRefs } from '~utils/useMergeRefs';\n\ntype UseChatInputProps = Pick<\n ChatInputProps,\n | 'value'\n | 'defaultValue'\n | 'onChange'\n | 'onSubmit'\n | 'isDisabled'\n | 'isGenerating'\n | 'onStop'\n | 'fileList'\n | 'onFileChange'\n | 'onFileRemove'\n | 'accept'\n | 'suggestions'\n | 'onSuggestionAccept'\n>;\n\nconst useChatInput = (\n {\n value: controlledValue,\n defaultValue,\n onChange,\n onSubmit,\n fileList: controlledFileList,\n onFileChange,\n onFileRemove,\n accept,\n suggestions,\n onSuggestionAccept,\n }: UseChatInputProps,\n ref: React.ForwardedRef<BladeElementRef>,\n): {\n fileInputRef: React.RefObject<HTMLInputElement>;\n mergedRef: React.RefCallback<BladeElementRef>;\n textValue: string;\n files: BladeFileList;\n activeSuggestionIndex: number;\n setActiveSuggestionIndex: React.Dispatch<React.SetStateAction<number>>;\n hasText: boolean;\n hasFiles: boolean;\n isSubmitDisabled: boolean;\n showGhostSuggestion: boolean;\n handleTextChange: (args: { name?: string; value?: string }) => void;\n handleSubmit: () => void;\n handleKeyDown: (args: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => void;\n handleUploadClick: () => void;\n handleFileInputChange: (event: React.ChangeEvent<HTMLInputElement>) => void;\n handleFileRemove: (file: BladeFile) => void;\n handlePaste: (event: React.ClipboardEvent<HTMLInputElement>) => void;\n handleInnerMouseDownCapture: (event: React.MouseEvent) => void;\n} => {\n const fileInputRef = React.useRef<HTMLInputElement>(null);\n const textareaRef = React.useRef<BladeElementRef>(null);\n const mergedRef = useMergeRefs(ref, textareaRef);\n\n const [textValue, setTextValue] = useControllableState({\n value: controlledValue,\n defaultValue: defaultValue ?? '',\n onChange: (newValue) => {\n onChange?.({ value: newValue });\n },\n });\n\n const [files, setFiles] = useControllableState<BladeFileList>({\n value: controlledFileList,\n defaultValue: controlledFileList ?? [],\n });\n\n const [activeSuggestionIndex, setActiveSuggestionIndex] = React.useState(0);\n\n const isMobile = useIsMobile();\n\n const hasText = textValue.trim().length > 0;\n const hasFiles = files.length > 0;\n const isSubmitDisabled = !hasText && !hasFiles;\n const showGhostSuggestion = !hasText && Boolean(suggestions?.length) && !isMobile;\n\n const adjustTextareaHeight = React.useCallback(() => {\n const textarea = textareaRef.current;\n if (textarea && textarea instanceof HTMLTextAreaElement) {\n textarea.style.height = 'auto';\n textarea.style.height = `${Math.min(textarea.scrollHeight, chatInputMaxTextAreaHeight)}px`;\n }\n }, []);\n\n React.useEffect(() => {\n adjustTextareaHeight();\n }, [textValue, adjustTextareaHeight]);\n\n const handleTextChange = React.useCallback(\n ({ value: newValue }: { name?: string; value?: string }) => {\n setTextValue(() => newValue ?? '');\n },\n [setTextValue],\n );\n\n const handleSubmit = React.useCallback(() => {\n if (isSubmitDisabled) return;\n onSubmit?.({ value: textValue, fileList: files });\n }, [isSubmitDisabled, onSubmit, textValue, files]);\n\n const handleKeyDown = React.useCallback(\n ({\n event,\n }: {\n name?: string;\n key?: string;\n code?: string;\n event: React.KeyboardEvent<HTMLInputElement>;\n }) => {\n if (!event) return;\n\n if (event.key === 'Enter' && !event.shiftKey) {\n event.preventDefault();\n handleSubmit();\n return;\n }\n\n if (event.key === 'Tab' && showGhostSuggestion && suggestions?.length) {\n event.preventDefault();\n const currentSuggestion = suggestions[activeSuggestionIndex];\n setTextValue(() => currentSuggestion);\n onSuggestionAccept?.({ suggestion: currentSuggestion });\n }\n },\n [\n handleSubmit,\n showGhostSuggestion,\n suggestions,\n activeSuggestionIndex,\n setTextValue,\n onSuggestionAccept,\n ],\n );\n\n const handleUploadClick = React.useCallback(() => {\n fileInputRef.current?.click();\n }, []);\n\n const handleFileInputChange = React.useCallback(\n (event: React.ChangeEvent<HTMLInputElement>) => {\n const inputFiles = Array.from(event.target.files ?? []) as BladeFileList;\n\n const validFiles = inputFiles.filter((file) => {\n if (accept && !isFileAccepted(file, accept)) return false;\n return true;\n });\n\n for (const file of validFiles) {\n if (!file.id) {\n file.id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (validFiles.length > 0) {\n const newFileList = [...files, ...validFiles];\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n\n event.target.value = '';\n },\n [accept, files, setFiles, onFileChange],\n );\n\n const handleFileRemove = React.useCallback(\n (file: BladeFile) => {\n const newFileList = files.filter((f) => f.id !== file.id);\n setFiles(() => newFileList);\n onFileRemove?.({ file });\n },\n [files, setFiles, onFileRemove],\n );\n\n const handlePaste = React.useCallback(\n (event: React.ClipboardEvent<HTMLInputElement>) => {\n const clipboardFiles = Array.from(event.clipboardData?.files ?? []);\n if (clipboardFiles.length === 0) return;\n\n event.preventDefault();\n\n for (const file of clipboardFiles) {\n if (!(file as BladeFile).id) {\n (file as BladeFile).id = `${Date.now()}${Math.floor(Math.random() * 1000000)}`;\n }\n }\n\n if (clipboardFiles.length > 0) {\n const newFileList = [...files, ...clipboardFiles] as BladeFileList;\n setFiles(() => newFileList);\n onFileChange?.({ fileList: newFileList });\n }\n },\n [files, setFiles, onFileChange],\n );\n\n const handleInnerMouseDownCapture = React.useCallback((event: React.MouseEvent): void => {\n const target = event.target as HTMLElement | null;\n if (!target) return;\n\n // Allow normal behavior when clicking directly inside textarea.\n if (target.closest('textarea')) return;\n\n // Prevent focus from moving to internal controls (submit/upload/file actions).\n event.preventDefault();\n }, []);\n\n return {\n fileInputRef,\n mergedRef,\n textValue,\n files,\n activeSuggestionIndex,\n setActiveSuggestionIndex,\n hasText,\n hasFiles,\n isSubmitDisabled,\n showGhostSuggestion,\n handleTextChange,\n handleSubmit,\n handleKeyDown,\n handleUploadClick,\n handleFileInputChange,\n handleFileRemove,\n handlePaste,\n handleInnerMouseDownCapture,\n };\n};\n\nexport { useChatInput };\nexport type { UseChatInputProps };\n"],"names":["useChatInput","_ref","ref","controlledValue","value","defaultValue","onChange","onSubmit","controlledFileList","fileList","onFileChange","onFileRemove","accept","suggestions","onSuggestionAccept","fileInputRef","React","useRef","textareaRef","mergedRef","useMergeRefs","_useControllableState","useControllableState","newValue","_useControllableState2","_slicedToArray","textValue","setTextValue","_useControllableState3","_useControllableState4","files","setFiles","_React$useState","useState","_React$useState2","activeSuggestionIndex","setActiveSuggestionIndex","isMobile","useIsMobile","hasText","trim","length","hasFiles","isSubmitDisabled","showGhostSuggestion","Boolean","adjustTextareaHeight","useCallback","textarea","current","HTMLTextAreaElement","style","height","concat","Math","min","scrollHeight","chatInputMaxTextAreaHeight","useEffect","handleTextChange","_ref2","handleSubmit","handleKeyDown","_ref3","event","key","shiftKey","preventDefault","currentSuggestion","suggestion","handleUploadClick","_fileInputRef$current","click","handleFileInputChange","_event$target$files","inputFiles","Array","from","target","validFiles","filter","file","isFileAccepted","_iterator","_createForOfIteratorHelper","_step","s","n","done","id","Date","now","floor","random","err","e","f","newFileList","_toConsumableArray","handleFileRemove","handlePaste","_event$clipboardData$","_event$clipboardData","clipboardFiles","clipboardData","_i","_clipboardFiles","handleInnerMouseDownCapture","closest"],"mappings":"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"}
|
|
@@ -29,7 +29,7 @@ var SelfMessageBubble = function SelfMessageBubble(_ref) {
|
|
|
29
29
|
flexDirection: "column",
|
|
30
30
|
children: [/*#__PURE__*/jsx(StyledSelfMessageBubble, {
|
|
31
31
|
backgroundColor: chatMessageToken.self.backgroundColor["default"],
|
|
32
|
-
padding: isChildText ? 'spacing.
|
|
32
|
+
padding: isChildText ? 'spacing.4' : 'spacing.0',
|
|
33
33
|
borderRadius: "large",
|
|
34
34
|
width: "fit-content",
|
|
35
35
|
height: "auto",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SelfMessageBubble.web.js","sources":["../../../../../../src/components/ChatMessage/SelfMessageBubble.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport type { CommonChatMessageProps } from './types';\nimport { chatMessageToken } from './token';\nimport { getMessageBubbleBoxShadow } from './utils';\nimport BaseBox from '~components/Box/BaseBox';\nimport { FormHint } from '~components/Form/FormHint';\nimport { useTheme } from '~utils';\n\nconst StyledSelfMessageBubble = styled(BaseBox)(() => {\n const { colorScheme } = useTheme();\n return getMessageBubbleBoxShadow(colorScheme);\n});\n\nconst SelfMessageBubble = ({\n children,\n validationState,\n errorText = 'Message not sent. Tap to retry.',\n isChildText,\n}: Pick<CommonChatMessageProps, 'children' | 'validationState' | 'errorText'> & {\n // is child is text then only add padding otherwise no need to add padding\n isChildText: boolean;\n}): React.ReactElement => {\n const isError = validationState === 'error';\n\n return (\n <BaseBox display=\"flex\" flexDirection=\"column\">\n <StyledSelfMessageBubble\n backgroundColor={chatMessageToken.self.backgroundColor.default}\n padding={isChildText ? 'spacing.
|
|
1
|
+
{"version":3,"file":"SelfMessageBubble.web.js","sources":["../../../../../../src/components/ChatMessage/SelfMessageBubble.web.tsx"],"sourcesContent":["import React from 'react';\nimport styled from 'styled-components';\nimport type { CommonChatMessageProps } from './types';\nimport { chatMessageToken } from './token';\nimport { getMessageBubbleBoxShadow } from './utils';\nimport BaseBox from '~components/Box/BaseBox';\nimport { FormHint } from '~components/Form/FormHint';\nimport { useTheme } from '~utils';\n\nconst StyledSelfMessageBubble = styled(BaseBox)(() => {\n const { colorScheme } = useTheme();\n return getMessageBubbleBoxShadow(colorScheme);\n});\n\nconst SelfMessageBubble = ({\n children,\n validationState,\n errorText = 'Message not sent. Tap to retry.',\n isChildText,\n}: Pick<CommonChatMessageProps, 'children' | 'validationState' | 'errorText'> & {\n // is child is text then only add padding otherwise no need to add padding\n isChildText: boolean;\n}): React.ReactElement => {\n const isError = validationState === 'error';\n\n return (\n <BaseBox display=\"flex\" flexDirection=\"column\">\n <StyledSelfMessageBubble\n backgroundColor={chatMessageToken.self.backgroundColor.default}\n padding={isChildText ? 'spacing.4' : 'spacing.0'}\n borderRadius=\"large\"\n width=\"fit-content\"\n height=\"auto\"\n alignSelf=\"flex-end\"\n border=\"thin\"\n borderColor=\"surface.border.gray.muted\"\n >\n {children}\n </StyledSelfMessageBubble>\n <BaseBox alignSelf=\"flex-end\">\n {isError && <FormHint type=\"error\" errorText={errorText} size=\"small\" />}\n </BaseBox>\n </BaseBox>\n );\n};\n\nexport { SelfMessageBubble };\n"],"names":["StyledSelfMessageBubble","styled","BaseBox","withConfig","displayName","componentId","_useTheme","useTheme","colorScheme","getMessageBubbleBoxShadow","SelfMessageBubble","_ref","children","validationState","_ref$errorText","errorText","isChildText","isError","_jsxs","display","flexDirection","_jsx","backgroundColor","chatMessageToken","self","padding","borderRadius","width","height","alignSelf","border","borderColor","FormHint","type","size"],"mappings":";;;;;;;;;;;AASA,IAAMA,uBAAuB,gBAAGC,MAAM,CAACC,OAAO,CAAC,CAAAC,UAAA,CAAA;EAAAC,WAAA,EAAA,+CAAA;EAAAC,WAAA,EAAA,cAAA;AAAA,CAAA,CAAA,CAAC,YAAM;AACpD,EAAA,IAAAC,SAAA,GAAwBC,QAAQ,EAAE;IAA1BC,WAAW,GAAAF,SAAA,CAAXE,WAAW,CAAA;EACnB,OAAOC,yBAAyB,CAACD,WAAW,CAAC,CAAA;AAC/C,CAAC,CAAC,CAAA;AAEF,IAAME,iBAAiB,GAAG,SAApBA,iBAAiBA,CAAAC,IAAA,EAQG;AAAA,EAAA,IAPxBC,QAAQ,GAAAD,IAAA,CAARC,QAAQ;IACRC,eAAe,GAAAF,IAAA,CAAfE,eAAe;IAAAC,cAAA,GAAAH,IAAA,CACfI,SAAS;AAATA,IAAAA,SAAS,GAAAD,cAAA,KAAG,KAAA,CAAA,GAAA,iCAAiC,GAAAA,cAAA;IAC7CE,WAAW,GAAAL,IAAA,CAAXK,WAAW,CAAA;AAKX,EAAA,IAAMC,OAAO,GAAGJ,eAAe,KAAK,OAAO,CAAA;EAE3C,oBACEK,IAAA,CAAChB,OAAO,EAAA;AAACiB,IAAAA,OAAO,EAAC,MAAM;AAACC,IAAAA,aAAa,EAAC,QAAQ;IAAAR,QAAA,EAAA,cAC5CS,GAAA,CAACrB,uBAAuB,EAAA;AACtBsB,MAAAA,eAAe,EAAEC,gBAAgB,CAACC,IAAI,CAACF,eAAe,CAAS,SAAA,CAAA;AAC/DG,MAAAA,OAAO,EAAET,WAAW,GAAG,WAAW,GAAG,WAAY;AACjDU,MAAAA,YAAY,EAAC,OAAO;AACpBC,MAAAA,KAAK,EAAC,aAAa;AACnBC,MAAAA,MAAM,EAAC,MAAM;AACbC,MAAAA,SAAS,EAAC,UAAU;AACpBC,MAAAA,MAAM,EAAC,MAAM;AACbC,MAAAA,WAAW,EAAC,2BAA2B;AAAAnB,MAAAA,QAAA,EAEtCA,QAAAA;AAAQ,KACc,CAAC,eAC1BS,GAAA,CAACnB,OAAO,EAAA;AAAC2B,MAAAA,SAAS,EAAC,UAAU;AAAAjB,MAAAA,QAAA,EAC1BK,OAAO,iBAAII,GAAA,CAACW,QAAQ,EAAA;AAACC,QAAAA,IAAI,EAAC,OAAO;AAAClB,QAAAA,SAAS,EAAEA,SAAU;AAACmB,QAAAA,IAAI,EAAC,OAAA;OAAS,CAAA;AAAC,KACjE,CAAC,CAAA;AAAA,GACH,CAAC,CAAA;AAEd;;;;"}
|
|
@@ -80,33 +80,44 @@ var _FilterChipSelectInput = function _FilterChipSelectInput(props) {
|
|
|
80
80
|
};
|
|
81
81
|
useEffect(function () {
|
|
82
82
|
var valueNotEmpty = typeof value === 'string' && value.trim() !== '' || Array.isArray(value) && value.length > 0;
|
|
83
|
-
|
|
84
|
-
|
|
83
|
+
|
|
84
|
+
// Compare actual selected values (not just lengths) to detect controlled value changes
|
|
85
|
+
var currentSelectedValues = selectedIndices.map(function (i) {
|
|
86
|
+
var _options$i;
|
|
87
|
+
return (_options$i = options[i]) === null || _options$i === void 0 ? void 0 : _options$i.value;
|
|
88
|
+
});
|
|
89
|
+
var isSingleValueSynced = typeof value === 'string' && currentSelectedValues.length === 1 && currentSelectedValues[0] === value;
|
|
90
|
+
var isMultiValueSynced = Array.isArray(value) && value.length === currentSelectedValues.length && value.every(function (v) {
|
|
91
|
+
return currentSelectedValues.includes(v);
|
|
92
|
+
});
|
|
93
|
+
var isValueAndSelectedIndicesSynced = isSingleValueSynced || isMultiValueSynced;
|
|
85
94
|
if (isUnControlled) {
|
|
86
95
|
if (listViewSelectedFilters[label]) {
|
|
87
|
-
var
|
|
88
|
-
setSelectedIndices(
|
|
89
|
-
var inputValue =
|
|
96
|
+
var savedIndices = listViewSelectedFilters[label];
|
|
97
|
+
setSelectedIndices(savedIndices);
|
|
98
|
+
var inputValue = savedIndices.map(function (selectionIndex) {
|
|
90
99
|
return options[selectionIndex].value;
|
|
91
100
|
});
|
|
92
101
|
setUncontrolledInputValue(inputValue);
|
|
93
102
|
setFilterChipGroupSelectedFilters(function (prev) {
|
|
94
103
|
return prev.includes(label) ? prev : [].concat(_toConsumableArray(prev), [label]);
|
|
95
104
|
});
|
|
105
|
+
} else {
|
|
106
|
+
setSelectedIndices([]);
|
|
96
107
|
}
|
|
97
108
|
} else if (listViewSelectedFilters[label]) {
|
|
98
|
-
var
|
|
99
|
-
setSelectedIndices(
|
|
100
|
-
//
|
|
101
|
-
} else if (valueNotEmpty && !
|
|
102
|
-
var
|
|
109
|
+
var _savedIndices = listViewSelectedFilters[label];
|
|
110
|
+
setSelectedIndices(_savedIndices);
|
|
111
|
+
// Sync selected indices when controlled value changes or on first render with options loaded
|
|
112
|
+
} else if (valueNotEmpty && !isValueAndSelectedIndicesSynced && options.length > 0) {
|
|
113
|
+
var newSelectedIndices = typeof value === 'string' ? [options.findIndex(function (option) {
|
|
103
114
|
return option.value === value;
|
|
104
115
|
})] : options.map(function (option, index) {
|
|
105
116
|
return value.includes(option.value) ? index : -1;
|
|
106
117
|
}).filter(function (index) {
|
|
107
118
|
return index !== -1;
|
|
108
119
|
});
|
|
109
|
-
setSelectedIndices(
|
|
120
|
+
setSelectedIndices(newSelectedIndices);
|
|
110
121
|
}
|
|
111
122
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
112
123
|
}, [isUnControlled, options]);
|
|
@@ -135,10 +146,6 @@ var _FilterChipSelectInput = function _FilterChipSelectInput(props) {
|
|
|
135
146
|
name: name !== null && name !== void 0 ? name : idBase,
|
|
136
147
|
values: []
|
|
137
148
|
});
|
|
138
|
-
if (isUnControlled) {
|
|
139
|
-
setUncontrolledInputValue([]);
|
|
140
|
-
setSelectedIndices([]);
|
|
141
|
-
}
|
|
142
149
|
setFilterChipGroupSelectedFilters(function (prev) {
|
|
143
150
|
return prev.filter(function (filter) {
|
|
144
151
|
return filter !== label;
|
|
@@ -149,6 +156,7 @@ var _FilterChipSelectInput = function _FilterChipSelectInput(props) {
|
|
|
149
156
|
updatedFilters = _objectWithoutProperties(prev, [label].map(_toPropertyKey));
|
|
150
157
|
return updatedFilters;
|
|
151
158
|
});
|
|
159
|
+
setUncontrolledInputValue([]);
|
|
152
160
|
setSelectedIndices([]);
|
|
153
161
|
};
|
|
154
162
|
useEffect(function () {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FilterChipSelectInput.web.js","sources":["../../../../../../src/components/Dropdown/FilterChipSelectInput.web.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n\nimport React, { useEffect } from 'react';\nimport { useDropdown } from './useDropdown';\nimport { dropdownComponentIds } from './dropdownComponentIds';\nimport { useFilterChipGroupContext } from './FilterChipGroupContext.web';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { BaseFilterChip } from '~components/FilterChip/BaseFilterChip';\nimport { getActionListContainerRole } from '~components/ActionList/getA11yRoles';\nimport type { BaseFilterChipProps } from '~components/FilterChip/types';\nimport type { DataAnalyticsAttribute } from '~utils/types';\nimport { useId } from '~utils/useId';\nimport { useListViewFilterContext } from '~components/ListView/ListViewFiltersContext.web';\nimport { useFirstRender } from '~utils/useFirstRender';\n\ntype FilterChipSelectInputProps = Pick<\n BaseFilterChipProps,\n 'onKeyDown' | 'value' | 'label' | 'testID' | 'onClick' | 'selectionType' | 'onBlur'\n> & {\n accessibilityLabel?: string;\n onChange?: (props: { name: string; values: string[] }) => void;\n name?: string;\n onClearButtonClick?: (props: { name: string; values: string[] }) => void;\n isDisabled?: boolean;\n} & DataAnalyticsAttribute;\n\nconst _FilterChipSelectInput = (props: FilterChipSelectInputProps): React.ReactElement => {\n const idBase = useId('filter-chip-select-input');\n const {\n onClick,\n onBlur,\n onKeyDown,\n accessibilityLabel,\n testID,\n value,\n onClearButtonClick,\n label,\n onChange,\n name,\n isDisabled,\n ...rest\n } = props;\n const [uncontrolledInputValue, setUncontrolledInputValue] = React.useState<string[]>([]);\n const isFirstRender = useFirstRender();\n\n const {\n options,\n selectedIndices,\n onTriggerClick,\n onTriggerKeydown,\n dropdownBaseId,\n isOpen,\n activeIndex,\n hasFooterAction,\n triggererRef,\n selectionType,\n isControlled,\n setSelectedIndices,\n controlledValueIndices,\n changeCallbackTriggerer,\n } = useDropdown();\n const valueTitle = options.find((option) => option.value === value)?.title ?? value;\n\n const isUnControlled = options.length > 0 && props.value === undefined;\n // Currently we are having 2 context for selectedFilters. One is for FilterChipGroup and other is for ListView\n const { listViewSelectedFilters, setListViewSelectedFilters } = useListViewFilterContext();\n const {\n clearFilterCallbackTriggerer,\n setFilterChipGroupSelectedFilters,\n } = useFilterChipGroupContext();\n\n const getValuesArrayFromIndices = (): string[] => {\n let indices: number[] = [];\n if (isControlled) {\n indices = controlledValueIndices;\n } else {\n indices = selectedIndices;\n }\n\n return indices.map((selectionIndex) => options[selectionIndex].value);\n };\n\n useEffect(() => {\n const valueNotEmpty =\n (typeof value === 'string' && value.trim() !== '') ||\n (Array.isArray(value) && value.length > 0);\n // since we need to sync state only one time so skipping value checking.\n const isValueAndSelectedOptoinsSynced =\n (typeof value === 'string' && value && selectedIndices.length === 1) ||\n (Array.isArray(value) && value.length === selectedIndices.length);\n if (isUnControlled) {\n if (listViewSelectedFilters[label]) {\n const value = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(value);\n const inputValue = value.map((selectionIndex) => options[selectionIndex].value);\n setUncontrolledInputValue(inputValue);\n setFilterChipGroupSelectedFilters((prev) =>\n prev.includes(label) ? prev : [...prev, label],\n );\n }\n } else if (listViewSelectedFilters[label]) {\n const value = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(value);\n // This would be the case when filterChipSelectInput is controlled and are being opened first time\n } else if (valueNotEmpty && !isValueAndSelectedOptoinsSynced && options.length > 0) {\n const selectedIndices =\n typeof value === 'string'\n ? [options.findIndex((option) => option.value === value)]\n : options\n .map((option, index) => (value.includes(option.value) ? index : -1))\n .filter((index) => index !== -1);\n setSelectedIndices(selectedIndices);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isUnControlled, options]);\n\n const getTitleFromValue = (value: string): string => {\n const option = options.find((option) => option.value === value);\n return option ? option.title : '';\n };\n\n const getUnControlledFilterChipValue = (): string | string[] => {\n if (selectionType === 'single') {\n if (uncontrolledInputValue.length > 0) {\n return getTitleFromValue(uncontrolledInputValue[0]);\n }\n return '';\n }\n return uncontrolledInputValue;\n };\n\n const handleClearButtonClick = (): void => {\n props.onClearButtonClick?.({ name: name ?? idBase, values: getValuesArrayFromIndices() });\n props.onChange?.({ name: name ?? idBase, values: [] });\n if (isUnControlled) {\n setUncontrolledInputValue([]);\n setSelectedIndices([]);\n }\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n setSelectedIndices([]);\n };\n\n useEffect(() => {\n if (clearFilterCallbackTriggerer) {\n handleClearButtonClick();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clearFilterCallbackTriggerer]);\n\n useEffect(() => {\n if (!isFirstRender) {\n props.onChange?.({\n name: props.name || idBase,\n values: getValuesArrayFromIndices(),\n });\n if (isUnControlled) {\n setUncontrolledInputValue(getValuesArrayFromIndices());\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n useEffect(() => {\n const isValueEmpty = selectedIndices.length === 0;\n if (!isFirstRender && !isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => (prev.includes(label) ? prev : [...prev, label]));\n setListViewSelectedFilters((prev) => ({\n ...prev,\n [label]: selectedIndices as number[],\n }));\n } else if (!isFirstRender && isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n\n const handleKeyDown = (e: React.KeyboardEvent<Element>): void => {\n onKeyDown?.(e);\n onTriggerKeydown?.({ event: e as React.KeyboardEvent<HTMLInputElement> });\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if ((e.key === 'Enter' || e.key === ' ') && !isOpen) {\n e.preventDefault();\n e.stopPropagation();\n onTriggerClick();\n }\n };\n\n return (\n <BaseFilterChip\n label={label}\n value={valueTitle ?? getUnControlledFilterChipValue()}\n onClearButtonClick={handleClearButtonClick}\n selectionType={selectionType}\n {...rest}\n ref={triggererRef as any}\n onKeyDown={handleKeyDown}\n accessibilityProps={{\n label: accessibilityLabel ?? label,\n hasPopup: getActionListContainerRole(hasFooterAction, 'FilterChipSelectInput'),\n expanded: isOpen,\n controls: `${dropdownBaseId}-actionlist`,\n activeDescendant: activeIndex >= 0 ? `${dropdownBaseId}-${activeIndex}` : undefined,\n }}\n onClick={(e) => {\n onTriggerClick();\n onClick?.(e);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n }}\n isDisabled={isDisabled}\n />\n );\n};\n\nconst FilterChipSelectInput = assignWithoutSideEffects(_FilterChipSelectInput, {\n componentId: dropdownComponentIds.triggers.FilterChipSelectInput,\n});\n\nexport { FilterChipSelectInput };\n"],"names":["_FilterChipSelectInput","props","_options$find$title","_options$find","idBase","useId","onClick","onBlur","onKeyDown","accessibilityLabel","testID","value","onClearButtonClick","label","onChange","name","isDisabled","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","uncontrolledInputValue","setUncontrolledInputValue","isFirstRender","useFirstRender","_useDropdown","useDropdown","options","selectedIndices","onTriggerClick","onTriggerKeydown","dropdownBaseId","isOpen","activeIndex","hasFooterAction","triggererRef","selectionType","isControlled","setSelectedIndices","controlledValueIndices","changeCallbackTriggerer","valueTitle","find","option","title","isUnControlled","length","undefined","_useListViewFilterCon","useListViewFilterContext","listViewSelectedFilters","setListViewSelectedFilters","_useFilterChipGroupCo","useFilterChipGroupContext","clearFilterCallbackTriggerer","setFilterChipGroupSelectedFilters","getValuesArrayFromIndices","indices","map","selectionIndex","useEffect","valueNotEmpty","trim","Array","isArray","isValueAndSelectedOptoinsSynced","inputValue","prev","includes","concat","_toConsumableArray","findIndex","index","filter","getTitleFromValue","getUnControlledFilterChipValue","handleClearButtonClick","_props$onClearButtonC","_props$onChange","call","values","_","updatedFilters","_toPropertyKey","_props$onChange2","isValueEmpty","_objectSpread","_defineProperty","handleKeyDown","e","event","key","preventDefault","stopPropagation","_jsx","BaseFilterChip","ref","accessibilityProps","hasPopup","getActionListContainerRole","expanded","controls","activeDescendant","FilterChipSelectInput","assignWithoutSideEffects","componentId","dropdownComponentIds","triggers"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"FilterChipSelectInput.web.js","sources":["../../../../../../src/components/Dropdown/FilterChipSelectInput.web.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable @typescript-eslint/no-unnecessary-type-assertion */\n\nimport React, { useEffect } from 'react';\nimport { useDropdown } from './useDropdown';\nimport { dropdownComponentIds } from './dropdownComponentIds';\nimport { useFilterChipGroupContext } from './FilterChipGroupContext.web';\nimport type { DataAnalyticsAttribute } from '~utils/types';\nimport { assignWithoutSideEffects } from '~utils/assignWithoutSideEffects';\nimport { BaseFilterChip } from '~components/FilterChip/BaseFilterChip';\nimport { getActionListContainerRole } from '~components/ActionList/getA11yRoles';\nimport type { BaseFilterChipProps } from '~components/FilterChip/types';\nimport { useId } from '~utils/useId';\nimport { useListViewFilterContext } from '~components/ListView/ListViewFiltersContext.web';\nimport { useFirstRender } from '~utils/useFirstRender';\n\ntype FilterChipSelectInputProps = Pick<\n BaseFilterChipProps,\n 'onKeyDown' | 'value' | 'label' | 'testID' | 'onClick' | 'selectionType' | 'onBlur'\n> & {\n accessibilityLabel?: string;\n onChange?: (props: { name: string; values: string[] }) => void;\n name?: string;\n onClearButtonClick?: (props: { name: string; values: string[] }) => void;\n isDisabled?: boolean;\n} & DataAnalyticsAttribute;\n\nconst _FilterChipSelectInput = (props: FilterChipSelectInputProps): React.ReactElement => {\n const idBase = useId('filter-chip-select-input');\n const {\n onClick,\n onBlur,\n onKeyDown,\n accessibilityLabel,\n testID,\n value,\n onClearButtonClick,\n label,\n onChange,\n name,\n isDisabled,\n ...rest\n } = props;\n const [uncontrolledInputValue, setUncontrolledInputValue] = React.useState<string[]>([]);\n const isFirstRender = useFirstRender();\n\n const {\n options,\n selectedIndices,\n onTriggerClick,\n onTriggerKeydown,\n dropdownBaseId,\n isOpen,\n activeIndex,\n hasFooterAction,\n triggererRef,\n selectionType,\n isControlled,\n setSelectedIndices,\n controlledValueIndices,\n changeCallbackTriggerer,\n } = useDropdown();\n const valueTitle = options.find((option) => option.value === value)?.title ?? value;\n\n const isUnControlled = options.length > 0 && props.value === undefined;\n // Currently we are having 2 context for selectedFilters. One is for FilterChipGroup and other is for ListView\n const { listViewSelectedFilters, setListViewSelectedFilters } = useListViewFilterContext();\n const {\n clearFilterCallbackTriggerer,\n setFilterChipGroupSelectedFilters,\n } = useFilterChipGroupContext();\n\n const getValuesArrayFromIndices = (): string[] => {\n let indices: number[] = [];\n if (isControlled) {\n indices = controlledValueIndices;\n } else {\n indices = selectedIndices;\n }\n\n return indices.map((selectionIndex) => options[selectionIndex].value);\n };\n\n useEffect(() => {\n const valueNotEmpty =\n (typeof value === 'string' && value.trim() !== '') ||\n (Array.isArray(value) && value.length > 0);\n\n // Compare actual selected values (not just lengths) to detect controlled value changes\n const currentSelectedValues = selectedIndices.map((i) => options[i]?.value);\n const isSingleValueSynced =\n typeof value === 'string' &&\n currentSelectedValues.length === 1 &&\n currentSelectedValues[0] === value;\n\n const isMultiValueSynced =\n Array.isArray(value) &&\n value.length === currentSelectedValues.length &&\n value.every((v) => currentSelectedValues.includes(v));\n\n const isValueAndSelectedIndicesSynced = isSingleValueSynced || isMultiValueSynced;\n\n if (isUnControlled) {\n if (listViewSelectedFilters[label]) {\n const savedIndices = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(savedIndices);\n const inputValue = savedIndices.map((selectionIndex) => options[selectionIndex].value);\n setUncontrolledInputValue(inputValue);\n setFilterChipGroupSelectedFilters((prev) =>\n prev.includes(label) ? prev : [...prev, label],\n );\n } else {\n setSelectedIndices([]);\n }\n } else if (listViewSelectedFilters[label]) {\n const savedIndices = (listViewSelectedFilters[label] as unknown) as number[];\n setSelectedIndices(savedIndices);\n // Sync selected indices when controlled value changes or on first render with options loaded\n } else if (valueNotEmpty && !isValueAndSelectedIndicesSynced && options.length > 0) {\n const newSelectedIndices =\n typeof value === 'string'\n ? [options.findIndex((option) => option.value === value)]\n : options\n .map((option, index) => (value.includes(option.value) ? index : -1))\n .filter((index) => index !== -1);\n setSelectedIndices(newSelectedIndices);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isUnControlled, options]);\n\n const getTitleFromValue = (value: string): string => {\n const option = options.find((option) => option.value === value);\n return option ? option.title : '';\n };\n\n const getUnControlledFilterChipValue = (): string | string[] => {\n if (selectionType === 'single') {\n if (uncontrolledInputValue.length > 0) {\n return getTitleFromValue(uncontrolledInputValue[0]);\n }\n return '';\n }\n return uncontrolledInputValue;\n };\n\n const handleClearButtonClick = (): void => {\n props.onClearButtonClick?.({ name: name ?? idBase, values: getValuesArrayFromIndices() });\n props.onChange?.({ name: name ?? idBase, values: [] });\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n setUncontrolledInputValue([]);\n setSelectedIndices([]);\n };\n\n useEffect(() => {\n if (clearFilterCallbackTriggerer) {\n handleClearButtonClick();\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [clearFilterCallbackTriggerer]);\n\n useEffect(() => {\n if (!isFirstRender) {\n props.onChange?.({\n name: props.name || idBase,\n values: getValuesArrayFromIndices(),\n });\n if (isUnControlled) {\n setUncontrolledInputValue(getValuesArrayFromIndices());\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n useEffect(() => {\n const isValueEmpty = selectedIndices.length === 0;\n if (!isFirstRender && !isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => (prev.includes(label) ? prev : [...prev, label]));\n setListViewSelectedFilters((prev) => ({\n ...prev,\n [label]: selectedIndices as number[],\n }));\n } else if (!isFirstRender && isValueEmpty) {\n setFilterChipGroupSelectedFilters((prev) => prev.filter((filter) => filter !== label));\n setListViewSelectedFilters((prev) => {\n const { [label]: _, ...updatedFilters } = prev;\n return updatedFilters;\n });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [changeCallbackTriggerer]);\n\n const handleKeyDown = (e: React.KeyboardEvent<Element>): void => {\n onKeyDown?.(e);\n onTriggerKeydown?.({ event: e as React.KeyboardEvent<HTMLInputElement> });\n\n if (e.key === 'Escape') {\n e.preventDefault();\n e.stopPropagation();\n }\n\n if ((e.key === 'Enter' || e.key === ' ') && !isOpen) {\n e.preventDefault();\n e.stopPropagation();\n onTriggerClick();\n }\n };\n return (\n <BaseFilterChip\n label={label}\n value={valueTitle ?? getUnControlledFilterChipValue()}\n onClearButtonClick={handleClearButtonClick}\n selectionType={selectionType}\n {...rest}\n ref={triggererRef as any}\n onKeyDown={handleKeyDown}\n accessibilityProps={{\n label: accessibilityLabel ?? label,\n hasPopup: getActionListContainerRole(hasFooterAction, 'FilterChipSelectInput'),\n expanded: isOpen,\n controls: `${dropdownBaseId}-actionlist`,\n activeDescendant: activeIndex >= 0 ? `${dropdownBaseId}-${activeIndex}` : undefined,\n }}\n onClick={(e) => {\n onTriggerClick();\n onClick?.(e);\n }}\n onBlur={(e) => {\n onBlur?.(e);\n }}\n isDisabled={isDisabled}\n />\n );\n};\n\nconst FilterChipSelectInput = assignWithoutSideEffects(_FilterChipSelectInput, {\n componentId: dropdownComponentIds.triggers.FilterChipSelectInput,\n});\n\nexport { FilterChipSelectInput };\n"],"names":["_FilterChipSelectInput","props","_options$find$title","_options$find","idBase","useId","onClick","onBlur","onKeyDown","accessibilityLabel","testID","value","onClearButtonClick","label","onChange","name","isDisabled","rest","_objectWithoutProperties","_excluded","_React$useState","React","useState","_React$useState2","_slicedToArray","uncontrolledInputValue","setUncontrolledInputValue","isFirstRender","useFirstRender","_useDropdown","useDropdown","options","selectedIndices","onTriggerClick","onTriggerKeydown","dropdownBaseId","isOpen","activeIndex","hasFooterAction","triggererRef","selectionType","isControlled","setSelectedIndices","controlledValueIndices","changeCallbackTriggerer","valueTitle","find","option","title","isUnControlled","length","undefined","_useListViewFilterCon","useListViewFilterContext","listViewSelectedFilters","setListViewSelectedFilters","_useFilterChipGroupCo","useFilterChipGroupContext","clearFilterCallbackTriggerer","setFilterChipGroupSelectedFilters","getValuesArrayFromIndices","indices","map","selectionIndex","useEffect","valueNotEmpty","trim","Array","isArray","currentSelectedValues","i","_options$i","isSingleValueSynced","isMultiValueSynced","every","v","includes","isValueAndSelectedIndicesSynced","savedIndices","inputValue","prev","concat","_toConsumableArray","newSelectedIndices","findIndex","index","filter","getTitleFromValue","getUnControlledFilterChipValue","handleClearButtonClick","_props$onClearButtonC","_props$onChange","call","values","_","updatedFilters","_toPropertyKey","_props$onChange2","isValueEmpty","_objectSpread","_defineProperty","handleKeyDown","e","event","key","preventDefault","stopPropagation","_jsx","BaseFilterChip","ref","accessibilityProps","hasPopup","getActionListContainerRole","expanded","controls","activeDescendant","FilterChipSelectInput","assignWithoutSideEffects","componentId","dropdownComponentIds","triggers"],"mappings":"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"}
|