@pega/cosmos-react-social 2.0.0-dev.2.0 → 2.0.0-dev.21.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.
Files changed (133) hide show
  1. package/lib/components/Chat/Chat.d.ts.map +1 -1
  2. package/lib/components/Chat/Chat.js +9 -16
  3. package/lib/components/Chat/Chat.js.map +1 -1
  4. package/lib/components/Chat/Chat.types.d.ts +3 -3
  5. package/lib/components/Chat/Chat.types.d.ts.map +1 -1
  6. package/lib/components/Chat/Chat.types.js.map +1 -1
  7. package/lib/components/Chat/ChatBody.d.ts.map +1 -1
  8. package/lib/components/Chat/ChatBody.js +4 -3
  9. package/lib/components/Chat/ChatBody.js.map +1 -1
  10. package/lib/components/Chat/ChatComposer.d.ts.map +1 -1
  11. package/lib/components/Chat/ChatComposer.js +36 -51
  12. package/lib/components/Chat/ChatComposer.js.map +1 -1
  13. package/lib/components/Chat/ChatHeader.d.ts.map +1 -1
  14. package/lib/components/Chat/ChatHeader.js +10 -13
  15. package/lib/components/Chat/ChatHeader.js.map +1 -1
  16. package/lib/components/Chat/ChatTranscript.d.ts.map +1 -1
  17. package/lib/components/Chat/ChatTranscript.js +15 -16
  18. package/lib/components/Chat/ChatTranscript.js.map +1 -1
  19. package/lib/components/Chat/Message.d.ts.map +1 -1
  20. package/lib/components/Chat/Message.js +41 -59
  21. package/lib/components/Chat/Message.js.map +1 -1
  22. package/lib/components/Chat/Message.styles.js +2 -2
  23. package/lib/components/Chat/Message.styles.js.map +1 -1
  24. package/lib/components/Chat/MessageList.d.ts.map +1 -1
  25. package/lib/components/Chat/MessageList.js +36 -41
  26. package/lib/components/Chat/MessageList.js.map +1 -1
  27. package/lib/components/Chat/RepeatingView.d.ts.map +1 -1
  28. package/lib/components/Chat/RepeatingView.js +10 -14
  29. package/lib/components/Chat/RepeatingView.js.map +1 -1
  30. package/lib/components/Chat/SuggestedReplyPicker.d.ts.map +1 -1
  31. package/lib/components/Chat/SuggestedReplyPicker.js +46 -54
  32. package/lib/components/Chat/SuggestedReplyPicker.js.map +1 -1
  33. package/lib/components/Chat/SystemMessage.d.ts.map +1 -1
  34. package/lib/components/Chat/SystemMessage.js +4 -6
  35. package/lib/components/Chat/SystemMessage.js.map +1 -1
  36. package/lib/components/Chat/TranscriptMessage.d.ts.map +1 -1
  37. package/lib/components/Chat/TranscriptMessage.js +7 -13
  38. package/lib/components/Chat/TranscriptMessage.js.map +1 -1
  39. package/lib/components/Chat/TypeIndicator.d.ts.map +1 -1
  40. package/lib/components/Chat/TypeIndicator.js +3 -2
  41. package/lib/components/Chat/TypeIndicator.js.map +1 -1
  42. package/lib/components/Email/Email.d.ts.map +1 -1
  43. package/lib/components/Email/Email.js +102 -129
  44. package/lib/components/Email/Email.js.map +1 -1
  45. package/lib/components/Email/Email.styles.d.ts +8 -1
  46. package/lib/components/Email/Email.styles.d.ts.map +1 -1
  47. package/lib/components/Email/Email.styles.js +85 -4
  48. package/lib/components/Email/Email.styles.js.map +1 -1
  49. package/lib/components/Email/Email.types.d.ts +139 -62
  50. package/lib/components/Email/Email.types.d.ts.map +1 -1
  51. package/lib/components/Email/Email.types.js.map +1 -1
  52. package/lib/components/Email/EmailComposer.d.ts +4 -6
  53. package/lib/components/Email/EmailComposer.d.ts.map +1 -1
  54. package/lib/components/Email/EmailComposer.js +155 -73
  55. package/lib/components/Email/EmailComposer.js.map +1 -1
  56. package/lib/components/Email/EmailConversation.d.ts +7 -4
  57. package/lib/components/Email/EmailConversation.d.ts.map +1 -1
  58. package/lib/components/Email/EmailConversation.js +132 -76
  59. package/lib/components/Email/EmailConversation.js.map +1 -1
  60. package/lib/components/Email/EmailEntity.d.ts +6 -0
  61. package/lib/components/Email/EmailEntity.d.ts.map +1 -0
  62. package/lib/components/Email/EmailEntity.js +19 -0
  63. package/lib/components/Email/EmailEntity.js.map +1 -0
  64. package/lib/components/Email/EmailSelector.d.ts +14 -0
  65. package/lib/components/Email/EmailSelector.d.ts.map +1 -0
  66. package/lib/components/Email/EmailSelector.js +62 -0
  67. package/lib/components/Email/EmailSelector.js.map +1 -0
  68. package/lib/components/Email/EmailShell.d.ts.map +1 -1
  69. package/lib/components/Email/EmailShell.js +23 -31
  70. package/lib/components/Email/EmailShell.js.map +1 -1
  71. package/lib/components/Email/EmailSummaryItem.d.ts +10 -0
  72. package/lib/components/Email/EmailSummaryItem.d.ts.map +1 -0
  73. package/lib/components/Email/EmailSummaryItem.js +93 -0
  74. package/lib/components/Email/EmailSummaryItem.js.map +1 -0
  75. package/lib/components/Email/EmailSummaryList.d.ts +6 -0
  76. package/lib/components/Email/EmailSummaryList.d.ts.map +1 -0
  77. package/lib/components/Email/EmailSummaryList.js +115 -0
  78. package/lib/components/Email/EmailSummaryList.js.map +1 -0
  79. package/lib/components/Email/ViewAnalysis.d.ts +6 -0
  80. package/lib/components/Email/ViewAnalysis.d.ts.map +1 -0
  81. package/lib/components/Email/ViewAnalysis.js +20 -0
  82. package/lib/components/Email/ViewAnalysis.js.map +1 -0
  83. package/lib/components/Feed/Feed.context.d.ts +16 -6
  84. package/lib/components/Feed/Feed.context.d.ts.map +1 -1
  85. package/lib/components/Feed/Feed.context.js +1 -0
  86. package/lib/components/Feed/Feed.context.js.map +1 -1
  87. package/lib/components/Feed/Feed.d.ts +13 -17
  88. package/lib/components/Feed/Feed.d.ts.map +1 -1
  89. package/lib/components/Feed/Feed.js +20 -31
  90. package/lib/components/Feed/Feed.js.map +1 -1
  91. package/lib/components/Feed/FeedAttachments.d.ts.map +1 -1
  92. package/lib/components/Feed/FeedAttachments.js +7 -6
  93. package/lib/components/Feed/FeedAttachments.js.map +1 -1
  94. package/lib/components/Feed/FeedButton.d.ts.map +1 -1
  95. package/lib/components/Feed/FeedButton.js.map +1 -1
  96. package/lib/components/Feed/FeedContent.d.ts.map +1 -1
  97. package/lib/components/Feed/FeedContent.js +12 -6
  98. package/lib/components/Feed/FeedContent.js.map +1 -1
  99. package/lib/components/Feed/FeedModalList.d.ts +15 -0
  100. package/lib/components/Feed/FeedModalList.d.ts.map +1 -0
  101. package/lib/components/Feed/FeedModalList.js +49 -0
  102. package/lib/components/Feed/FeedModalList.js.map +1 -0
  103. package/lib/components/Feed/FeedNewPost.d.ts +2 -1
  104. package/lib/components/Feed/FeedNewPost.d.ts.map +1 -1
  105. package/lib/components/Feed/FeedNewPost.js +44 -44
  106. package/lib/components/Feed/FeedNewPost.js.map +1 -1
  107. package/lib/components/Feed/FeedNewPostTypeMenu.d.ts.map +1 -1
  108. package/lib/components/Feed/FeedNewPostTypeMenu.js +47 -79
  109. package/lib/components/Feed/FeedNewPostTypeMenu.js.map +1 -1
  110. package/lib/components/Feed/FeedPost.d.ts +34 -12
  111. package/lib/components/Feed/FeedPost.d.ts.map +1 -1
  112. package/lib/components/Feed/FeedPost.js +165 -101
  113. package/lib/components/Feed/FeedPost.js.map +1 -1
  114. package/lib/components/Feed/FeedReply.d.ts +31 -13
  115. package/lib/components/Feed/FeedReply.d.ts.map +1 -1
  116. package/lib/components/Feed/FeedReply.js +123 -39
  117. package/lib/components/Feed/FeedReply.js.map +1 -1
  118. package/lib/components/Feed/FeedReplyInput.d.ts +6 -6
  119. package/lib/components/Feed/FeedReplyInput.d.ts.map +1 -1
  120. package/lib/components/Feed/FeedReplyInput.js +43 -46
  121. package/lib/components/Feed/FeedReplyInput.js.map +1 -1
  122. package/lib/components/Feed/FeedRichText.d.ts.map +1 -1
  123. package/lib/components/Feed/FeedRichText.js +81 -19
  124. package/lib/components/Feed/FeedRichText.js.map +1 -1
  125. package/lib/components/HashtagButton/HashtagButton.d.ts +6 -4
  126. package/lib/components/HashtagButton/HashtagButton.d.ts.map +1 -1
  127. package/lib/components/HashtagButton/HashtagButton.js +23 -17
  128. package/lib/components/HashtagButton/HashtagButton.js.map +1 -1
  129. package/lib/components/MentionButton/MentionButton.d.ts +10 -4
  130. package/lib/components/MentionButton/MentionButton.d.ts.map +1 -1
  131. package/lib/components/MentionButton/MentionButton.js +34 -18
  132. package/lib/components/MentionButton/MentionButton.js.map +1 -1
  133. package/package.json +15 -16
@@ -1 +1 @@
1
- {"version":3,"file":"FeedNewPost.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPost.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useState, FC, MouseEvent, useRef, useContext, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Avatar,\n Button,\n CardContent,\n Flex,\n Icon,\n StyledIcon,\n StyledCard,\n StyledPopover,\n defaultThemeProp,\n useAutoResize,\n useElement,\n useOuterEvent,\n ForwardProps,\n useI18n,\n ExpandCollapse\n} from '@pega/cosmos-react-core';\nimport { RichTextEditorState } from '@pega/cosmos-react-rte';\n\nimport FeedNewPostTypeMenu, {\n PostType,\n PostTypeMenuProps,\n RecipientMenuItem\n} from './FeedNewPostTypeMenu';\nimport FeedAttachments, { AttachedFiles } from './FeedAttachments';\nimport FeedButton from './FeedButton';\nimport FeedRichText from './FeedRichText';\nimport { FeedContext } from './Feed.context';\n\nexport interface FeedNewPostProps {\n /** A unique ID for the NewPost */\n id: string;\n /** A set of attachment files. */\n attachments?: AttachedFiles[];\n /** Information that is used to label buttons and inputs for accessibility purposes */\n interactionInfo: {\n textAreaPlaceholder: string;\n postLabel: string;\n };\n /** A callback containing a list of added files that will run whenever files are added to the post. */\n onFilesAdded?: (files: AttachedFiles[]) => void;\n /** A callback that will run when the new post button has been clicked */\n onPost: (event: {\n newPostId: string;\n value: string;\n attachments: AttachedFiles[];\n recipients: RecipientMenuItem[];\n username: string;\n clear(): void;\n }) => void;\n autoFocus?: boolean;\n /** Array of private recipient options */\n recipients?: PostTypeMenuProps['recipients'];\n /** Handler for new search on private recipient options */\n onRecipientSearch?: (newSearch: string) => void;\n}\n\nconst StyledTextAreaOverflow = styled.div(({ theme }) => {\n return css`\n overflow-y: hidden;\n margin-top: ${theme.base.spacing};\n width: 100%;\n `;\n});\n\nStyledTextAreaOverflow.defaultProps = defaultThemeProp;\n\nexport const StyledFeedNewPost = styled.div(({ theme }) => {\n return css`\n ${StyledIcon}:not(${StyledPopover} ${StyledIcon}) {\n font-size: 1.25rem;\n }\n\n ${FeedButton} {\n margin-top: calc(0.5 * ${theme.base.spacing});\n }\n `;\n});\n\nStyledFeedNewPost.defaultProps = defaultThemeProp;\n\nconst HiddenFileInput = styled.input`\n display: none;\n`;\n\nconst FeedNewPost: FC<ForwardProps & FeedNewPostProps> = (props: FeedNewPostProps) => {\n const {\n id,\n attachments = [],\n interactionInfo,\n onPost,\n onFilesAdded,\n autoFocus,\n recipients,\n onRecipientSearch,\n ...restProps\n } = props;\n const rteRef = useRef<RichTextEditorState>();\n const { textAreaPlaceholder, postLabel } = interactionInfo;\n const [emptyText, setEmptyText] = useState(true);\n const [hasFocus, setHasFocus] = useState(autoFocus);\n const [postType, setPostType] = useState<PostType>('post');\n const [resetPostTypeMenu, setResetPostTypeMenu] = useState(false);\n const [selectedRecipients, setSelectedRecipients] = useState<RecipientMenuItem[]>([]);\n const [attachmentEl, setAttachmentEl] = useElement<HTMLInputElement>();\n const [newPostEl, setNewPostEl] = useElement<HTMLDivElement>();\n const [textAreaRef, resizeTextArea] = useAutoResize<HTMLDivElement>();\n const { avatarSrc, fullname, username } = useContext(FeedContext).userInfo;\n\n useOuterEvent('mousedown', [newPostEl], () => {\n if (rteRef.current?.getPlainText() === '') rteRef.current?.clear();\n });\n\n const t = useI18n();\n\n const handlePost = () => {\n if (!emptyText || attachments.length > 0) {\n onPost({\n newPostId: id,\n value: rteRef.current?.getPlainText() || '',\n attachments: attachments || [],\n recipients: selectedRecipients,\n username,\n clear: () => {\n rteRef.current?.clear();\n setResetPostTypeMenu(true);\n }\n });\n }\n };\n\n useEffect(() => {\n if (postType === 'post') {\n rteRef.current?.focus();\n }\n if (postType !== 'private') {\n setSelectedRecipients([] as RecipientMenuItem[]);\n }\n }, [postType]);\n\n return (\n <StyledCard ref={setNewPostEl} as={StyledFeedNewPost} {...restProps}>\n <CardContent>\n {onRecipientSearch && (\n <FeedNewPostTypeMenu\n recipients={recipients || ([] as PostTypeMenuProps['recipients'])}\n onSetPostType={setPostType}\n onSelectedRecipientsUpdate={setSelectedRecipients}\n onRecipientSearch={onRecipientSearch}\n reset={resetPostTypeMenu}\n onReset={() => setResetPostTypeMenu(false)}\n />\n )}\n\n <Flex container={{ alignItems: 'start', itemGap: 1 }}>\n <Avatar name={fullname} size='l' imageSrc={avatarSrc} />\n\n <StyledTextAreaOverflow ref={textAreaRef}>\n <FeedRichText\n onChange={() => {\n setEmptyText(rteRef.current?.getPlainText() === '');\n resizeTextArea();\n }}\n placeholder={textAreaPlaceholder}\n autoFocus={autoFocus}\n onSubmit={handlePost}\n onFocus={() => setHasFocus(true)}\n onBlur={() => setHasFocus(false)}\n ref={rteRef}\n />\n </StyledTextAreaOverflow>\n\n {!emptyText && (\n <Button\n variant='simple'\n as={FeedButton}\n onClick={rteRef.current?.clear}\n icon\n label={t('feed_cancel_conversation')}\n >\n <Icon name='times' />\n </Button>\n )}\n\n {onFilesAdded && (\n <Button\n variant='simple'\n as={FeedButton}\n onClick={() => attachmentEl?.click()}\n icon\n label={t('attachment')}\n >\n <Icon name='paper-clip' />\n </Button>\n )}\n </Flex>\n\n <HiddenFileInput\n ref={setAttachmentEl}\n type='file'\n multiple\n onChange={() => {\n if (attachmentEl?.files) {\n onFilesAdded?.(Array.from(attachmentEl?.files));\n }\n }}\n // Must trick input to believe there is no value when activated so that the same file may be added consecutively.\n onClick={(event: MouseEvent) => {\n (event.target as HTMLInputElement).value = '';\n }}\n />\n\n <FeedAttachments attachments={attachments} />\n\n <ExpandCollapse collapsed={!hasFocus && emptyText && !attachments.length}>\n <Flex container={{ justify: 'end' }}>\n <Button\n variant='primary'\n disabled={emptyText && attachments.length === 0}\n onClick={handlePost}\n >\n {postLabel}\n </Button>\n </Flex>\n </ExpandCollapse>\n </CardContent>\n </StyledCard>\n );\n};\n\nexport default FeedNewPost;\n"]}
1
+ {"version":3,"file":"FeedNewPost.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPost.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, FC, MouseEvent, useRef, useContext } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Avatar,\n Button,\n CardContent,\n Flex,\n Icon,\n registerIcon,\n StyledIcon,\n StyledCard,\n StyledPopover,\n defaultThemeProp,\n useAutoResize,\n useElement,\n useOuterEvent,\n ForwardProps,\n useI18n,\n ExpandCollapse,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport { RichTextEditorState, StyledRichTextEditor } from '@pega/cosmos-react-rte';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\nimport * as paperClipIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/paper-clip.icon';\n\nimport FeedNewPostTypeMenu, {\n PostType,\n PostTypeMenuProps,\n RecipientMenuItem\n} from './FeedNewPostTypeMenu';\nimport FeedAttachments, { AttachedFiles } from './FeedAttachments';\nimport FeedButton from './FeedButton';\nimport FeedRichText from './FeedRichText';\nimport { FeedContext } from './Feed.context';\n\nregisterIcon(timesIcon, paperClipIcon);\n\nexport interface FeedNewPostProps {\n /** A unique ID for the NewPost */\n id: string;\n /** A set of attachment files. */\n attachments?: AttachedFiles[];\n /** Information that is used to label buttons and inputs for accessibility purposes */\n interactionInfo: {\n textAreaPlaceholder: string;\n postLabel: string;\n };\n /** A callback containing a list of added files that will run whenever files are added to the post. */\n onFilesAdded?: (files: AttachedFiles[]) => void;\n /** A callback that will run when the new post button has been clicked */\n onPost: (event: {\n newPostId: string;\n value: string;\n attachments: AttachedFiles[];\n recipients: RecipientMenuItem[];\n username: string;\n clear: () => void;\n }) => void;\n autoFocus?: boolean;\n /** Array of private recipient options */\n recipients?: PostTypeMenuProps['recipients'];\n /** Handler for new search on private recipient options */\n onRecipientSearch?: (newSearch: string) => void;\n}\n\nexport const StyledTextAreaOverflow = styled.div(({ theme }) => {\n return css`\n overflow-y: hidden;\n margin-top: ${theme.base.spacing};\n min-height: 1rem;\n width: 100%;\n\n ${StyledRichTextEditor} {\n &:focus-within {\n box-shadow: none;\n }\n }\n `;\n});\n\nStyledTextAreaOverflow.defaultProps = defaultThemeProp;\n\nexport const StyledFeedNewPost = styled.div(({ theme }) => {\n return css`\n ${StyledIcon}:not(${StyledPopover} ${StyledIcon}) {\n font-size: 1.25rem;\n }\n\n ${FeedButton} {\n margin-top: calc(0.5 * ${theme.base.spacing});\n }\n `;\n});\n\nStyledFeedNewPost.defaultProps = defaultThemeProp;\n\nconst HiddenFileInput = styled.input`\n display: none;\n`;\n\nconst FeedNewPost: FC<ForwardProps & FeedNewPostProps> = (props: FeedNewPostProps) => {\n const {\n id,\n attachments = [],\n interactionInfo,\n onPost,\n onFilesAdded,\n autoFocus,\n recipients,\n onRecipientSearch,\n ...restProps\n } = props;\n const rteRef = useRef<RichTextEditorState>();\n const { textAreaPlaceholder, postLabel } = interactionInfo;\n const { setShowSearchResults } = useContext(FeedContext);\n const { avatarSrc, fullname, username } = useContext(FeedContext).userInfo;\n const [emptyText, setEmptyText] = useState(true);\n const [hasFocus, setHasFocus] = useState(autoFocus);\n const [postType, setPostType] = useState<PostType>('post');\n const [resetPostTypeMenu, setResetPostTypeMenu] = useState(false);\n const [selectedRecipients, setSelectedRecipients] = useState<RecipientMenuItem[]>([]);\n const [attachmentEl, setAttachmentEl] = useElement<HTMLInputElement>();\n const [newPostEl, setNewPostEl] = useElement<HTMLDivElement>();\n const [textAreaRef, resizeTextArea] = useAutoResize<HTMLDivElement>();\n\n useOuterEvent('mousedown', [newPostEl], () => {\n if (emptyText) rteRef.current?.clear();\n });\n\n const t = useI18n();\n\n const handlePost = () => {\n setShowSearchResults?.(false);\n if ((!emptyText || attachments.length > 0) && attachments.every(x => !x.error)) {\n onPost({\n newPostId: id,\n value: rteRef.current?.getPlainText() || '',\n attachments: attachments || [],\n recipients: selectedRecipients,\n username,\n clear: () => {\n rteRef.current?.clear();\n setResetPostTypeMenu(true);\n }\n });\n }\n };\n\n const handleClear = () => {\n setShowSearchResults?.(false);\n rteRef.current?.clear();\n };\n\n useAfterInitialEffect(() => {\n if (postType === 'post') {\n rteRef.current?.focus();\n }\n if (postType !== 'private') {\n setSelectedRecipients([] as RecipientMenuItem[]);\n }\n }, [postType]);\n\n return (\n <StyledCard ref={setNewPostEl} as={StyledFeedNewPost} {...restProps}>\n <CardContent>\n {onRecipientSearch && (\n <FeedNewPostTypeMenu\n recipients={recipients || ([] as PostTypeMenuProps['recipients'])}\n onSetPostType={setPostType}\n onSelectedRecipientsUpdate={setSelectedRecipients}\n onRecipientSearch={onRecipientSearch}\n reset={resetPostTypeMenu}\n onReset={() => setResetPostTypeMenu(false)}\n />\n )}\n\n <Flex container={{ alignItems: 'start', gap: 1 }}>\n <Avatar name={fullname} size='l' imageSrc={avatarSrc} />\n\n <StyledTextAreaOverflow ref={textAreaRef}>\n <FeedRichText\n label={t('feed_new_post')}\n labelHidden\n onChange={() => {\n setEmptyText(rteRef.current?.getPlainText().trim() === '');\n resizeTextArea();\n }}\n placeholder={textAreaPlaceholder}\n autoFocus={autoFocus}\n onSubmit={handlePost}\n onFocus={() => setHasFocus(true)}\n onBlur={() => setHasFocus(false)}\n ref={rteRef}\n />\n </StyledTextAreaOverflow>\n\n {!emptyText && (\n <Button\n variant='simple'\n as={FeedButton}\n onClick={handleClear}\n icon\n label={t('feed_cancel_conversation')}\n >\n <Icon name='times' />\n </Button>\n )}\n\n {onFilesAdded && (\n <Button\n variant='simple'\n as={FeedButton}\n onClick={() => {\n setShowSearchResults?.(false);\n attachmentEl?.click();\n }}\n icon\n label={t('attachment')}\n >\n <Icon name='paper-clip' />\n </Button>\n )}\n </Flex>\n\n <HiddenFileInput\n ref={setAttachmentEl}\n type='file'\n multiple\n onChange={() => {\n if (attachmentEl?.files) {\n onFilesAdded?.(Array.from(attachmentEl?.files));\n }\n }}\n // Must trick input to believe there is no value when activated so that the same file may be added consecutively.\n onClick={(event: MouseEvent) => {\n (event.target as HTMLInputElement).value = '';\n }}\n />\n\n <FeedAttachments attachments={attachments} />\n\n <ExpandCollapse collapsed={!hasFocus && emptyText && !attachments.length}>\n <Flex container={{ justify: 'end' }}>\n <Button\n variant='primary'\n disabled={(emptyText && attachments.length === 0) || attachments.some(x => x.error)}\n onClick={handlePost}\n >\n {postLabel}\n </Button>\n </Flex>\n </ExpandCollapse>\n </CardContent>\n </StyledCard>\n );\n};\n\nexport default FeedNewPost;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FeedNewPostTypeMenu.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPostTypeMenu.tsx"],"names":[],"mappings":"AAqBA,oBAAY,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACnC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,+BAA+B;IAC/B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,iDAAiD;IACjD,0BAA0B,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACtE,0DAA0D;IAC1D,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AA4LD,QAAA,MAAM,mBAAmB,iGAOtB,iBAAiB,gBAibnB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
1
+ {"version":3,"file":"FeedNewPostTypeMenu.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPostTypeMenu.tsx"],"names":[],"mappings":"AAsBA,oBAAY,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1C,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC5B,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;IACnC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,yCAAyC;IACzC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,+BAA+B;IAC/B,aAAa,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,CAAC;IAC5C,iDAAiD;IACjD,0BAA0B,EAAE,CAAC,UAAU,EAAE,iBAAiB,EAAE,KAAK,IAAI,CAAC;IACtE,0DAA0D;IAC1D,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/C,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAwLD,QAAA,MAAM,mBAAmB,iGAOtB,iBAAiB,gBAwanB,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -1,7 +1,8 @@
1
- import React, { useRef, useMemo, useEffect, useCallback, useReducer } from 'react';
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useRef, useMemo, useEffect, useCallback, useReducer } from 'react';
2
3
  import styled, { css } from 'styled-components';
3
- import { Button, Text, StyledPrimary, StyledMenuItem, Icon, StyledIcon, useElement, useOuterEvent, Popover, Menu, Status, defaultThemeProp, createUID } from '@pega/cosmos-react-core';
4
- import { StyledMenuListHeader } from '@pega/cosmos-react-core/lib/components/Menu/MenuListHeader';
4
+ import { Button, Text, StyledPrimary, StyledMenuItem, Icon, StyledIcon, useElement, useOuterEvent, Popover, Menu, Status, defaultThemeProp, createUID, useAfterInitialEffect } from '@pega/cosmos-react-core';
5
+ import { StyledMenuListHeader } from '@pega/cosmos-react-core/lib/components/Menu/Menu.styles';
5
6
  import MultiSelectInput from '@pega/cosmos-react-core/lib/components/ComboBox/MultiSelectInput/MultiSelectInput';
6
7
  const StyledPopoverContent = styled.div(({ theme }) => {
7
8
  const { base: { spacing } } = theme;
@@ -98,7 +99,7 @@ const createRecipientMenuItem = (recipient, selectedIds) => {
98
99
  };
99
100
  };
100
101
  const getTypeMenuItems = (type) => {
101
- const baseOptions = [
102
+ return [
102
103
  {
103
104
  id: '1',
104
105
  primary: typeCopy.post.primary,
@@ -109,11 +110,9 @@ const getTypeMenuItems = (type) => {
109
110
  id: '2',
110
111
  primary: typeCopy.private.primary,
111
112
  selected: type === 'private',
112
- value: 'private',
113
- items: []
113
+ value: 'private'
114
114
  }
115
115
  ];
116
- return baseOptions;
117
116
  };
118
117
  const initialState = {
119
118
  postType: 'post',
@@ -276,23 +275,14 @@ const FeedNewPostTypeMenu = ({ recipients, onSetPostType, onSelectedRecipientsUp
276
275
  const [state, dispatch] = useReducer(reducer, initialState);
277
276
  const onBlur = useCallback(() => {
278
277
  setTimeout(() => {
279
- var _a;
280
- if (!((_a = document.activeElement) === null || _a === void 0 ? void 0 : _a.closest(`#${menuPopoverId}`))) {
278
+ if (!document.activeElement?.closest(`#${menuPopoverId}`)) {
281
279
  dispatch({ type: 'setShowTypeMenu', payload: false });
282
280
  }
283
281
  }, 200);
284
282
  }, [menuPopoverId]);
285
283
  const handleKeydownToggle = useCallback((e) => {
286
- switch (e.key) {
287
- case 'Escape': {
288
- if (state.showTypeMenu) {
289
- dispatch({ type: 'toggleTypeMenu' });
290
- }
291
- break;
292
- }
293
- default:
294
- break;
295
- }
284
+ if (e.key === 'Escape' && state.showTypeMenu)
285
+ dispatch({ type: 'toggleTypeMenu' });
296
286
  }, [state.showTypeMenu]);
297
287
  useOuterEvent('mousedown', [typePopoverEl, typeMenuPopoverTarget], () => {
298
288
  dispatch({ type: 'setShowTypeMenu', payload: false });
@@ -328,28 +318,25 @@ const FeedNewPostTypeMenu = ({ recipients, onSetPostType, onSelectedRecipientsUp
328
318
  }
329
319
  }, [state.showTypeMenu]);
330
320
  useEffect(() => {
331
- var _a;
332
321
  if (multiSelectInputRef.current) {
333
- (_a = multiSelectInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
322
+ multiSelectInputRef.current?.focus();
334
323
  }
335
324
  }, [multiSelectInputRef.current]);
336
325
  useEffect(() => {
337
- var _a;
338
326
  if (state.postType === 'private') {
339
327
  if (!state.viewingRecipients) {
340
- toggleEl === null || toggleEl === void 0 ? void 0 : toggleEl.focus();
328
+ toggleEl?.focus();
341
329
  }
342
330
  else {
343
- (_a = multiSelectInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
331
+ multiSelectInputRef.current?.focus();
344
332
  }
345
333
  }
346
334
  }, [state.viewingRecipients]);
347
- useEffect(() => {
348
- var _a;
335
+ useAfterInitialEffect(() => {
349
336
  onSetPostType(state.postType);
350
337
  dispatch({ type: 'updateTypeMenuItems' });
351
338
  if (state.postType === 'private') {
352
- (_a = multiSelectInputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
339
+ multiSelectInputRef.current?.focus();
353
340
  }
354
341
  }, [state.postType]);
355
342
  useEffect(() => {
@@ -363,61 +350,42 @@ const FeedNewPostTypeMenu = ({ recipients, onSetPostType, onSelectedRecipientsUp
363
350
  };
364
351
  }, [state.searchValue]);
365
352
  useEffect(() => {
366
- toggleEl === null || toggleEl === void 0 ? void 0 : toggleEl.addEventListener('keydown', handleKeydownToggle);
367
- return () => toggleEl === null || toggleEl === void 0 ? void 0 : toggleEl.removeEventListener('keydown', handleKeydownToggle);
353
+ toggleEl?.addEventListener('keydown', handleKeydownToggle);
354
+ return () => toggleEl?.removeEventListener('keydown', handleKeydownToggle);
368
355
  }, [toggleEl, state.showTypeMenu]);
369
356
  useEffect(() => {
370
- var _a;
371
- (_a = multiSelectInputRef.current) === null || _a === void 0 ? void 0 : _a.addEventListener('keydown', handleKeydownToggle);
372
- return () => { var _a; return (_a = multiSelectInputRef.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('keydown', handleKeydownToggle); };
357
+ multiSelectInputRef.current?.addEventListener('keydown', handleKeydownToggle);
358
+ return () => multiSelectInputRef.current?.removeEventListener('keydown', handleKeydownToggle);
373
359
  }, [multiSelectInputRef.current, state.showTypeMenu]);
374
- return (React.createElement("div", null,
375
- React.createElement(StyledTypeMenuToggle, { onClick: () => {
376
- dispatch({ type: 'toggleTypeMenu' });
377
- }, ref: setToggleEl, variant: 'link', "aria-haspopup": 'menu', "aria-expanded": state.showTypeMenu },
378
- React.createElement("span", { ref: setTypeMenuPopoverTarget }, typeCopy[state.postType].primary),
379
- React.createElement(Icon, { name: 'arrow-micro-down' })),
380
- state.postType === 'private' && state.multiSelectItems.length > 0 && (React.createElement(React.Fragment, null,
381
- React.createElement(StyledRecipientCount, { ref: setRecipientCountEl, "aria-describedby": 'recipients-popover', onMouseEnter: () => {
382
- if (!state.showTypeMenu)
383
- dispatch({ type: 'setShowCountPopover', payload: true });
384
- }, onFocus: () => dispatch({ type: 'setShowCountPopover', payload: true }), onMouseLeave: () => dispatch({ type: 'setShowCountPopover', payload: false }), onBlur: () => dispatch({ type: 'setShowCountPopover', payload: false }) }, `${state.multiSelectItems.length}`),
385
- React.createElement(Popover, { show: state.showCountPopover, target: recipientCountEl, id: 'recipients-popover', onMouseEnter: () => {
386
- if (!state.showTypeMenu)
387
- dispatch({ type: 'setShowCountPopover', payload: true });
388
- }, onMouseLeave: () => dispatch({ type: 'setShowCountPopover', payload: false }), arrow: true },
389
- React.createElement(StyledPopoverContent, null, state.multiSelectItems.map((recipient) => {
390
- return (React.createElement("p", { key: recipient.id },
391
- React.createElement(Text, { variant: 'primary' }, recipient.text)));
392
- }))))),
393
- React.createElement(StyledPostTypePopover, { id: menuPopoverId, ref: setTypePopoverEl, target: typeMenuPopoverTarget, show: state.showTypeMenu, placement: 'bottom-start' },
394
- (state.postType !== 'private' || !state.viewingRecipients) && (React.createElement(Menu, { items: state.typeMenuItems, focusControlEl: toggleEl || undefined, mode: 'single-select', onItemClick: selectedId => {
395
- const postType = state.typeMenuItems.find(item => item.id === selectedId).value;
396
- dispatch({ type: 'setPostType', payload: postType });
397
- }, onItemExpand: () => {
398
- if (state.postType === 'private') {
399
- dispatch({ type: 'setViewingRecipients', payload: true });
400
- }
401
- else {
402
- dispatch({ type: 'setPostType', payload: 'private' });
403
- }
404
- }, onBlur: onBlur })),
405
- state.postType === 'private' && state.viewingRecipients && (React.createElement(React.Fragment, null,
406
- React.createElement(StyledRecipientMenuHeader, null,
407
- React.createElement(Button, { as: StyledRecipientBackButton, variant: 'text', "aria-label": 'close submenu', onClick: () => {
408
- dispatch({ type: 'setViewingRecipients', payload: false });
409
- }, onBlur: onBlur },
410
- React.createElement(Icon, { name: 'caret-left' }),
411
- typeCopy.private.primary),
412
- React.createElement(StyledSelectedInputContainer, null,
413
- React.createElement(StyledMultiSelect, { ref: multiSelectInputRef, selected: state.multiSelectItems, onRemove: (selectedId) => {
414
- dispatch({ type: 'removeRecipientViaMultiSelect', payload: selectedId });
415
- }, value: state.searchValue, onChange: (e) => {
416
- dispatch({ type: 'setSearchValue', payload: e.target.value });
417
- } }))),
418
- state.showRecipientMenu && (React.createElement(StyledRecipientMenu, { loading: state.itemsLoading, focusControlEl: multiSelectInputRef.current, items: state.itemsLoading ? [] : state.recipientMenuItems, scrollAt: 11, mode: 'action', emptyText: 'No items', onItemClick: (selectedId) => {
419
- dispatch({ type: 'selectRecipientViaMenu', payload: selectedId });
420
- }, onBlur: onBlur })))))));
360
+ return (_jsxs("div", { children: [_jsxs(StyledTypeMenuToggle, { onClick: () => {
361
+ dispatch({ type: 'toggleTypeMenu' });
362
+ }, ref: setToggleEl, variant: 'link', "aria-haspopup": 'menu', "aria-expanded": state.showTypeMenu, children: [_jsx("span", { ref: setTypeMenuPopoverTarget, children: typeCopy[state.postType].primary }, void 0), _jsx(Icon, { name: 'arrow-micro-down' }, void 0)] }, void 0), state.postType === 'private' && state.multiSelectItems.length > 0 && (_jsxs(_Fragment, { children: [_jsx(StyledRecipientCount, { ref: setRecipientCountEl, "aria-describedby": 'recipients-popover', onMouseEnter: () => {
363
+ if (!state.showTypeMenu)
364
+ dispatch({ type: 'setShowCountPopover', payload: true });
365
+ }, onFocus: () => dispatch({ type: 'setShowCountPopover', payload: true }), onMouseLeave: () => dispatch({ type: 'setShowCountPopover', payload: false }), onBlur: () => dispatch({ type: 'setShowCountPopover', payload: false }), children: `${state.multiSelectItems.length}` }, void 0), _jsx(Popover, { show: state.showCountPopover, target: recipientCountEl, id: 'recipients-popover', onMouseEnter: () => {
366
+ if (!state.showTypeMenu)
367
+ dispatch({ type: 'setShowCountPopover', payload: true });
368
+ }, onMouseLeave: () => dispatch({ type: 'setShowCountPopover', payload: false }), arrow: true, children: _jsx(StyledPopoverContent, { children: state.multiSelectItems.map((recipient) => {
369
+ return (_jsx("p", { children: _jsx(Text, { variant: 'primary', children: recipient.text }, void 0) }, recipient.id));
370
+ }) }, void 0) }, void 0)] }, void 0)), _jsxs(StyledPostTypePopover, { id: menuPopoverId, ref: setTypePopoverEl, target: typeMenuPopoverTarget, show: state.showTypeMenu, placement: 'bottom-start', children: [(state.postType !== 'private' || !state.viewingRecipients) && (_jsx(Menu, { items: state.typeMenuItems, focusControlEl: toggleEl || undefined, mode: 'single-select', onItemClick: selectedId => {
371
+ const postType = state.typeMenuItems.find(item => item.id === selectedId).value;
372
+ dispatch({ type: 'setPostType', payload: postType });
373
+ }, onItemExpand: () => {
374
+ if (state.postType === 'private') {
375
+ dispatch({ type: 'setViewingRecipients', payload: true });
376
+ }
377
+ else {
378
+ dispatch({ type: 'setPostType', payload: 'private' });
379
+ }
380
+ }, onBlur: onBlur }, void 0)), state.postType === 'private' && state.viewingRecipients && (_jsxs(_Fragment, { children: [_jsxs(StyledRecipientMenuHeader, { children: [_jsxs(Button, { as: StyledRecipientBackButton, variant: 'text', "aria-label": 'close submenu', onClick: () => {
381
+ dispatch({ type: 'setViewingRecipients', payload: false });
382
+ }, onBlur: onBlur, children: [_jsx(Icon, { name: 'caret-left' }, void 0), typeCopy.private.primary] }, void 0), _jsx(StyledSelectedInputContainer, { children: _jsx(StyledMultiSelect, { ref: multiSelectInputRef, selected: state.multiSelectItems, onRemove: (selectedId) => {
383
+ dispatch({ type: 'removeRecipientViaMultiSelect', payload: selectedId });
384
+ }, value: state.searchValue, onChange: (e) => {
385
+ dispatch({ type: 'setSearchValue', payload: e.target.value });
386
+ } }, void 0) }, void 0)] }, void 0), state.showRecipientMenu && (_jsx(StyledRecipientMenu, { loading: state.itemsLoading, focusControlEl: multiSelectInputRef.current, items: state.itemsLoading ? [] : state.recipientMenuItems, scrollAt: 11, mode: 'action', emptyText: 'No items', onItemClick: (selectedId) => {
387
+ dispatch({ type: 'selectRecipientViaMenu', payload: selectedId });
388
+ }, onBlur: onBlur }, void 0))] }, void 0))] }, void 0)] }, void 0));
421
389
  };
422
390
  export default FeedNewPostTypeMenu;
423
391
  //# sourceMappingURL=FeedNewPostTypeMenu.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedNewPostTypeMenu.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPostTypeMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { useRef, useMemo, useEffect, useCallback, useReducer, ChangeEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Text,\n StyledPrimary,\n StyledMenuItem,\n Icon,\n StyledIcon,\n useElement,\n useOuterEvent,\n Popover,\n Menu,\n Status,\n defaultThemeProp,\n createUID\n} from '@pega/cosmos-react-core';\nimport { StyledMenuListHeader } from '@pega/cosmos-react-core/lib/components/Menu/MenuListHeader';\nimport MultiSelectInput from '@pega/cosmos-react-core/lib/components/ComboBox/MultiSelectInput/MultiSelectInput';\n\nexport type PostType = 'post' | 'private';\n\nexport interface RecipientOption {\n /** Pretty printed recipient name */\n primary: string;\n /** Functional identifier of unique recipient */\n value: string;\n}\n\nexport interface RecipientMenuItem {\n id: string;\n selected?: boolean;\n primary: RecipientOption['primary'];\n value: RecipientOption['value'];\n}\n\nexport interface RecipientMultiSelectData {\n id: RecipientMenuItem['id'];\n text: RecipientMenuItem['primary'];\n value: RecipientMenuItem['value'];\n}\n\nexport interface PostTypeMenuProps {\n /** Array of private recipient options */\n recipients: RecipientOption[];\n /** Post type update handler */\n onSetPostType: (postType: PostType) => void;\n /** Private post recipient list update handler */\n onSelectedRecipientsUpdate: (recipients: RecipientMenuItem[]) => void;\n /** Handler for new search on private recipient options */\n onRecipientSearch: (newSearch: string) => void;\n reset: boolean;\n onReset: () => void;\n}\n\ninterface PostTypeMenuState {\n postType: PostType;\n itemsLoading: boolean;\n showTypeMenu: boolean;\n showRecipientMenu: boolean;\n viewingRecipients: boolean;\n showCountPopover: boolean;\n searchValue: string;\n typeMenuItems: {\n id: string;\n primary: string;\n selected: boolean;\n value: PostType;\n item?: any;\n }[];\n recipientMenuItems: RecipientMenuItem[];\n multiSelectItems: RecipientMultiSelectData[];\n}\n\nconst StyledPopoverContent = styled.div(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n padding: ${spacing};\n\n p:not(:last-child) {\n margin-bottom: ${spacing};\n }\n `;\n});\nStyledPopoverContent.defaultProps = defaultThemeProp;\n\nconst StyledRecipientCount = styled(Status)(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n border-radius: 1.25rem;\n margin: 0 0 0 calc(0.5 * ${spacing});\n `;\n});\nStyledRecipientCount.defaultProps = defaultThemeProp;\n\nconst StyledMultiSelect = styled(MultiSelectInput)(() => {\n return css`\n width: 60vw;\n min-width: 16rem;\n max-width: 40rem;\n `;\n});\n\nconst StyledSelectedInputContainer = styled.div(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n margin: ${spacing} calc(2 * ${spacing}) calc(2 * ${spacing});\n `;\n});\nStyledSelectedInputContainer.defaultProps = defaultThemeProp;\n\nconst StyledRecipientBackButton = styled(StyledMenuListHeader)(({ theme }) => {\n const {\n base: {\n 'font-weight': { 'semi-bold': fontWeight },\n spacing\n }\n } = theme;\n\n return css`\n font-weight: ${fontWeight};\n padding: ${spacing} calc(2 * ${spacing});\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n && ${StyledIcon} {\n display: inline-block;\n margin-inline-end: ${spacing};\n }\n `;\n});\nStyledRecipientBackButton.defaultProps = defaultThemeProp;\n\nconst StyledRecipientMenuHeader = styled.div``;\n\nconst StyledTypeMenuToggle = styled(Button)(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n margin: ${spacing} 0;\n `;\n});\nStyledTypeMenuToggle.defaultProps = defaultThemeProp;\n\nconst StyledRecipientMenu = styled(Menu)(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n ${StyledMenuItem} > button {\n padding: ${spacing} calc(2 * ${spacing});\n }\n `;\n});\nStyledRecipientMenu.defaultProps = defaultThemeProp;\n\nconst StyledPostTypePopover = styled(Popover)(({ theme }) => {\n const {\n base: {\n 'font-weight': { normal: fontWeight }\n }\n } = theme;\n return css`\n ${StyledPrimary} {\n font-weight: ${fontWeight};\n }\n `;\n});\nStyledPostTypePopover.defaultProps = defaultThemeProp;\n\nconst typeCopy = {\n post: {\n primary: 'Public post'\n },\n private: {\n primary: 'Private post'\n }\n};\n\nconst createRecipientMenuItem = (\n recipient: RecipientOption,\n selectedIds?: RecipientMenuItem['id'][]\n) => {\n const checkIds = selectedIds || [];\n const id = `option_${recipient.value}`;\n\n return {\n ...recipient,\n id,\n selected: checkIds.includes(id)\n };\n};\n\nconst getTypeMenuItems = (type: PostType): PostTypeMenuState['typeMenuItems'] => {\n const baseOptions = [\n {\n id: '1',\n primary: typeCopy.post.primary,\n selected: type === 'post',\n value: 'post' as const\n },\n {\n id: '2',\n primary: typeCopy.private.primary,\n selected: type === 'private',\n value: 'private' as const,\n items: []\n }\n ];\n\n return baseOptions;\n};\n\nconst initialState: PostTypeMenuState = {\n postType: 'post',\n itemsLoading: false,\n showTypeMenu: false,\n showRecipientMenu: false,\n viewingRecipients: false,\n showCountPopover: false,\n searchValue: '',\n typeMenuItems: getTypeMenuItems('post'),\n recipientMenuItems: [] as RecipientMenuItem[],\n multiSelectItems: [] as RecipientMultiSelectData[]\n};\n\nconst FeedNewPostTypeMenu = ({\n recipients,\n onSetPostType,\n onSelectedRecipientsUpdate,\n onRecipientSearch,\n reset,\n onReset\n}: PostTypeMenuProps) => {\n const menuPopoverId = useMemo(() => createUID(), []);\n\n const multiSelectInputRef = useRef<HTMLInputElement>(null);\n const [toggleEl, setToggleEl] = useElement<HTMLButtonElement>();\n const [recipientCountEl, setRecipientCountEl] = useElement<HTMLElement>();\n const [typePopoverEl, setTypePopoverEl] = useElement<HTMLElement>(null);\n const [typeMenuPopoverTarget, setTypeMenuPopoverTarget] = useElement<HTMLButtonElement>(null);\n\n const reducer = (\n state: PostTypeMenuState,\n action: {\n type:\n | 'reset'\n | 'setPostType'\n | 'setShowTypeMenu'\n | 'setShowRecipientMenu'\n | 'setSearchValue'\n | 'setViewingRecipients'\n | 'setShowCountPopover'\n | 'setItemsLoading'\n | 'updateTypeMenuItems'\n | 'toggleTypeMenu'\n | 'removeRecipientViaMultiSelect'\n | 'selectRecipientViaMenu'\n | 'updateRecipientMenuItems'\n | 'resetUnappliedState';\n payload?: any;\n }\n ): PostTypeMenuState => {\n const type = action.type;\n const payload = action.payload;\n\n switch (type) {\n case 'reset': {\n return initialState;\n }\n case 'setPostType': {\n const postType = payload;\n const privateSelected = postType === 'private';\n\n return {\n ...state,\n postType,\n showTypeMenu: !privateSelected ? false : state.showTypeMenu,\n viewingRecipients: privateSelected ? true : state.viewingRecipients,\n multiSelectItems: initialState.multiSelectItems,\n searchValue: initialState.searchValue\n };\n }\n case 'setShowTypeMenu': {\n return {\n ...state,\n showTypeMenu: payload\n };\n }\n case 'setShowRecipientMenu': {\n return {\n ...state,\n showRecipientMenu: payload\n };\n }\n case 'setSearchValue': {\n return {\n ...state,\n searchValue: payload\n };\n }\n case 'setViewingRecipients': {\n return {\n ...state,\n viewingRecipients: payload\n };\n }\n case 'setShowCountPopover': {\n return {\n ...state,\n showCountPopover: payload\n };\n }\n case 'setItemsLoading': {\n return {\n ...state,\n itemsLoading: payload\n };\n }\n case 'updateTypeMenuItems': {\n return {\n ...state,\n typeMenuItems: getTypeMenuItems(state.postType)\n };\n }\n case 'toggleTypeMenu': {\n return {\n ...state,\n showTypeMenu: !state.showTypeMenu,\n showCountPopover: false\n };\n }\n case 'removeRecipientViaMultiSelect': {\n const selectedId = payload;\n\n const multiSelectItems = state.multiSelectItems.reduce<RecipientMultiSelectData[]>(\n (acc, recipient) => {\n if (recipient.id === selectedId) return acc;\n\n return acc.concat([recipient]);\n },\n []\n );\n\n const recipientMenuItems = state.recipientMenuItems.map(item => {\n if (item.id === selectedId) {\n return {\n ...item,\n selected: false\n };\n }\n\n return {\n ...item\n };\n });\n\n return {\n ...state,\n multiSelectItems,\n recipientMenuItems\n };\n }\n case 'selectRecipientViaMenu': {\n const selectedId = payload;\n\n if (!state.multiSelectItems.some(item => item.id === selectedId)) {\n const selectedFromMenu = state.recipientMenuItems.filter(\n item => item.id === selectedId\n )[0];\n\n const multiSelectItems = state.multiSelectItems.concat([\n {\n text: selectedFromMenu.primary,\n id: selectedFromMenu.id,\n value: selectedFromMenu.value\n }\n ]);\n\n return {\n ...state,\n multiSelectItems,\n searchValue: ''\n };\n }\n\n return {\n ...state,\n searchValue: ''\n };\n }\n case 'updateRecipientMenuItems': {\n const selectedIds = state.multiSelectItems.map(item => item.id);\n\n return {\n ...state,\n itemsLoading: false,\n recipientMenuItems: recipients.map(recipient =>\n createRecipientMenuItem(recipient, selectedIds)\n )\n };\n }\n case 'resetUnappliedState': {\n const postType =\n state.postType === 'private' && state.multiSelectItems.length === 0\n ? 'post'\n : state.postType;\n\n const searchValue = '';\n\n return {\n ...state,\n postType,\n searchValue\n };\n }\n default:\n return {\n ...state\n };\n }\n };\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const onBlur = useCallback((): void => {\n setTimeout(() => {\n if (!document.activeElement?.closest(`#${menuPopoverId}`)) {\n dispatch({ type: 'setShowTypeMenu', payload: false });\n }\n }, 200);\n }, [menuPopoverId]);\n\n const handleKeydownToggle = useCallback(\n (e: KeyboardEvent) => {\n switch (e.key) {\n case 'Escape': {\n if (state.showTypeMenu) {\n dispatch({ type: 'toggleTypeMenu' });\n }\n break;\n }\n default:\n break;\n }\n },\n [state.showTypeMenu]\n );\n\n useOuterEvent('mousedown', [typePopoverEl, typeMenuPopoverTarget], () => {\n dispatch({ type: 'setShowTypeMenu', payload: false });\n });\n\n useEffect(() => {\n if (reset) {\n dispatch({ type: 'reset' });\n onReset();\n }\n }, [reset]);\n\n useEffect(() => {\n dispatch({ type: 'updateRecipientMenuItems' });\n }, [recipients]);\n\n useEffect(() => {\n onSelectedRecipientsUpdate(\n state.multiSelectItems.map(item => ({\n id: item.id,\n primary: item.text,\n value: item.value\n }))\n );\n }, [state.multiSelectItems]);\n\n useEffect(() => {\n if (!state.showTypeMenu) {\n if (state.postType === 'private') {\n // Timeout to prevent flash of recipients options when closing menu.\n setTimeout(() => {\n dispatch({ type: 'setViewingRecipients', payload: true });\n }, 100);\n }\n\n setTimeout(() => {\n // Timeout to prevent flash of type menu when resetting postType on close\n dispatch({ type: 'resetUnappliedState' });\n }, 100);\n }\n }, [state.showTypeMenu]);\n\n useEffect(() => {\n if (multiSelectInputRef.current) {\n multiSelectInputRef.current?.focus();\n }\n }, [multiSelectInputRef.current]);\n\n useEffect(() => {\n if (state.postType === 'private') {\n if (!state.viewingRecipients) {\n toggleEl?.focus();\n } else {\n multiSelectInputRef.current?.focus();\n }\n }\n }, [state.viewingRecipients]);\n\n useEffect(() => {\n onSetPostType(state.postType);\n dispatch({ type: 'updateTypeMenuItems' });\n\n if (state.postType === 'private') {\n multiSelectInputRef.current?.focus();\n }\n }, [state.postType]);\n\n useEffect(() => {\n const interactionTimeout = setTimeout(() => {\n onRecipientSearch(state.searchValue);\n dispatch({ type: 'setItemsLoading', payload: true });\n dispatch({ type: 'setShowRecipientMenu', payload: !!state.searchValue.length });\n }, 300);\n\n return () => {\n clearTimeout(interactionTimeout);\n };\n }, [state.searchValue]);\n\n useEffect(() => {\n toggleEl?.addEventListener('keydown', handleKeydownToggle);\n\n return () => toggleEl?.removeEventListener('keydown', handleKeydownToggle);\n }, [toggleEl, state.showTypeMenu]);\n\n useEffect(() => {\n multiSelectInputRef.current?.addEventListener('keydown', handleKeydownToggle);\n\n return () => multiSelectInputRef.current?.removeEventListener('keydown', handleKeydownToggle);\n }, [multiSelectInputRef.current, state.showTypeMenu]);\n\n return (\n <div>\n <StyledTypeMenuToggle\n onClick={() => {\n dispatch({ type: 'toggleTypeMenu' });\n }}\n ref={setToggleEl}\n variant='link'\n aria-haspopup='menu'\n aria-expanded={state.showTypeMenu}\n >\n <span ref={setTypeMenuPopoverTarget}>{typeCopy[state.postType].primary}</span>\n <Icon name='arrow-micro-down' />\n </StyledTypeMenuToggle>\n\n {state.postType === 'private' && state.multiSelectItems.length > 0 && (\n <>\n <StyledRecipientCount\n ref={setRecipientCountEl}\n aria-describedby='recipients-popover'\n onMouseEnter={() => {\n if (!state.showTypeMenu) dispatch({ type: 'setShowCountPopover', payload: true });\n }}\n onFocus={() => dispatch({ type: 'setShowCountPopover', payload: true })}\n onMouseLeave={() => dispatch({ type: 'setShowCountPopover', payload: false })}\n onBlur={() => dispatch({ type: 'setShowCountPopover', payload: false })}\n >{`${state.multiSelectItems.length}`}</StyledRecipientCount>\n\n <Popover\n show={state.showCountPopover}\n target={recipientCountEl}\n id='recipients-popover'\n onMouseEnter={() => {\n if (!state.showTypeMenu) dispatch({ type: 'setShowCountPopover', payload: true });\n }}\n onMouseLeave={() => dispatch({ type: 'setShowCountPopover', payload: false })}\n arrow\n >\n <StyledPopoverContent>\n {state.multiSelectItems.map((recipient: RecipientMultiSelectData) => {\n return (\n <p key={recipient.id}>\n <Text variant='primary'>{recipient.text}</Text>\n </p>\n );\n })}\n </StyledPopoverContent>\n </Popover>\n </>\n )}\n\n <StyledPostTypePopover\n id={menuPopoverId}\n ref={setTypePopoverEl}\n target={typeMenuPopoverTarget}\n show={state.showTypeMenu}\n placement='bottom-start'\n >\n {(state.postType !== 'private' || !state.viewingRecipients) && (\n <Menu\n items={state.typeMenuItems}\n focusControlEl={toggleEl || undefined}\n mode='single-select'\n onItemClick={selectedId => {\n const postType = state.typeMenuItems.find(item => item.id === selectedId)!.value;\n dispatch({ type: 'setPostType', payload: postType });\n }}\n onItemExpand={() => {\n if (state.postType === 'private') {\n dispatch({ type: 'setViewingRecipients', payload: true });\n } else {\n dispatch({ type: 'setPostType', payload: 'private' });\n }\n }}\n onBlur={onBlur}\n />\n )}\n\n {state.postType === 'private' && state.viewingRecipients && (\n <>\n <StyledRecipientMenuHeader>\n <Button\n as={StyledRecipientBackButton}\n variant='text'\n aria-label='close submenu'\n onClick={() => {\n dispatch({ type: 'setViewingRecipients', payload: false });\n }}\n onBlur={onBlur}\n >\n <Icon name='caret-left' />\n {typeCopy.private.primary}\n </Button>\n\n <StyledSelectedInputContainer>\n <StyledMultiSelect\n ref={multiSelectInputRef}\n selected={state.multiSelectItems}\n onRemove={(selectedId: RecipientMultiSelectData['id']) => {\n dispatch({ type: 'removeRecipientViaMultiSelect', payload: selectedId });\n }}\n value={state.searchValue}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n dispatch({ type: 'setSearchValue', payload: e.target.value });\n }}\n />\n </StyledSelectedInputContainer>\n </StyledRecipientMenuHeader>\n\n {state.showRecipientMenu && (\n <StyledRecipientMenu\n loading={state.itemsLoading}\n focusControlEl={multiSelectInputRef.current}\n items={state.itemsLoading ? [] : state.recipientMenuItems}\n scrollAt={11}\n mode='action'\n emptyText='No items'\n onItemClick={(selectedId: RecipientMultiSelectData['id']) => {\n dispatch({ type: 'selectRecipientViaMenu', payload: selectedId });\n }}\n onBlur={onBlur}\n />\n )}\n </>\n )}\n </StyledPostTypePopover>\n </div>\n );\n};\n\nexport default FeedNewPostTypeMenu;\n"]}
1
+ {"version":3,"file":"FeedNewPostTypeMenu.js","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPostTypeMenu.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useRef, useMemo, useEffect, useCallback, useReducer, ChangeEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Text,\n StyledPrimary,\n StyledMenuItem,\n Icon,\n StyledIcon,\n useElement,\n useOuterEvent,\n Popover,\n Menu,\n Status,\n defaultThemeProp,\n createUID,\n useAfterInitialEffect\n} from '@pega/cosmos-react-core';\nimport { StyledMenuListHeader } from '@pega/cosmos-react-core/lib/components/Menu/Menu.styles';\nimport MultiSelectInput from '@pega/cosmos-react-core/lib/components/ComboBox/MultiSelectInput/MultiSelectInput';\n\nexport type PostType = 'post' | 'private';\n\nexport interface RecipientOption {\n /** Pretty printed recipient name */\n primary: string;\n /** Functional identifier of unique recipient */\n value: string;\n}\n\nexport interface RecipientMenuItem {\n id: string;\n selected?: boolean;\n primary: RecipientOption['primary'];\n value: RecipientOption['value'];\n}\n\nexport interface RecipientMultiSelectData {\n id: RecipientMenuItem['id'];\n text: RecipientMenuItem['primary'];\n value: RecipientMenuItem['value'];\n}\n\nexport interface PostTypeMenuProps {\n /** Array of private recipient options */\n recipients: RecipientOption[];\n /** Post type update handler */\n onSetPostType: (postType: PostType) => void;\n /** Private post recipient list update handler */\n onSelectedRecipientsUpdate: (recipients: RecipientMenuItem[]) => void;\n /** Handler for new search on private recipient options */\n onRecipientSearch: (newSearch: string) => void;\n reset: boolean;\n onReset: () => void;\n}\n\ninterface PostTypeMenuState {\n postType: PostType;\n itemsLoading: boolean;\n showTypeMenu: boolean;\n showRecipientMenu: boolean;\n viewingRecipients: boolean;\n showCountPopover: boolean;\n searchValue: string;\n typeMenuItems: {\n id: string;\n primary: string;\n selected: boolean;\n value: PostType;\n }[];\n recipientMenuItems: RecipientMenuItem[];\n multiSelectItems: RecipientMultiSelectData[];\n}\n\nconst StyledPopoverContent = styled.div(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n padding: ${spacing};\n\n p:not(:last-child) {\n margin-bottom: ${spacing};\n }\n `;\n});\nStyledPopoverContent.defaultProps = defaultThemeProp;\n\nconst StyledRecipientCount = styled(Status)(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n border-radius: 1.25rem;\n margin: 0 0 0 calc(0.5 * ${spacing});\n `;\n});\nStyledRecipientCount.defaultProps = defaultThemeProp;\n\nconst StyledMultiSelect = styled(MultiSelectInput)(() => {\n return css`\n width: 60vw;\n min-width: 16rem;\n max-width: 40rem;\n `;\n});\n\nconst StyledSelectedInputContainer = styled.div(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n margin: ${spacing} calc(2 * ${spacing}) calc(2 * ${spacing});\n `;\n});\nStyledSelectedInputContainer.defaultProps = defaultThemeProp;\n\nconst StyledRecipientBackButton = styled(StyledMenuListHeader)(({ theme }) => {\n const {\n base: {\n 'font-weight': { 'semi-bold': fontWeight },\n spacing\n }\n } = theme;\n\n return css`\n font-weight: ${fontWeight};\n padding: ${spacing} calc(2 * ${spacing});\n\n &:hover,\n &:focus {\n text-decoration: none;\n }\n\n && ${StyledIcon} {\n display: inline-block;\n margin-inline-end: ${spacing};\n }\n `;\n});\nStyledRecipientBackButton.defaultProps = defaultThemeProp;\n\nconst StyledRecipientMenuHeader = styled.div``;\n\nconst StyledTypeMenuToggle = styled(Button)(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n margin: ${spacing} 0;\n `;\n});\nStyledTypeMenuToggle.defaultProps = defaultThemeProp;\n\nconst StyledRecipientMenu = styled(Menu)(({ theme }) => {\n const {\n base: { spacing }\n } = theme;\n\n return css`\n ${StyledMenuItem} > button {\n padding: ${spacing} calc(2 * ${spacing});\n }\n `;\n});\nStyledRecipientMenu.defaultProps = defaultThemeProp;\n\nconst StyledPostTypePopover = styled(Popover)(({ theme }) => {\n const {\n base: {\n 'font-weight': { normal: fontWeight }\n }\n } = theme;\n return css`\n ${StyledPrimary} {\n font-weight: ${fontWeight};\n }\n `;\n});\nStyledPostTypePopover.defaultProps = defaultThemeProp;\n\nconst typeCopy = {\n post: {\n primary: 'Public post'\n },\n private: {\n primary: 'Private post'\n }\n};\n\nconst createRecipientMenuItem = (\n recipient: RecipientOption,\n selectedIds?: RecipientMenuItem['id'][]\n) => {\n const checkIds = selectedIds || [];\n const id = `option_${recipient.value}`;\n\n return {\n ...recipient,\n id,\n selected: checkIds.includes(id)\n };\n};\n\nconst getTypeMenuItems = (type: PostType): PostTypeMenuState['typeMenuItems'] => {\n return [\n {\n id: '1',\n primary: typeCopy.post.primary,\n selected: type === 'post',\n value: 'post'\n },\n {\n id: '2',\n primary: typeCopy.private.primary,\n selected: type === 'private',\n value: 'private'\n }\n ];\n};\n\nconst initialState: PostTypeMenuState = {\n postType: 'post',\n itemsLoading: false,\n showTypeMenu: false,\n showRecipientMenu: false,\n viewingRecipients: false,\n showCountPopover: false,\n searchValue: '',\n typeMenuItems: getTypeMenuItems('post'),\n recipientMenuItems: [] as RecipientMenuItem[],\n multiSelectItems: [] as RecipientMultiSelectData[]\n};\n\nconst FeedNewPostTypeMenu = ({\n recipients,\n onSetPostType,\n onSelectedRecipientsUpdate,\n onRecipientSearch,\n reset,\n onReset\n}: PostTypeMenuProps) => {\n const menuPopoverId = useMemo(() => createUID(), []);\n\n const multiSelectInputRef = useRef<HTMLInputElement>(null);\n const [toggleEl, setToggleEl] = useElement<HTMLButtonElement>();\n const [recipientCountEl, setRecipientCountEl] = useElement<HTMLElement>();\n const [typePopoverEl, setTypePopoverEl] = useElement<HTMLElement>(null);\n const [typeMenuPopoverTarget, setTypeMenuPopoverTarget] = useElement<HTMLButtonElement>(null);\n\n const reducer = (\n state: PostTypeMenuState,\n action: {\n type:\n | 'reset'\n | 'setPostType'\n | 'setShowTypeMenu'\n | 'setShowRecipientMenu'\n | 'setSearchValue'\n | 'setViewingRecipients'\n | 'setShowCountPopover'\n | 'setItemsLoading'\n | 'updateTypeMenuItems'\n | 'toggleTypeMenu'\n | 'removeRecipientViaMultiSelect'\n | 'selectRecipientViaMenu'\n | 'updateRecipientMenuItems'\n | 'resetUnappliedState';\n payload?: any;\n }\n ): PostTypeMenuState => {\n const type = action.type;\n const payload = action.payload;\n\n switch (type) {\n case 'reset': {\n return initialState;\n }\n case 'setPostType': {\n const postType = payload;\n const privateSelected = postType === 'private';\n\n return {\n ...state,\n postType,\n showTypeMenu: !privateSelected ? false : state.showTypeMenu,\n viewingRecipients: privateSelected ? true : state.viewingRecipients,\n multiSelectItems: initialState.multiSelectItems,\n searchValue: initialState.searchValue\n };\n }\n case 'setShowTypeMenu': {\n return {\n ...state,\n showTypeMenu: payload\n };\n }\n case 'setShowRecipientMenu': {\n return {\n ...state,\n showRecipientMenu: payload\n };\n }\n case 'setSearchValue': {\n return {\n ...state,\n searchValue: payload\n };\n }\n case 'setViewingRecipients': {\n return {\n ...state,\n viewingRecipients: payload\n };\n }\n case 'setShowCountPopover': {\n return {\n ...state,\n showCountPopover: payload\n };\n }\n case 'setItemsLoading': {\n return {\n ...state,\n itemsLoading: payload\n };\n }\n case 'updateTypeMenuItems': {\n return {\n ...state,\n typeMenuItems: getTypeMenuItems(state.postType)\n };\n }\n case 'toggleTypeMenu': {\n return {\n ...state,\n showTypeMenu: !state.showTypeMenu,\n showCountPopover: false\n };\n }\n case 'removeRecipientViaMultiSelect': {\n const selectedId = payload;\n\n const multiSelectItems = state.multiSelectItems.reduce<RecipientMultiSelectData[]>(\n (acc, recipient) => {\n if (recipient.id === selectedId) return acc;\n\n return acc.concat([recipient]);\n },\n []\n );\n\n const recipientMenuItems = state.recipientMenuItems.map(item => {\n if (item.id === selectedId) {\n return {\n ...item,\n selected: false\n };\n }\n\n return {\n ...item\n };\n });\n\n return {\n ...state,\n multiSelectItems,\n recipientMenuItems\n };\n }\n case 'selectRecipientViaMenu': {\n const selectedId = payload;\n\n if (!state.multiSelectItems.some(item => item.id === selectedId)) {\n const selectedFromMenu = state.recipientMenuItems.filter(\n item => item.id === selectedId\n )[0];\n\n const multiSelectItems = state.multiSelectItems.concat([\n {\n text: selectedFromMenu.primary,\n id: selectedFromMenu.id,\n value: selectedFromMenu.value\n }\n ]);\n\n return {\n ...state,\n multiSelectItems,\n searchValue: ''\n };\n }\n\n return {\n ...state,\n searchValue: ''\n };\n }\n case 'updateRecipientMenuItems': {\n const selectedIds = state.multiSelectItems.map(item => item.id);\n\n return {\n ...state,\n itemsLoading: false,\n recipientMenuItems: recipients.map(recipient =>\n createRecipientMenuItem(recipient, selectedIds)\n )\n };\n }\n case 'resetUnappliedState': {\n const postType =\n state.postType === 'private' && state.multiSelectItems.length === 0\n ? 'post'\n : state.postType;\n\n const searchValue = '';\n\n return {\n ...state,\n postType,\n searchValue\n };\n }\n default:\n return {\n ...state\n };\n }\n };\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const onBlur = useCallback((): void => {\n setTimeout(() => {\n if (!document.activeElement?.closest(`#${menuPopoverId}`)) {\n dispatch({ type: 'setShowTypeMenu', payload: false });\n }\n }, 200);\n }, [menuPopoverId]);\n\n const handleKeydownToggle = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Escape' && state.showTypeMenu) dispatch({ type: 'toggleTypeMenu' });\n },\n [state.showTypeMenu]\n );\n\n useOuterEvent('mousedown', [typePopoverEl, typeMenuPopoverTarget], () => {\n dispatch({ type: 'setShowTypeMenu', payload: false });\n });\n\n useEffect(() => {\n if (reset) {\n dispatch({ type: 'reset' });\n onReset();\n }\n }, [reset]);\n\n useEffect(() => {\n dispatch({ type: 'updateRecipientMenuItems' });\n }, [recipients]);\n\n useEffect(() => {\n onSelectedRecipientsUpdate(\n state.multiSelectItems.map(item => ({\n id: item.id,\n primary: item.text,\n value: item.value\n }))\n );\n }, [state.multiSelectItems]);\n\n useEffect(() => {\n if (!state.showTypeMenu) {\n if (state.postType === 'private') {\n // Timeout to prevent flash of recipients options when closing menu.\n setTimeout(() => {\n dispatch({ type: 'setViewingRecipients', payload: true });\n }, 100);\n }\n\n setTimeout(() => {\n // Timeout to prevent flash of type menu when resetting postType on close\n dispatch({ type: 'resetUnappliedState' });\n }, 100);\n }\n }, [state.showTypeMenu]);\n\n useEffect(() => {\n if (multiSelectInputRef.current) {\n multiSelectInputRef.current?.focus();\n }\n }, [multiSelectInputRef.current]);\n\n useEffect(() => {\n if (state.postType === 'private') {\n if (!state.viewingRecipients) {\n toggleEl?.focus();\n } else {\n multiSelectInputRef.current?.focus();\n }\n }\n }, [state.viewingRecipients]);\n\n useAfterInitialEffect(() => {\n onSetPostType(state.postType);\n dispatch({ type: 'updateTypeMenuItems' });\n\n if (state.postType === 'private') {\n multiSelectInputRef.current?.focus();\n }\n }, [state.postType]);\n\n useEffect(() => {\n const interactionTimeout = setTimeout(() => {\n onRecipientSearch(state.searchValue);\n dispatch({ type: 'setItemsLoading', payload: true });\n dispatch({ type: 'setShowRecipientMenu', payload: !!state.searchValue.length });\n }, 300);\n\n return () => {\n clearTimeout(interactionTimeout);\n };\n }, [state.searchValue]);\n\n useEffect(() => {\n toggleEl?.addEventListener('keydown', handleKeydownToggle);\n\n return () => toggleEl?.removeEventListener('keydown', handleKeydownToggle);\n }, [toggleEl, state.showTypeMenu]);\n\n useEffect(() => {\n multiSelectInputRef.current?.addEventListener('keydown', handleKeydownToggle);\n\n return () => multiSelectInputRef.current?.removeEventListener('keydown', handleKeydownToggle);\n }, [multiSelectInputRef.current, state.showTypeMenu]);\n\n return (\n <div>\n <StyledTypeMenuToggle\n onClick={() => {\n dispatch({ type: 'toggleTypeMenu' });\n }}\n ref={setToggleEl}\n variant='link'\n aria-haspopup='menu'\n aria-expanded={state.showTypeMenu}\n >\n <span ref={setTypeMenuPopoverTarget}>{typeCopy[state.postType].primary}</span>\n <Icon name='arrow-micro-down' />\n </StyledTypeMenuToggle>\n\n {state.postType === 'private' && state.multiSelectItems.length > 0 && (\n <>\n <StyledRecipientCount\n ref={setRecipientCountEl}\n aria-describedby='recipients-popover'\n onMouseEnter={() => {\n if (!state.showTypeMenu) dispatch({ type: 'setShowCountPopover', payload: true });\n }}\n onFocus={() => dispatch({ type: 'setShowCountPopover', payload: true })}\n onMouseLeave={() => dispatch({ type: 'setShowCountPopover', payload: false })}\n onBlur={() => dispatch({ type: 'setShowCountPopover', payload: false })}\n >{`${state.multiSelectItems.length}`}</StyledRecipientCount>\n\n <Popover\n show={state.showCountPopover}\n target={recipientCountEl}\n id='recipients-popover'\n onMouseEnter={() => {\n if (!state.showTypeMenu) dispatch({ type: 'setShowCountPopover', payload: true });\n }}\n onMouseLeave={() => dispatch({ type: 'setShowCountPopover', payload: false })}\n arrow\n >\n <StyledPopoverContent>\n {state.multiSelectItems.map((recipient: RecipientMultiSelectData) => {\n return (\n <p key={recipient.id}>\n <Text variant='primary'>{recipient.text}</Text>\n </p>\n );\n })}\n </StyledPopoverContent>\n </Popover>\n </>\n )}\n\n <StyledPostTypePopover\n id={menuPopoverId}\n ref={setTypePopoverEl}\n target={typeMenuPopoverTarget}\n show={state.showTypeMenu}\n placement='bottom-start'\n >\n {(state.postType !== 'private' || !state.viewingRecipients) && (\n <Menu\n items={state.typeMenuItems}\n focusControlEl={toggleEl || undefined}\n mode='single-select'\n onItemClick={selectedId => {\n const postType = state.typeMenuItems.find(item => item.id === selectedId)!.value;\n dispatch({ type: 'setPostType', payload: postType });\n }}\n onItemExpand={() => {\n if (state.postType === 'private') {\n dispatch({ type: 'setViewingRecipients', payload: true });\n } else {\n dispatch({ type: 'setPostType', payload: 'private' });\n }\n }}\n onBlur={onBlur}\n />\n )}\n\n {state.postType === 'private' && state.viewingRecipients && (\n <>\n <StyledRecipientMenuHeader>\n <Button\n as={StyledRecipientBackButton}\n variant='text'\n aria-label='close submenu'\n onClick={() => {\n dispatch({ type: 'setViewingRecipients', payload: false });\n }}\n onBlur={onBlur}\n >\n <Icon name='caret-left' />\n {typeCopy.private.primary}\n </Button>\n\n <StyledSelectedInputContainer>\n <StyledMultiSelect\n ref={multiSelectInputRef}\n selected={state.multiSelectItems}\n onRemove={(selectedId: RecipientMultiSelectData['id']) => {\n dispatch({ type: 'removeRecipientViaMultiSelect', payload: selectedId });\n }}\n value={state.searchValue}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n dispatch({ type: 'setSearchValue', payload: e.target.value });\n }}\n />\n </StyledSelectedInputContainer>\n </StyledRecipientMenuHeader>\n\n {state.showRecipientMenu && (\n <StyledRecipientMenu\n loading={state.itemsLoading}\n focusControlEl={multiSelectInputRef.current}\n items={state.itemsLoading ? [] : state.recipientMenuItems}\n scrollAt={11}\n mode='action'\n emptyText='No items'\n onItemClick={(selectedId: RecipientMultiSelectData['id']) => {\n dispatch({ type: 'selectRecipientViaMenu', payload: selectedId });\n }}\n onBlur={onBlur}\n />\n )}\n </>\n )}\n </StyledPostTypePopover>\n </div>\n );\n};\n\nexport default FeedNewPostTypeMenu;\n"]}
@@ -1,5 +1,5 @@
1
1
  import { FC, ReactElement, MouseEvent } from 'react';
2
- import { ForwardProps, MenuItemProps } from '@pega/cosmos-react-core';
2
+ import { AvatarProps, ForwardProps, MenuItemProps, SummaryListItem } from '@pega/cosmos-react-core';
3
3
  import { AttachedFiles } from './FeedAttachments';
4
4
  import { FeedContentProps } from './FeedContent';
5
5
  import { FeedReplyInputProps } from './FeedReplyInput';
@@ -15,16 +15,19 @@ export interface FeedPostProps {
15
15
  content: ReactElement | string;
16
16
  postType?: 'public' | 'private';
17
17
  recipients?: MenuItemProps[];
18
+ recipientsCount?: number;
18
19
  attachments?: AttachedFiles[];
19
20
  liked?: boolean;
20
21
  icon?: string;
21
22
  postContext?: ReactElement | string;
23
+ userStatus?: AvatarProps['status'];
22
24
  };
23
25
  maxContentHeight?: FeedContentProps['maxContentHeight'];
24
- /** Button labels for accessibility purposes */
26
+ /** Button labels for accessibility purposes. */
25
27
  interactionInfo: {
26
28
  likeLabel: string;
27
- likeCount: number;
29
+ likes?: SummaryListItem[];
30
+ likeCount?: number;
28
31
  commentLabel: string;
29
32
  /**
30
33
  * @default true
@@ -33,27 +36,46 @@ export interface FeedPostProps {
33
36
  };
34
37
  /** Callback that runs when the mouse pointer hovers over the Activity. */
35
38
  onMouseEnter?: (event: {
36
- feedId: string;
39
+ postId: string;
37
40
  }) => void;
38
41
  /** Callback that runs when the mouse pointer leaves the Activity. */
39
42
  onMouseLeave?: (event: {
40
- feedId: string;
43
+ postId: string;
41
44
  }) => void;
42
45
  /** Callback that runs when the comment button has been clicked */
43
46
  onCommentClick?: (event: {
44
- feedId: string;
47
+ postId: string;
45
48
  }) => void;
46
49
  /** Callback that runs when the like button has been clicked */
47
50
  onLikeClick: (event: {
48
- feedId: string;
51
+ postId: string;
52
+ user: SummaryListItem;
49
53
  }) => void;
54
+ /** Callback that runs when the like count on a post is hovered, focused, or clicked. */
55
+ onLikeCountInteraction?: () => void;
56
+ /** Callback that runs when the bottom of the extended like list Modal is reached, allowing for more likes to be loaded. */
57
+ onLoadMoreLikes?: () => void;
58
+ /** Callback that runs when the private recipient icon on a post is hovered, focused, or clicked. */
59
+ onRecipientInteraction?: () => void;
60
+ /** Callback that runs when the bottom of the extended private recipient list Modal is reached, allowing for more recipients to be loaded. */
61
+ onLoadMoreRecipients?: () => void;
50
62
  /** Callback that runs when the user name or visual button has been clicked */
51
63
  onUserClick?: (event: {
52
- feedId: string;
64
+ postId: string;
53
65
  username: string;
54
66
  }, clickEvent?: MouseEvent) => void;
55
67
  /** MenuItems that will populate the three dot menu button */
56
68
  menuItems?: MenuItemProps[];
69
+ /** Callback that updates the post after being edited. If undefined, the post will not be editable. */
70
+ onEditSubmit?: (event: {
71
+ postId: string;
72
+ value: string;
73
+ }) => void;
74
+ /**
75
+ * Flag that indicates if a post has been previously edited.
76
+ * @default false
77
+ */
78
+ edited?: boolean;
57
79
  /** Props that will be passed into the reply input, see FeedReplyInput for more information */
58
80
  replyInput: Pick<FeedReplyInputProps, 'onSubmit' | 'placeholder' | 'onFilesAdded'> & {
59
81
  commentLabel: FeedReplyInputProps['commentLabel'];
@@ -67,19 +89,19 @@ export interface FeedPostProps {
67
89
  replyCount?: number;
68
90
  /** Callback that runs when the user clicks Show more button. */
69
91
  onShowMoreReplies?: (event: {
70
- feedId: string;
92
+ postId: string;
71
93
  }) => void;
72
94
  /** Callback that runs when the user clicks Show less button. */
73
95
  onShowLessReplies?: (event: {
74
- feedId: string;
96
+ postId: string;
75
97
  }) => void;
76
98
  /** A loading indicator for the replies. */
77
99
  repliesLoading?: boolean;
78
100
  }
79
101
  export declare const StyledFeedPost: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
102
+ export declare const StyledPostEdit: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
80
103
  export declare const StyledReplies: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
81
- export declare const StyledReplyCount: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
82
- export declare const StyledActions: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
104
+ export declare const StyledPostFooter: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
83
105
  declare const FeedPost: FC<ForwardProps & FeedPostProps>;
84
106
  export default FeedPost;
85
107
  //# sourceMappingURL=FeedPost.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeedPost.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedPost.tsx"],"names":[],"mappings":"AAAA,OAAc,EACZ,EAAE,EACF,YAAY,EAIZ,UAAU,EAEX,MAAM,OAAO,CAAC;AAGf,OAAO,EAaL,YAAY,EAQZ,aAAa,EACd,MAAM,yBAAyB,CAAC;AAKjC,OAAwB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEnE,OAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAuB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAGvE,MAAM,WAAW,aAAa;IAC5B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,yEAAyE;IACzE,IAAI,EAAE;QACJ,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,QAAQ,EAAE,MAAM,CAAC;QACjB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,YAAY,GAAG,MAAM,CAAC;QAC/B,QAAQ,CAAC,EAAE,QAAQ,GAAG,SAAS,CAAC;QAChC,UAAU,CAAC,EAAE,aAAa,EAAE,CAAC;QAC7B,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;QAC9B,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,YAAY,GAAG,MAAM,CAAC;KACrC,CAAC;IACF,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;IACxD,+CAA+C;IAC/C,eAAe,EAAE;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB;;WAEG;QACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC/B,CAAC;IACF,0EAA0E;IAC1E,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,qEAAqE;IACrE,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACnD,kEAAkE;IAClE,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,WAAW,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjD,8EAA8E;IAC9E,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,UAAU,CAAC,EAAE,UAAU,KAAK,IAAI,CAAC;IAC7F,6DAA6D;IAC7D,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC;IAC5B,8FAA8F;IAC9F,UAAU,EAAE,IAAI,CAAC,mBAAmB,EAAE,UAAU,GAAG,aAAa,GAAG,cAAc,CAAC,GAAG;QACnF,YAAY,EAAE,mBAAmB,CAAC,cAAc,CAAC,CAAC;QAClD,WAAW,EAAE,mBAAmB,CAAC,aAAa,CAAC,CAAC;KACjD,CAAC;IACF,iDAAiD;IACjD,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,2DAA2D;IAC3D,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,oCAAoC;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,gEAAgE;IAChE,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxD,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAYD,eAAO,MAAM,cAAc,yGAM1B,CAAC;AAIF,eAAO,MAAM,aAAa,yGAKzB,CAAC;AAIF,eAAO,MAAM,gBAAgB,yGAI5B,CAAC;AAIF,eAAO,MAAM,aAAa,yGAMxB,CAAC;AAQH,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,YAAY,GAAG,aAAa,CAyP9C,CAAC;AAIF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"FeedPost.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedPost.tsx"],"names":[],"mappings":"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"}