@pega/cosmos-react-social 2.0.0-dev.12.1 → 2.0.0-dev.14.2

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 (45) hide show
  1. package/lib/components/Chat/ChatHeader.js +1 -1
  2. package/lib/components/Chat/ChatHeader.js.map +1 -1
  3. package/lib/components/Chat/ChatTranscript.d.ts.map +1 -1
  4. package/lib/components/Chat/ChatTranscript.js +2 -2
  5. package/lib/components/Chat/ChatTranscript.js.map +1 -1
  6. package/lib/components/Chat/Message.d.ts.map +1 -1
  7. package/lib/components/Chat/Message.js +2 -2
  8. package/lib/components/Chat/Message.js.map +1 -1
  9. package/lib/components/Chat/Message.styles.js +2 -2
  10. package/lib/components/Chat/Message.styles.js.map +1 -1
  11. package/lib/components/Email/Email.d.ts.map +1 -1
  12. package/lib/components/Email/Email.js +17 -20
  13. package/lib/components/Email/Email.js.map +1 -1
  14. package/lib/components/Email/Email.styles.d.ts +3 -1
  15. package/lib/components/Email/Email.styles.d.ts.map +1 -1
  16. package/lib/components/Email/Email.styles.js +29 -9
  17. package/lib/components/Email/Email.styles.js.map +1 -1
  18. package/lib/components/Email/Email.types.d.ts +1 -5
  19. package/lib/components/Email/Email.types.d.ts.map +1 -1
  20. package/lib/components/Email/Email.types.js.map +1 -1
  21. package/lib/components/Email/EmailComposer.d.ts +0 -1
  22. package/lib/components/Email/EmailComposer.d.ts.map +1 -1
  23. package/lib/components/Email/EmailComposer.js +6 -28
  24. package/lib/components/Email/EmailComposer.js.map +1 -1
  25. package/lib/components/Email/EmailSummaryList.d.ts.map +1 -1
  26. package/lib/components/Email/EmailSummaryList.js +3 -3
  27. package/lib/components/Email/EmailSummaryList.js.map +1 -1
  28. package/lib/components/Feed/FeedNewPost.d.ts.map +1 -1
  29. package/lib/components/Feed/FeedNewPost.js +6 -6
  30. package/lib/components/Feed/FeedNewPost.js.map +1 -1
  31. package/lib/components/Feed/FeedNewPostTypeMenu.d.ts.map +1 -1
  32. package/lib/components/Feed/FeedNewPostTypeMenu.js +3 -3
  33. package/lib/components/Feed/FeedNewPostTypeMenu.js.map +1 -1
  34. package/lib/components/Feed/FeedPost.d.ts.map +1 -1
  35. package/lib/components/Feed/FeedPost.js +10 -6
  36. package/lib/components/Feed/FeedPost.js.map +1 -1
  37. package/lib/components/Feed/FeedReply.d.ts.map +1 -1
  38. package/lib/components/Feed/FeedReply.js +2 -2
  39. package/lib/components/Feed/FeedReply.js.map +1 -1
  40. package/lib/components/Feed/FeedRichText.js +2 -2
  41. package/lib/components/Feed/FeedRichText.js.map +1 -1
  42. package/lib/components/MentionButton/MentionButton.d.ts.map +1 -1
  43. package/lib/components/MentionButton/MentionButton.js +1 -1
  44. package/lib/components/MentionButton/MentionButton.js.map +1 -1
  45. package/package.json +12 -12
@@ -1,5 +1,5 @@
1
1
  import { MouseEventHandler, ReactNode, Ref } from 'react';
2
- import { BaseProps, AvatarProps, SentimentProps, FileDisplayProps, EmojiPickerProps, FileUploadItemProps, ForwardProps, OmitStrict, MenuProps, MenuItemProps } from '@pega/cosmos-react-core';
2
+ import { BaseProps, AvatarProps, SentimentProps, FileDisplayProps, FileUploadItemProps, ForwardProps, OmitStrict, MenuProps, MenuItemProps } from '@pega/cosmos-react-core';
3
3
  import { SelectProps } from '@pega/cosmos-react-core/lib/components/Select/Select';
4
4
  import { RichTextEditorProps } from '@pega/cosmos-react-rte';
5
5
  export interface Suggestion {
@@ -122,10 +122,6 @@ export interface EmailComposerProps extends Pick<EmailProps, 'attachments' | 'su
122
122
  * If attachments added are >= maxAttachments, add attachments icon will be disabled.
123
123
  */
124
124
  maxAttachments?: number;
125
- /** Show/hide emoji */
126
- showEmoji?: boolean;
127
- /** Callback when emoji is picked */
128
- onEmojiSelect?: EmojiPickerProps['onSelect'];
129
125
  /** Region to show more actions in footer */
130
126
  footerMoreActions?: ReactNode;
131
127
  /** Templates for drafting email */
@@ -1 +1 @@
1
- {"version":3,"file":"Email.types.d.ts","sourceRoot":"","sources":["../../../src/components/Email/Email.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Email.types.d.ts","sourceRoot":"","sources":["../../../src/components/Email/Email.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Email.types.js","sourceRoot":"","sources":["../../../src/components/Email/Email.types.ts"],"names":[],"mappings":"","sourcesContent":["import { MouseEventHandler, ReactNode, Ref } from 'react';\n\nimport {\n BaseProps,\n AvatarProps,\n SentimentProps,\n FileDisplayProps,\n EmojiPickerProps,\n FileUploadItemProps,\n ForwardProps,\n OmitStrict,\n MenuProps,\n MenuItemProps\n} from '@pega/cosmos-react-core';\nimport { SelectProps } from '@pega/cosmos-react-core/lib/components/Select/Select';\nimport { RichTextEditorProps } from '@pega/cosmos-react-rte';\n\nexport interface Suggestion {\n /** Suggestion title */\n title: string;\n /** Suggestion id */\n id: string;\n}\n\nexport interface EmailUser {\n /** Short name of the User */\n shortName: string;\n /** Full name of the User */\n fullName: string;\n /** Email of the User */\n emailAddress: string;\n /** Avatar props of the User */\n avatarProps?: Partial<AvatarProps>;\n}\n\nexport interface EntityHighlightMapping {\n entityValue: string;\n entityType: string;\n entityName: string;\n entityVariant: number;\n}\n\nexport interface EmailProps extends BaseProps {\n /** Ref to the element */\n ref?: Ref<HTMLDivElement>;\n /** Unique ID for this email record */\n id: string;\n /** Timestamp of this email as ISO8601 string, timestamp or native Date object. */\n timeStamp: Date | number | string;\n /** From email */\n from: EmailUser;\n /** To email */\n to: EmailUser[];\n /** Carbon copy of email users list */\n cc?: EmailUser[];\n /** Blind carbon copy of email users list */\n bcc?: EmailUser[];\n /** Sentiment */\n sentiment?: SentimentProps;\n /** Subject of the email */\n subject?: string;\n /** Body */\n body?: ReactNode | string;\n /** Entity highlight mapping */\n entityHighlightMapping?: EntityHighlightMapping[];\n /** onReply callback */\n onReply: (id: EmailProps['id']) => void;\n /** onForward Callback */\n onForward: (id: EmailProps['id']) => void;\n /** onReply callback */\n onReplyAll?: (id: EmailProps['id']) => void;\n /** List of suggestions */\n suggestions?: Suggestion[];\n /** Callback that triggers on click of tag */\n onSuggestionClick?: (id: EmailProps['id'], suggestionId: Suggestion['id']) => void;\n /** Actions region */\n actions?: ReactNode;\n /** Flag that indicates if email is unread\n * @default false\n */\n unRead?: boolean;\n /** Attachments list */\n attachments?: FileDisplayProps[];\n}\n\nexport interface EmailConversationProps extends BaseProps {\n /** ref to the element */\n ref?: Ref<HTMLLIElement>;\n /** Unique ID for this email conversation record */\n id: string;\n /** List of mails */\n emails: EmailProps[];\n /** Sender(s) of this email conversation */\n from: EmailUser;\n /** Recipient(s) of this email conversation */\n to: EmailUser[];\n /** Count of unread emails */\n unReadEmailCount?: number;\n /** Timestamp of this conversation as ISO8601 string, timestamp or native Date object. */\n timeStamp: Date | string | number;\n /** Flag that indicates if email conversation is expanded */\n isCollapsed?: boolean;\n /** Flag to set if conversation is spun off from forwarded email */\n isForwarded?: boolean;\n /** Callback when email conversation is collapsed */\n onCollapse?: () => void;\n /** Callback when email conversation is expanded */\n onExpand?: () => void;\n}\n\nexport interface EmailComposerProps\n extends Pick<EmailProps, 'attachments' | 'suggestions' | 'onSuggestionClick'>,\n BaseProps {\n /** Header of the email */\n header?: string;\n /** Object containing full list of email participants */\n participants: EmailUser[];\n /** Object containing the props to render the from drop down */\n from: SelectProps;\n /** Array to hold the initial participants that should be default initialized in To address. */\n to?: EmailUser['emailAddress'][];\n /** Array to hold the initial participants that should be default initialized in Cc address. */\n cc?: EmailUser['emailAddress'][];\n /** Array to hold the initial participants that should be default initialized in Bcc address. */\n bcc?: EmailUser['emailAddress'][];\n /** Object containing the props to render the subject input */\n subject: string;\n /** Region to hold primary email composer fields */\n primaryMoreFields?: ReactNode;\n /** Region to hold secondary email composer fields */\n secondaryMoreFields?: ReactNode;\n /** Object containing the props to render the email body rte */\n body: RichTextEditorProps & ForwardProps;\n /** Callback when email needs to be sent */\n onSend: () => void;\n /** Callback when attachment icon is clicked */\n onAddAttachment?: () => void;\n /** List of attachments */\n attachments?: FileUploadItemProps[];\n /** Max number of attachments to be allowed in Email composer.\n * If zero is passed, add attachments icon will be hidden. same rule applies if prop is not passed.\n * If attachments added are >= maxAttachments, add attachments icon will be disabled.\n */\n maxAttachments?: number;\n /** Show/hide emoji */\n showEmoji?: boolean;\n /** Callback when emoji is picked */\n onEmojiSelect?: EmojiPickerProps['onSelect'];\n /** Region to show more actions in footer */\n footerMoreActions?: ReactNode;\n /** Templates for drafting email */\n templates?: Record<string, string>;\n /** Callback when replying to only from address */\n onReply?: () => void;\n /** Callback when replying to all participants */\n onReplyAll?: () => void;\n /** Callback when cancel composing */\n onCancel: () => void;\n /** Whether email composer opened after clicking reply or reply all */\n isReplyAll: boolean;\n /** Ref to the element */\n ref?: Ref<HTMLDivElement>;\n}\n\nexport interface EmailComposerParticipantsProps {\n key: string;\n value: EmailUser;\n}\n\nexport interface EmailShellProps extends BaseProps {\n /** ref to the element */\n ref?: Ref<HTMLDivElement>;\n /** Region for header */\n headerProps?: {\n /** Region for actions */\n actions?: ReactNode;\n /** Subject of the email conversations list */\n subject?: string;\n };\n /** Email conversations */\n conversations?: EmailConversationProps[];\n /** Shows only one conversation at a time */\n autoCollapse?: boolean;\n}\n\nexport interface EmailSummaryItemProps extends BaseProps {\n /** Id of each summary item */\n id: string;\n /** List of from participant names of the conversations */\n activeParticipants: EmailUser[];\n /** Email body of last email in the email */\n message: string;\n /** Timestamp of the latest email */\n timeStamp: Date | string | number;\n /** Top topic of an email */\n topic: string;\n /** Sentiment */\n sentiment?: SentimentProps;\n /** Urgency of an email */\n urgency?: number;\n /** Total number of unread emails in the email */\n unreadEmailCount?: number;\n /** Is the email currently active */\n active?: boolean;\n /** On click of email item */\n onClick: MouseEventHandler;\n /** ref to the element */\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport interface Filter {\n /** Sets DOM id for the control and associates label element via 'for' attribute. */\n id: string;\n /** Pass a string or a fragment with an Icon and string for the filter label. */\n label: ReactNode;\n /**\n * Disables the filter.\n * @default false\n */\n disabled?: boolean;\n /**\n * Sets on prop via onFilterChange.\n * @default false\n */\n on?: boolean;\n}\n\nexport interface EmailSummaryListProps extends BaseProps {\n /** List of email categories */\n categories: MenuProps['items'];\n /** Handles category change */\n onCategoryClick?: MenuItemProps['onClick'];\n /** List of EmailItems items */\n items: OmitStrict<EmailSummaryItemProps, 'onClick' | 'active'>[];\n /** Total number of unread email count */\n unreadEmailCount?: number;\n /** A set of filters to apply to the email inbox. */\n filters?: Filter[];\n /** A callback that runs when a filter is clicked. */\n onFilterChange?: (filterId: Filter['id'], on: boolean) => void;\n /** onClick of list item */\n onItemClick: (id: EmailSummaryItemProps['id']) => void;\n /** ref to the element */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
1
+ {"version":3,"file":"Email.types.js","sourceRoot":"","sources":["../../../src/components/Email/Email.types.ts"],"names":[],"mappings":"","sourcesContent":["import { MouseEventHandler, ReactNode, Ref } from 'react';\n\nimport {\n BaseProps,\n AvatarProps,\n SentimentProps,\n FileDisplayProps,\n FileUploadItemProps,\n ForwardProps,\n OmitStrict,\n MenuProps,\n MenuItemProps\n} from '@pega/cosmos-react-core';\nimport { SelectProps } from '@pega/cosmos-react-core/lib/components/Select/Select';\nimport { RichTextEditorProps } from '@pega/cosmos-react-rte';\n\nexport interface Suggestion {\n /** Suggestion title */\n title: string;\n /** Suggestion id */\n id: string;\n}\n\nexport interface EmailUser {\n /** Short name of the User */\n shortName: string;\n /** Full name of the User */\n fullName: string;\n /** Email of the User */\n emailAddress: string;\n /** Avatar props of the User */\n avatarProps?: Partial<AvatarProps>;\n}\n\nexport interface EntityHighlightMapping {\n entityValue: string;\n entityType: string;\n entityName: string;\n entityVariant: number;\n}\n\nexport interface EmailProps extends BaseProps {\n /** Ref to the element */\n ref?: Ref<HTMLDivElement>;\n /** Unique ID for this email record */\n id: string;\n /** Timestamp of this email as ISO8601 string, timestamp or native Date object. */\n timeStamp: Date | number | string;\n /** From email */\n from: EmailUser;\n /** To email */\n to: EmailUser[];\n /** Carbon copy of email users list */\n cc?: EmailUser[];\n /** Blind carbon copy of email users list */\n bcc?: EmailUser[];\n /** Sentiment */\n sentiment?: SentimentProps;\n /** Subject of the email */\n subject?: string;\n /** Body */\n body?: ReactNode | string;\n /** Entity highlight mapping */\n entityHighlightMapping?: EntityHighlightMapping[];\n /** onReply callback */\n onReply: (id: EmailProps['id']) => void;\n /** onForward Callback */\n onForward: (id: EmailProps['id']) => void;\n /** onReply callback */\n onReplyAll?: (id: EmailProps['id']) => void;\n /** List of suggestions */\n suggestions?: Suggestion[];\n /** Callback that triggers on click of tag */\n onSuggestionClick?: (id: EmailProps['id'], suggestionId: Suggestion['id']) => void;\n /** Actions region */\n actions?: ReactNode;\n /** Flag that indicates if email is unread\n * @default false\n */\n unRead?: boolean;\n /** Attachments list */\n attachments?: FileDisplayProps[];\n}\n\nexport interface EmailConversationProps extends BaseProps {\n /** ref to the element */\n ref?: Ref<HTMLLIElement>;\n /** Unique ID for this email conversation record */\n id: string;\n /** List of mails */\n emails: EmailProps[];\n /** Sender(s) of this email conversation */\n from: EmailUser;\n /** Recipient(s) of this email conversation */\n to: EmailUser[];\n /** Count of unread emails */\n unReadEmailCount?: number;\n /** Timestamp of this conversation as ISO8601 string, timestamp or native Date object. */\n timeStamp: Date | string | number;\n /** Flag that indicates if email conversation is expanded */\n isCollapsed?: boolean;\n /** Flag to set if conversation is spun off from forwarded email */\n isForwarded?: boolean;\n /** Callback when email conversation is collapsed */\n onCollapse?: () => void;\n /** Callback when email conversation is expanded */\n onExpand?: () => void;\n}\n\nexport interface EmailComposerProps\n extends Pick<EmailProps, 'attachments' | 'suggestions' | 'onSuggestionClick'>,\n BaseProps {\n /** Header of the email */\n header?: string;\n /** Object containing full list of email participants */\n participants: EmailUser[];\n /** Object containing the props to render the from drop down */\n from: SelectProps;\n /** Array to hold the initial participants that should be default initialized in To address. */\n to?: EmailUser['emailAddress'][];\n /** Array to hold the initial participants that should be default initialized in Cc address. */\n cc?: EmailUser['emailAddress'][];\n /** Array to hold the initial participants that should be default initialized in Bcc address. */\n bcc?: EmailUser['emailAddress'][];\n /** Object containing the props to render the subject input */\n subject: string;\n /** Region to hold primary email composer fields */\n primaryMoreFields?: ReactNode;\n /** Region to hold secondary email composer fields */\n secondaryMoreFields?: ReactNode;\n /** Object containing the props to render the email body rte */\n body: RichTextEditorProps & ForwardProps;\n /** Callback when email needs to be sent */\n onSend: () => void;\n /** Callback when attachment icon is clicked */\n onAddAttachment?: () => void;\n /** List of attachments */\n attachments?: FileUploadItemProps[];\n /** Max number of attachments to be allowed in Email composer.\n * If zero is passed, add attachments icon will be hidden. same rule applies if prop is not passed.\n * If attachments added are >= maxAttachments, add attachments icon will be disabled.\n */\n maxAttachments?: number;\n /** Region to show more actions in footer */\n footerMoreActions?: ReactNode;\n /** Templates for drafting email */\n templates?: Record<string, string>;\n /** Callback when replying to only from address */\n onReply?: () => void;\n /** Callback when replying to all participants */\n onReplyAll?: () => void;\n /** Callback when cancel composing */\n onCancel: () => void;\n /** Whether email composer opened after clicking reply or reply all */\n isReplyAll: boolean;\n /** Ref to the element */\n ref?: Ref<HTMLDivElement>;\n}\n\nexport interface EmailComposerParticipantsProps {\n key: string;\n value: EmailUser;\n}\n\nexport interface EmailShellProps extends BaseProps {\n /** ref to the element */\n ref?: Ref<HTMLDivElement>;\n /** Region for header */\n headerProps?: {\n /** Region for actions */\n actions?: ReactNode;\n /** Subject of the email conversations list */\n subject?: string;\n };\n /** Email conversations */\n conversations?: EmailConversationProps[];\n /** Shows only one conversation at a time */\n autoCollapse?: boolean;\n}\n\nexport interface EmailSummaryItemProps extends BaseProps {\n /** Id of each summary item */\n id: string;\n /** List of from participant names of the conversations */\n activeParticipants: EmailUser[];\n /** Email body of last email in the email */\n message: string;\n /** Timestamp of the latest email */\n timeStamp: Date | string | number;\n /** Top topic of an email */\n topic: string;\n /** Sentiment */\n sentiment?: SentimentProps;\n /** Urgency of an email */\n urgency?: number;\n /** Total number of unread emails in the email */\n unreadEmailCount?: number;\n /** Is the email currently active */\n active?: boolean;\n /** On click of email item */\n onClick: MouseEventHandler;\n /** ref to the element */\n ref?: Ref<HTMLButtonElement>;\n}\n\nexport interface Filter {\n /** Sets DOM id for the control and associates label element via 'for' attribute. */\n id: string;\n /** Pass a string or a fragment with an Icon and string for the filter label. */\n label: ReactNode;\n /**\n * Disables the filter.\n * @default false\n */\n disabled?: boolean;\n /**\n * Sets on prop via onFilterChange.\n * @default false\n */\n on?: boolean;\n}\n\nexport interface EmailSummaryListProps extends BaseProps {\n /** List of email categories */\n categories: MenuProps['items'];\n /** Handles category change */\n onCategoryClick?: MenuItemProps['onClick'];\n /** List of EmailItems items */\n items: OmitStrict<EmailSummaryItemProps, 'onClick' | 'active'>[];\n /** Total number of unread email count */\n unreadEmailCount?: number;\n /** A set of filters to apply to the email inbox. */\n filters?: Filter[];\n /** A callback that runs when a filter is clicked. */\n onFilterChange?: (filterId: Filter['id'], on: boolean) => void;\n /** onClick of list item */\n onItemClick: (id: EmailSummaryItemProps['id']) => void;\n /** ref to the element */\n ref?: Ref<HTMLDivElement>;\n}\n"]}
@@ -4,7 +4,6 @@ import { EmailComposerProps } from './Email.types';
4
4
  export declare const StyledEmailComposer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
5
5
  export declare const StyledReplyIcon: typeof Icon;
6
6
  export declare const StyledCCButton: import("styled-components").StyledComponent<FunctionComponent<import("@pega/cosmos-react-core").ButtonProps & ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
7
- export declare const StyledAttachmentsContainer: import("styled-components").StyledComponent<FunctionComponent<import("@pega/cosmos-react-core").FlexProps & ForwardProps>, import("styled-components").DefaultTheme, {}, never>;
8
7
  declare const EmailComposer: FunctionComponent<EmailComposerProps & ForwardProps>;
9
8
  export default EmailComposer;
10
9
  //# sourceMappingURL=EmailComposer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmailComposer.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAOlB,MAAM,OAAO,CAAC;AAIf,OAAO,EAKL,IAAI,EAOJ,YAAY,EAKb,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,kBAAkB,EAAa,MAAM,eAAe,CAAC;AA+F9D,eAAO,MAAM,mBAAmB,yGAAe,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,OAAO,IAInC,CAAC;AAIH,eAAO,MAAM,cAAc,mLAKzB,CAAC;AAEH,eAAO,MAAM,0BAA0B,iLAIrC,CAAC;AAIH,QAAA,MAAM,aAAa,EAAE,iBAAiB,CAAC,kBAAkB,GAAG,YAAY,CAsOvE,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"EmailComposer.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailComposer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,iBAAiB,EAMlB,MAAM,OAAO,CAAC;AAIf,OAAO,EAIL,IAAI,EAIJ,YAAY,EAKb,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EAAE,kBAAkB,EAAa,MAAM,eAAe,CAAC;AA+F9D,eAAO,MAAM,mBAAmB,yGAAe,CAAC;AAEhD,eAAO,MAAM,eAAe,EAAE,OAAO,IAInC,CAAC;AAIH,eAAO,MAAM,cAAc,mLAKzB,CAAC;AAIH,QAAA,MAAM,aAAa,EAAE,iBAAiB,CAAC,kBAAkB,GAAG,YAAY,CA0LvE,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import { createElement as _createElement } from "react";
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { forwardRef, useRef, useState, useEffect, useMemo } from 'react';
3
+ import { forwardRef, useState, useEffect, useMemo } from 'react';
4
4
  import styled, { css } from 'styled-components';
5
5
  import Select from '@pega/cosmos-react-core/lib/components/Select/Select';
6
- import { Button, ComboBox, EmojiPicker, Flex, Icon, Text, Popover, useElement, useI18n, Option, useOuterEvent, defaultThemeProp, FileUploadItem, MenuButton } from '@pega/cosmos-react-core';
6
+ import { Button, ComboBox, Flex, Icon, Text, useI18n, Option, defaultThemeProp, FileUploadItem, MenuButton } from '@pega/cosmos-react-core';
7
7
  import Input from '@pega/cosmos-react-core/lib/components/Input/Input';
8
8
  import { RichTextEditor } from '@pega/cosmos-react-rte';
9
9
  const useEmailDataProvider = (participants, defaultSelected = []) => {
@@ -90,17 +90,10 @@ export const StyledCCButton = styled(Button)(({ theme }) => {
90
90
  color: ${theme.base.palette.interactive};
91
91
  `;
92
92
  });
93
- export const StyledAttachmentsContainer = styled(Flex)(({ theme }) => {
94
- return css `
95
- margin-block-start: calc(3 * ${theme.base.spacing});
96
- `;
97
- });
98
93
  StyledCCButton.defaultProps = defaultThemeProp;
99
94
  const EmailComposer = forwardRef((props, ref) => {
100
- const { onReply, onReplyAll, isReplyAll, participants, from, to, cc, bcc, body, primaryMoreFields, secondaryMoreFields, maxAttachments = 0, attachments = [], onAddAttachment, showEmoji, onEmojiSelect, onCancel, onSend, footerMoreActions, templates, ...restProps } = props;
95
+ const { onReply, onReplyAll, isReplyAll, participants, from, to, cc, bcc, body, primaryMoreFields, secondaryMoreFields, maxAttachments = 0, attachments = [], onAddAttachment, onCancel, onSend, footerMoreActions, templates, ...restProps } = props;
101
96
  const [subject, setSubject] = useState(props.subject);
102
- const [emojiBtnEl, setEmojiBtnEl] = useElement();
103
- const [showEmojiPicker, setShowEmojiPicker] = useState(false);
104
97
  const [showCC, setShowCC] = useState(false);
105
98
  const [showBCC, setShowBCC] = useState(false);
106
99
  const [selectedTemplate, setSelectedTemplate] = useState('');
@@ -109,13 +102,6 @@ const EmailComposer = forwardRef((props, ref) => {
109
102
  const bccEmailAddresses = useEmailDataProvider(participants, bcc);
110
103
  const children = templates && Object.keys(templates).map(option => _jsx(Option, { children: option }, option));
111
104
  const header = subject || props.header;
112
- const toggleEmoji = () => {
113
- setShowEmojiPicker(!showEmojiPicker);
114
- };
115
- const EmojiPickerRef = useRef(null);
116
- useOuterEvent('mousedown', [emojiBtnEl, EmojiPickerRef], () => {
117
- setShowEmojiPicker(false);
118
- });
119
105
  const onSubjectChange = (e) => {
120
106
  setSubject(e.target.value);
121
107
  };
@@ -153,19 +139,11 @@ const EmailComposer = forwardRef((props, ref) => {
153
139
  direction: 'column'
154
140
  }, item: {
155
141
  grow: 1
156
- } }, { children: to && _jsx(ComboBox, Object.assign({}, toEmailAddresses, { label: t('to'), mode: 'multi-select', required: true }), void 0) }), void 0), !showCC && (_jsx("span", { children: _jsx(StyledCCButton, Object.assign({ variant: 'simple', onClick: () => setShowCC(true), icon: true }, { children: t('cc') }), void 0) }, void 0)), !showBCC && (_jsx("span", { children: _jsx(StyledCCButton, Object.assign({ variant: 'simple', onClick: () => setShowBCC(true), icon: true }, { children: t('bcc') }), void 0) }, void 0))] }), void 0), showCC && _jsx(ComboBox, Object.assign({}, ccEmailAddresses, { label: t('cc'), mode: 'multi-select' }), void 0), showBCC && _jsx(ComboBox, Object.assign({}, bccEmailAddresses, { label: t('bcc'), mode: 'multi-select' }), void 0), _jsx(Input, { value: subject, onChange: onSubjectChange, label: t('subject') }, void 0), _jsx(Select, Object.assign({ onChange: onTemplateChange, label: t('auto_reply'), value: selectedTemplate }, { children: _jsxs(_Fragment, { children: [_jsx(Option, { children: t('insert') }, void 0), children] }, void 0) }), void 0), primaryMoreFields, _jsx(RichTextEditor, Object.assign({ autoFocus: true }, body, { defaultValue: selectedTemplate, labelHidden: true, label: t('email_message') }), void 0), secondaryMoreFields, attachments.length > 0 && (_jsx(StyledAttachmentsContainer, Object.assign({ container: { gap: 1, wrap: 'wrap' } }, { children: attachments.map(attachment => (_createElement(FileUploadItem, { ...attachment, key: attachment.name }))) }), void 0)), _jsxs(Flex, Object.assign({ container: {
142
+ } }, { children: to && _jsx(ComboBox, Object.assign({}, toEmailAddresses, { label: t('to'), mode: 'multi-select', required: true }), void 0) }), void 0), !showCC && (_jsx("span", { children: _jsx(StyledCCButton, Object.assign({ variant: 'simple', onClick: () => setShowCC(true), icon: true }, { children: t('cc') }), void 0) }, void 0)), !showBCC && (_jsx("span", { children: _jsx(StyledCCButton, Object.assign({ variant: 'simple', onClick: () => setShowBCC(true), icon: true }, { children: t('bcc') }), void 0) }, void 0))] }), void 0), showCC && _jsx(ComboBox, Object.assign({}, ccEmailAddresses, { label: t('cc'), mode: 'multi-select' }), void 0), showBCC && _jsx(ComboBox, Object.assign({}, bccEmailAddresses, { label: t('bcc'), mode: 'multi-select' }), void 0), _jsx(Input, { value: subject, onChange: onSubjectChange, label: t('subject') }, void 0), _jsx(Select, Object.assign({ onChange: onTemplateChange, label: t('auto_reply'), value: selectedTemplate }, { children: _jsxs(_Fragment, { children: [_jsx(Option, { children: t('insert') }, void 0), children] }, void 0) }), void 0), primaryMoreFields, _jsx(RichTextEditor, Object.assign({ autoFocus: true }, body, { defaultValue: selectedTemplate, labelHidden: true, label: t('email_message') }), void 0), secondaryMoreFields, attachments.length > 0 && (_jsx(Flex, Object.assign({ container: { gap: 1, wrap: 'wrap' } }, { children: attachments.map(attachment => (_createElement(FileUploadItem, { ...attachment, key: attachment.name }))) }), void 0)), _jsxs(Flex, Object.assign({ container: {
157
143
  gap: 1
158
- } }, { children: [_jsxs(Flex, Object.assign({ container: true, item: { grow: 1 } }, { children: [_jsx(Button, Object.assign({ variant: 'secondary', onClick: onCancel }, { children: t('cancel') }), void 0), footerMoreActions] }), void 0), _jsxs(Flex, Object.assign({ container: true }, { children: [maxAttachments > 0 && (_jsxs(Button, Object.assign({ onClick: attachments.length < maxAttachments ? onAddAttachment : undefined, variant: 'link', label: attachments.length >= maxAttachments
144
+ } }, { children: [_jsxs(Flex, Object.assign({ container: true, item: { grow: 1 } }, { children: [_jsx(Button, Object.assign({ variant: 'secondary', onClick: onCancel }, { children: t('cancel') }), void 0), footerMoreActions] }), void 0), _jsxs(Flex, Object.assign({ container: true }, { children: [maxAttachments > 0 && (_jsx(Button, Object.assign({ onClick: attachments.length < maxAttachments ? onAddAttachment : undefined, variant: 'link', label: attachments.length >= maxAttachments
159
145
  ? t('disable_attachment', maxAttachments)
160
- : t('add_attachment', maxAttachments) }, { children: [_jsx(Icon, { name: 'paper-clip' }, void 0), " ", t('attach')] }), void 0)), showEmoji && (_jsx(Button, Object.assign({ ref: setEmojiBtnEl, onClick: toggleEmoji, variant: 'simple', icon: true, label: t('add_emoji') }, { children: _jsx(Icon, { name: 'face-happy' }, void 0) }), void 0)), _jsx(Button, Object.assign({ variant: 'primary', onClick: onSend }, { children: t('send') }), void 0)] }), void 0)] }), void 0), _jsx(Popover, Object.assign({ show: showEmojiPicker, target: emojiBtnEl, placement: 'bottom-start', modifiers: [
161
- {
162
- name: 'flip',
163
- enabled: true
164
- }
165
- ] }, { children: _jsx(EmojiPicker, { ref: EmojiPickerRef, onSelect: emoji => {
166
- setShowEmojiPicker(false);
167
- onEmojiSelect?.(emoji);
168
- } }, void 0) }), void 0)] }), void 0));
146
+ : t('add_attachment', maxAttachments) }, { children: _jsx(Icon, { name: 'paper-clip' }, void 0) }), void 0)), _jsx(Button, Object.assign({ variant: 'primary', onClick: onSend }, { children: t('send') }), void 0)] }), void 0)] }), void 0)] }), void 0));
169
147
  });
170
148
  export default EmailComposer;
171
149
  //# sourceMappingURL=EmailComposer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EmailComposer.js","sourceRoot":"","sources":["../../../src/components/Email/EmailComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n FunctionComponent,\n PropsWithoutRef,\n useRef,\n useState,\n useEffect,\n ChangeEvent,\n useMemo\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Select from '@pega/cosmos-react-core/lib/components/Select/Select';\nimport {\n Button,\n ComboBox,\n EmojiPicker,\n Flex,\n Icon,\n Text,\n Popover,\n useElement,\n useI18n,\n Option,\n useOuterEvent,\n ForwardProps,\n defaultThemeProp,\n FileUploadItem,\n MenuButton,\n ComboBoxProps\n} from '@pega/cosmos-react-core';\nimport Input from '@pega/cosmos-react-core/lib/components/Input/Input';\nimport { RichTextEditor } from '@pega/cosmos-react-rte';\n\nimport { EmailComposerProps, EmailUser } from './Email.types';\n\ninterface EmailUserWithSelection extends EmailUser {\n selected?: boolean;\n}\n\nconst useEmailDataProvider: (\n participants: EmailComposerProps['participants'],\n defaultSelected?: string[]\n) => ComboBoxProps = (participants, defaultSelected = []) => {\n const escapeChars = /[.*+\\-?^${}()|[\\]\\\\]/g;\n\n const getFilterRegex = (inputValue: string) => {\n return new RegExp(`^${inputValue.replace(escapeChars, '\\\\$&')}`, 'i');\n };\n\n const [emailUsers, setEmailUsers] = useState<EmailUserWithSelection[]>(\n participants.map((participant: EmailUser) => {\n return {\n ...(participant as EmailUser),\n selected: defaultSelected.includes(participant.emailAddress)\n };\n }) as EmailUserWithSelection[]\n );\n\n const [emailFilterValue, setEmailFilterValue] = useState('');\n\n const filterRegex = useMemo(() => getFilterRegex(emailFilterValue), [emailFilterValue]);\n\n const emailsToRender = useMemo(() => {\n return (\n emailFilterValue\n ? emailUsers.filter(({ emailAddress, fullName, shortName }) => {\n return (\n filterRegex.test(emailAddress) ||\n filterRegex.test(fullName) ||\n filterRegex.test(shortName)\n );\n })\n : emailUsers\n ).map(({ emailAddress, fullName, selected }) => {\n return {\n id: emailAddress,\n primary: fullName,\n secondary: [emailAddress],\n selected: !!selected\n };\n });\n }, [emailUsers, filterRegex]);\n\n const selectedEmailUsers = useMemo(() => {\n return emailUsers\n .filter(emailAddress => emailAddress.selected)\n .map(({ emailAddress }) => {\n return {\n text: emailAddress,\n id: emailAddress\n };\n });\n }, [emailUsers]);\n\n const toggleSelectedEmailUser = (id: string) => {\n setEmailUsers(prevEmailUsers => {\n return prevEmailUsers.map(emailUser => {\n if (emailUser.emailAddress === id) {\n return {\n ...emailUser,\n selected: !emailUser.selected\n };\n }\n return emailUser;\n });\n });\n };\n\n return {\n value: emailFilterValue,\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n setEmailFilterValue(e.target.value);\n },\n onBlur: () => {\n setEmailFilterValue('');\n },\n menu: {\n items: emailsToRender,\n accent: filterRegex,\n onItemClick: toggleSelectedEmailUser\n },\n selected: {\n items: selectedEmailUsers,\n onRemove: toggleSelectedEmailUser\n }\n };\n};\n\nexport const StyledEmailComposer = styled.div``;\n\nexport const StyledReplyIcon: typeof Icon = styled(Icon)(({ theme }) => {\n return css`\n color: ${theme.base.palette.interactive};\n `;\n});\n\nStyledReplyIcon.defaultProps = defaultThemeProp;\n\nexport const StyledCCButton = styled(Button)(({ theme }) => {\n return css`\n margin-block-start: calc(2 * ${theme.base.spacing});\n color: ${theme.base.palette.interactive};\n `;\n});\n\nexport const StyledAttachmentsContainer = styled(Flex)(({ theme }) => {\n return css`\n margin-block-start: calc(3 * ${theme.base.spacing});\n `;\n});\n\nStyledCCButton.defaultProps = defaultThemeProp;\n\nconst EmailComposer: FunctionComponent<EmailComposerProps & ForwardProps> = forwardRef(\n (props: PropsWithoutRef<EmailComposerProps>, ref: EmailComposerProps['ref']) => {\n const {\n onReply,\n onReplyAll,\n isReplyAll,\n participants,\n from,\n to,\n cc,\n bcc,\n body,\n primaryMoreFields,\n secondaryMoreFields,\n maxAttachments = 0,\n attachments = [],\n onAddAttachment,\n showEmoji,\n onEmojiSelect,\n onCancel,\n onSend,\n footerMoreActions,\n templates,\n ...restProps\n } = props;\n\n const [subject, setSubject] = useState(props.subject);\n\n const [emojiBtnEl, setEmojiBtnEl] = useElement();\n const [showEmojiPicker, setShowEmojiPicker] = useState(false);\n const [showCC, setShowCC] = useState(false);\n const [showBCC, setShowBCC] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState('');\n\n const toEmailAddresses = useEmailDataProvider(participants, to);\n const ccEmailAddresses = useEmailDataProvider(participants, cc);\n const bccEmailAddresses = useEmailDataProvider(participants, bcc);\n\n const children =\n templates && Object.keys(templates).map(option => <Option key={option}>{option}</Option>);\n\n const header = subject || props.header;\n\n const toggleEmoji = () => {\n setShowEmojiPicker(!showEmojiPicker);\n };\n\n const EmojiPickerRef = useRef<HTMLDivElement>(null);\n\n useOuterEvent('mousedown', [emojiBtnEl, EmojiPickerRef], () => {\n setShowEmojiPicker(false);\n });\n\n const onSubjectChange = (e: ChangeEvent<HTMLInputElement>) => {\n setSubject(e.target.value);\n };\n\n const onTemplateChange = (e: ChangeEvent<HTMLSelectElement>) => {\n setSelectedTemplate(e.target.value);\n };\n\n const rteRef: any = body?.ref;\n\n useEffect(() => {\n return (\n templates?.[selectedTemplate] && rteRef?.current?.insertText(templates?.[selectedTemplate])\n );\n }, [selectedTemplate]);\n\n const t = useI18n();\n\n return (\n <Flex\n as={StyledEmailComposer}\n ref={ref}\n {...restProps}\n container={{\n gap: 2,\n direction: 'column'\n }}\n >\n <Text variant='h4' aria-label={`${t('email_header')} ${header}`}>\n {header}\n </Text>\n <div>\n <MenuButton\n text={isReplyAll ? t('reply_all') : t('reply')}\n variant='link'\n icon={isReplyAll ? 'reply-all' : 'reply'}\n menu={{\n items: [\n {\n primary: t('reply_all'),\n id: 'reply all',\n visual: <StyledReplyIcon name='reply-all' />,\n onClick: onReplyAll\n },\n {\n primary: t('reply'),\n id: 'reply',\n visual: <StyledReplyIcon name='reply' />,\n onClick: onReply\n }\n ]\n }}\n />\n </div>\n\n <Flex\n container={{\n alignItems: 'start',\n gap: 0.5\n }}\n >\n <Flex\n container={{\n gap: 1,\n direction: 'column'\n }}\n item={{\n grow: 1\n }}\n >\n {to && <ComboBox {...toEmailAddresses} label={t('to')} mode='multi-select' required />}\n </Flex>\n {!showCC && (\n <span>\n <StyledCCButton variant='simple' onClick={() => setShowCC(true)} icon>\n {t('cc')}\n </StyledCCButton>\n </span>\n )}\n {!showBCC && (\n <span>\n <StyledCCButton variant='simple' onClick={() => setShowBCC(true)} icon>\n {t('bcc')}\n </StyledCCButton>\n </span>\n )}\n </Flex>\n {showCC && <ComboBox {...ccEmailAddresses} label={t('cc')} mode='multi-select' />}\n {showBCC && <ComboBox {...bccEmailAddresses} label={t('bcc')} mode='multi-select' />}\n\n <Input value={subject} onChange={onSubjectChange} label={t('subject')} />\n\n <Select onChange={onTemplateChange} label={t('auto_reply')} value={selectedTemplate}>\n <>\n <Option>{t('insert')}</Option>\n {children}\n </>\n </Select>\n {primaryMoreFields}\n <RichTextEditor\n autoFocus\n {...body}\n defaultValue={selectedTemplate}\n labelHidden\n label={t('email_message')}\n />\n {secondaryMoreFields}\n {attachments.length > 0 && (\n <StyledAttachmentsContainer container={{ gap: 1, wrap: 'wrap' }}>\n {attachments.map(attachment => (\n <FileUploadItem {...attachment} key={attachment.name} />\n ))}\n </StyledAttachmentsContainer>\n )}\n <Flex\n container={{\n gap: 1\n }}\n >\n <Flex container item={{ grow: 1 }}>\n <Button variant='secondary' onClick={onCancel}>\n {t('cancel')}\n </Button>\n {footerMoreActions}\n </Flex>\n <Flex container>\n {maxAttachments > 0 && (\n <Button\n onClick={attachments.length < maxAttachments ? onAddAttachment : undefined}\n variant='link'\n label={\n attachments.length >= maxAttachments\n ? t('disable_attachment', maxAttachments)\n : t('add_attachment', maxAttachments)\n }\n >\n <Icon name='paper-clip' /> {t('attach')}\n </Button>\n )}\n {showEmoji && (\n <Button\n ref={setEmojiBtnEl}\n onClick={toggleEmoji}\n variant='simple'\n icon\n label={t('add_emoji')}\n >\n <Icon name='face-happy' />\n </Button>\n )}\n <Button variant='primary' onClick={onSend}>\n {t('send')}\n </Button>\n </Flex>\n </Flex>\n <Popover\n show={showEmojiPicker}\n target={emojiBtnEl}\n placement='bottom-start'\n modifiers={[\n {\n name: 'flip',\n enabled: true\n }\n ]}\n >\n <EmojiPicker\n ref={EmojiPickerRef}\n onSelect={emoji => {\n setShowEmojiPicker(false);\n onEmojiSelect?.(emoji);\n }}\n />\n </Popover>\n </Flex>\n );\n }\n);\n\nexport default EmailComposer;\n"]}
1
+ {"version":3,"file":"EmailComposer.js","sourceRoot":"","sources":["../../../src/components/Email/EmailComposer.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n FunctionComponent,\n PropsWithoutRef,\n useState,\n useEffect,\n ChangeEvent,\n useMemo\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport Select from '@pega/cosmos-react-core/lib/components/Select/Select';\nimport {\n Button,\n ComboBox,\n Flex,\n Icon,\n Text,\n useI18n,\n Option,\n ForwardProps,\n defaultThemeProp,\n FileUploadItem,\n MenuButton,\n ComboBoxProps\n} from '@pega/cosmos-react-core';\nimport Input from '@pega/cosmos-react-core/lib/components/Input/Input';\nimport { RichTextEditor } from '@pega/cosmos-react-rte';\n\nimport { EmailComposerProps, EmailUser } from './Email.types';\n\ninterface EmailUserWithSelection extends EmailUser {\n selected?: boolean;\n}\n\nconst useEmailDataProvider: (\n participants: EmailComposerProps['participants'],\n defaultSelected?: string[]\n) => ComboBoxProps = (participants, defaultSelected = []) => {\n const escapeChars = /[.*+\\-?^${}()|[\\]\\\\]/g;\n\n const getFilterRegex = (inputValue: string) => {\n return new RegExp(`^${inputValue.replace(escapeChars, '\\\\$&')}`, 'i');\n };\n\n const [emailUsers, setEmailUsers] = useState<EmailUserWithSelection[]>(\n participants.map((participant: EmailUser) => {\n return {\n ...(participant as EmailUser),\n selected: defaultSelected.includes(participant.emailAddress)\n };\n }) as EmailUserWithSelection[]\n );\n\n const [emailFilterValue, setEmailFilterValue] = useState('');\n\n const filterRegex = useMemo(() => getFilterRegex(emailFilterValue), [emailFilterValue]);\n\n const emailsToRender = useMemo(() => {\n return (\n emailFilterValue\n ? emailUsers.filter(({ emailAddress, fullName, shortName }) => {\n return (\n filterRegex.test(emailAddress) ||\n filterRegex.test(fullName) ||\n filterRegex.test(shortName)\n );\n })\n : emailUsers\n ).map(({ emailAddress, fullName, selected }) => {\n return {\n id: emailAddress,\n primary: fullName,\n secondary: [emailAddress],\n selected: !!selected\n };\n });\n }, [emailUsers, filterRegex]);\n\n const selectedEmailUsers = useMemo(() => {\n return emailUsers\n .filter(emailAddress => emailAddress.selected)\n .map(({ emailAddress }) => {\n return {\n text: emailAddress,\n id: emailAddress\n };\n });\n }, [emailUsers]);\n\n const toggleSelectedEmailUser = (id: string) => {\n setEmailUsers(prevEmailUsers => {\n return prevEmailUsers.map(emailUser => {\n if (emailUser.emailAddress === id) {\n return {\n ...emailUser,\n selected: !emailUser.selected\n };\n }\n return emailUser;\n });\n });\n };\n\n return {\n value: emailFilterValue,\n onChange: (e: ChangeEvent<HTMLInputElement>) => {\n setEmailFilterValue(e.target.value);\n },\n onBlur: () => {\n setEmailFilterValue('');\n },\n menu: {\n items: emailsToRender,\n accent: filterRegex,\n onItemClick: toggleSelectedEmailUser\n },\n selected: {\n items: selectedEmailUsers,\n onRemove: toggleSelectedEmailUser\n }\n };\n};\n\nexport const StyledEmailComposer = styled.div``;\n\nexport const StyledReplyIcon: typeof Icon = styled(Icon)(({ theme }) => {\n return css`\n color: ${theme.base.palette.interactive};\n `;\n});\n\nStyledReplyIcon.defaultProps = defaultThemeProp;\n\nexport const StyledCCButton = styled(Button)(({ theme }) => {\n return css`\n margin-block-start: calc(2 * ${theme.base.spacing});\n color: ${theme.base.palette.interactive};\n `;\n});\n\nStyledCCButton.defaultProps = defaultThemeProp;\n\nconst EmailComposer: FunctionComponent<EmailComposerProps & ForwardProps> = forwardRef(\n (props: PropsWithoutRef<EmailComposerProps>, ref: EmailComposerProps['ref']) => {\n const {\n onReply,\n onReplyAll,\n isReplyAll,\n participants,\n from,\n to,\n cc,\n bcc,\n body,\n primaryMoreFields,\n secondaryMoreFields,\n maxAttachments = 0,\n attachments = [],\n onAddAttachment,\n onCancel,\n onSend,\n footerMoreActions,\n templates,\n ...restProps\n } = props;\n\n const [subject, setSubject] = useState(props.subject);\n\n const [showCC, setShowCC] = useState(false);\n const [showBCC, setShowBCC] = useState(false);\n const [selectedTemplate, setSelectedTemplate] = useState('');\n\n const toEmailAddresses = useEmailDataProvider(participants, to);\n const ccEmailAddresses = useEmailDataProvider(participants, cc);\n const bccEmailAddresses = useEmailDataProvider(participants, bcc);\n\n const children =\n templates && Object.keys(templates).map(option => <Option key={option}>{option}</Option>);\n\n const header = subject || props.header;\n\n const onSubjectChange = (e: ChangeEvent<HTMLInputElement>) => {\n setSubject(e.target.value);\n };\n\n const onTemplateChange = (e: ChangeEvent<HTMLSelectElement>) => {\n setSelectedTemplate(e.target.value);\n };\n\n const rteRef: any = body?.ref;\n\n useEffect(() => {\n return (\n templates?.[selectedTemplate] && rteRef?.current?.insertText(templates?.[selectedTemplate])\n );\n }, [selectedTemplate]);\n\n const t = useI18n();\n\n return (\n <Flex\n as={StyledEmailComposer}\n ref={ref}\n {...restProps}\n container={{\n gap: 2,\n direction: 'column'\n }}\n >\n <Text variant='h4' aria-label={`${t('email_header')} ${header}`}>\n {header}\n </Text>\n <div>\n <MenuButton\n text={isReplyAll ? t('reply_all') : t('reply')}\n variant='link'\n icon={isReplyAll ? 'reply-all' : 'reply'}\n menu={{\n items: [\n {\n primary: t('reply_all'),\n id: 'reply all',\n visual: <StyledReplyIcon name='reply-all' />,\n onClick: onReplyAll\n },\n {\n primary: t('reply'),\n id: 'reply',\n visual: <StyledReplyIcon name='reply' />,\n onClick: onReply\n }\n ]\n }}\n />\n </div>\n\n <Flex\n container={{\n alignItems: 'start',\n gap: 0.5\n }}\n >\n <Flex\n container={{\n gap: 1,\n direction: 'column'\n }}\n item={{\n grow: 1\n }}\n >\n {to && <ComboBox {...toEmailAddresses} label={t('to')} mode='multi-select' required />}\n </Flex>\n {!showCC && (\n <span>\n <StyledCCButton variant='simple' onClick={() => setShowCC(true)} icon>\n {t('cc')}\n </StyledCCButton>\n </span>\n )}\n {!showBCC && (\n <span>\n <StyledCCButton variant='simple' onClick={() => setShowBCC(true)} icon>\n {t('bcc')}\n </StyledCCButton>\n </span>\n )}\n </Flex>\n {showCC && <ComboBox {...ccEmailAddresses} label={t('cc')} mode='multi-select' />}\n {showBCC && <ComboBox {...bccEmailAddresses} label={t('bcc')} mode='multi-select' />}\n\n <Input value={subject} onChange={onSubjectChange} label={t('subject')} />\n\n <Select onChange={onTemplateChange} label={t('auto_reply')} value={selectedTemplate}>\n <>\n <Option>{t('insert')}</Option>\n {children}\n </>\n </Select>\n {primaryMoreFields}\n <RichTextEditor\n autoFocus\n {...body}\n defaultValue={selectedTemplate}\n labelHidden\n label={t('email_message')}\n />\n {secondaryMoreFields}\n {attachments.length > 0 && (\n <Flex container={{ gap: 1, wrap: 'wrap' }}>\n {attachments.map(attachment => (\n <FileUploadItem {...attachment} key={attachment.name} />\n ))}\n </Flex>\n )}\n <Flex\n container={{\n gap: 1\n }}\n >\n <Flex container item={{ grow: 1 }}>\n <Button variant='secondary' onClick={onCancel}>\n {t('cancel')}\n </Button>\n {footerMoreActions}\n </Flex>\n <Flex container>\n {maxAttachments > 0 && (\n <Button\n onClick={attachments.length < maxAttachments ? onAddAttachment : undefined}\n variant='link'\n label={\n attachments.length >= maxAttachments\n ? t('disable_attachment', maxAttachments)\n : t('add_attachment', maxAttachments)\n }\n >\n <Icon name='paper-clip' />\n </Button>\n )}\n <Button variant='primary' onClick={onSend}>\n {t('send')}\n </Button>\n </Flex>\n </Flex>\n </Flex>\n );\n }\n);\n\nexport default EmailComposer;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSummaryList.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,iBAAiB,EAElB,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,YAAY,EAQb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA+CtD,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAiI7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
1
+ {"version":3,"file":"EmailSummaryList.d.ts","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,iBAAiB,EAElB,MAAM,OAAO,CAAC;AAGf,OAAO,EAKL,YAAY,EASb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AA+CtD,QAAA,MAAM,gBAAgB,EAAE,iBAAiB,CAAC,qBAAqB,GAAG,YAAY,CAmI7E,CAAC;AAEF,eAAe,gBAAgB,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createRef, useMemo, useState, useEffect, forwardRef, useRef } from 'react';
3
3
  import styled, { css } from 'styled-components';
4
- import { Button, Count, defaultThemeProp, Flex, Icon, MenuButton, Text, useActiveDescendant, useConsolidatedRef, useI18n } from '@pega/cosmos-react-core';
4
+ import { Button, Count, defaultThemeProp, Flex, Icon, MenuButton, Text, useActiveDescendant, useConsolidatedRef, useI18n, menuHelpers } from '@pega/cosmos-react-core';
5
5
  import EmailSummaryItem, { StyledEmailSummaryItem } from './EmailSummaryItem';
6
6
  const StyledEmailSummaryListContainer = styled(Flex)(({ theme }) => {
7
7
  return css `
@@ -71,8 +71,8 @@ const EmailSummaryList = forwardRef(({ categories, onCategoryClick, items, unrea
71
71
  previousActiveDescendant.current = activeDescendant;
72
72
  }, [activeDescendant]);
73
73
  const buttonText = useMemo(() => {
74
- const selected = categories.filter(item => item.selected === true)[0];
75
- return selected ? selected.primary : categories[0].primary;
74
+ return (menuHelpers.getSelected(categories)[0]?.primary ??
75
+ menuHelpers.flatten(categories)[0].primary);
76
76
  }, [categories]);
77
77
  return (_jsxs(StyledEmailSummaryListContainer, Object.assign({ container: { direction: 'column' } }, restProps, { children: [_jsxs(StyledEmailSummaryListHeader, { children: [_jsx(Text, Object.assign({ variant: 'h2' }, { children: t('inbox') }), void 0), _jsxs(StyledActionWrapper, Object.assign({ container: { alignItems: 'center', gap: 0.5 } }, { children: [_jsx(MenuButton, { text: buttonText, variant: 'text', menu: {
78
78
  mode: 'single-select',
@@ -1 +1 @@
1
- {"version":3,"file":"EmailSummaryList.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createRef,\n useMemo,\n useState,\n useEffect,\n forwardRef,\n useRef,\n FunctionComponent,\n MouseEvent\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Count,\n defaultThemeProp,\n Flex,\n ForwardProps,\n Icon,\n MenuButton,\n Text,\n useActiveDescendant,\n UseActiveDescendantConfig,\n useConsolidatedRef,\n useI18n\n} from '@pega/cosmos-react-core';\n\nimport { EmailSummaryListProps } from './Email.types';\nimport EmailSummaryItem, { StyledEmailSummaryItem } from './EmailSummaryItem';\n\nconst StyledEmailSummaryListContainer = styled(Flex)(({ theme }) => {\n return css`\n height: 100%;\n background-color: ${theme.base.palette['primary-background']};\n `;\n});\nStyledEmailSummaryListContainer.defaultProps = defaultThemeProp;\n\nconst StyledEmailSummaryListHeader = styled.div(({ theme }) => {\n return css`\n padding: calc(2 * ${theme.base.spacing}) calc(2 * ${theme.base.spacing}) ${theme.base.spacing};\n `;\n});\nStyledEmailSummaryListHeader.defaultProps = defaultThemeProp;\n\nconst StyledActionWrapper = styled(Flex)(({ theme }) => {\n return css`\n padding-block-start: ${theme.base.spacing};\n `;\n});\nStyledActionWrapper.defaultProps = defaultThemeProp;\n\nconst StyledFilterButton = styled(Button)`\n margin-inline-start: auto;\n`;\n\nconst StyledEmailSummaryList = styled.div(({ theme }) => {\n return css`\n height: 100%;\n overflow-y: auto;\n\n &:focus-visible {\n outline: none;\n }\n\n &:focus {\n ${StyledEmailSummaryItem}[data-current='true'] {\n box-shadow: inset ${theme.base.shadow.focus};\n }\n }\n `;\n});\nStyledEmailSummaryList.defaultProps = defaultThemeProp;\n\nconst EmailSummaryList: FunctionComponent<EmailSummaryListProps & ForwardProps> = forwardRef(\n (\n {\n categories,\n onCategoryClick,\n items,\n unreadEmailCount,\n filters,\n onFilterChange,\n onItemClick,\n ...restProps\n },\n ref: EmailSummaryListProps['ref']\n ) => {\n const t = useI18n();\n const tablistRef = useConsolidatedRef(ref);\n const tabRefs = items.map(() => createRef<HTMLButtonElement>());\n const [focusDescendant, setFocusDescendant] = useState<HTMLElement | null>(null);\n const previousActiveDescendant = useRef<HTMLElement | undefined>();\n const [listHasBeenViewed, setListHasBeenViewed] = useState(false);\n const [clickOnInitialView, setClickOnInitialView] = useState(false);\n\n const uadConfig = useMemo<UseActiveDescendantConfig>(\n () => ({\n focusEl: tablistRef.current,\n scope: tablistRef.current,\n selector: 'button[role=\"tab\"]',\n focusDescendantEl: focusDescendant,\n clearFocusDescendant: () => {\n setFocusDescendant(null);\n tablistRef.current?.focus();\n },\n pauseDescendantEvaluation: !listHasBeenViewed\n }),\n [tablistRef.current, focusDescendant, listHasBeenViewed]\n );\n\n const { activeDescendant } = useActiveDescendant(uadConfig);\n\n // Trigger click of new active descendant\n useEffect(() => {\n const hasPreviousOrClickInitial = previousActiveDescendant.current || clickOnInitialView;\n\n if (hasPreviousOrClickInitial && activeDescendant) {\n activeDescendant.click();\n }\n\n previousActiveDescendant.current = activeDescendant;\n }, [activeDescendant]);\n\n const buttonText = useMemo(() => {\n const selected = categories.filter(item => item.selected === true)[0];\n return selected ? selected.primary : categories[0].primary;\n }, [categories]);\n\n return (\n <StyledEmailSummaryListContainer container={{ direction: 'column' }} {...restProps}>\n <StyledEmailSummaryListHeader>\n <Text variant='h2'>{t('inbox')}</Text>\n <StyledActionWrapper container={{ alignItems: 'center', gap: 0.5 }}>\n <MenuButton\n text={buttonText}\n variant='text'\n menu={{\n mode: 'single-select',\n items: categories,\n onItemClick: onCategoryClick\n }}\n />\n {unreadEmailCount && (\n <Count aria-label={`${t('unread_email_count')}${unreadEmailCount}`} variant='default'>\n {unreadEmailCount}\n </Count>\n )}\n <StyledFilterButton variant='simple' label={t('email_filters')} icon>\n <Icon name='filter' />\n </StyledFilterButton>\n </StyledActionWrapper>\n </StyledEmailSummaryListHeader>\n\n <StyledEmailSummaryList\n role='tablist'\n tabIndex={0}\n ref={tablistRef}\n onFocus={e => {\n if (!listHasBeenViewed && e.target.getAttribute('role') === 'tablist') {\n setClickOnInitialView(true);\n setListHasBeenViewed(true);\n }\n }}\n >\n {items.map((emailItem, i) => {\n const { id, ...emailItemProps } = emailItem;\n return (\n <EmailSummaryItem\n ref={tabRefs[i]}\n id={id}\n key={id}\n role='tab'\n {...emailItemProps}\n onClick={(e: MouseEvent) => {\n const mouseClick = e.detail !== 0;\n\n if (mouseClick) {\n const target = e.target as HTMLElement;\n const focusAtEl =\n target.getAttribute('role') === 'tab'\n ? target\n : target.closest('button[role=\"tab\"]');\n if (focusAtEl) setFocusDescendant(focusAtEl as HTMLElement);\n\n if (!listHasBeenViewed) {\n if (i === 0) setClickOnInitialView(true);\n setListHasBeenViewed(true);\n }\n }\n // Click is triggered by active descendant change, 'enter', & duplicate click\n if (!mouseClick || activeDescendant?.id === id) {\n onItemClick(id);\n }\n }}\n active={activeDescendant && activeDescendant.id === id}\n />\n );\n })}\n </StyledEmailSummaryList>\n </StyledEmailSummaryListContainer>\n );\n }\n);\n\nexport default EmailSummaryList;\n"]}
1
+ {"version":3,"file":"EmailSummaryList.js","sourceRoot":"","sources":["../../../src/components/Email/EmailSummaryList.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n createRef,\n useMemo,\n useState,\n useEffect,\n forwardRef,\n useRef,\n FunctionComponent,\n MouseEvent\n} from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Button,\n Count,\n defaultThemeProp,\n Flex,\n ForwardProps,\n Icon,\n MenuButton,\n Text,\n useActiveDescendant,\n UseActiveDescendantConfig,\n useConsolidatedRef,\n useI18n,\n menuHelpers\n} from '@pega/cosmos-react-core';\n\nimport { EmailSummaryListProps } from './Email.types';\nimport EmailSummaryItem, { StyledEmailSummaryItem } from './EmailSummaryItem';\n\nconst StyledEmailSummaryListContainer = styled(Flex)(({ theme }) => {\n return css`\n height: 100%;\n background-color: ${theme.base.palette['primary-background']};\n `;\n});\nStyledEmailSummaryListContainer.defaultProps = defaultThemeProp;\n\nconst StyledEmailSummaryListHeader = styled.div(({ theme }) => {\n return css`\n padding: calc(2 * ${theme.base.spacing}) calc(2 * ${theme.base.spacing}) ${theme.base.spacing};\n `;\n});\nStyledEmailSummaryListHeader.defaultProps = defaultThemeProp;\n\nconst StyledActionWrapper = styled(Flex)(({ theme }) => {\n return css`\n padding-block-start: ${theme.base.spacing};\n `;\n});\nStyledActionWrapper.defaultProps = defaultThemeProp;\n\nconst StyledFilterButton = styled(Button)`\n margin-inline-start: auto;\n`;\n\nconst StyledEmailSummaryList = styled.div(({ theme }) => {\n return css`\n height: 100%;\n overflow-y: auto;\n\n &:focus-visible {\n outline: none;\n }\n\n &:focus {\n ${StyledEmailSummaryItem}[data-current='true'] {\n box-shadow: inset ${theme.base.shadow.focus};\n }\n }\n `;\n});\nStyledEmailSummaryList.defaultProps = defaultThemeProp;\n\nconst EmailSummaryList: FunctionComponent<EmailSummaryListProps & ForwardProps> = forwardRef(\n (\n {\n categories,\n onCategoryClick,\n items,\n unreadEmailCount,\n filters,\n onFilterChange,\n onItemClick,\n ...restProps\n },\n ref: EmailSummaryListProps['ref']\n ) => {\n const t = useI18n();\n const tablistRef = useConsolidatedRef(ref);\n const tabRefs = items.map(() => createRef<HTMLButtonElement>());\n const [focusDescendant, setFocusDescendant] = useState<HTMLElement | null>(null);\n const previousActiveDescendant = useRef<HTMLElement | undefined>();\n const [listHasBeenViewed, setListHasBeenViewed] = useState(false);\n const [clickOnInitialView, setClickOnInitialView] = useState(false);\n\n const uadConfig = useMemo<UseActiveDescendantConfig>(\n () => ({\n focusEl: tablistRef.current,\n scope: tablistRef.current,\n selector: 'button[role=\"tab\"]',\n focusDescendantEl: focusDescendant,\n clearFocusDescendant: () => {\n setFocusDescendant(null);\n tablistRef.current?.focus();\n },\n pauseDescendantEvaluation: !listHasBeenViewed\n }),\n [tablistRef.current, focusDescendant, listHasBeenViewed]\n );\n\n const { activeDescendant } = useActiveDescendant(uadConfig);\n\n // Trigger click of new active descendant\n useEffect(() => {\n const hasPreviousOrClickInitial = previousActiveDescendant.current || clickOnInitialView;\n\n if (hasPreviousOrClickInitial && activeDescendant) {\n activeDescendant.click();\n }\n\n previousActiveDescendant.current = activeDescendant;\n }, [activeDescendant]);\n\n const buttonText = useMemo(() => {\n return (\n menuHelpers.getSelected(categories)[0]?.primary ??\n menuHelpers.flatten(categories)[0].primary\n );\n }, [categories]);\n\n return (\n <StyledEmailSummaryListContainer container={{ direction: 'column' }} {...restProps}>\n <StyledEmailSummaryListHeader>\n <Text variant='h2'>{t('inbox')}</Text>\n <StyledActionWrapper container={{ alignItems: 'center', gap: 0.5 }}>\n <MenuButton\n text={buttonText}\n variant='text'\n menu={{\n mode: 'single-select',\n items: categories,\n onItemClick: onCategoryClick\n }}\n />\n {unreadEmailCount && (\n <Count aria-label={`${t('unread_email_count')}${unreadEmailCount}`} variant='default'>\n {unreadEmailCount}\n </Count>\n )}\n <StyledFilterButton variant='simple' label={t('email_filters')} icon>\n <Icon name='filter' />\n </StyledFilterButton>\n </StyledActionWrapper>\n </StyledEmailSummaryListHeader>\n\n <StyledEmailSummaryList\n role='tablist'\n tabIndex={0}\n ref={tablistRef}\n onFocus={e => {\n if (!listHasBeenViewed && e.target.getAttribute('role') === 'tablist') {\n setClickOnInitialView(true);\n setListHasBeenViewed(true);\n }\n }}\n >\n {items.map((emailItem, i) => {\n const { id, ...emailItemProps } = emailItem;\n return (\n <EmailSummaryItem\n ref={tabRefs[i]}\n id={id}\n key={id}\n role='tab'\n {...emailItemProps}\n onClick={(e: MouseEvent) => {\n const mouseClick = e.detail !== 0;\n\n if (mouseClick) {\n const target = e.target as HTMLElement;\n const focusAtEl =\n target.getAttribute('role') === 'tab'\n ? target\n : target.closest('button[role=\"tab\"]');\n if (focusAtEl) setFocusDescendant(focusAtEl as HTMLElement);\n\n if (!listHasBeenViewed) {\n if (i === 0) setClickOnInitialView(true);\n setListHasBeenViewed(true);\n }\n }\n // Click is triggered by active descendant change, 'enter', & duplicate click\n if (!mouseClick || activeDescendant?.id === id) {\n onItemClick(id);\n }\n }}\n active={activeDescendant && activeDescendant.id === id}\n />\n );\n })}\n </StyledEmailSummaryList>\n </StyledEmailSummaryListContainer>\n );\n }\n);\n\nexport default EmailSummaryList;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FeedNewPost.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPost.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,EAAE,EAA6C,MAAM,OAAO,CAAC;AAGhF,OAAO,EAaL,YAAY,EAGb,MAAM,yBAAyB,CAAC;AAGjC,OAA4B,EAE1B,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAwB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKnE,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,sFAAsF;IACtF,eAAe,EAAE;QACf,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,sGAAsG;IACtG,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAChD,yEAAyE;IACzE,MAAM,EAAE,CAAC,KAAK,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,aAAa,EAAE,CAAC;QAC7B,UAAU,EAAE,iBAAiB,EAAE,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,KAAK,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yCAAyC;IACzC,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7C,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,sBAAsB,yGAYjC,CAAC;AAIH,eAAO,MAAM,iBAAiB,yGAU5B,CAAC;AAQH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,YAAY,GAAG,gBAAgB,CA+IpD,CAAC;AAEF,eAAe,WAAW,CAAC"}
1
+ {"version":3,"file":"FeedNewPost.d.ts","sourceRoot":"","sources":["../../../src/components/Feed/FeedNewPost.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAY,EAAE,EAAkC,MAAM,OAAO,CAAC;AAGrE,OAAO,EAaL,YAAY,EAIb,MAAM,yBAAyB,CAAC;AAGjC,OAA4B,EAE1B,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAwB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAKnE,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,iCAAiC;IACjC,WAAW,CAAC,EAAE,aAAa,EAAE,CAAC;IAC9B,sFAAsF;IACtF,eAAe,EAAE;QACf,mBAAmB,EAAE,MAAM,CAAC;QAC5B,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,sGAAsG;IACtG,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,EAAE,KAAK,IAAI,CAAC;IAChD,yEAAyE;IACzE,MAAM,EAAE,CAAC,KAAK,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,EAAE,aAAa,EAAE,CAAC;QAC7B,UAAU,EAAE,iBAAiB,EAAE,CAAC;QAChC,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,IAAI,CAAC;KACnB,KAAK,IAAI,CAAC;IACX,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yCAAyC;IACzC,UAAU,CAAC,EAAE,iBAAiB,CAAC,YAAY,CAAC,CAAC;IAC7C,0DAA0D;IAC1D,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD;AAED,eAAO,MAAM,sBAAsB,yGAYjC,CAAC;AAIH,eAAO,MAAM,iBAAiB,yGAU5B,CAAC;AAQH,QAAA,MAAM,WAAW,EAAE,EAAE,CAAC,YAAY,GAAG,gBAAgB,CAiJpD,CAAC;AAEF,eAAe,WAAW,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useState, useRef, useContext, useEffect } from 'react';
2
+ import { useState, useRef, useContext } from 'react';
3
3
  import styled, { css } from 'styled-components';
4
- import { Avatar, Button, CardContent, Flex, Icon, StyledIcon, StyledCard, StyledPopover, defaultThemeProp, useAutoResize, useElement, useOuterEvent, useI18n, ExpandCollapse } from '@pega/cosmos-react-core';
4
+ import { Avatar, Button, CardContent, Flex, Icon, StyledIcon, StyledCard, StyledPopover, defaultThemeProp, useAutoResize, useElement, useOuterEvent, useI18n, ExpandCollapse, useAfterInitialEffect } from '@pega/cosmos-react-core';
5
5
  import { StyledRichTextEditor } from '@pega/cosmos-react-rte';
6
6
  import FeedNewPostTypeMenu from './FeedNewPostTypeMenu';
7
7
  import FeedAttachments from './FeedAttachments';
@@ -56,7 +56,7 @@ const FeedNewPost = (props) => {
56
56
  });
57
57
  const t = useI18n();
58
58
  const handlePost = () => {
59
- if (!emptyText || attachments.length > 0) {
59
+ if ((!emptyText || attachments.length > 0) && attachments.every(x => !x.error)) {
60
60
  onPost({
61
61
  newPostId: id,
62
62
  value: rteRef.current?.getPlainText() || '',
@@ -70,7 +70,7 @@ const FeedNewPost = (props) => {
70
70
  });
71
71
  }
72
72
  };
73
- useEffect(() => {
73
+ useAfterInitialEffect(() => {
74
74
  if (postType === 'post') {
75
75
  rteRef.current?.focus();
76
76
  }
@@ -78,7 +78,7 @@ const FeedNewPost = (props) => {
78
78
  setSelectedRecipients([]);
79
79
  }
80
80
  }, [postType]);
81
- return (_jsx(StyledCard, Object.assign({ ref: setNewPostEl, as: StyledFeedNewPost }, restProps, { children: _jsxs(CardContent, { children: [onRecipientSearch && (_jsx(FeedNewPostTypeMenu, { recipients: recipients || [], onSetPostType: setPostType, onSelectedRecipientsUpdate: setSelectedRecipients, onRecipientSearch: onRecipientSearch, reset: resetPostTypeMenu, onReset: () => setResetPostTypeMenu(false) }, void 0)), _jsxs(Flex, Object.assign({ container: { alignItems: 'start', gap: 1 } }, { children: [_jsx(Avatar, { name: fullname, size: 'l', imageSrc: avatarSrc }, void 0), _jsx(StyledTextAreaOverflow, Object.assign({ ref: textAreaRef }, { children: _jsx(FeedRichText, { onChange: () => {
81
+ return (_jsx(StyledCard, Object.assign({ ref: setNewPostEl, as: StyledFeedNewPost }, restProps, { children: _jsxs(CardContent, { children: [onRecipientSearch && (_jsx(FeedNewPostTypeMenu, { recipients: recipients || [], onSetPostType: setPostType, onSelectedRecipientsUpdate: setSelectedRecipients, onRecipientSearch: onRecipientSearch, reset: resetPostTypeMenu, onReset: () => setResetPostTypeMenu(false) }, void 0)), _jsxs(Flex, Object.assign({ container: { alignItems: 'start', gap: 1 } }, { children: [_jsx(Avatar, { name: fullname, size: 'l', imageSrc: avatarSrc }, void 0), _jsx(StyledTextAreaOverflow, Object.assign({ ref: textAreaRef }, { children: _jsx(FeedRichText, { label: t('feed_new_post'), labelHidden: true, onChange: () => {
82
82
  setEmptyText(rteRef.current?.getPlainText().trim() === '');
83
83
  resizeTextArea();
84
84
  }, placeholder: textAreaPlaceholder, autoFocus: autoFocus, onSubmit: handlePost, onFocus: () => setHasFocus(true), onBlur: () => setHasFocus(false), ref: rteRef }, void 0) }), void 0), !emptyText && (_jsx(Button, Object.assign({ variant: 'simple', as: FeedButton, onClick: rteRef.current?.clear, icon: true, label: t('feed_cancel_conversation') }, { children: _jsx(Icon, { name: 'times' }, void 0) }), void 0)), onFilesAdded && (_jsx(Button, Object.assign({ variant: 'simple', as: FeedButton, onClick: () => attachmentEl?.click(), icon: true, label: t('attachment') }, { children: _jsx(Icon, { name: 'paper-clip' }, void 0) }), void 0))] }), void 0), _jsx(HiddenFileInput, { ref: setAttachmentEl, type: 'file', multiple: true, onChange: () => {
@@ -89,7 +89,7 @@ const FeedNewPost = (props) => {
89
89
  // Must trick input to believe there is no value when activated so that the same file may be added consecutively.
90
90
  onClick: (event) => {
91
91
  event.target.value = '';
92
- } }, void 0), _jsx(FeedAttachments, { attachments: attachments }, void 0), _jsx(ExpandCollapse, Object.assign({ collapsed: !hasFocus && emptyText && !attachments.length }, { children: _jsx(Flex, Object.assign({ container: { justify: 'end' } }, { children: _jsx(Button, Object.assign({ variant: 'primary', disabled: emptyText && attachments.length === 0, onClick: handlePost }, { children: postLabel }), void 0) }), void 0) }), void 0)] }, void 0) }), void 0));
92
+ } }, void 0), _jsx(FeedAttachments, { attachments: attachments }, void 0), _jsx(ExpandCollapse, Object.assign({ collapsed: !hasFocus && emptyText && !attachments.length }, { children: _jsx(Flex, Object.assign({ container: { justify: 'end' } }, { children: _jsx(Button, Object.assign({ variant: 'primary', disabled: (emptyText && attachments.length === 0) || attachments.some(x => x.error), onClick: handlePost }, { children: postLabel }), void 0) }), void 0) }), void 0)] }, void 0) }), void 0));
93
93
  };
94
94
  export default FeedNewPost;
95
95
  //# sourceMappingURL=FeedNewPost.js.map
@@ -1 +1 @@
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, 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, StyledRichTextEditor } 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\nexport const StyledTextAreaOverflow = styled.div(({ theme }) => {\n return css`\n overflow-y: hidden;\n margin-top: ${theme.base.spacing};\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 [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 (emptyText) 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', gap: 1 }}>\n <Avatar name={fullname} size='l' imageSrc={avatarSrc} />\n\n <StyledTextAreaOverflow ref={textAreaRef}>\n <FeedRichText\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={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 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';\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\nexport const StyledTextAreaOverflow = styled.div(({ theme }) => {\n return css`\n overflow-y: hidden;\n margin-top: ${theme.base.spacing};\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 [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 (emptyText) rteRef.current?.clear();\n });\n\n const t = useI18n();\n\n const handlePost = () => {\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 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={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) || 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;AAwLD,QAAA,MAAM,mBAAmB,iGAOtB,iBAAiB,gBAwanB,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,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useRef, useMemo, useEffect, useCallback, useReducer } from 'react';
3
3
  import styled, { css } from 'styled-components';
4
- import { Button, Text, StyledPrimary, StyledMenuItem, Icon, StyledIcon, useElement, useOuterEvent, Popover, Menu, Status, defaultThemeProp, createUID } from '@pega/cosmos-react-core';
5
- 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';
6
6
  import MultiSelectInput from '@pega/cosmos-react-core/lib/components/ComboBox/MultiSelectInput/MultiSelectInput';
7
7
  const StyledPopoverContent = styled.div(({ theme }) => {
8
8
  const { base: { spacing } } = theme;
@@ -332,7 +332,7 @@ const FeedNewPostTypeMenu = ({ recipients, onSetPostType, onSelectedRecipientsUp
332
332
  }
333
333
  }
334
334
  }, [state.viewingRecipients]);
335
- useEffect(() => {
335
+ useAfterInitialEffect(() => {
336
336
  onSetPostType(state.postType);
337
337
  dispatch({ type: 'updateTypeMenuItems' });
338
338
  if (state.postType === 'private') {