@pega/cosmos-react-work 9.0.0-build.27.3 → 9.0.0-build.27.5

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.
@@ -1 +1 @@
1
- {"version":3,"file":"CaseWorkflow.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/CaseWorkflow.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAM/E,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,oBAAoB,CAAC;AA2CpF,QAAA,MAAM,YAAY,EAAE,+BAA+B,CAAC,iBAAiB,CA4LpE,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"CaseWorkflow.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/CaseWorkflow.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAM/E,OAAO,KAAK,EAAE,iBAAiB,EAA0B,MAAM,oBAAoB,CAAC;AAyCpF,QAAA,MAAM,YAAY,EAAE,+BAA+B,CAAC,iBAAiB,CAqMpE,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,12 +1,12 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useState, useCallback, forwardRef, useMemo, useEffect } from 'react';
2
+ import { useState, useCallback, forwardRef, useMemo, useEffect, useRef } from 'react';
3
3
  import { parseToHsl } from 'polished';
4
4
  import { Icon, Button, Tooltip, ExpandCollapse, useConsolidatedRef, useElement, useI18n, useTheme, tryCatch, StyledIconShape, registerIcon } from '@pega/cosmos-react-core';
5
5
  import * as chevronIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/chevron.icon';
6
6
  import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
7
7
  import * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';
8
8
  import VerticalFormProgress from '@pega/cosmos-react-core/lib/components/MultiStepForm/VerticalFormProgress';
9
- import { StyledCaseWorkflowBanner, StyledCaseIdentity, StyledCaseIconWrapper, StyledCaseTitle, StyledCaseTitleText, StyledWorkflowControls, StyledProgressLabel, StyledWorkflowInfoDialog, StyledStageList, StyledStageButton, StyledStepsContainer, StyledCaseViewIcon, StyledCaseViewImage } from './GenAICoach.styles';
9
+ import { StyledCaseWorkflowBanner, StyledCaseLaunchButton, StyledCaseIconWrapper, StyledCaseTitleText, StyledProgressLabel, StyledWorkflowInfoDialog, StyledStageList, StyledStageButton, StyledStepsContainer, StyledCaseViewIcon, StyledCaseViewImage } from './GenAICoach.styles';
10
10
  registerIcon(chevronIcon, timesIcon, caretDownIcon);
11
11
  const getEffectiveCurrentStepId = (stage) => {
12
12
  const { steps } = stage;
@@ -36,6 +36,8 @@ const CaseWorkflow = forwardRef(function CaseWorkflow({ heading, icon, stages, o
36
36
  const [isOpen, setIsOpen] = useState(false);
37
37
  const [hasBrokenImage, setHasBrokenImage] = useState();
38
38
  const currentStageId = stages.find(s => s.current)?.id;
39
+ const currentStageIdRef = useRef(currentStageId);
40
+ currentStageIdRef.current = currentStageId;
39
41
  const [expandedStages, setExpandedStages] = useState(() => {
40
42
  const initial = new Set();
41
43
  if (currentStageId)
@@ -80,11 +82,19 @@ const CaseWorkflow = forwardRef(function CaseWorkflow({ heading, icon, stages, o
80
82
  useEffect(() => {
81
83
  setHasBrokenImage(undefined);
82
84
  }, [typeof icon === 'string' ? icon : icon?.href]);
83
- return (_jsxs(_Fragment, { children: [_jsxs(StyledCaseWorkflowBanner, { container: { alignItems: 'center', justify: 'between', gap: 0.75 }, ...restProps, ref: rootRef, children: [_jsxs(StyledCaseIdentity, { container: { alignItems: 'center', gap: 1 }, children: [showIcon && (_jsx(StyledCaseIconWrapper, { children: typeof icon === 'string' ? (_jsx(StyledCaseViewIcon, { name: icon, foreground: iconForeground, background: iconBackground, size: 's' })) : (_jsx(StyledIconShape, { background: iconBackground, children: _jsx(StyledCaseViewImage, { src: icon?.href, alt: t('case_image'), onLoad: () => {
85
+ useEffect(() => {
86
+ if (isOpen) {
87
+ const initial = new Set();
88
+ if (currentStageIdRef.current)
89
+ initial.add(currentStageIdRef.current);
90
+ setExpandedStages(initial);
91
+ }
92
+ }, [isOpen]);
93
+ return (_jsxs(_Fragment, { children: [_jsxs(StyledCaseWorkflowBanner, { container: { alignItems: 'center', justify: 'between', gap: 0 }, ...restProps, ref: rootRef, children: [_jsxs(StyledCaseLaunchButton, { ref: setTitleEl, variant: 'simple', onClick: onHeadingClick, "aria-label": t('open_noun', [heading]), children: [showIcon && (_jsx(StyledCaseIconWrapper, { children: typeof icon === 'string' ? (_jsx(StyledCaseViewIcon, { name: icon, foreground: iconForeground, background: iconBackground, size: 's' })) : (_jsx(StyledIconShape, { background: iconBackground, children: _jsx(StyledCaseViewImage, { src: icon?.href, alt: t('case_image'), onLoad: () => {
84
94
  setHasBrokenImage(false);
85
95
  }, onError: () => {
86
96
  setHasBrokenImage(true);
87
- } }) })) })), _jsx(StyledCaseTitle, { ref: setTitleEl, variant: 'link', onClick: onHeadingClick, children: _jsx(StyledCaseTitleText, { children: heading }) })] }), _jsxs(StyledWorkflowControls, { container: { alignItems: 'center', gap: 0.5 }, item: { shrink: 0 }, children: [stageStepLabel && _jsx(StyledProgressLabel, { children: stageStepLabel }), _jsx(Button, { ref: setWorkflowBtnEl, icon: true, variant: 'simple', onClick: toggleDialog, "aria-expanded": isOpen, label: t('workflow'), "aria-label": t('open_noun', [t('workflow')]), children: _jsx(Icon, { name: 'chevron' }) })] }), isOpen && workflowBtnEl && (_jsx(StyledWorkflowInfoDialog, { heading: heading, target: workflowBtnEl, onDismiss: closeDialog, children: _jsx(StyledStageList, { children: stages.map(stage => {
97
+ } }) })) })), _jsx(StyledCaseTitleText, { children: heading }), stageStepLabel && _jsx(StyledProgressLabel, { children: stageStepLabel })] }), _jsx(Button, { ref: setWorkflowBtnEl, icon: true, variant: 'simple', onClick: toggleDialog, "aria-expanded": isOpen, label: t('workflow'), "aria-label": t('open_noun', [t('workflow')]), children: _jsx(Icon, { name: 'chevron' }) }), isOpen && workflowBtnEl && (_jsx(StyledWorkflowInfoDialog, { heading: heading, target: workflowBtnEl, onDismiss: closeDialog, children: _jsx(StyledStageList, { children: stages.map(stage => {
88
98
  const isExpanded = expandedStages.has(stage.id);
89
99
  const hasSteps = Array.isArray(stage.steps) && stage.steps.length > 0;
90
100
  const effectiveStepId = getEffectiveCurrentStepId(stage);
@@ -1 +1 @@
1
- {"version":3,"file":"CaseWorkflow.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/CaseWorkflow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useCallback, forwardRef, useMemo, useEffect } from 'react';\nimport type { PropsWithoutRef } from 'react';\nimport { parseToHsl } from 'polished';\n\nimport {\n Icon,\n Button,\n Tooltip,\n ExpandCollapse,\n useConsolidatedRef,\n useElement,\n useI18n,\n useTheme,\n tryCatch,\n StyledIconShape,\n registerIcon\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\nimport * as chevronIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/chevron.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 VerticalFormProgress from '@pega/cosmos-react-core/lib/components/MultiStepForm/VerticalFormProgress';\n\nimport type { CaseWorkflowProps, CaseWorkflowStageProps } from './GenAICoach.types';\nimport {\n StyledCaseWorkflowBanner,\n StyledCaseIdentity,\n StyledCaseIconWrapper,\n StyledCaseTitle,\n StyledCaseTitleText,\n StyledWorkflowControls,\n StyledProgressLabel,\n StyledWorkflowInfoDialog,\n StyledStageList,\n StyledStageButton,\n StyledStepsContainer,\n StyledCaseViewIcon,\n StyledCaseViewImage\n} from './GenAICoach.styles';\n\nregisterIcon(chevronIcon, timesIcon, caretDownIcon);\n\nconst getEffectiveCurrentStepId = (stage: CaseWorkflowStageProps): string | undefined => {\n const { steps } = stage;\n\n if (!steps || steps.length === 0) return undefined;\n\n if (stage.current && stage.currentStepId) return stage.currentStepId;\n\n if (stage.completed) return steps[steps.length - 1].id;\n\n return steps[0].id;\n};\n\nconst getCurrentStageAndStep = (stages: CaseWorkflowStageProps[]) => {\n const stage = stages.find(s => s.current);\n\n if (!stage) return undefined;\n\n const step = stage.currentStepId\n ? stage.steps?.find(s => s.id === stage.currentStepId)\n : undefined;\n\n return { stageName: stage.name, stepName: step?.name };\n};\n\nconst CaseWorkflow: ForwardRefForwardPropsComponent<CaseWorkflowProps> = forwardRef(\n function CaseWorkflow(\n { heading, icon, stages, onHeadingClick, ...restProps }: PropsWithoutRef<CaseWorkflowProps>,\n ref: CaseWorkflowProps['ref']\n ) {\n const t = useI18n();\n const theme = useTheme();\n\n const rootRef = useConsolidatedRef(ref);\n\n const [workflowBtnEl, setWorkflowBtnEl] = useElement<HTMLButtonElement>();\n const [titleEl, setTitleEl] = useElement<HTMLButtonElement | HTMLAnchorElement>();\n\n const [isOpen, setIsOpen] = useState(false);\n const [hasBrokenImage, setHasBrokenImage] = useState<boolean | undefined>();\n\n const currentStageId = stages.find(s => s.current)?.id;\n const [expandedStages, setExpandedStages] = useState<Set<string>>(() => {\n const initial = new Set<string>();\n if (currentStageId) initial.add(currentStageId);\n return initial;\n });\n\n const toggleStage = useCallback((stageId: string) => {\n setExpandedStages(prev => {\n const next = new Set(prev);\n if (next.has(stageId)) {\n next.delete(stageId);\n } else {\n next.add(stageId);\n }\n return next;\n });\n }, []);\n\n const toggleDialog = useCallback(() => {\n setIsOpen(prev => !prev);\n }, []);\n\n const closeDialog = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const iconForeground =\n theme.components['case-view'].icon.color !== 'auto'\n ? theme.components['case-view'].icon.color\n : theme.components['case-view'].header['foreground-color'];\n\n const iconBackground = useMemo(() => {\n if (theme.components['case-view'].icon.background !== 'auto') {\n return theme.components['case-view'].icon.background;\n }\n return tryCatch(\n () => {\n const { lightness } = parseToHsl(\n theme.components['case-view'].header['background-color']\n );\n return lightness > 0.35 ? 'rgba(0, 0, 0, 0.2)' : 'rgba(255, 255, 255, 0.2)';\n },\n () => 'transparent'\n );\n }, [theme]);\n\n const showIcon = !!icon && !hasBrokenImage;\n\n const currentInfo = getCurrentStageAndStep(stages);\n\n const stageStepLabel = currentInfo\n ? `${currentInfo.stageName}${currentInfo.stepName ? `: ${currentInfo.stepName}` : ''}`\n : undefined;\n\n useEffect(() => {\n setHasBrokenImage(undefined);\n }, [typeof icon === 'string' ? icon : icon?.href]);\n\n return (\n <>\n <StyledCaseWorkflowBanner\n container={{ alignItems: 'center', justify: 'between', gap: 0.75 }}\n {...restProps}\n ref={rootRef}\n >\n <StyledCaseIdentity container={{ alignItems: 'center', gap: 1 }}>\n {showIcon && (\n <StyledCaseIconWrapper>\n {typeof icon === 'string' ? (\n <StyledCaseViewIcon\n name={icon}\n foreground={iconForeground}\n background={iconBackground}\n size='s'\n />\n ) : (\n <StyledIconShape background={iconBackground}>\n <StyledCaseViewImage\n src={icon?.href}\n alt={t('case_image')}\n onLoad={() => {\n setHasBrokenImage(false);\n }}\n onError={() => {\n setHasBrokenImage(true);\n }}\n />\n </StyledIconShape>\n )}\n </StyledCaseIconWrapper>\n )}\n\n <StyledCaseTitle ref={setTitleEl} variant='link' onClick={onHeadingClick}>\n <StyledCaseTitleText>{heading}</StyledCaseTitleText>\n </StyledCaseTitle>\n </StyledCaseIdentity>\n\n <StyledWorkflowControls\n container={{ alignItems: 'center', gap: 0.5 }}\n item={{ shrink: 0 }}\n >\n {stageStepLabel && <StyledProgressLabel>{stageStepLabel}</StyledProgressLabel>}\n\n <Button\n ref={setWorkflowBtnEl}\n icon\n variant='simple'\n onClick={toggleDialog}\n aria-expanded={isOpen}\n label={t('workflow')}\n aria-label={t('open_noun', [t('workflow')])}\n >\n <Icon name='chevron' />\n </Button>\n </StyledWorkflowControls>\n\n {isOpen && workflowBtnEl && (\n <StyledWorkflowInfoDialog\n heading={heading}\n target={workflowBtnEl}\n onDismiss={closeDialog}\n >\n <StyledStageList>\n {stages.map(stage => {\n const isExpanded = expandedStages.has(stage.id);\n const hasSteps = Array.isArray(stage.steps) && stage.steps.length > 0;\n const effectiveStepId = getEffectiveCurrentStepId(stage);\n\n let stageStatus: 'active' | 'completed' | 'not-started' = 'not-started';\n if (stage.completed) stageStatus = 'completed';\n else if (stage.current) stageStatus = 'active';\n\n return (\n <li key={stage.id}>\n <StyledStageButton\n onClick={() => toggleStage(stage.id)}\n aria-expanded={isExpanded}\n expanded={isExpanded}\n variant='simple'\n >\n <Icon name='caret-down' />\n\n {stage.name}\n </StyledStageButton>\n\n {hasSteps && effectiveStepId && (\n <ExpandCollapse collapsed={!isExpanded} nullWhenCollapsed>\n <StyledStepsContainer stageStatus={stageStatus}>\n <VerticalFormProgress\n steps={stage.steps ?? []}\n currentStepId={effectiveStepId}\n />\n </StyledStepsContainer>\n </ExpandCollapse>\n )}\n </li>\n );\n })}\n </StyledStageList>\n </StyledWorkflowInfoDialog>\n )}\n </StyledCaseWorkflowBanner>\n\n {titleEl && (\n <Tooltip target={titleEl} smart showDelay='none' hideDelay='none'>\n {heading}\n </Tooltip>\n )}\n </>\n );\n }\n);\n\nexport default CaseWorkflow;\n"]}
1
+ {"version":3,"file":"CaseWorkflow.js","sourceRoot":"","sources":["../../../src/components/GenAICoach/CaseWorkflow.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useCallback, forwardRef, useMemo, useEffect, useRef } from 'react';\nimport type { PropsWithoutRef } from 'react';\nimport { parseToHsl } from 'polished';\n\nimport {\n Icon,\n Button,\n Tooltip,\n ExpandCollapse,\n useConsolidatedRef,\n useElement,\n useI18n,\n useTheme,\n tryCatch,\n StyledIconShape,\n registerIcon\n} from '@pega/cosmos-react-core';\nimport type { ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\nimport * as chevronIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/chevron.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 VerticalFormProgress from '@pega/cosmos-react-core/lib/components/MultiStepForm/VerticalFormProgress';\n\nimport type { CaseWorkflowProps, CaseWorkflowStageProps } from './GenAICoach.types';\nimport {\n StyledCaseWorkflowBanner,\n StyledCaseLaunchButton,\n StyledCaseIconWrapper,\n StyledCaseTitleText,\n StyledProgressLabel,\n StyledWorkflowInfoDialog,\n StyledStageList,\n StyledStageButton,\n StyledStepsContainer,\n StyledCaseViewIcon,\n StyledCaseViewImage\n} from './GenAICoach.styles';\n\nregisterIcon(chevronIcon, timesIcon, caretDownIcon);\n\nconst getEffectiveCurrentStepId = (stage: CaseWorkflowStageProps): string | undefined => {\n const { steps } = stage;\n\n if (!steps || steps.length === 0) return undefined;\n\n if (stage.current && stage.currentStepId) return stage.currentStepId;\n\n if (stage.completed) return steps[steps.length - 1].id;\n\n return steps[0].id;\n};\n\nconst getCurrentStageAndStep = (stages: CaseWorkflowStageProps[]) => {\n const stage = stages.find(s => s.current);\n\n if (!stage) return undefined;\n\n const step = stage.currentStepId\n ? stage.steps?.find(s => s.id === stage.currentStepId)\n : undefined;\n\n return { stageName: stage.name, stepName: step?.name };\n};\n\nconst CaseWorkflow: ForwardRefForwardPropsComponent<CaseWorkflowProps> = forwardRef(\n function CaseWorkflow(\n { heading, icon, stages, onHeadingClick, ...restProps }: PropsWithoutRef<CaseWorkflowProps>,\n ref: CaseWorkflowProps['ref']\n ) {\n const t = useI18n();\n const theme = useTheme();\n\n const rootRef = useConsolidatedRef(ref);\n\n const [workflowBtnEl, setWorkflowBtnEl] = useElement<HTMLButtonElement>();\n const [titleEl, setTitleEl] = useElement<HTMLButtonElement>();\n\n const [isOpen, setIsOpen] = useState(false);\n const [hasBrokenImage, setHasBrokenImage] = useState<boolean | undefined>();\n\n const currentStageId = stages.find(s => s.current)?.id;\n const currentStageIdRef = useRef(currentStageId);\n currentStageIdRef.current = currentStageId;\n\n const [expandedStages, setExpandedStages] = useState<Set<string>>(() => {\n const initial = new Set<string>();\n if (currentStageId) initial.add(currentStageId);\n return initial;\n });\n\n const toggleStage = useCallback((stageId: string) => {\n setExpandedStages(prev => {\n const next = new Set(prev);\n if (next.has(stageId)) {\n next.delete(stageId);\n } else {\n next.add(stageId);\n }\n return next;\n });\n }, []);\n\n const toggleDialog = useCallback(() => {\n setIsOpen(prev => !prev);\n }, []);\n\n const closeDialog = useCallback(() => {\n setIsOpen(false);\n }, []);\n\n const iconForeground =\n theme.components['case-view'].icon.color !== 'auto'\n ? theme.components['case-view'].icon.color\n : theme.components['case-view'].header['foreground-color'];\n\n const iconBackground = useMemo(() => {\n if (theme.components['case-view'].icon.background !== 'auto') {\n return theme.components['case-view'].icon.background;\n }\n return tryCatch(\n () => {\n const { lightness } = parseToHsl(\n theme.components['case-view'].header['background-color']\n );\n return lightness > 0.35 ? 'rgba(0, 0, 0, 0.2)' : 'rgba(255, 255, 255, 0.2)';\n },\n () => 'transparent'\n );\n }, [theme]);\n\n const showIcon = !!icon && !hasBrokenImage;\n\n const currentInfo = getCurrentStageAndStep(stages);\n\n const stageStepLabel = currentInfo\n ? `${currentInfo.stageName}${currentInfo.stepName ? `: ${currentInfo.stepName}` : ''}`\n : undefined;\n\n useEffect(() => {\n setHasBrokenImage(undefined);\n }, [typeof icon === 'string' ? icon : icon?.href]);\n\n useEffect(() => {\n if (isOpen) {\n const initial = new Set<string>();\n if (currentStageIdRef.current) initial.add(currentStageIdRef.current);\n setExpandedStages(initial);\n }\n }, [isOpen]);\n\n return (\n <>\n <StyledCaseWorkflowBanner\n container={{ alignItems: 'center', justify: 'between', gap: 0 }}\n {...restProps}\n ref={rootRef}\n >\n <StyledCaseLaunchButton\n ref={setTitleEl}\n variant='simple'\n onClick={onHeadingClick}\n aria-label={t('open_noun', [heading])}\n >\n {showIcon && (\n <StyledCaseIconWrapper>\n {typeof icon === 'string' ? (\n <StyledCaseViewIcon\n name={icon}\n foreground={iconForeground}\n background={iconBackground}\n size='s'\n />\n ) : (\n <StyledIconShape background={iconBackground}>\n <StyledCaseViewImage\n src={icon?.href}\n alt={t('case_image')}\n onLoad={() => {\n setHasBrokenImage(false);\n }}\n onError={() => {\n setHasBrokenImage(true);\n }}\n />\n </StyledIconShape>\n )}\n </StyledCaseIconWrapper>\n )}\n\n <StyledCaseTitleText>{heading}</StyledCaseTitleText>\n\n {stageStepLabel && <StyledProgressLabel>{stageStepLabel}</StyledProgressLabel>}\n </StyledCaseLaunchButton>\n\n <Button\n ref={setWorkflowBtnEl}\n icon\n variant='simple'\n onClick={toggleDialog}\n aria-expanded={isOpen}\n label={t('workflow')}\n aria-label={t('open_noun', [t('workflow')])}\n >\n <Icon name='chevron' />\n </Button>\n\n {isOpen && workflowBtnEl && (\n <StyledWorkflowInfoDialog\n heading={heading}\n target={workflowBtnEl}\n onDismiss={closeDialog}\n >\n <StyledStageList>\n {stages.map(stage => {\n const isExpanded = expandedStages.has(stage.id);\n const hasSteps = Array.isArray(stage.steps) && stage.steps.length > 0;\n const effectiveStepId = getEffectiveCurrentStepId(stage);\n\n let stageStatus: 'active' | 'completed' | 'not-started' = 'not-started';\n if (stage.completed) stageStatus = 'completed';\n else if (stage.current) stageStatus = 'active';\n\n return (\n <li key={stage.id}>\n <StyledStageButton\n onClick={() => toggleStage(stage.id)}\n aria-expanded={isExpanded}\n expanded={isExpanded}\n variant='simple'\n >\n <Icon name='caret-down' />\n\n {stage.name}\n </StyledStageButton>\n\n {hasSteps && effectiveStepId && (\n <ExpandCollapse collapsed={!isExpanded} nullWhenCollapsed>\n <StyledStepsContainer stageStatus={stageStatus}>\n <VerticalFormProgress\n steps={stage.steps ?? []}\n currentStepId={effectiveStepId}\n />\n </StyledStepsContainer>\n </ExpandCollapse>\n )}\n </li>\n );\n })}\n </StyledStageList>\n </StyledWorkflowInfoDialog>\n )}\n </StyledCaseWorkflowBanner>\n\n {titleEl && (\n <Tooltip target={titleEl} smart showDelay='none' hideDelay='none'>\n {heading}\n </Tooltip>\n )}\n </>\n );\n }\n);\n\nexport default CaseWorkflow;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"GenAICoach.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"AAuGA,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,GAAG,CAAC;AAmBhF,eAAO,MAAM,SAAS,+CA2GrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,+CAQ5B,CAAC;iCAqkDyB,eAAe;;;AAQ1C,wBAA6D"}
1
+ {"version":3,"file":"GenAICoach.d.ts","sourceRoot":"","sources":["../../../src/components/GenAICoach/GenAICoach.tsx"],"names":[],"mappings":"AAuGA,OAAO,EAAyC,KAAK,eAAe,EAAE,MAAM,GAAG,CAAC;AAmBhF,eAAO,MAAM,SAAS,+CA2GrB,CAAC;AAEF,eAAO,MAAM,gBAAgB,+CAQ5B,CAAC;iCAkkDyB,eAAe;;;AAQ1C,wBAA6D"}
@@ -856,10 +856,7 @@ const GenAICoachContent = ({ testId, coachOptions: coachOptionsProps, onCoachCha
856
856
  const messageProps = isCoachMessage(item)
857
857
  ? {
858
858
  ...item,
859
- suggestions: messages.findLast(messageItem => isCoachMessage(messageItem))?.id ===
860
- item.id
861
- ? item.suggestions
862
- : undefined,
859
+ suggestions: latestMessage?.id === item.id ? item.suggestions : undefined,
863
860
  onSend,
864
861
  onSubmit: item.isToolConfirmation
865
862
  ? (tools) => {