@pega/cosmos-react-work 8.0.0-build.2.0 → 8.0.0-build.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/components/AppAnnouncement/AppAnnouncement.d.ts +3 -3
- package/lib/components/AppAnnouncement/AppAnnouncement.d.ts.map +1 -1
- package/lib/components/AppAnnouncement/AppAnnouncement.js.map +1 -1
- package/lib/components/Article/Article.d.ts +2 -6
- package/lib/components/Article/Article.d.ts.map +1 -1
- package/lib/components/Article/Article.js +2 -7
- package/lib/components/Article/Article.js.map +1 -1
- package/lib/components/Article/ArticleMeta.js.map +1 -1
- package/lib/components/ArticleList/AIArticleSummary.d.ts +1 -2
- package/lib/components/ArticleList/AIArticleSummary.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleBuddy.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleBuddy.js.map +1 -1
- package/lib/components/ArticleList/ArticleBuddyList.d.ts +0 -1
- package/lib/components/ArticleList/ArticleBuddyList.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleBuddyResponse.d.ts +3 -3
- package/lib/components/ArticleList/ArticleBuddyResponse.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleBuddyResponse.js +7 -8
- package/lib/components/ArticleList/ArticleBuddyResponse.js.map +1 -1
- package/lib/components/ArticleList/ArticleFeedback.d.ts +1 -2
- package/lib/components/ArticleList/ArticleFeedback.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleFeedback.js.map +1 -1
- package/lib/components/ArticleList/ArticleList.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleList.js +1 -1
- package/lib/components/ArticleList/ArticleList.js.map +1 -1
- package/lib/components/ArticleList/ArticleList.types.d.ts +9 -5
- package/lib/components/ArticleList/ArticleList.types.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleList.types.js.map +1 -1
- package/lib/components/ArticleList/ArticleListFilter.js.map +1 -1
- package/lib/components/ArticleList/ArticleListHeader.d.ts +1 -1
- package/lib/components/ArticleList/ArticleListHeader.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleListHeader.js +1 -1
- package/lib/components/ArticleList/ArticleListHeader.js.map +1 -1
- package/lib/components/ArticleList/ArticleSemanticSearch.d.ts +0 -1
- package/lib/components/ArticleList/ArticleSemanticSearch.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleSemanticSearch.js +11 -4
- package/lib/components/ArticleList/ArticleSemanticSearch.js.map +1 -1
- package/lib/components/ArticleList/ArticleSummaryHeader.js +1 -1
- package/lib/components/ArticleList/ArticleSummaryHeader.js.map +1 -1
- package/lib/components/ArticleList/ArticleTag.d.ts +0 -1
- package/lib/components/ArticleList/ArticleTag.d.ts.map +1 -1
- package/lib/components/ArticleList/ArticleTag.js +3 -3
- package/lib/components/ArticleList/ArticleTag.js.map +1 -1
- package/lib/components/ArticleList/QuestionList.d.ts +1 -2
- package/lib/components/ArticleList/QuestionList.d.ts.map +1 -1
- package/lib/components/ArticleList/QuestionList.js +1 -1
- package/lib/components/ArticleList/QuestionList.js.map +1 -1
- package/lib/components/ArticleList/RelatedQuestions.d.ts +19 -0
- package/lib/components/ArticleList/RelatedQuestions.d.ts.map +1 -0
- package/lib/components/ArticleList/RelatedQuestions.js +40 -0
- package/lib/components/ArticleList/RelatedQuestions.js.map +1 -0
- package/lib/components/Assignments/Assignments.js +1 -1
- package/lib/components/Assignments/Assignments.js.map +1 -1
- package/lib/components/Assignments/Assignments.styles.d.ts +3 -4
- package/lib/components/Assignments/Assignments.styles.d.ts.map +1 -1
- package/lib/components/CasePreview/CasePreview.d.ts +4 -4
- package/lib/components/CasePreview/CasePreview.d.ts.map +1 -1
- package/lib/components/CasePreview/CasePreview.js.map +1 -1
- package/lib/components/CasePreview/CasePreview.test-ids.d.ts +1 -1
- package/lib/components/CasePreview/CasePreview.test-ids.d.ts.map +1 -1
- package/lib/components/CaseView/CaseHeader/CaseHeader.js +1 -1
- package/lib/components/CaseView/CaseHeader/CaseHeader.js.map +1 -1
- package/lib/components/CaseView/CaseHeader/Summary.d.ts +1 -1
- package/lib/components/CaseView/CaseHeader/Summary.d.ts.map +1 -1
- package/lib/components/CaseView/CaseHeader/Summary.js.map +1 -1
- package/lib/components/CaseView/CaseView.context.d.ts +0 -1
- package/lib/components/CaseView/CaseView.context.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.d.ts +1 -1
- package/lib/components/CaseView/CaseView.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.js +11 -14
- package/lib/components/CaseView/CaseView.js.map +1 -1
- package/lib/components/CaseView/CaseView.styles.d.ts +13 -13
- package/lib/components/CaseView/CaseView.styles.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.styles.js +22 -10
- package/lib/components/CaseView/CaseView.styles.js.map +1 -1
- package/lib/components/CaseView/CaseView.test-ids.d.ts +1 -1
- package/lib/components/CaseView/CaseView.test-ids.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.types.d.ts +2 -0
- package/lib/components/CaseView/CaseView.types.d.ts.map +1 -1
- package/lib/components/CaseView/CaseView.types.js.map +1 -1
- package/lib/components/CaseView/UtilitiesSummary.d.ts +1 -0
- package/lib/components/CaseView/UtilitiesSummary.d.ts.map +1 -1
- package/lib/components/CaseView/UtilitiesSummary.js +61 -5
- package/lib/components/CaseView/UtilitiesSummary.js.map +1 -1
- package/lib/components/CaseView/UtilitySummaryItemDialog.d.ts +0 -1
- package/lib/components/CaseView/UtilitySummaryItemDialog.d.ts.map +1 -1
- package/lib/components/CaseView/UtilitySummaryItemDialog.js +1 -1
- package/lib/components/CaseView/UtilitySummaryItemDialog.js.map +1 -1
- package/lib/components/ConfigurableLayout/ConfigurableLayout.d.ts +0 -1
- package/lib/components/ConfigurableLayout/ConfigurableLayout.d.ts.map +1 -1
- package/lib/components/ConfigurableLayout/ConfigurableLayout.js.map +1 -1
- package/lib/components/ConfigurableLayout/ConfigurableLayout.types.d.ts +0 -1
- package/lib/components/ConfigurableLayout/ConfigurableLayout.types.d.ts.map +1 -1
- package/lib/components/ConfigurableLayout/LayoutCell.d.ts +1 -2
- package/lib/components/ConfigurableLayout/LayoutCell.d.ts.map +1 -1
- package/lib/components/ConfigurableLayout/LayoutCell.js.map +1 -1
- package/lib/components/ConfigurableLayout/useTrackWrappedRegions.d.ts.map +1 -1
- package/lib/components/ConfigurableLayout/useTrackWrappedRegions.js.map +1 -1
- package/lib/components/Confirmation/Confirmation.d.ts +3 -3
- package/lib/components/Confirmation/Confirmation.d.ts.map +1 -1
- package/lib/components/Confirmation/Confirmation.js.map +1 -1
- package/lib/components/Details/Details.d.ts +4 -4
- package/lib/components/Details/Details.d.ts.map +1 -1
- package/lib/components/Details/Details.js +2 -2
- package/lib/components/Details/Details.js.map +1 -1
- package/lib/components/Details/Details.styles.d.ts +1 -1
- package/lib/components/Details/Details.test-ids.d.ts +1 -1
- package/lib/components/Details/Details.test-ids.d.ts.map +1 -1
- package/lib/components/Details/DetailsContext.d.ts +0 -1
- package/lib/components/Details/DetailsContext.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.d.ts +1 -1
- package/lib/components/GenAICoach/GenAICoach.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.js +5 -5
- package/lib/components/GenAICoach/GenAICoach.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.styles.d.ts +12 -12
- package/lib/components/GenAICoach/GenAICoach.styles.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.styles.js +14 -0
- package/lib/components/GenAICoach/GenAICoach.styles.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.d.ts +1 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.js +4 -1
- package/lib/components/GenAICoach/GenAICoach.test-ids.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.types.d.ts +8 -1
- package/lib/components/GenAICoach/GenAICoach.types.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.types.js.map +1 -1
- package/lib/components/GenAICoach/GenAICoach.utils.d.ts +1 -1
- package/lib/components/GenAICoach/GenAICoach.utils.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAIMessage.d.ts.map +1 -1
- package/lib/components/GenAICoach/GenAIMessage.js +74 -12
- package/lib/components/GenAICoach/GenAIMessage.js.map +1 -1
- package/lib/components/GenAICoach/InitialSuggestedMessage.js +1 -1
- package/lib/components/GenAICoach/InitialSuggestedMessage.js.map +1 -1
- package/lib/components/Glimpse/Glimpse.d.ts +3 -3
- package/lib/components/Glimpse/Glimpse.d.ts.map +1 -1
- package/lib/components/Glimpse/Glimpse.js.map +1 -1
- package/lib/components/HierarchicalAssignments/AssignmentContainer.d.ts +2 -3
- package/lib/components/HierarchicalAssignments/AssignmentContainer.d.ts.map +1 -1
- package/lib/components/HierarchicalAssignments/AssignmentContainer.js.map +1 -1
- package/lib/components/HierarchicalAssignments/AssignmentDetail.d.ts +1 -2
- package/lib/components/HierarchicalAssignments/AssignmentDetail.d.ts.map +1 -1
- package/lib/components/HierarchicalAssignments/AssignmentItem.d.ts +3 -4
- package/lib/components/HierarchicalAssignments/AssignmentItem.d.ts.map +1 -1
- package/lib/components/HierarchicalAssignments/Assignments.styles.d.ts +22 -23
- package/lib/components/HierarchicalAssignments/Assignments.styles.d.ts.map +1 -1
- package/lib/components/HierarchicalAssignments/Assignments.styles.js +5 -1
- package/lib/components/HierarchicalAssignments/Assignments.styles.js.map +1 -1
- package/lib/components/HierarchicalAssignments/HierarchicalAssignments.d.ts +2 -3
- package/lib/components/HierarchicalAssignments/HierarchicalAssignments.d.ts.map +1 -1
- package/lib/components/HierarchicalAssignments/HierarchicalAssignments.js.map +1 -1
- package/lib/components/HierarchicalAssignments/HierarchicalAssignments.test-ids.d.ts +3 -3
- package/lib/components/HierarchicalAssignments/HierarchicalAssignments.test-ids.d.ts.map +1 -1
- package/lib/components/IntelligentGuidance/IntelligentGuidance.d.ts +2 -3
- package/lib/components/IntelligentGuidance/IntelligentGuidance.d.ts.map +1 -1
- package/lib/components/IntelligentGuidance/IntelligentGuidance.js.map +1 -1
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts +2 -3
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.d.ts.map +1 -1
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js +0 -9
- package/lib/components/IntelligentGuidance/IntelligentGuidance.styles.js.map +1 -1
- package/lib/components/InteractionNotification/CountdownButton.d.ts +3 -3
- package/lib/components/InteractionNotification/CountdownButton.d.ts.map +1 -1
- package/lib/components/InteractionNotification/CountdownButton.js +1 -1
- package/lib/components/InteractionNotification/CountdownButton.js.map +1 -1
- package/lib/components/InteractionNotification/InteractionNotification.d.ts +3 -3
- package/lib/components/InteractionNotification/InteractionNotification.d.ts.map +1 -1
- package/lib/components/InteractionNotification/InteractionNotification.js.map +1 -1
- package/lib/components/Predictions/Predictions.d.ts +2 -3
- package/lib/components/Predictions/Predictions.d.ts.map +1 -1
- package/lib/components/Predictions/Predictions.js +1 -0
- package/lib/components/Predictions/Predictions.js.map +1 -1
- package/lib/components/SearchResults/ActiveFilter.d.ts +1 -2
- package/lib/components/SearchResults/ActiveFilter.d.ts.map +1 -1
- package/lib/components/SearchResults/Filter.d.ts.map +1 -1
- package/lib/components/SearchResults/Filter.js.map +1 -1
- package/lib/components/SearchResults/SearchResult.d.ts.map +1 -1
- package/lib/components/SearchResults/SearchResults.d.ts +2 -3
- package/lib/components/SearchResults/SearchResults.d.ts.map +1 -1
- package/lib/components/SearchResults/SearchResults.js +1 -2
- package/lib/components/SearchResults/SearchResults.js.map +1 -1
- package/lib/components/SearchResults/SearchResults.styles.d.ts +1 -2
- package/lib/components/SearchResults/SearchResults.styles.d.ts.map +1 -1
- package/lib/components/Stages/StageGlimpse.js +1 -1
- package/lib/components/Stages/StageGlimpse.js.map +1 -1
- package/lib/components/Stages/Stages.d.ts +2 -3
- package/lib/components/Stages/Stages.d.ts.map +1 -1
- package/lib/components/Stages/Stages.js.map +1 -1
- package/lib/components/Stages/Stages.styles.d.ts +4 -5
- package/lib/components/Stages/Stages.styles.d.ts.map +1 -1
- package/lib/components/Stakeholders/StakeholderForm.d.ts +1 -2
- package/lib/components/Stakeholders/StakeholderForm.d.ts.map +1 -1
- package/lib/components/Stakeholders/StakeholderForm.js.map +1 -1
- package/lib/components/Stakeholders/Stakeholders.d.ts +2 -3
- package/lib/components/Stakeholders/Stakeholders.d.ts.map +1 -1
- package/lib/components/Stakeholders/Stakeholders.js +37 -26
- package/lib/components/Stakeholders/Stakeholders.js.map +1 -1
- package/lib/components/Tags/Tags.d.ts +5 -5
- package/lib/components/Tags/Tags.d.ts.map +1 -1
- package/lib/components/Tags/Tags.js.map +1 -1
- package/lib/components/Tasks/TaskList.d.ts +7 -7
- package/lib/components/Tasks/TaskList.d.ts.map +1 -1
- package/lib/components/Tasks/TaskList.js.map +1 -1
- package/lib/components/Tasks/Tasks.d.ts +3 -3
- package/lib/components/Tasks/Tasks.d.ts.map +1 -1
- package/lib/components/Tasks/Tasks.js.map +1 -1
- package/lib/components/Tasks/Tasks.test-ids.d.ts +3 -3
- package/lib/components/Tasks/Tasks.test-ids.d.ts.map +1 -1
- package/lib/components/Timeline/Timeline.d.ts +2 -3
- package/lib/components/Timeline/Timeline.d.ts.map +1 -1
- package/lib/components/Timeline/Timeline.js.map +1 -1
- package/lib/components/Timeline/Timeline.styles.d.ts +5 -6
- package/lib/components/Timeline/Timeline.styles.d.ts.map +1 -1
- package/lib/components/Timeline/TimelineItem.js +2 -2
- package/lib/components/Timeline/TimelineItem.js.map +1 -1
- package/lib/components/Timeline/TimelineToolbar.d.ts +2 -3
- package/lib/components/Timeline/TimelineToolbar.d.ts.map +1 -1
- package/lib/components/Timeline/TimelineToolbar.js.map +1 -1
- package/lib/components/Timeline/utils.js.map +1 -1
- package/lib/components/UtilitiesLayout/UtilitiesLayout.js.map +1 -1
- package/lib/components/UtilitiesLayout/UtilitiesLayout.styles.d.ts +3 -3
- package/lib/components/UtilitiesLayout/UtilitiesLayout.styles.d.ts.map +1 -1
- package/package.json +10 -9
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Confirmation.js","sourceRoot":"","sources":["../../../src/components/Confirmation/Confirmation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"Confirmation.js","sourceRoot":"","sources":["../../../src/components/Confirmation/Confirmation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAEhD,OAAO,EACL,IAAI,EACJ,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,aAAa,EACb,MAAM,EACN,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAOjC,OAAO,EAAE,aAAa,EAAE,0BAA0B,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEvF,MAAM,mBAAmB,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;;CAEhD,CAAC;AAEF,mBAAmB,CAAC,YAAY,GAAG,gBAAgB,CAAC;AAiBpD,MAAM,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE;IAChD,OAAO,GAAG,CAAA;QACJ,aAAa,MAAM,0BAA0B;;;GAGlD,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAuD,UAAU,CACjF,SAAS,YAAY,CACnB,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,EAAsC,EAC/F,GAAG;IAEH,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAElD,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,EAAE;QACnC,OAAO;YACL,GAAG,cAAc;YACjB,KAAK,EAAE,CAAC;SACT,CAAC;IACJ,CAAC,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC;IAErB,OAAO,CACL,KAAC,IAAI,OAAK,SAAS,EAAE,GAAG,EAAE,GAAG,YAC3B,KAAC,WAAW,cACV,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,aAC7C,KAAK,IAAI,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,YAAE,KAAK,GAAQ,EAE1C,OAAO,IAAI,CACV,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,eAAe,YAC7C,KAAC,yBAAyB,cAAE,OAAO,GAA6B,GACxC,CAC3B,EAEA,SAAS,IAAI,CACZ,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,aAC9C,KAAC,IAAI,IAAC,OAAO,EAAC,IAAI,YAAE,CAAC,CAAC,yBAAyB,CAAC,GAAQ,EACxD,KAAC,mBAAmB,IAAC,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,mBAAmB,GAAI,IAC7D,CACR,EAEA,KAAK,EAEL,OAAO,IAAI,CACV,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,YACjC,MAAC,MAAM,IAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAC,SAAS,aACxC,CAAC,CAAC,MAAM,CAAC,EACT,KAAK,CAAC,CAAC,CAAC,KAAC,kBAAkB,cAAE,KAAK,KAAK,EAAE,GAAsB,CAAC,CAAC,CAAC,IAAI,IAChE,GACJ,CACR,IACI,GACK,GACT,CACR,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,YAAY,CAAC","sourcesContent":["import { forwardRef, useContext, useMemo } from 'react';\nimport type { PropsWithoutRef, ReactNode, Ref } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Card,\n CardContent,\n Flex,\n Text,\n useI18n,\n UnorderedList,\n Button,\n defaultThemeProp,\n VisuallyHiddenText\n} from '@pega/cosmos-react-core';\nimport type {\n ForwardRefForwardPropsComponent,\n UnorderedListProps,\n NoChildrenProp\n} from '@pega/cosmos-react-core';\n\nimport { StyledDetails, StyledFieldValueGroupLabel, DetailsContext } from '../Details';\n\nconst StyledWhatsNextList = styled(UnorderedList)`\n padding-inline-start: 0;\n`;\n\nStyledWhatsNextList.defaultProps = defaultThemeProp;\n\nexport interface ConfirmationProps extends NoChildrenProp {\n /** The title of the confirmation */\n title?: string;\n /** Region for a Field Value List component */\n details?: ReactNode;\n /** Array of React nodes to be put into a list */\n whatsNext?: UnorderedListProps['items'];\n /** Region for a Tasks component */\n tasks?: ReactNode;\n /** Called when the done/close button is clicked */\n onClose?: () => void;\n /** Ref for the wrapping element. */\n ref?: Ref<HTMLElement>;\n}\n\nconst StyledConfirmationDetails = styled.div(() => {\n return css`\n > ${StyledDetails} > ${StyledFieldValueGroupLabel}:first-child {\n margin-block-start: 0;\n }\n `;\n});\n\nconst Confirmation: ForwardRefForwardPropsComponent<ConfirmationProps> = forwardRef(\n function Confirmation(\n { title, details, whatsNext, tasks, onClose, ...restProps }: PropsWithoutRef<ConfirmationProps>,\n ref\n ) {\n const t = useI18n();\n const detailsContext = useContext(DetailsContext);\n\n const detailsCtxValue = useMemo(() => {\n return {\n ...detailsContext,\n depth: 4\n };\n }, [detailsContext]);\n\n return (\n <Card {...restProps} ref={ref}>\n <CardContent>\n <Flex container={{ gap: 3, direction: 'column' }}>\n {title && <Text variant='h3'>{title}</Text>}\n\n {details && (\n <DetailsContext.Provider value={detailsCtxValue}>\n <StyledConfirmationDetails>{details}</StyledConfirmationDetails>\n </DetailsContext.Provider>\n )}\n\n {whatsNext && (\n <Flex container={{ gap: 1, direction: 'column' }}>\n <Text variant='h4'>{t('confirmation_whats_next')}</Text>\n <StyledWhatsNextList items={whatsNext} as={StyledWhatsNextList} />\n </Flex>\n )}\n\n {tasks}\n\n {onClose && (\n <Flex container={{ justify: 'end' }}>\n <Button onClick={onClose} variant='primary'>\n {t('done')}\n {title ? <VisuallyHiddenText>{`- ${title}`}</VisuallyHiddenText> : null}\n </Button>\n </Flex>\n )}\n </Flex>\n </CardContent>\n </Card>\n );\n }\n);\n\nexport default Confirmation;\n"]}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type { AdditionalInfoProps,
|
|
1
|
+
import type { PropsWithoutRef, ReactNode, Ref } from 'react';
|
|
2
|
+
import type { AdditionalInfoProps, TestIdProp } from '@pega/cosmos-react-core';
|
|
3
3
|
export type DetailsProps = TestIdProp & {
|
|
4
4
|
/**
|
|
5
5
|
* FieldValueItems to display as highlighted data above children
|
|
@@ -46,8 +46,8 @@ export type DetailsProps = TestIdProp & {
|
|
|
46
46
|
additionalInfo?: never;
|
|
47
47
|
collapsible?: never;
|
|
48
48
|
});
|
|
49
|
-
declare const _default:
|
|
50
|
-
getTestIds: (testIdProp?:
|
|
49
|
+
declare const _default: import("react").ForwardRefExoticComponent<PropsWithoutRef<DetailsProps> & import("react").RefAttributes<HTMLDivElement>> & {
|
|
50
|
+
getTestIds: (testIdProp?: TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["heading", "description", "highlighted-data", "data", "expand-collapse"]>;
|
|
51
51
|
};
|
|
52
52
|
export default _default;
|
|
53
53
|
//# sourceMappingURL=Details.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Details.d.ts","sourceRoot":"","sources":["../../../src/components/Details/Details.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"Details.d.ts","sourceRoot":"","sources":["../../../src/components/Details/Details.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAmB7D,OAAO,KAAK,EAAE,mBAAmB,EAAc,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAgB3F,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG;IACtC;;OAEG;IACH,eAAe,CAAC,EAAE,SAAS,EAAE,CAAC;IAC9B,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,OAAO,EACH;QACE,CAAC,EAAE,SAAS,CAAC;QACb,CAAC,CAAC,EAAE,KAAK,CAAC;QACV,CAAC,CAAC,EAAE,KAAK,CAAC;KACX,GACD;QACE,CAAC,EAAE,SAAS,CAAC;QACb,CAAC,EAAE,SAAS,CAAC;QACb,CAAC,CAAC,EAAE,KAAK,CAAC;KACX,GACD;QACE,CAAC,EAAE,SAAS,CAAC;QACb,CAAC,EAAE,SAAS,CAAC;QACb,CAAC,EAAE,SAAS,CAAC;KACd,CAAC;IACN,6BAA6B;IAC7B,WAAW,CAAC,EAAE,YAAY,GAAG,YAAY,CAAC;IAC1C,uCAAuC;IACvC,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;CAC3B,GAAG,CACE;IACE,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,cAAc,CAAC,EAAE;QACf,OAAO,CAAC,EAAE,mBAAmB,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,EAAE,mBAAmB,CAAC,UAAU,CAAC,CAAC;KAC1C,CAAC;IACF;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,GACD;IACE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,cAAc,CAAC,EAAE,KAAK,CAAC;IACvB,WAAW,CAAC,EAAE,KAAK,CAAC;CACrB,CACJ,CAAC;;;;AAwNJ,wBAAuD"}
|
|
@@ -74,7 +74,7 @@ const Details = forwardRef(function Details({ testId, highlightedData, columns,
|
|
|
74
74
|
const content = useMemo(() => {
|
|
75
75
|
let applyColumnCount = columnCount;
|
|
76
76
|
if (columnCount !== 1) {
|
|
77
|
-
if (fitsThreeColumns) {
|
|
77
|
+
if (columnCount === 3 && fitsThreeColumns) {
|
|
78
78
|
applyColumnCount = 3;
|
|
79
79
|
}
|
|
80
80
|
else if (fitsTwoColumns) {
|
|
@@ -104,7 +104,7 @@ const Details = forwardRef(function Details({ testId, highlightedData, columns,
|
|
|
104
104
|
]);
|
|
105
105
|
return (_jsx(DetailsContext.Provider, { value: contextValue, children: _jsxs(StyledDetails, { "data-testid": testIds.root, ref: containerRef, variant: applyVariant, children: [name && (_jsx(StyledFieldValueGroupLabel, { "data-testid": testIds.heading, children: _jsx(Flex, { container: { alignItems: 'center', gap: 0.5 }, children: collapsible ? (_jsxs(_Fragment, { children: [_jsx(Button, { type: 'button', variant: 'text', onClick: () => {
|
|
106
106
|
setOpen(cur => !cur);
|
|
107
|
-
}, "aria-expanded": open
|
|
107
|
+
}, "aria-expanded": open, "aria-label": t(open ? 'collapse_noun' : 'expand_noun', [name]), children: _jsxs(Flex, { container: { alignItems: 'center', gap: 0.5 }, as: 'span', children: [_jsx(Icon, { name: 'caret-right' }), nameText] }) }), additionalInfo] })) : (_jsxs(_Fragment, { children: [nameText, additionalInfo] })) }) })), collapsible ? (_jsx(ExpandCollapse, { "data-testid": testIds.expandCollapse, collapsed: !open, children: content })) : (content)] }) }));
|
|
108
108
|
});
|
|
109
109
|
export default withTestIds(Details, getDetailsTestIds);
|
|
110
110
|
//# sourceMappingURL=Details.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Details.js","sourceRoot":"","sources":["../../../src/components/Details/Details.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, Fragment, useState, useContext, useEffect, useMemo } from 'react';\nimport type { FC, ReactNode, Ref } from 'react';\nimport { remToPx } from 'polished';\n\nimport {\n AdditionalInfo,\n Text,\n useBreakpoint,\n useConsolidatedRef,\n useTheme,\n ExpandCollapse,\n Button,\n Flex,\n Icon,\n useChToPxConversionFactor,\n useI18n,\n HTML,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type {\n AdditionalInfoProps,\n ForwardProps,\n HeadingTag,\n TestIdProp\n} from '@pega/cosmos-react-core';\n\nimport { getDetailsTestIds } from './Details.test-ids';\nimport DetailsContext from './DetailsContext';\nimport {\n StyledFieldValueGroupLabel,\n StyledDetails,\n StyledHighlightedDetailList,\n StyledDetailDescription,\n StyledDetailColumns,\n columnGapMultiplier,\n StyledDetailColumn\n} from './Details.styles';\n\ntype ColumnCount = 1 | 2 | 3;\n\nexport type DetailsProps = TestIdProp & {\n /**\n * FieldValueItems to display as highlighted data above children\n */\n highlightedData?: ReactNode[];\n /** Copy placed in paragraph below the name */\n description?: string;\n /**\n * Template children separated into 1-3 columns {a, b, c}\n */\n columns:\n | {\n a: ReactNode;\n b?: never;\n c?: never;\n }\n | {\n a: ReactNode;\n b: ReactNode;\n c?: never;\n }\n | {\n a: ReactNode;\n b: ReactNode;\n c: ReactNode;\n };\n /** Arrangement of columns */\n arrangement?: 'narrowWide' | 'wideNarrow';\n /** Style variant applied to element */\n variant?: 'field-group';\n ref?: Ref<HTMLDivElement>;\n} & (\n | {\n /** Text used as heading of list */\n name: string;\n /** Pass a heading and content to show additional information on the list */\n additionalInfo?: {\n heading?: AdditionalInfoProps['heading'];\n content: AdditionalInfoProps['children'];\n };\n /**\n * Whether the items children can be collapsed (only applies if name is provided)\n * @default false\n */\n collapsible?: boolean;\n }\n | {\n name?: undefined;\n additionalInfo?: never;\n collapsible?: never;\n }\n );\n\nconst Details: FC<DetailsProps & ForwardProps> = forwardRef(function Details(\n {\n testId,\n highlightedData,\n columns,\n name,\n description,\n arrangement,\n variant,\n collapsible = false,\n additionalInfo: additionalInfoProp\n },\n ref\n) {\n const testIds = useTestIds(testId, getDetailsTestIds);\n const t = useI18n();\n const { longestLabelLength, depth, ...context } = useContext(DetailsContext);\n\n const containerRef = useConsolidatedRef(ref);\n const [open, setOpen] = useState(true);\n\n // Observer and state for mobile.\n const columnCount = (() => {\n let count: ColumnCount = 1;\n\n if (columns.b) count = 2;\n if (columns.c) count = 3;\n\n return count;\n })();\n const {\n base: {\n 'content-width': { sm: smContentWidth }\n }\n } = useTheme();\n const chToPxConversionFactor = useChToPxConversionFactor();\n\n const fitsThreeColumns = useBreakpoint('xl', {\n breakpointRef: containerRef,\n themeProp: 'content-width'\n });\n const fitsTwoColumns = useBreakpoint('md', {\n breakpointRef: containerRef,\n themeProp: 'content-width'\n });\n const [contentMobileView, setContentMobileView] = useState(false);\n\n useEffect(() => {\n const checkBreakpoint = (elementWidth: number) => {\n const minWidthPx = parseInt(smContentWidth, 10) * chToPxConversionFactor;\n const oneRemInPx = parseInt(remToPx(1), 10);\n const colGapPxAllowance = oneRemInPx * (0.5 * columnGapMultiplier) * (columnCount - 1);\n const mobileViewBreakpoint = minWidthPx * columnCount + colGapPxAllowance;\n\n setContentMobileView(elementWidth < mobileViewBreakpoint);\n };\n const resizeObserver = new ResizeObserver(entries => {\n const containerPxWidth = entries[0].contentRect.width;\n checkBreakpoint(containerPxWidth);\n });\n\n if (containerRef.current) {\n checkBreakpoint(containerRef.current.offsetWidth);\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [columnCount]);\n\n // Context\n const headingDepth = depth ?? 1;\n const asFieldGroup = variant === 'field-group' && !!name && !description && !highlightedData;\n\n const contextValue = useMemo(() => {\n return {\n ...context,\n mobileView: contentMobileView,\n depth: name ? headingDepth + 1 : headingDepth,\n inFieldGroup: context.inFieldGroup ? true : asFieldGroup,\n longestLabelLength\n };\n }, [name, headingDepth, longestLabelLength, contentMobileView, asFieldGroup, context]);\n\n // Memoized Elements\n const applyVariant = asFieldGroup ? 'field-group' : undefined;\n\n const nameText = useMemo(() => {\n return <Text variant={`h${Math.min(headingDepth, 6)}` as HeadingTag}>{name}</Text>;\n }, [name, headingDepth]);\n\n const additionalInfo = useMemo(() => {\n return name && additionalInfoProp ? (\n <AdditionalInfo heading={additionalInfoProp.heading} contextualLabel={name}>\n {additionalInfoProp.content}\n </AdditionalInfo>\n ) : undefined;\n }, [name, additionalInfoProp?.heading, additionalInfoProp?.content]);\n\n const content = useMemo(() => {\n let applyColumnCount = columnCount;\n\n if (columnCount !== 1) {\n if (fitsThreeColumns) {\n applyColumnCount = 3;\n } else if (fitsTwoColumns) {\n applyColumnCount = 2;\n } else {\n applyColumnCount = 1;\n }\n }\n\n return (\n <>\n {description && (\n <StyledDetailDescription data-testid={testIds.description}>\n <HTML as='p' content={description} />\n </StyledDetailDescription>\n )}\n\n {highlightedData && (\n <>\n <Flex\n data-testid={testIds.highlightedData}\n as={StyledHighlightedDetailList}\n container={{ wrap: 'wrap', colGap: 10, rowGap: 1, alignItems: 'start' }}\n >\n {highlightedData.map((child, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={i}>{child}</Fragment>\n ))}\n </Flex>\n\n <hr />\n </>\n )}\n\n <Flex\n as={StyledDetailColumns}\n container={{\n direction: 'row',\n colGap: columnGapMultiplier\n }}\n data-testid={testIds.data}\n arrangement={arrangement}\n variant={applyVariant}\n columnCount={applyColumnCount}\n >\n <StyledDetailColumn>{columns.a}</StyledDetailColumn>\n {columns.b && <StyledDetailColumn>{columns.b}</StyledDetailColumn>}\n {columns.c && <StyledDetailColumn>{columns.c}</StyledDetailColumn>}\n </Flex>\n </>\n );\n }, [\n highlightedData,\n columnCount,\n columns.a,\n columns.b,\n columns.c,\n arrangement,\n testIds,\n fitsTwoColumns,\n fitsThreeColumns,\n description\n ]);\n\n return (\n <DetailsContext.Provider value={contextValue}>\n <StyledDetails data-testid={testIds.root} ref={containerRef} variant={applyVariant}>\n {name && (\n <StyledFieldValueGroupLabel data-testid={testIds.heading}>\n <Flex container={{ alignItems: 'center', gap: 0.5 }}>\n {collapsible ? (\n <>\n <Button\n type='button'\n variant='text'\n onClick={() => {\n setOpen(cur => !cur);\n }}\n aria-expanded={open ? 'true' : 'false'}\n aria-label={t(open ? 'collapse_noun' : 'expand_noun', [name])}\n >\n <Flex container={{ alignItems: 'center', gap: 0.5 }} as='span'>\n <Icon name='caret-right' />\n {nameText}\n </Flex>\n </Button>\n {additionalInfo}\n </>\n ) : (\n <>\n {nameText}\n {additionalInfo}\n </>\n )}\n </Flex>\n </StyledFieldValueGroupLabel>\n )}\n\n {collapsible ? (\n <ExpandCollapse data-testid={testIds.expandCollapse} collapsed={!open}>\n {content}\n </ExpandCollapse>\n ) : (\n content\n )}\n </StyledDetails>\n </DetailsContext.Provider>\n );\n});\n\nexport default withTestIds(Details, getDetailsTestIds);\n"]}
|
|
1
|
+
{"version":3,"file":"Details.js","sourceRoot":"","sources":["../../../src/components/Details/Details.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAEvF,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEnC,OAAO,EACL,cAAc,EACd,IAAI,EACJ,aAAa,EACb,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,MAAM,EACN,IAAI,EACJ,IAAI,EACJ,yBAAyB,EACzB,OAAO,EACP,IAAI,EACJ,UAAU,EACV,WAAW,EACZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACvD,OAAO,cAAc,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAC1B,aAAa,EACb,2BAA2B,EAC3B,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,EACnB,MAAM,kBAAkB,CAAC;AAyD1B,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,OAAO,CACzC,EACE,MAAM,EACN,eAAe,EACf,OAAO,EACP,IAAI,EACJ,WAAW,EACX,WAAW,EACX,OAAO,EACP,WAAW,GAAG,KAAK,EACnB,cAAc,EAAE,kBAAkB,EACJ,EAChC,GAAwB;IAExB,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtD,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,kBAAkB,EAAE,KAAK,EAAE,GAAG,OAAO,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IAE7E,MAAM,YAAY,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;IAC7C,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEvC,iCAAiC;IACjC,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE;QACxB,IAAI,KAAK,GAAgB,CAAC,CAAC;QAE3B,IAAI,OAAO,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;QACzB,IAAI,OAAO,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC,CAAC;QAEzB,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,EACJ,IAAI,EAAE,EACJ,eAAe,EAAE,EAAE,EAAE,EAAE,cAAc,EAAE,EACxC,EACF,GAAG,QAAQ,EAAE,CAAC;IACf,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAE3D,MAAM,gBAAgB,GAAG,aAAa,CAAC,IAAI,EAAE;QAC3C,aAAa,EAAE,YAAY;QAC3B,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IACH,MAAM,cAAc,GAAG,aAAa,CAAC,IAAI,EAAE;QACzC,aAAa,EAAE,YAAY;QAC3B,SAAS,EAAE,eAAe;KAC3B,CAAC,CAAC;IACH,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,eAAe,GAAG,CAAC,YAAoB,EAAE,EAAE;YAC/C,MAAM,UAAU,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,GAAG,sBAAsB,CAAC;YACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAC5C,MAAM,iBAAiB,GAAG,UAAU,GAAG,CAAC,GAAG,GAAG,mBAAmB,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;YACvF,MAAM,oBAAoB,GAAG,UAAU,GAAG,WAAW,GAAG,iBAAiB,CAAC;YAE1E,oBAAoB,CAAC,YAAY,GAAG,oBAAoB,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,EAAE;YAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC;YACtD,eAAe,CAAC,gBAAgB,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;YACzB,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAClD,cAAc,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,GAAG,EAAE;YACV,cAAc,CAAC,UAAU,EAAE,CAAC;QAC9B,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAElB,UAAU;IACV,MAAM,YAAY,GAAG,KAAK,IAAI,CAAC,CAAC;IAChC,MAAM,YAAY,GAAG,OAAO,KAAK,aAAa,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,CAAC;IAE7F,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,OAAO;YACL,GAAG,OAAO;YACV,UAAU,EAAE,iBAAiB;YAC7B,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY;YAC7C,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY;YACxD,kBAAkB;SACnB,CAAC;IACJ,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAEvF,oBAAoB;IACpB,MAAM,YAAY,GAAG,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;IAE9D,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE;QAC5B,OAAO,KAAC,IAAI,IAAC,OAAO,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,EAAgB,YAAG,IAAI,GAAQ,CAAC;IACrF,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IAEzB,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,OAAO,IAAI,IAAI,kBAAkB,CAAC,CAAC,CAAC,CAClC,KAAC,cAAc,IAAC,OAAO,EAAE,kBAAkB,CAAC,OAAO,EAAE,eAAe,EAAE,IAAI,YACvE,kBAAkB,CAAC,OAAO,GACZ,CAClB,CAAC,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC,EAAE,CAAC,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC,CAAC;IAErE,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,IAAI,gBAAgB,GAAG,WAAW,CAAC;QAEnC,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,WAAW,KAAK,CAAC,IAAI,gBAAgB,EAAE,CAAC;gBAC1C,gBAAgB,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBAC1B,gBAAgB,GAAG,CAAC,CAAC;YACvB,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,CAAC,CAAC;YACvB,CAAC;QACH,CAAC;QAED,OAAO,CACL,8BACG,WAAW,IAAI,CACd,KAAC,uBAAuB,mBAAc,OAAO,CAAC,WAAW,YACvD,KAAC,IAAI,IAAC,EAAE,EAAC,GAAG,EAAC,OAAO,EAAE,WAAW,GAAI,GACb,CAC3B,EAEA,eAAe,IAAI,CAClB,8BACE,KAAC,IAAI,mBACU,OAAO,CAAC,eAAe,EACpC,EAAE,EAAE,2BAA2B,EAC/B,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,YAEtE,eAAe,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;4BACjC,oDAAoD;4BACpD,KAAC,QAAQ,cAAU,KAAK,IAAT,CAAC,CAAoB,CACrC,CAAC,GACG,EAEP,cAAM,IACL,CACJ,EAED,MAAC,IAAI,IACH,EAAE,EAAE,mBAAmB,EACvB,SAAS,EAAE;wBACT,SAAS,EAAE,KAAK;wBAChB,MAAM,EAAE,mBAAmB;qBAC5B,iBACY,OAAO,CAAC,IAAI,EACzB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,YAAY,EACrB,WAAW,EAAE,gBAAgB,aAE7B,KAAC,kBAAkB,cAAE,OAAO,CAAC,CAAC,GAAsB,EACnD,OAAO,CAAC,CAAC,IAAI,KAAC,kBAAkB,cAAE,OAAO,CAAC,CAAC,GAAsB,EACjE,OAAO,CAAC,CAAC,IAAI,KAAC,kBAAkB,cAAE,OAAO,CAAC,CAAC,GAAsB,IAC7D,IACN,CACJ,CAAC;IACJ,CAAC,EAAE;QACD,eAAe;QACf,WAAW;QACX,OAAO,CAAC,CAAC;QACT,OAAO,CAAC,CAAC;QACT,OAAO,CAAC,CAAC;QACT,WAAW;QACX,OAAO;QACP,cAAc;QACd,gBAAgB;QAChB,WAAW;KACZ,CAAC,CAAC;IAEH,OAAO,CACL,KAAC,cAAc,CAAC,QAAQ,IAAC,KAAK,EAAE,YAAY,YAC1C,MAAC,aAAa,mBAAc,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,aAC/E,IAAI,IAAI,CACP,KAAC,0BAA0B,mBAAc,OAAO,CAAC,OAAO,YACtD,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,YAChD,WAAW,CAAC,CAAC,CAAC,CACb,8BACE,KAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,GAAG,EAAE;wCACZ,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;oCACvB,CAAC,mBACc,IAAI,gBACP,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC,YAE7D,MAAC,IAAI,IAAC,SAAS,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAC,MAAM,aAC5D,KAAC,IAAI,IAAC,IAAI,EAAC,aAAa,GAAG,EAC1B,QAAQ,IACJ,GACA,EACR,cAAc,IACd,CACJ,CAAC,CAAC,CAAC,CACF,8BACG,QAAQ,EACR,cAAc,IACd,CACJ,GACI,GACoB,CAC9B,EAEA,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,cAAc,mBAAc,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,IAAI,YAClE,OAAO,GACO,CAClB,CAAC,CAAC,CAAC,CACF,OAAO,CACR,IACa,GACQ,CAC3B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,eAAe,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC","sourcesContent":["import { forwardRef, Fragment, useState, useContext, useEffect, useMemo } from 'react';\nimport type { PropsWithoutRef, ReactNode, Ref } from 'react';\nimport { remToPx } from 'polished';\n\nimport {\n AdditionalInfo,\n Text,\n useBreakpoint,\n useConsolidatedRef,\n useTheme,\n ExpandCollapse,\n Button,\n Flex,\n Icon,\n useChToPxConversionFactor,\n useI18n,\n HTML,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type { AdditionalInfoProps, HeadingTag, TestIdProp } from '@pega/cosmos-react-core';\n\nimport { getDetailsTestIds } from './Details.test-ids';\nimport DetailsContext from './DetailsContext';\nimport {\n StyledFieldValueGroupLabel,\n StyledDetails,\n StyledHighlightedDetailList,\n StyledDetailDescription,\n StyledDetailColumns,\n columnGapMultiplier,\n StyledDetailColumn\n} from './Details.styles';\n\ntype ColumnCount = 1 | 2 | 3;\n\nexport type DetailsProps = TestIdProp & {\n /**\n * FieldValueItems to display as highlighted data above children\n */\n highlightedData?: ReactNode[];\n /** Copy placed in paragraph below the name */\n description?: string;\n /**\n * Template children separated into 1-3 columns {a, b, c}\n */\n columns:\n | {\n a: ReactNode;\n b?: never;\n c?: never;\n }\n | {\n a: ReactNode;\n b: ReactNode;\n c?: never;\n }\n | {\n a: ReactNode;\n b: ReactNode;\n c: ReactNode;\n };\n /** Arrangement of columns */\n arrangement?: 'narrowWide' | 'wideNarrow';\n /** Style variant applied to element */\n variant?: 'field-group';\n ref?: Ref<HTMLDivElement>;\n} & (\n | {\n /** Text used as heading of list */\n name: string;\n /** Pass a heading and content to show additional information on the list */\n additionalInfo?: {\n heading?: AdditionalInfoProps['heading'];\n content: AdditionalInfoProps['children'];\n };\n /**\n * Whether the items children can be collapsed (only applies if name is provided)\n * @default false\n */\n collapsible?: boolean;\n }\n | {\n name?: undefined;\n additionalInfo?: never;\n collapsible?: never;\n }\n );\n\nconst Details = forwardRef(function Details(\n {\n testId,\n highlightedData,\n columns,\n name,\n description,\n arrangement,\n variant,\n collapsible = false,\n additionalInfo: additionalInfoProp\n }: PropsWithoutRef<DetailsProps>,\n ref: DetailsProps['ref']\n) {\n const testIds = useTestIds(testId, getDetailsTestIds);\n const t = useI18n();\n const { longestLabelLength, depth, ...context } = useContext(DetailsContext);\n\n const containerRef = useConsolidatedRef(ref);\n const [open, setOpen] = useState(true);\n\n // Observer and state for mobile.\n const columnCount = (() => {\n let count: ColumnCount = 1;\n\n if (columns.b) count = 2;\n if (columns.c) count = 3;\n\n return count;\n })();\n const {\n base: {\n 'content-width': { sm: smContentWidth }\n }\n } = useTheme();\n const chToPxConversionFactor = useChToPxConversionFactor();\n\n const fitsThreeColumns = useBreakpoint('xl', {\n breakpointRef: containerRef,\n themeProp: 'content-width'\n });\n const fitsTwoColumns = useBreakpoint('md', {\n breakpointRef: containerRef,\n themeProp: 'content-width'\n });\n const [contentMobileView, setContentMobileView] = useState(false);\n\n useEffect(() => {\n const checkBreakpoint = (elementWidth: number) => {\n const minWidthPx = parseInt(smContentWidth, 10) * chToPxConversionFactor;\n const oneRemInPx = parseInt(remToPx(1), 10);\n const colGapPxAllowance = oneRemInPx * (0.5 * columnGapMultiplier) * (columnCount - 1);\n const mobileViewBreakpoint = minWidthPx * columnCount + colGapPxAllowance;\n\n setContentMobileView(elementWidth < mobileViewBreakpoint);\n };\n const resizeObserver = new ResizeObserver(entries => {\n const containerPxWidth = entries[0].contentRect.width;\n checkBreakpoint(containerPxWidth);\n });\n\n if (containerRef.current) {\n checkBreakpoint(containerRef.current.offsetWidth);\n resizeObserver.observe(containerRef.current);\n }\n\n return () => {\n resizeObserver.disconnect();\n };\n }, [columnCount]);\n\n // Context\n const headingDepth = depth ?? 1;\n const asFieldGroup = variant === 'field-group' && !!name && !description && !highlightedData;\n\n const contextValue = useMemo(() => {\n return {\n ...context,\n mobileView: contentMobileView,\n depth: name ? headingDepth + 1 : headingDepth,\n inFieldGroup: context.inFieldGroup ? true : asFieldGroup,\n longestLabelLength\n };\n }, [name, headingDepth, longestLabelLength, contentMobileView, asFieldGroup, context]);\n\n // Memoized Elements\n const applyVariant = asFieldGroup ? 'field-group' : undefined;\n\n const nameText = useMemo(() => {\n return <Text variant={`h${Math.min(headingDepth, 6)}` as HeadingTag}>{name}</Text>;\n }, [name, headingDepth]);\n\n const additionalInfo = useMemo(() => {\n return name && additionalInfoProp ? (\n <AdditionalInfo heading={additionalInfoProp.heading} contextualLabel={name}>\n {additionalInfoProp.content}\n </AdditionalInfo>\n ) : undefined;\n }, [name, additionalInfoProp?.heading, additionalInfoProp?.content]);\n\n const content = useMemo(() => {\n let applyColumnCount = columnCount;\n\n if (columnCount !== 1) {\n if (columnCount === 3 && fitsThreeColumns) {\n applyColumnCount = 3;\n } else if (fitsTwoColumns) {\n applyColumnCount = 2;\n } else {\n applyColumnCount = 1;\n }\n }\n\n return (\n <>\n {description && (\n <StyledDetailDescription data-testid={testIds.description}>\n <HTML as='p' content={description} />\n </StyledDetailDescription>\n )}\n\n {highlightedData && (\n <>\n <Flex\n data-testid={testIds.highlightedData}\n as={StyledHighlightedDetailList}\n container={{ wrap: 'wrap', colGap: 10, rowGap: 1, alignItems: 'start' }}\n >\n {highlightedData.map((child, i) => (\n // eslint-disable-next-line react/no-array-index-key\n <Fragment key={i}>{child}</Fragment>\n ))}\n </Flex>\n\n <hr />\n </>\n )}\n\n <Flex\n as={StyledDetailColumns}\n container={{\n direction: 'row',\n colGap: columnGapMultiplier\n }}\n data-testid={testIds.data}\n arrangement={arrangement}\n variant={applyVariant}\n columnCount={applyColumnCount}\n >\n <StyledDetailColumn>{columns.a}</StyledDetailColumn>\n {columns.b && <StyledDetailColumn>{columns.b}</StyledDetailColumn>}\n {columns.c && <StyledDetailColumn>{columns.c}</StyledDetailColumn>}\n </Flex>\n </>\n );\n }, [\n highlightedData,\n columnCount,\n columns.a,\n columns.b,\n columns.c,\n arrangement,\n testIds,\n fitsTwoColumns,\n fitsThreeColumns,\n description\n ]);\n\n return (\n <DetailsContext.Provider value={contextValue}>\n <StyledDetails data-testid={testIds.root} ref={containerRef} variant={applyVariant}>\n {name && (\n <StyledFieldValueGroupLabel data-testid={testIds.heading}>\n <Flex container={{ alignItems: 'center', gap: 0.5 }}>\n {collapsible ? (\n <>\n <Button\n type='button'\n variant='text'\n onClick={() => {\n setOpen(cur => !cur);\n }}\n aria-expanded={open}\n aria-label={t(open ? 'collapse_noun' : 'expand_noun', [name])}\n >\n <Flex container={{ alignItems: 'center', gap: 0.5 }} as='span'>\n <Icon name='caret-right' />\n {nameText}\n </Flex>\n </Button>\n {additionalInfo}\n </>\n ) : (\n <>\n {nameText}\n {additionalInfo}\n </>\n )}\n </Flex>\n </StyledFieldValueGroupLabel>\n )}\n\n {collapsible ? (\n <ExpandCollapse data-testid={testIds.expandCollapse} collapsed={!open}>\n {content}\n </ExpandCollapse>\n ) : (\n content\n )}\n </StyledDetails>\n </DetailsContext.Provider>\n );\n});\n\nexport default withTestIds(Details, getDetailsTestIds);\n"]}
|
|
@@ -39,7 +39,7 @@ export declare const StyledHighlightedDetailList: import("styled-components").St
|
|
|
39
39
|
export declare const StyledInlineFieldValueItem: import("styled-components").StyledComponent<"div", DefaultTheme, {}, never>;
|
|
40
40
|
export declare const StyledDetailsList: import("styled-components").StyledComponent<"dl", DefaultTheme, StyledFieldValueListProps & Pick<StyledDetailsListProps, keyof StyledDetailsListProps> & Required<Pick<StyledDetailsListProps, never>>, never>;
|
|
41
41
|
export declare const StyledDetails: import("styled-components").StyledComponent<"div", DefaultTheme, {
|
|
42
|
-
variant?: DetailsProps[
|
|
42
|
+
variant?: DetailsProps["variant"];
|
|
43
43
|
}, never>;
|
|
44
44
|
export declare const StyledDetailColumns: import("styled-components").StyledComponent<"div", DefaultTheme, StyledDetailColumnsProps, never>;
|
|
45
45
|
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const getDetailsTestIds: (testIdProp?:
|
|
1
|
+
export declare const getDetailsTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["heading", "description", "highlighted-data", "data", "expand-collapse"]>;
|
|
2
2
|
//# sourceMappingURL=Details.test-ids.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Details.test-ids.d.ts","sourceRoot":"","sources":["../../../src/components/Details/Details.test-ids.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"Details.test-ids.d.ts","sourceRoot":"","sources":["../../../src/components/Details/Details.test-ids.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,iBAAiB,8MAMnB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DetailsContext.d.ts","sourceRoot":"","sources":["../../../src/components/Details/DetailsContext.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"DetailsContext.d.ts","sourceRoot":"","sources":["../../../src/components/Details/DetailsContext.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mEAAmE;IACnE,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,QAAA,MAAM,cAAc,8CAMlB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FunctionComponent } from 'react';
|
|
2
2
|
import { type GenAICoachProps } from '.';
|
|
3
3
|
declare const _default: FunctionComponent<GenAICoachProps> & {
|
|
4
|
-
getTestIds: (testIdProp?:
|
|
4
|
+
getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["user-message", "coach-message"]>;
|
|
5
5
|
};
|
|
6
6
|
export default _default;
|
|
7
7
|
//# sourceMappingURL=GenAICoach.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAICoach.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAuD5D,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,GAAG,CAAC;;;;
|
|
1
|
+
{"version":3,"file":"GenAICoach.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAuD5D,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,GAAG,CAAC;;;;AAsoBhF,wBAA6D"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
3
|
-
import { Button, Flex, Icon, MenuButton, Progress, Text, TextArea, createUID, menuHelpers, useI18n, useTestIds, useTheme, withTestIds, Card, registerIcon, usePrevious, getFocusables, isMenuGroupProps, ErrorState, Tooltip, useElement, useArrows, focusableSelector, useLiveLog, useOuterEvent,
|
|
3
|
+
import { Button, Flex, Icon, MenuButton, Progress, Text, TextArea, createUID, menuHelpers, useI18n, useTestIds, useTheme, withTestIds, Card, registerIcon, usePrevious, getFocusables, isMenuGroupProps, ErrorState, Tooltip, useElement, useArrows, focusableSelector, useLiveLog, useOuterEvent, ThemeOverride, hasProp } from '@pega/cosmos-react-core';
|
|
4
4
|
import * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';
|
|
5
5
|
import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
|
|
6
6
|
import * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';
|
|
@@ -76,7 +76,7 @@ const GenAICoach = ({ testId, coachOptions: coachOptionsProps, onCoachChange: on
|
|
|
76
76
|
if (coachOptions.length === 1) {
|
|
77
77
|
return (_jsxs(Flex, { container: { gap: 1 }, children: [_jsx(Icon, { name: 'polaris-solid', color: theme.base.palette.ai }), _jsx(Text, { variant: 'h3', children: selectedCoach })] }));
|
|
78
78
|
}
|
|
79
|
-
return (_jsx(MenuButton, { text: selectedCoach, variant: 'text', as: StyledGenAIOptionsMenu, icon: 'polaris-solid', menu: {
|
|
79
|
+
return (_jsx(MenuButton, { text: selectedCoach, "aria-label": t('coach_switcher', [selectedCoach]), variant: 'text', as: StyledGenAIOptionsMenu, icon: 'polaris-solid', menu: {
|
|
80
80
|
mode: 'single-select',
|
|
81
81
|
items: coachOptions,
|
|
82
82
|
onItemClick: onCoachChange
|
|
@@ -268,7 +268,7 @@ const GenAICoach = ({ testId, coachOptions: coachOptionsProps, onCoachChange: on
|
|
|
268
268
|
onSend
|
|
269
269
|
}
|
|
270
270
|
: item;
|
|
271
|
-
return _jsx(GenAIMessage, { ...messageProps, testId: item.id });
|
|
271
|
+
return (_jsx(GenAIMessage, { ...messageProps, testId: item.id, announceInteraction: !focusInMessageListRef.current }));
|
|
272
272
|
}) })) })) }), !starterMessage &&
|
|
273
273
|
((isInUtilities(variant) &&
|
|
274
274
|
variant.state !== 'docked' &&
|
|
@@ -278,7 +278,7 @@ const GenAICoach = ({ testId, coachOptions: coachOptionsProps, onCoachChange: on
|
|
|
278
278
|
justify: 'center',
|
|
279
279
|
alignItems: 'center',
|
|
280
280
|
pad: 1
|
|
281
|
-
}, children: [t('generating_response'), _jsx(Progress, { placement: 'inline' })] })) : (_jsx(
|
|
281
|
+
}, children: [t('generating_response'), _jsx(Progress, { placement: 'inline' })] })) : (_jsx(ThemeOverride, { theme: {
|
|
282
282
|
components: {
|
|
283
283
|
button: {
|
|
284
284
|
color: theme.base.palette.ai,
|
|
@@ -286,7 +286,7 @@ const GenAICoach = ({ testId, coachOptions: coachOptionsProps, onCoachChange: on
|
|
|
286
286
|
'secondary-fill-style': 'outline'
|
|
287
287
|
}
|
|
288
288
|
}
|
|
289
|
-
}, children: _jsx(MenuButton, { text: t('ask_coach', [selectedCoach ?? '']), icon: 'polaris-solid', menu: {
|
|
289
|
+
}, children: _jsx(MenuButton, { text: t('ask_coach', [selectedCoach ?? '']), variant: 'primary', icon: 'polaris-solid', menu: {
|
|
290
290
|
items: suggestions,
|
|
291
291
|
onItemClick: id => {
|
|
292
292
|
const selected = menuHelpers.getItem(suggestions, id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAICoach.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, FunctionComponent } from 'react';\n\nimport {\n Button,\n Flex,\n Icon,\n MenuButton,\n Progress,\n Text,\n TextArea,\n createUID,\n menuHelpers,\n useI18n,\n useTestIds,\n useTheme,\n withTestIds,\n Card,\n registerIcon,\n usePrevious,\n getFocusables,\n isMenuGroupProps,\n ErrorState,\n Tooltip,\n useElement,\n useArrows,\n focusableSelector,\n useLiveLog,\n useOuterEvent,\n Configuration,\n hasProp\n} from '@pega/cosmos-react-core';\nimport type { MenuItemProps, MenuProps } from '@pega/cosmos-react-core';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as minusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/minus.icon';\nimport * as polarisSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/polaris-solid.icon';\n\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { isCoachMessage, isInUtilities, isUserMessage } from './GenAICoach.utils';\nimport {\n StyledChatButton,\n StyledCloseButton,\n StyledMessagesContainer,\n StyledDisclaimerText,\n StyledGenAICoachContainer,\n StyledGenAIOptionsMenu,\n StyledInitialMessageContainer,\n StyledInputContainer,\n StyledStarterMessage,\n StyledSuggestions,\n StyledStarterMessageCard,\n StyledMessagesList\n} from './GenAICoach.styles';\n\nimport { GenAIMessage, InitialSuggestedMessage, type GenAICoachProps } from '.';\n\nregisterIcon(caretUpIcon, timesIcon, caretDownIcon, minusIcon, polarisSolidIcon);\n\nconst GenAICoach: FunctionComponent<GenAICoachProps> = ({\n testId,\n coachOptions: coachOptionsProps,\n onCoachChange: onCoachChangeProp,\n messages = [],\n onSend,\n initialSuggestedMessages,\n suggestions,\n loading,\n error,\n starterMessage,\n variant,\n onOpen,\n guidedMode = false,\n ...restProps\n}) => {\n const theme = useTheme();\n const t = useI18n();\n const elementRef = useRef<HTMLElement | null>(null);\n const conversationRef = useRef<HTMLUListElement>(null);\n const genAICoachRef = useRef<HTMLElement>(null);\n const [starterMessageElement, setStarterMessageElement] = useElement<HTMLDivElement>(null);\n const focusInMessageListRef = useRef(false);\n const isUserTriggered = useRef(false);\n const lastFocusedMessageRef = useRef<HTMLElement | null>(null);\n const initialFocusedElementRef = useRef<HTMLElement | null>(null);\n const messageContainerRef = useRef<HTMLDivElement>(null);\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n\n const [message, setMessage] = useState('');\n const [coachOptions, setCoachOptions] = useState<MenuProps['items']>(coachOptionsProps);\n const [arrowKey, setArrowKey] = useState<\n 'ArrowRight' | 'ArrowLeft' | 'ArrowUp' | 'ArrowDown' | null\n >(null);\n\n const previousMessages = usePrevious(messages);\n const testIds = useTestIds(testId, getGenAICoachTestIds);\n const { announcePolite } = useLiveLog();\n\n const latestMessage = messages.at(-1);\n\n const onCoachChange = (id: MenuItemProps['id']) => {\n setCoachOptions(cur => {\n return cur.map(coach => {\n return {\n ...coach,\n selected: coach.id === id\n };\n });\n });\n onCoachChangeProp?.(id);\n };\n\n const selectedCoach = useMemo(() => {\n const selected = menuHelpers.getSelected(coachOptions)[0];\n if (selected) return selected.primary;\n\n if (coachOptions[0]) {\n if (isMenuGroupProps(coachOptions[0])) {\n return coachOptions[0].items[0].primary;\n }\n return coachOptions[0].primary;\n }\n }, [coachOptions]);\n\n const handleEnterKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n if (!message || (latestMessage && isCoachMessage(latestMessage) && latestMessage.loading))\n return;\n onSend({\n id: createUID(),\n message\n });\n setMessage('');\n }\n },\n [message, latestMessage]\n );\n\n const handleTextAreaChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.currentTarget.value);\n },\n [setMessage]\n );\n\n const renderCoachOptions = useMemo(() => {\n if (coachOptions.length === 0 || !selectedCoach) {\n return null;\n }\n if (coachOptions.length === 1) {\n return (\n <Flex container={{ gap: 1 }}>\n <Icon name='polaris-solid' color={theme.base.palette.ai} />\n <Text variant='h3'>{selectedCoach}</Text>\n </Flex>\n );\n }\n return (\n <MenuButton\n text={selectedCoach}\n variant='text'\n as={StyledGenAIOptionsMenu}\n icon='polaris-solid'\n menu={{\n mode: 'single-select',\n items: coachOptions,\n onItemClick: onCoachChange\n }}\n />\n );\n }, [coachOptions, selectedCoach]);\n\n const headerContent = useMemo(() => {\n return isInUtilities(variant) && variant.state === 'docked' ? (\n <>\n <Flex container={{ gap: 1 }}>\n <Icon name='polaris-solid' color={theme.base.palette.ai} />\n <Text variant='h3'>{selectedCoach}</Text>\n </Flex>\n <Flex container={{ alignItems: 'center' }}>\n <Button\n icon\n label={t('maximize')}\n aria-label={t('maximize_gen_ai', [t('coach', ['Pega Gen AI'])])}\n variant='simple'\n onClick={() => {\n variant.onStateChange('maximized');\n isUserTriggered.current = true;\n }}\n >\n <Icon name='caret-up' />\n </Button>\n </Flex>\n </>\n ) : (\n <>\n {renderCoachOptions}\n\n {isInUtilities(variant) && (\n <Button\n icon\n label={t('minimize')}\n aria-label={t('minimize_gen_ai', [t('coach', ['Pega Gen AI'])])}\n variant='simple'\n onClick={() => {\n variant.onStateChange('docked');\n isUserTriggered.current = true;\n }}\n >\n <Icon name='minus' />\n </Button>\n )}\n {variant.placement === 'dialog' && (\n <Button\n icon\n label={t('close')}\n aria-label={t('close_gen_ai', [t('coach', ['Pega Gen AI'])])}\n variant='simple'\n onClick={variant.onClose}\n >\n <Icon name='times' />\n </Button>\n )}\n </>\n );\n }, [variant, coachOptions]);\n\n const setLastFocusableElement = () => {\n focusInMessageListRef.current = false;\n lastFocusedMessageRef.current = conversationRef?.current?.querySelector(':focus') || null;\n if (\n lastFocusedMessageRef.current &&\n lastFocusedMessageRef.current?.tagName.toLowerCase() !== 'li'\n ) {\n lastFocusedMessageRef.current = lastFocusedMessageRef.current.closest('li[type=\"message\"]');\n }\n };\n\n const onResize = () => {\n if (genAICoachRef.current && isInUtilities(variant)) {\n const height = genAICoachRef.current.clientHeight;\n variant.setGenAIHeight?.(height);\n }\n };\n\n const variantState = useMemo(() => {\n if (variant.placement === 'utilities') {\n return variant.state;\n }\n }, [variant]);\n\n useEffect(() => {\n if (isInUtilities(variant)) {\n onResize();\n }\n if (isUserTriggered.current) {\n if (\n isInUtilities(variant) &&\n (variant.state === 'docked' || (guidedMode && variant.state === 'maximized')) &&\n getFocusables(genAICoachRef).length > 0\n ) {\n getFocusables(genAICoachRef)[0].focus();\n isUserTriggered.current = false;\n } else if (variant.placement !== 'fullpage') {\n textAreaRef.current?.focus();\n elementRef.current = null;\n isUserTriggered.current = false;\n }\n }\n }, [variantState, variant.placement]);\n\n useEffect(() => {\n onOpen?.();\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n useEffect(() => {\n if (isInUtilities(variant) && variant.state !== 'maximized' && messages.length > 0) {\n variant.onStateChange('maximized');\n }\n\n const prevFilteredMsgs = previousMessages?.filter(item => !hasProp(item, 'loading')) ?? [];\n const currentFilteredMsgs = messages?.filter(item => !hasProp(item, 'loading')) ?? [];\n\n if (\n prevFilteredMsgs.length < currentFilteredMsgs.length ||\n (latestMessage && hasProp(latestMessage, 'loading'))\n ) {\n setTimeout(() => {\n conversationRef.current?.lastElementChild?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }, 0);\n if (latestMessage && isUserMessage(latestMessage)) {\n textAreaRef.current?.focus();\n setLastFocusableElement();\n elementRef.current = null;\n setArrowKey(null);\n } else if (latestMessage?.loading) {\n announcePolite({ message: t('generating_response') });\n } else {\n announcePolite({ message: t('coach', [`${t('new_message')} ${t('from')}`]) });\n }\n }\n }, [messages]);\n\n /** Supports arrow key behaviors */\n useEffect(() => {\n const focusables = getFocusables(elementRef);\n if (arrowKey === 'ArrowRight') {\n focusables[0]?.focus();\n } else if (arrowKey === 'ArrowLeft') {\n focusables[focusables.length - 1]?.focus();\n }\n }, [arrowKey, elementRef.current]);\n\n useArrows(\n conversationRef,\n {\n cycle: true,\n selector: ':scope > li',\n dir: 'up-down',\n allowTabFocus: true,\n initialFocusElement: initialFocusedElementRef.current\n },\n [messages, initialFocusedElementRef.current]\n );\n\n useArrows(\n elementRef,\n {\n cycle: true,\n selector: `li ${focusableSelector}`,\n dir: 'left-right',\n allowTabFocus: true,\n updateTabIndex: false\n },\n [messages, elementRef.current, arrowKey]\n );\n\n useOuterEvent('mousedown', [conversationRef.current], () => {\n setArrowKey(null);\n focusInMessageListRef.current = false;\n });\n\n return (\n <Flex\n container={{ direction: 'column' }}\n as={StyledGenAICoachContainer}\n data-testid={testIds.root}\n variant={variant}\n starterMessage={starterMessage}\n ref={genAICoachRef}\n {...restProps}\n >\n <Flex container={{ justify: 'between', alignItems: 'center', pad: 1 }}>{headerContent}</Flex>\n {((isInUtilities(variant) && variant.state !== 'docked') || !isInUtilities(variant)) && (\n <>\n <Flex\n as={StyledMessagesContainer}\n ref={messageContainerRef}\n container={\n starterMessage || loading || error\n ? { direction: 'column', pad: [0, 2], justify: 'center' }\n : { direction: 'column', pad: [0, 2] }\n }\n item={{ grow: 1 }}\n >\n {loading || error ? (\n <Flex container={{ justify: 'center', alignItems: 'center' }}>\n {loading ? (\n <Progress\n variant='ring'\n placement='block'\n message={typeof loading === 'string' ? loading : t('loading')}\n />\n ) : (\n <ErrorState message={error} />\n )}\n </Flex>\n ) : (\n <>\n {messages.length === 0 ? (\n <>\n {starterMessage ? (\n <Card\n container={{ alignItems: 'center', pad: 1, justify: 'between' }}\n item={{ grow: 0 }}\n as={StyledStarterMessageCard}\n >\n <StyledStarterMessage ref={setStarterMessageElement}>\n {starterMessage.message}\n </StyledStarterMessage>\n {starterMessage.message && starterMessageElement && (\n <Tooltip target={starterMessageElement} smart>\n {starterMessage.message}\n </Tooltip>\n )}\n\n <StyledCloseButton\n icon\n label={t('close')}\n aria-label={`${t('close')} ${t('starter_message')}`}\n variant='simple'\n onClick={starterMessage.onClose}\n >\n <Icon name='times' />\n </StyledCloseButton>\n </Card>\n ) : (\n <Flex\n as={StyledInitialMessageContainer}\n container={{\n justify: 'center',\n direction: 'column',\n gap: 8\n }}\n item={{ grow: 1 }}\n >\n {((isInUtilities(variant) && variant.state === 'maximized') ||\n !isInUtilities(variant)) && (\n <Flex container={{ direction: 'column', alignItems: 'center', gap: 2 }}>\n <Icon name='polaris-solid' size='l' color={theme.base.palette.ai} />\n <Text variant='h2'>{t('welcome_text')}</Text>\n </Flex>\n )}\n <Flex container={{ direction: 'column', gap: 1.5 }}>\n {initialSuggestedMessages?.map(initialSuggestedMessage => (\n <InitialSuggestedMessage\n {...initialSuggestedMessage}\n onSend={initialMessage => {\n onSend(initialMessage);\n isUserTriggered.current = true;\n }}\n testId={initialSuggestedMessage.id}\n />\n ))}\n </Flex>\n </Flex>\n )}\n </>\n ) : (\n <Flex\n as={StyledMessagesList}\n ref={conversationRef}\n container={{ direction: 'column' }}\n onFocus={() => {\n if (!focusInMessageListRef.current) {\n if (lastFocusedMessageRef.current) {\n lastFocusedMessageRef.current.focus();\n } else {\n /** Focus on the latest message if the chat message list was never focused */\n const lastChild =\n conversationRef.current && conversationRef.current.lastElementChild;\n if (lastChild instanceof HTMLElement) {\n lastChild.focus();\n }\n }\n }\n focusInMessageListRef.current = true;\n setArrowKey(null);\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n setArrowKey(e.key);\n elementRef.current = null;\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n const currentElement = conversationRef.current?.querySelector('li:focus');\n if (currentElement && currentElement instanceof HTMLElement) {\n elementRef.current = currentElement;\n } else {\n elementRef.current =\n conversationRef.current\n ?.querySelector(':focus')\n ?.closest('li[type=\"message\"]') || null;\n }\n initialFocusedElementRef.current = elementRef.current;\n\n if (currentElement && getFocusables(currentElement).length > 0) {\n setArrowKey(e.key);\n }\n } else if (e.key === 'Tab') {\n setLastFocusableElement();\n if (e.shiftKey) {\n const prevElement =\n conversationRef.current?.parentElement?.previousElementSibling;\n if (prevElement) {\n const focusables = getFocusables(prevElement);\n if (focusables.length) {\n e.preventDefault();\n focusables[focusables.length - 1].focus();\n }\n }\n } else {\n const nextElement =\n conversationRef.current?.parentElement?.nextElementSibling;\n if (nextElement) {\n const focusables = getFocusables(nextElement);\n if (focusables.length) {\n e.preventDefault();\n focusables[0].focus();\n }\n }\n }\n setArrowKey(null);\n }\n }}\n >\n {messages.map(item => {\n const messageProps = isCoachMessage(item)\n ? {\n ...item,\n onSend\n }\n : item;\n\n return <GenAIMessage {...messageProps} testId={item.id} />;\n })}\n </Flex>\n )}\n </>\n )}\n </Flex>\n\n {!starterMessage &&\n ((isInUtilities(variant) &&\n variant.state !== 'docked' &&\n variant.state !== 'minimized') ||\n !isInUtilities(variant)) && (\n <Flex container={{ direction: 'column' }} as={StyledInputContainer}>\n {guidedMode ? (\n <>\n {suggestions && messages.length > 0 && (\n <>\n {latestMessage && isCoachMessage(latestMessage) && latestMessage.loading ? (\n <Flex\n container={{\n gap: 1,\n justify: 'center',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n <Configuration\n theme={{\n components: {\n button: {\n color: theme.base.palette.ai,\n 'secondary-color': theme.base.palette.ai,\n 'secondary-fill-style': 'outline'\n }\n }\n }}\n >\n <MenuButton\n text={t('ask_coach', [selectedCoach ?? ''])}\n icon='polaris-solid'\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected)\n onSend({\n id: selected.id,\n message: selected.primary\n });\n }\n }}\n />\n </Configuration>\n )}\n\n <StyledDisclaimerText>{t('ai_disclaimer')}</StyledDisclaimerText>\n </>\n )}\n </>\n ) : (\n <>\n <TextArea\n ref={textAreaRef}\n label={t('message_pega_gen_ai_coach', [selectedCoach ?? ''])}\n value={message}\n onKeyDown={handleEnterKeyDown}\n onChange={handleTextAreaChange}\n autoResize={false}\n />\n\n {latestMessage && isCoachMessage(latestMessage) && latestMessage.loading ? (\n <Flex\n container={{\n gap: 1,\n justify: 'end',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n <Flex\n container={{\n gap: 2,\n justify: 'end',\n pad: 1\n }}\n >\n {suggestions && (\n <MenuButton\n text={t('suggestions')}\n variant='text'\n icon='polaris-solid'\n as={StyledSuggestions}\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected)\n onSend({\n id: selected.id,\n message: selected.primary\n });\n }\n }}\n />\n )}\n <Button\n variant='primary'\n onClick={\n message\n ? () => {\n onSend({\n id: createUID(),\n message\n });\n setMessage('');\n }\n : undefined\n }\n >\n {t('send')}\n </Button>\n </Flex>\n )}\n\n <StyledDisclaimerText>{t('ai_disclaimer')}</StyledDisclaimerText>\n </>\n )}\n </Flex>\n )}\n {!loading &&\n !error &&\n messages.length === 0 &&\n ((isInUtilities(variant) && variant.state === 'minimized') || starterMessage) && (\n <StyledChatButton\n icon\n onClick={() => {\n isUserTriggered.current = true;\n if (isInUtilities(variant)) {\n variant.onStateChange('maximized');\n }\n if (starterMessage && starterMessage.message) {\n onSend({\n id: starterMessage.id,\n message: starterMessage.message\n });\n }\n }}\n >\n <Flex container={{ alignItems: 'center', gap: 1 }}>\n <Icon name='polaris-solid' />\n {t('start_chat')}\n </Flex>\n </StyledChatButton>\n )}\n </>\n )}\n </Flex>\n );\n};\n\nexport default withTestIds(GenAICoach, getGenAICoachTestIds);\n"]}
|
|
1
|
+
{"version":3,"file":"GenAICoach.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport type { ChangeEvent, FunctionComponent } from 'react';\n\nimport {\n Button,\n Flex,\n Icon,\n MenuButton,\n Progress,\n Text,\n TextArea,\n createUID,\n menuHelpers,\n useI18n,\n useTestIds,\n useTheme,\n withTestIds,\n Card,\n registerIcon,\n usePrevious,\n getFocusables,\n isMenuGroupProps,\n ErrorState,\n Tooltip,\n useElement,\n useArrows,\n focusableSelector,\n useLiveLog,\n useOuterEvent,\n ThemeOverride,\n hasProp\n} from '@pega/cosmos-react-core';\nimport type { MenuItemProps, MenuProps } from '@pega/cosmos-react-core';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as minusIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/minus.icon';\nimport * as polarisSolidIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/polaris-solid.icon';\n\nimport { getGenAICoachTestIds } from './GenAICoach.test-ids';\nimport { isCoachMessage, isInUtilities, isUserMessage } from './GenAICoach.utils';\nimport {\n StyledChatButton,\n StyledCloseButton,\n StyledMessagesContainer,\n StyledDisclaimerText,\n StyledGenAICoachContainer,\n StyledGenAIOptionsMenu,\n StyledInitialMessageContainer,\n StyledInputContainer,\n StyledStarterMessage,\n StyledSuggestions,\n StyledStarterMessageCard,\n StyledMessagesList\n} from './GenAICoach.styles';\n\nimport { GenAIMessage, InitialSuggestedMessage, type GenAICoachProps } from '.';\n\nregisterIcon(caretUpIcon, timesIcon, caretDownIcon, minusIcon, polarisSolidIcon);\n\nconst GenAICoach: FunctionComponent<GenAICoachProps> = ({\n testId,\n coachOptions: coachOptionsProps,\n onCoachChange: onCoachChangeProp,\n messages = [],\n onSend,\n initialSuggestedMessages,\n suggestions,\n loading,\n error,\n starterMessage,\n variant,\n onOpen,\n guidedMode = false,\n ...restProps\n}) => {\n const theme = useTheme();\n const t = useI18n();\n const elementRef = useRef<HTMLElement | null>(null);\n const conversationRef = useRef<HTMLUListElement>(null);\n const genAICoachRef = useRef<HTMLElement>(null);\n const [starterMessageElement, setStarterMessageElement] = useElement<HTMLDivElement>(null);\n const focusInMessageListRef = useRef(false);\n const isUserTriggered = useRef(false);\n const lastFocusedMessageRef = useRef<HTMLElement | null>(null);\n const initialFocusedElementRef = useRef<HTMLElement | null>(null);\n const messageContainerRef = useRef<HTMLDivElement>(null);\n const textAreaRef = useRef<HTMLTextAreaElement>(null);\n\n const [message, setMessage] = useState('');\n const [coachOptions, setCoachOptions] = useState<MenuProps['items']>(coachOptionsProps);\n const [arrowKey, setArrowKey] = useState<\n 'ArrowRight' | 'ArrowLeft' | 'ArrowUp' | 'ArrowDown' | null\n >(null);\n\n const previousMessages = usePrevious(messages);\n const testIds = useTestIds(testId, getGenAICoachTestIds);\n const { announcePolite } = useLiveLog();\n\n const latestMessage = messages.at(-1);\n\n const onCoachChange = (id: MenuItemProps['id']) => {\n setCoachOptions(cur => {\n return cur.map(coach => {\n return {\n ...coach,\n selected: coach.id === id\n };\n });\n });\n onCoachChangeProp?.(id);\n };\n\n const selectedCoach = useMemo(() => {\n const selected = menuHelpers.getSelected(coachOptions)[0];\n if (selected) return selected.primary;\n\n if (coachOptions[0]) {\n if (isMenuGroupProps(coachOptions[0])) {\n return coachOptions[0].items[0].primary;\n }\n return coachOptions[0].primary;\n }\n }, [coachOptions]);\n\n const handleEnterKeyDown = useCallback(\n (e: KeyboardEvent) => {\n if (e.key === 'Enter' && !e.shiftKey) {\n e.preventDefault();\n e.stopPropagation();\n if (!message || (latestMessage && isCoachMessage(latestMessage) && latestMessage.loading))\n return;\n onSend({\n id: createUID(),\n message\n });\n setMessage('');\n }\n },\n [message, latestMessage]\n );\n\n const handleTextAreaChange = useCallback(\n (e: ChangeEvent<HTMLTextAreaElement>) => {\n setMessage(e.currentTarget.value);\n },\n [setMessage]\n );\n\n const renderCoachOptions = useMemo(() => {\n if (coachOptions.length === 0 || !selectedCoach) {\n return null;\n }\n if (coachOptions.length === 1) {\n return (\n <Flex container={{ gap: 1 }}>\n <Icon name='polaris-solid' color={theme.base.palette.ai} />\n <Text variant='h3'>{selectedCoach}</Text>\n </Flex>\n );\n }\n return (\n <MenuButton\n text={selectedCoach}\n aria-label={t('coach_switcher', [selectedCoach])}\n variant='text'\n as={StyledGenAIOptionsMenu}\n icon='polaris-solid'\n menu={{\n mode: 'single-select',\n items: coachOptions,\n onItemClick: onCoachChange\n }}\n />\n );\n }, [coachOptions, selectedCoach]);\n\n const headerContent = useMemo(() => {\n return isInUtilities(variant) && variant.state === 'docked' ? (\n <>\n <Flex container={{ gap: 1 }}>\n <Icon name='polaris-solid' color={theme.base.palette.ai} />\n <Text variant='h3'>{selectedCoach}</Text>\n </Flex>\n <Flex container={{ alignItems: 'center' }}>\n <Button\n icon\n label={t('maximize')}\n aria-label={t('maximize_gen_ai', [t('coach', ['Pega Gen AI'])])}\n variant='simple'\n onClick={() => {\n variant.onStateChange('maximized');\n isUserTriggered.current = true;\n }}\n >\n <Icon name='caret-up' />\n </Button>\n </Flex>\n </>\n ) : (\n <>\n {renderCoachOptions}\n\n {isInUtilities(variant) && (\n <Button\n icon\n label={t('minimize')}\n aria-label={t('minimize_gen_ai', [t('coach', ['Pega Gen AI'])])}\n variant='simple'\n onClick={() => {\n variant.onStateChange('docked');\n isUserTriggered.current = true;\n }}\n >\n <Icon name='minus' />\n </Button>\n )}\n {variant.placement === 'dialog' && (\n <Button\n icon\n label={t('close')}\n aria-label={t('close_gen_ai', [t('coach', ['Pega Gen AI'])])}\n variant='simple'\n onClick={variant.onClose}\n >\n <Icon name='times' />\n </Button>\n )}\n </>\n );\n }, [variant, coachOptions]);\n\n const setLastFocusableElement = () => {\n focusInMessageListRef.current = false;\n lastFocusedMessageRef.current = conversationRef?.current?.querySelector(':focus') || null;\n if (\n lastFocusedMessageRef.current &&\n lastFocusedMessageRef.current?.tagName.toLowerCase() !== 'li'\n ) {\n lastFocusedMessageRef.current = lastFocusedMessageRef.current.closest('li[type=\"message\"]');\n }\n };\n\n const onResize = () => {\n if (genAICoachRef.current && isInUtilities(variant)) {\n const height = genAICoachRef.current.clientHeight;\n variant.setGenAIHeight?.(height);\n }\n };\n\n const variantState = useMemo(() => {\n if (variant.placement === 'utilities') {\n return variant.state;\n }\n }, [variant]);\n\n useEffect(() => {\n if (isInUtilities(variant)) {\n onResize();\n }\n if (isUserTriggered.current) {\n if (\n isInUtilities(variant) &&\n (variant.state === 'docked' || (guidedMode && variant.state === 'maximized')) &&\n getFocusables(genAICoachRef).length > 0\n ) {\n getFocusables(genAICoachRef)[0].focus();\n isUserTriggered.current = false;\n } else if (variant.placement !== 'fullpage') {\n textAreaRef.current?.focus();\n elementRef.current = null;\n isUserTriggered.current = false;\n }\n }\n }, [variantState, variant.placement]);\n\n useEffect(() => {\n onOpen?.();\n window.addEventListener('resize', onResize);\n\n return () => {\n window.removeEventListener('resize', onResize);\n };\n }, []);\n\n useEffect(() => {\n if (isInUtilities(variant) && variant.state !== 'maximized' && messages.length > 0) {\n variant.onStateChange('maximized');\n }\n\n const prevFilteredMsgs = previousMessages?.filter(item => !hasProp(item, 'loading')) ?? [];\n const currentFilteredMsgs = messages?.filter(item => !hasProp(item, 'loading')) ?? [];\n\n if (\n prevFilteredMsgs.length < currentFilteredMsgs.length ||\n (latestMessage && hasProp(latestMessage, 'loading'))\n ) {\n setTimeout(() => {\n conversationRef.current?.lastElementChild?.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest'\n });\n }, 0);\n if (latestMessage && isUserMessage(latestMessage)) {\n textAreaRef.current?.focus();\n setLastFocusableElement();\n elementRef.current = null;\n setArrowKey(null);\n } else if (latestMessage?.loading) {\n announcePolite({ message: t('generating_response') });\n } else {\n announcePolite({ message: t('coach', [`${t('new_message')} ${t('from')}`]) });\n }\n }\n }, [messages]);\n\n /** Supports arrow key behaviors */\n useEffect(() => {\n const focusables = getFocusables(elementRef);\n if (arrowKey === 'ArrowRight') {\n focusables[0]?.focus();\n } else if (arrowKey === 'ArrowLeft') {\n focusables[focusables.length - 1]?.focus();\n }\n }, [arrowKey, elementRef.current]);\n\n useArrows(\n conversationRef,\n {\n cycle: true,\n selector: ':scope > li',\n dir: 'up-down',\n allowTabFocus: true,\n initialFocusElement: initialFocusedElementRef.current\n },\n [messages, initialFocusedElementRef.current]\n );\n\n useArrows(\n elementRef,\n {\n cycle: true,\n selector: `li ${focusableSelector}`,\n dir: 'left-right',\n allowTabFocus: true,\n updateTabIndex: false\n },\n [messages, elementRef.current, arrowKey]\n );\n\n useOuterEvent('mousedown', [conversationRef.current], () => {\n setArrowKey(null);\n focusInMessageListRef.current = false;\n });\n\n return (\n <Flex\n container={{ direction: 'column' }}\n as={StyledGenAICoachContainer}\n data-testid={testIds.root}\n variant={variant}\n starterMessage={starterMessage}\n ref={genAICoachRef}\n {...restProps}\n >\n <Flex container={{ justify: 'between', alignItems: 'center', pad: 1 }}>{headerContent}</Flex>\n {((isInUtilities(variant) && variant.state !== 'docked') || !isInUtilities(variant)) && (\n <>\n <Flex\n as={StyledMessagesContainer}\n ref={messageContainerRef}\n container={\n starterMessage || loading || error\n ? { direction: 'column', pad: [0, 2], justify: 'center' }\n : { direction: 'column', pad: [0, 2] }\n }\n item={{ grow: 1 }}\n >\n {loading || error ? (\n <Flex container={{ justify: 'center', alignItems: 'center' }}>\n {loading ? (\n <Progress\n variant='ring'\n placement='block'\n message={typeof loading === 'string' ? loading : t('loading')}\n />\n ) : (\n <ErrorState message={error} />\n )}\n </Flex>\n ) : (\n <>\n {messages.length === 0 ? (\n <>\n {starterMessage ? (\n <Card\n container={{ alignItems: 'center', pad: 1, justify: 'between' }}\n item={{ grow: 0 }}\n as={StyledStarterMessageCard}\n >\n <StyledStarterMessage ref={setStarterMessageElement}>\n {starterMessage.message}\n </StyledStarterMessage>\n {starterMessage.message && starterMessageElement && (\n <Tooltip target={starterMessageElement} smart>\n {starterMessage.message}\n </Tooltip>\n )}\n\n <StyledCloseButton\n icon\n label={t('close')}\n aria-label={`${t('close')} ${t('starter_message')}`}\n variant='simple'\n onClick={starterMessage.onClose}\n >\n <Icon name='times' />\n </StyledCloseButton>\n </Card>\n ) : (\n <Flex\n as={StyledInitialMessageContainer}\n container={{\n justify: 'center',\n direction: 'column',\n gap: 8\n }}\n item={{ grow: 1 }}\n >\n {((isInUtilities(variant) && variant.state === 'maximized') ||\n !isInUtilities(variant)) && (\n <Flex container={{ direction: 'column', alignItems: 'center', gap: 2 }}>\n <Icon name='polaris-solid' size='l' color={theme.base.palette.ai} />\n <Text variant='h2'>{t('welcome_text')}</Text>\n </Flex>\n )}\n <Flex container={{ direction: 'column', gap: 1.5 }}>\n {initialSuggestedMessages?.map(initialSuggestedMessage => (\n <InitialSuggestedMessage\n {...initialSuggestedMessage}\n onSend={initialMessage => {\n onSend(initialMessage);\n isUserTriggered.current = true;\n }}\n testId={initialSuggestedMessage.id}\n />\n ))}\n </Flex>\n </Flex>\n )}\n </>\n ) : (\n <Flex\n as={StyledMessagesList}\n ref={conversationRef}\n container={{ direction: 'column' }}\n onFocus={() => {\n if (!focusInMessageListRef.current) {\n if (lastFocusedMessageRef.current) {\n lastFocusedMessageRef.current.focus();\n } else {\n /** Focus on the latest message if the chat message list was never focused */\n const lastChild =\n conversationRef.current && conversationRef.current.lastElementChild;\n if (lastChild instanceof HTMLElement) {\n lastChild.focus();\n }\n }\n }\n focusInMessageListRef.current = true;\n setArrowKey(null);\n }}\n onKeyDown={(e: KeyboardEvent) => {\n if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n setArrowKey(e.key);\n elementRef.current = null;\n } else if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n const currentElement = conversationRef.current?.querySelector('li:focus');\n if (currentElement && currentElement instanceof HTMLElement) {\n elementRef.current = currentElement;\n } else {\n elementRef.current =\n conversationRef.current\n ?.querySelector(':focus')\n ?.closest('li[type=\"message\"]') || null;\n }\n initialFocusedElementRef.current = elementRef.current;\n\n if (currentElement && getFocusables(currentElement).length > 0) {\n setArrowKey(e.key);\n }\n } else if (e.key === 'Tab') {\n setLastFocusableElement();\n if (e.shiftKey) {\n const prevElement =\n conversationRef.current?.parentElement?.previousElementSibling;\n if (prevElement) {\n const focusables = getFocusables(prevElement);\n if (focusables.length) {\n e.preventDefault();\n focusables[focusables.length - 1].focus();\n }\n }\n } else {\n const nextElement =\n conversationRef.current?.parentElement?.nextElementSibling;\n if (nextElement) {\n const focusables = getFocusables(nextElement);\n if (focusables.length) {\n e.preventDefault();\n focusables[0].focus();\n }\n }\n }\n setArrowKey(null);\n }\n }}\n >\n {messages.map(item => {\n const messageProps = isCoachMessage(item)\n ? {\n ...item,\n onSend\n }\n : item;\n\n return (\n <GenAIMessage\n {...messageProps}\n testId={item.id}\n announceInteraction={!focusInMessageListRef.current}\n />\n );\n })}\n </Flex>\n )}\n </>\n )}\n </Flex>\n\n {!starterMessage &&\n ((isInUtilities(variant) &&\n variant.state !== 'docked' &&\n variant.state !== 'minimized') ||\n !isInUtilities(variant)) && (\n <Flex container={{ direction: 'column' }} as={StyledInputContainer}>\n {guidedMode ? (\n <>\n {suggestions && messages.length > 0 && (\n <>\n {latestMessage && isCoachMessage(latestMessage) && latestMessage.loading ? (\n <Flex\n container={{\n gap: 1,\n justify: 'center',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n <ThemeOverride\n theme={{\n components: {\n button: {\n color: theme.base.palette.ai,\n 'secondary-color': theme.base.palette.ai,\n 'secondary-fill-style': 'outline'\n }\n }\n }}\n >\n <MenuButton\n text={t('ask_coach', [selectedCoach ?? ''])}\n variant='primary'\n icon='polaris-solid'\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected)\n onSend({\n id: selected.id,\n message: selected.primary\n });\n }\n }}\n />\n </ThemeOverride>\n )}\n\n <StyledDisclaimerText>{t('ai_disclaimer')}</StyledDisclaimerText>\n </>\n )}\n </>\n ) : (\n <>\n <TextArea\n ref={textAreaRef}\n label={t('message_pega_gen_ai_coach', [selectedCoach ?? ''])}\n value={message}\n onKeyDown={handleEnterKeyDown}\n onChange={handleTextAreaChange}\n autoResize={false}\n />\n\n {latestMessage && isCoachMessage(latestMessage) && latestMessage.loading ? (\n <Flex\n container={{\n gap: 1,\n justify: 'end',\n alignItems: 'center',\n pad: 1\n }}\n >\n {t('generating_response')}\n <Progress placement='inline' />\n </Flex>\n ) : (\n <Flex\n container={{\n gap: 2,\n justify: 'end',\n pad: 1\n }}\n >\n {suggestions && (\n <MenuButton\n text={t('suggestions')}\n variant='text'\n icon='polaris-solid'\n as={StyledSuggestions}\n menu={{\n items: suggestions,\n onItemClick: id => {\n const selected = menuHelpers.getItem(suggestions, id);\n if (selected)\n onSend({\n id: selected.id,\n message: selected.primary\n });\n }\n }}\n />\n )}\n <Button\n variant='primary'\n onClick={\n message\n ? () => {\n onSend({\n id: createUID(),\n message\n });\n setMessage('');\n }\n : undefined\n }\n >\n {t('send')}\n </Button>\n </Flex>\n )}\n\n <StyledDisclaimerText>{t('ai_disclaimer')}</StyledDisclaimerText>\n </>\n )}\n </Flex>\n )}\n {!loading &&\n !error &&\n messages.length === 0 &&\n ((isInUtilities(variant) && variant.state === 'minimized') || starterMessage) && (\n <StyledChatButton\n icon\n onClick={() => {\n isUserTriggered.current = true;\n if (isInUtilities(variant)) {\n variant.onStateChange('maximized');\n }\n if (starterMessage && starterMessage.message) {\n onSend({\n id: starterMessage.id,\n message: starterMessage.message\n });\n }\n }}\n >\n <Flex container={{ alignItems: 'center', gap: 1 }}>\n <Icon name='polaris-solid' />\n {t('start_chat')}\n </Flex>\n </StyledChatButton>\n )}\n </>\n )}\n </Flex>\n );\n};\n\nexport default withTestIds(GenAICoach, getGenAICoachTestIds);\n"]}
|
|
@@ -1,28 +1,28 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import type { GenAICoachProps } from './GenAICoach.types';
|
|
3
2
|
export declare const StyledMessageWrapper: import("styled-components").StyledComponent<"li", import("styled-components").DefaultTheme, {}, never>;
|
|
4
3
|
export declare const StyledGenAICoachContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {
|
|
5
|
-
variant: GenAICoachProps[
|
|
6
|
-
starterMessage: GenAICoachProps[
|
|
4
|
+
variant: GenAICoachProps["variant"];
|
|
5
|
+
starterMessage: GenAICoachProps["starterMessage"];
|
|
7
6
|
}, never>;
|
|
8
|
-
export declare const StyledGenAIOptionsMenu: import("styled-components").StyledComponent<import("
|
|
9
|
-
getTestIds: (testIdProp?:
|
|
7
|
+
export declare const StyledGenAIOptionsMenu: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").MenuButtonProps> & {
|
|
8
|
+
getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly []>;
|
|
10
9
|
}, import("styled-components").DefaultTheme, {}, never>;
|
|
11
|
-
export declare const StyledSuggestions: import("styled-components").StyledComponent<import("
|
|
12
|
-
getTestIds: (testIdProp?:
|
|
10
|
+
export declare const StyledSuggestions: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").MenuButtonProps> & {
|
|
11
|
+
getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly []>;
|
|
13
12
|
}, import("styled-components").DefaultTheme, {}, never>;
|
|
14
|
-
export declare const StyledDisclaimerText: import("styled-components").StyledComponent<import("
|
|
13
|
+
export declare const StyledDisclaimerText: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").TextProps>, import("styled-components").DefaultTheme, {}, never>;
|
|
15
14
|
export declare const StyledMessagesContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
16
15
|
export declare const StyledStarterMessageCard: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
17
16
|
export declare const StyledStarterMessage: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
18
|
-
export declare const StyledCloseButton: import("styled-components").StyledComponent<import("
|
|
17
|
+
export declare const StyledCloseButton: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").ButtonProps>, import("styled-components").DefaultTheme, {}, never>;
|
|
19
18
|
export declare const StyledInitialMessageContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
20
19
|
export declare const StyledInputContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
21
|
-
export declare const StyledChatButton: import("styled-components").StyledComponent<import("
|
|
22
|
-
export declare const StyledSuggestion: import("styled-components").StyledComponent<import("
|
|
20
|
+
export declare const StyledChatButton: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").ButtonProps>, import("styled-components").DefaultTheme, {}, never>;
|
|
21
|
+
export declare const StyledSuggestion: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").ButtonProps>, import("styled-components").DefaultTheme, {}, never>;
|
|
23
22
|
export declare const StyledSuggestionsContainer: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
24
|
-
export declare const StyledTimeStamp: import("styled-components").StyledComponent<import("
|
|
23
|
+
export declare const StyledTimeStamp: import("styled-components").StyledComponent<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").TextProps>, import("styled-components").DefaultTheme, {}, never>;
|
|
25
24
|
export declare const StyledMessage: import("styled-components").StyledComponent<"p", import("styled-components").DefaultTheme, {}, never>;
|
|
25
|
+
export declare const StyledUserMessage: import("styled-components").StyledComponent<"li", import("styled-components").DefaultTheme, {}, never>;
|
|
26
26
|
export declare const StyledSuggestedMessage: import("styled-components").StyledComponent<"div", import("styled-components").DefaultTheme, {}, never>;
|
|
27
27
|
export declare const StyledMessagesList: import("styled-components").StyledComponent<"ul", import("styled-components").DefaultTheme, {}, never>;
|
|
28
28
|
//# sourceMappingURL=GenAICoach.styles.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GenAICoach.styles.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.styles.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"GenAICoach.styles.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.styles.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAG1D,eAAO,MAAM,oBAAoB,wGAAc,CAAC;AAEhD,eAAO,MAAM,yBAAyB;aAC3B,eAAe,CAAC,SAAS,CAAC;oBACnB,eAAe,CAAC,gBAAgB,CAAC;SAwElD,CAAC;AAIF,eAAO,MAAM,sBAAsB;2BAzCA,CAAC,oEAC5B,yBACD;uDA4DL,CAAC;AAIH,eAAO,MAAM,iBAAiB;2BAlEK,CAAC;uDAgFlC,CAAC;AAIH,eAAO,MAAM,oBAAoB,kNAW/B,CAAC;AAIH,eAAO,MAAM,uBAAuB,yGAWnC,CAAC;AAIF,eAAO,MAAM,wBAAwB,yGAWpC,CAAC;AAIF,eAAO,MAAM,oBAAoB,yGAEhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,oNAE7B,CAAC;AAIF,eAAO,MAAM,6BAA6B,yGAUzC,CAAC;AAIF,eAAO,MAAM,oBAAoB,yGAWhC,CAAC;AAIF,eAAO,MAAM,gBAAgB,oNAuB3B,CAAC;AAIH,eAAO,MAAM,gBAAgB,oNAa3B,CAAC;AAIH,eAAO,MAAM,0BAA0B,yGAUtC,CAAC;AAIF,eAAO,MAAM,eAAe,kNAK1B,CAAC;AAIH,eAAO,MAAM,aAAa,uGAQxB,CAAC;AAIH,eAAO,MAAM,iBAAiB,wGAsB7B,CAAC;AAIF,eAAO,MAAM,sBAAsB,yGAkBjC,CAAC;AAIH,eAAO,MAAM,kBAAkB,wGAkB9B,CAAC"}
|
|
@@ -185,6 +185,20 @@ export const StyledMessage = styled.p(({ theme }) => {
|
|
|
185
185
|
`;
|
|
186
186
|
});
|
|
187
187
|
StyledMessage.defaultProps = defaultThemeProp;
|
|
188
|
+
export const StyledUserMessage = styled.li(({ theme: { base: { 'border-radius': borderRadius, spacing, palette: { 'secondary-background': secondaryBackground } } } }) => {
|
|
189
|
+
return css `
|
|
190
|
+
overflow-wrap: break-word;
|
|
191
|
+
background: ${secondaryBackground};
|
|
192
|
+
margin-inline-start: calc(4 * ${spacing});
|
|
193
|
+
margin-block-end: calc(0.5 * ${spacing});
|
|
194
|
+
padding: calc(0.5 * ${spacing});
|
|
195
|
+
border-start-start-radius: calc(3 * ${borderRadius});
|
|
196
|
+
border-start-end-radius: ${borderRadius};
|
|
197
|
+
border-end-start-radius: calc(3 * ${borderRadius});
|
|
198
|
+
border-end-end-radius: calc(3 * ${borderRadius});
|
|
199
|
+
`;
|
|
200
|
+
});
|
|
201
|
+
StyledUserMessage.defaultProps = defaultThemeProp;
|
|
188
202
|
export const StyledSuggestedMessage = styled.div(({ theme }) => {
|
|
189
203
|
return css `
|
|
190
204
|
column-gap: calc(2 * ${theme.base.spacing});
|