@pega/cosmos-react-build 10.0.0-build.9.1 → 10.0.0-build.9.10

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":"Automation.d.ts","sourceRoot":"","sources":["../../../src/components/Automation/Automation.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAa,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAS1F,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;;;;AA0L5E,wBAA6D"}
1
+ {"version":3,"file":"Automation.d.ts","sourceRoot":"","sources":["../../../src/components/Automation/Automation.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAa,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAS1F,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;;;;AA6L5E,wBAA6D"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useRef, useState, useEffect, useMemo, forwardRef } from 'react';
3
- import { Flex, Button, Icon, useTestIds, withTestIds, useDirection, useEvent, useI18n, registerIcon } from '@pega/cosmos-react-core';
3
+ import { Flex, Button, Icon, useTestIds, withTestIds, useDirection, useEvent, useI18n, registerIcon, isInstance } from '@pega/cosmos-react-core';
4
4
  import * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';
5
5
  import * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';
6
6
  import * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';
@@ -63,7 +63,10 @@ const Automation = forwardRef(({ testId, nodes, onExpandAll, onCollapseAll, focu
63
63
  switch (e.type) {
64
64
  case 'focusin': {
65
65
  if (!focusedNode) {
66
- setFocusedNode(nodes[0].stepId);
66
+ const clickedNodeId = isInstance(e.target, Element)
67
+ ? e.target.closest('[role="treeitem"]')?.getAttribute('id')
68
+ : null;
69
+ setFocusedNode(clickedNodeId || nodes[0].stepId);
67
70
  }
68
71
  if (!focusInsideTree) {
69
72
  focusInsideTreeRef.current = true;
@@ -1 +1 @@
1
- {"version":3,"file":"Automation.js","sourceRoot":"","sources":["../../../src/components/Automation/Automation.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAGzE,OAAO,EACL,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,UAAU,EACV,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,YAAY,EACb,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,aAAa,MAAM,mEAAmE,CAAC;AACnG,OAAO,KAAK,aAAa,MAAM,mEAAmE,CAAC;AACnG,OAAO,KAAK,cAAc,MAAM,oEAAoE,CAAC;AAErG,OAAO,QAAQ,MAAM,YAAY,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErE,OAAO,iBAAiB,MAAM,qBAAqB,CAAC;AAEpD,YAAY,CAAC,aAAa,EAAE,aAAa,EAAE,cAAc,CAAC,CAAC;AAE3D,MAAM,YAAY,GAAgD,CAAC,EAAE,OAAO,EAAE,GAAG,SAAS,EAAE,EAAE,EAAE;IAC9F,OAAO,CACL,8BACE,KAAC,QAAQ,OAAK,SAAS,GAAI,EAC1B,OAAO,IACP,CACJ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAqD,UAAU,CAC7E,CAAC,EACC,MAAM,EACN,KAAK,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,4BAA4B,EACK,EAAE,EAAE;IACrC,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IAEzD,MAAM,OAAO,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;IAE/C,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAA6B,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,MAAM,kBAAkB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAEzC,6BAA6B;IAC7B,MAAM,aAAa,GAAG,CAAC,CAAgB,EAAE,EAAE;QACzC,IAAI,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,eAAe,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,CAAC,GAAG,EAAE,CAAC;YACd,KAAK,WAAW,CAAC,CAAC,CAAC;gBACjB,MAAM,QAAQ,GAAG,qBAAqB,CAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBACvE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAChC,MAAM;YACR,CAAC;YACD,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,MAAM,YAAY,GAAG,qBAAqB,CAAC,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;gBAC/E,cAAc,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM;YACR,CAAC;YACD,KAAK,OAAO,CAAC,CAAC,CAAC;gBACb,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBACzB,MAAM;YACR,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,IAAI,eAAe,EAAE,CAAC;oBACpB,MAAM,qBAAqB,GAAG,QAAQ,CAAC,aAAa;wBAClD,EAAE,OAAO,CAAC,mBAAmB,CAAC;wBAC9B,EAAE,YAAY,CAAC,IAAI,CAAC,CAAC;oBACvB,IAAI,qBAAqB,EAAE,CAAC;wBAC1B,cAAc,CAAC,qBAAqB,CAAC,CAAC;oBACxC,CAAC;oBACD,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;gBAED,MAAM;YACR,CAAC;YACD;gBACE,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEF,4CAA4C;IAC5C,MAAM,gBAAgB,GAAG,CAAC,CAAa,EAAE,EAAE;QACzC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YACf,KAAK,SAAS,CAAC,CAAC,CAAC;gBACf,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAClC,CAAC;gBACD,IAAI,CAAC,eAAe,EAAE,CAAC;oBACrB,kBAAkB,CAAC,OAAO,GAAG,IAAI,CAAC;oBAClC,kBAAkB,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;gBAED,MAAM;YACR,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,IAAI,eAAe,EAAE,CAAC;oBACpB,kBAAkB,CAAC,OAAO,GAAG,KAAK,CAAC;oBACnC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBAC5B,CAAC;gBACD,MAAM;YACR,CAAC;YACD;gBACE,MAAM;QACV,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,CAAQ,EAAE,EAAE;QAC/B,MAAM,aAAa,GACjB,CAAC,CAAC,MAAM,YAAY,OAAO;YACzB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,YAAY,CAAC,IAAI,CAAC;YAC3D,CAAC,CAAC,IAAI,CAAC;QACX,IAAI,kBAAkB,CAAC,OAAO,IAAI,CAAC,eAAe,IAAI,aAAa,EAAE,CAAC;YACpE,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACzB,cAAc,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,CAAC;IAEF,uCAAuC;IACvC,QAAQ,CAAC,SAAS,EAAE,aAAa,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,QAAQ,CAAC,SAAS,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC3D,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAEpD,kCAAkC;IAClC,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,aAAa,EAAE,CAAC;YAClB,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAC1B,cAAc,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;IACH,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;IAEpB,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE/F,MAAM,kBAAkB,GAAG,OAAO,CAChC,GAAG,EAAE,CAAC,CAAC;QACL,aAAa,EAAE,WAAW;QAC1B,eAAe;QACf,eAAe;QACf,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM;KAC9B,CAAC,EACF,CAAC,WAAW,EAAE,eAAe,EAAE,eAAe,EAAE,KAAK,CAAC,CACvD,CAAC;IAEF,OAAO,CACL,MAAC,iBAAiB,CAAC,QAAQ,IAAC,KAAK,EAAE,kBAAkB,aACnD,MAAC,IAAI,IACH,SAAS,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAChC,OAAO,EAAC,eAAe,iBACV,OAAO,CAAC,IAAI,EACzB,UAAU,EAAC,QAAQ,aAElB,WAAW,IAAI,CACd,MAAC,MAAM,kBACO,CAAC,CAAC,cAAc,CAAC,iBAChB,OAAO,CAAC,SAAS,EAC9B,OAAO,EAAE,WAAW,aAEpB,KAAC,IAAI,IAAC,IAAI,EAAC,YAAY,GAAG,EACzB,CAAC,CAAC,YAAY,CAAC,IACT,CACV,EAEA,aAAa,IAAI,CAChB,MAAC,MAAM,kBACO,CAAC,CAAC,gBAAgB,CAAC,iBAClB,OAAO,CAAC,WAAW,EAChC,OAAO,EAAE,aAAa,aAEtB,KAAC,IAAI,IAAC,IAAI,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAI,EAChD,CAAC,CAAC,cAAc,CAAC,IACX,CACV,EAEA,4BAA4B,IAAI,CAC/B,KAAC,cAAc,IACb,KAAK,EAAE,CAAC,CAAC,mBAAmB,CAAC,EAC7B,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,4BAA4B,iBACxB,OAAO,CAAC,gBAAgB,GACrC,CACH,IACI,EAEP,KAAC,cAAc,IACb,GAAG,EAAE,OAAO,EACZ,MAAM,EAAE,OAAO,CAAC,KAAK,EACrB,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,YAAY,GAC1B,IACyB,CAC9B,CAAC;AACJ,CAAC,CACF,CAAC;AAEF,eAAe,WAAW,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["import { useRef, useState, useEffect, useMemo, forwardRef } from 'react';\nimport type { PropsWithoutRef } from 'react';\n\nimport {\n Flex,\n Button,\n Icon,\n useTestIds,\n withTestIds,\n useDirection,\n useEvent,\n useI18n,\n registerIcon\n} from '@pega/cosmos-react-core';\nimport type { TreeProps, ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\n\nimport RuleStep from './RuleStep';\nimport { getAutomationTestIds } from './Automation.test-ids';\nimport { automationTreeHelpers } from './Automation.utils';\nimport { StyledAIButton, StyledBaseTree } from './Automation.styles';\nimport type { AutomationProps, RuleStepTreeNode } from './Automation.types';\nimport AutomationContext from './AutomationContext';\n\nregisterIcon(caretDownIcon, caretLeftIcon, caretRightIcon);\n\nconst NodeRenderer: TreeProps<RuleStepTreeNode>['nodeRenderer'] = ({ subTree, ...restProps }) => {\n return (\n <>\n <RuleStep {...restProps} />\n {subTree}\n </>\n );\n};\n\nconst Automation: ForwardRefForwardPropsComponent<AutomationProps> = forwardRef(\n ({\n testId,\n nodes,\n onExpandAll,\n onCollapseAll,\n focusedNodeId,\n onGenerateCommentsUsingGenAI\n }: PropsWithoutRef<AutomationProps>) => {\n const t = useI18n();\n const { rtl } = useDirection();\n const testIds = useTestIds(testId, getAutomationTestIds);\n\n const treeRef = useRef<HTMLUListElement>(null);\n\n const [focusedNode, setFocusedNode] = useState<RuleStepTreeNode['stepId']>('');\n const [focusInsideNode, setFocusInsideNode] = useState(false);\n const [focusInsideTree, setFocusInsideTree] = useState(false);\n const focusInsideTreeRef = useRef(false);\n\n // handle key strokes on tree\n const handlekeyDown = (e: KeyboardEvent) => {\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key) && focusInsideNode) {\n return;\n }\n switch (e.key) {\n case 'ArrowDown': {\n const nextNode = automationTreeHelpers.getNextNode(nodes, focusedNode);\n setFocusedNode(nextNode.stepId);\n break;\n }\n case 'ArrowUp': {\n const previousNode = automationTreeHelpers.getPreviousNode(nodes, focusedNode);\n setFocusedNode(previousNode.stepId);\n break;\n }\n case 'Enter': {\n setFocusInsideNode(true);\n break;\n }\n case 'Escape': {\n if (focusInsideNode) {\n const currentFocussedNodeId = document.activeElement\n ?.closest('[role=\"treeitem\"]')\n ?.getAttribute('id');\n if (currentFocussedNodeId) {\n setFocusedNode(currentFocussedNodeId);\n }\n setFocusInsideNode(false);\n }\n\n break;\n }\n default:\n break;\n }\n };\n\n // handle focus movements in and out of tree\n const handleFocusEvent = (e: FocusEvent) => {\n switch (e.type) {\n case 'focusin': {\n if (!focusedNode) {\n setFocusedNode(nodes[0].stepId);\n }\n if (!focusInsideTree) {\n focusInsideTreeRef.current = true;\n setFocusInsideTree(true);\n }\n\n break;\n }\n case 'focusout': {\n if (focusInsideTree) {\n focusInsideTreeRef.current = false;\n setFocusInsideTree(false);\n }\n break;\n }\n default:\n break;\n }\n };\n\n const handleClick = (e: Event) => {\n const currentNodeId =\n e.target instanceof Element\n ? e.target.closest('[role=\"treeitem\"]')?.getAttribute('id')\n : null;\n if (focusInsideTreeRef.current && !focusInsideNode && currentNodeId) {\n setFocusInsideNode(true);\n setFocusedNode(currentNodeId);\n }\n };\n\n // event handlers for focus management.\n useEvent('keydown', handlekeyDown, { target: treeRef });\n useEvent('focusin', handleFocusEvent, { target: treeRef });\n useEvent('focusout', handleFocusEvent, { target: treeRef });\n useEvent('click', handleClick, { target: treeRef });\n\n // To capture focusNode from story\n useEffect(() => {\n if (focusedNodeId) {\n setFocusInsideNode(false);\n setFocusedNode(focusedNodeId);\n }\n }, [focusedNodeId]);\n\n const indexedNodes = useMemo(() => automationTreeHelpers.calculateStepIndices(nodes), [nodes]);\n\n const automationCtxValue = useMemo(\n () => ({\n focusedNodeId: focusedNode,\n focusInsideNode,\n focusInsideTree,\n firstNodeId: nodes[0]?.stepId\n }),\n [focusedNode, focusInsideNode, focusInsideTree, nodes]\n );\n\n return (\n <AutomationContext.Provider value={automationCtxValue}>\n <Flex\n container={{ pad: [2, 2, 2, 0] }}\n justify='space-between'\n data-testid={testIds.root}\n alignItems='center'\n >\n {onExpandAll && (\n <Button\n aria-label={t('expand_steps')}\n data-testid={testIds.expandAll}\n onClick={onExpandAll}\n >\n <Icon name='caret-down' />\n {t('expand_all')}\n </Button>\n )}\n\n {onCollapseAll && (\n <Button\n aria-label={t('collapse_steps')}\n data-testid={testIds.collapseAll}\n onClick={onCollapseAll}\n >\n <Icon name={`caret-${rtl ? 'left' : 'right'}`} />\n {t('collapse_all')}\n </Button>\n )}\n\n {onGenerateCommentsUsingGenAI && (\n <StyledAIButton\n label={t('generate_comments')}\n variant='secondary'\n onClick={onGenerateCommentsUsingGenAI}\n data-testid={testIds.generateComments}\n />\n )}\n </Flex>\n\n <StyledBaseTree\n ref={treeRef}\n testId={testIds.steps}\n nodes={indexedNodes}\n nodeRenderer={NodeRenderer}\n />\n </AutomationContext.Provider>\n );\n }\n);\n\nexport default withTestIds(Automation, getAutomationTestIds);\n"]}
1
+ {"version":3,"file":"Automation.js","sourceRoot":"","sources":["../../../src/components/Automation/Automation.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useRef, useState, useEffect, useMemo, forwardRef } from 'react';\nimport type { PropsWithoutRef } from 'react';\n\nimport {\n Flex,\n Button,\n Icon,\n useTestIds,\n withTestIds,\n useDirection,\n useEvent,\n useI18n,\n registerIcon,\n isInstance\n} from '@pega/cosmos-react-core';\nimport type { TreeProps, ForwardRefForwardPropsComponent } from '@pega/cosmos-react-core';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\n\nimport RuleStep from './RuleStep';\nimport { getAutomationTestIds } from './Automation.test-ids';\nimport { automationTreeHelpers } from './Automation.utils';\nimport { StyledAIButton, StyledBaseTree } from './Automation.styles';\nimport type { AutomationProps, RuleStepTreeNode } from './Automation.types';\nimport AutomationContext from './AutomationContext';\n\nregisterIcon(caretDownIcon, caretLeftIcon, caretRightIcon);\n\nconst NodeRenderer: TreeProps<RuleStepTreeNode>['nodeRenderer'] = ({ subTree, ...restProps }) => {\n return (\n <>\n <RuleStep {...restProps} />\n {subTree}\n </>\n );\n};\n\nconst Automation: ForwardRefForwardPropsComponent<AutomationProps> = forwardRef(\n ({\n testId,\n nodes,\n onExpandAll,\n onCollapseAll,\n focusedNodeId,\n onGenerateCommentsUsingGenAI\n }: PropsWithoutRef<AutomationProps>) => {\n const t = useI18n();\n const { rtl } = useDirection();\n const testIds = useTestIds(testId, getAutomationTestIds);\n\n const treeRef = useRef<HTMLUListElement>(null);\n\n const [focusedNode, setFocusedNode] = useState<RuleStepTreeNode['stepId']>('');\n const [focusInsideNode, setFocusInsideNode] = useState(false);\n const [focusInsideTree, setFocusInsideTree] = useState(false);\n const focusInsideTreeRef = useRef(false);\n\n // handle key strokes on tree\n const handlekeyDown = (e: KeyboardEvent) => {\n if (['Enter', 'ArrowDown', 'ArrowUp'].includes(e.key) && focusInsideNode) {\n return;\n }\n switch (e.key) {\n case 'ArrowDown': {\n const nextNode = automationTreeHelpers.getNextNode(nodes, focusedNode);\n setFocusedNode(nextNode.stepId);\n break;\n }\n case 'ArrowUp': {\n const previousNode = automationTreeHelpers.getPreviousNode(nodes, focusedNode);\n setFocusedNode(previousNode.stepId);\n break;\n }\n case 'Enter': {\n setFocusInsideNode(true);\n break;\n }\n case 'Escape': {\n if (focusInsideNode) {\n const currentFocussedNodeId = document.activeElement\n ?.closest('[role=\"treeitem\"]')\n ?.getAttribute('id');\n if (currentFocussedNodeId) {\n setFocusedNode(currentFocussedNodeId);\n }\n setFocusInsideNode(false);\n }\n\n break;\n }\n default:\n break;\n }\n };\n\n // handle focus movements in and out of tree\n const handleFocusEvent = (e: FocusEvent) => {\n switch (e.type) {\n case 'focusin': {\n if (!focusedNode) {\n const clickedNodeId = isInstance(e.target, Element)\n ? e.target.closest('[role=\"treeitem\"]')?.getAttribute('id')\n : null;\n setFocusedNode(clickedNodeId || nodes[0].stepId);\n }\n if (!focusInsideTree) {\n focusInsideTreeRef.current = true;\n setFocusInsideTree(true);\n }\n\n break;\n }\n case 'focusout': {\n if (focusInsideTree) {\n focusInsideTreeRef.current = false;\n setFocusInsideTree(false);\n }\n break;\n }\n default:\n break;\n }\n };\n\n const handleClick = (e: Event) => {\n const currentNodeId =\n e.target instanceof Element\n ? e.target.closest('[role=\"treeitem\"]')?.getAttribute('id')\n : null;\n if (focusInsideTreeRef.current && !focusInsideNode && currentNodeId) {\n setFocusInsideNode(true);\n setFocusedNode(currentNodeId);\n }\n };\n\n // event handlers for focus management.\n useEvent('keydown', handlekeyDown, { target: treeRef });\n useEvent('focusin', handleFocusEvent, { target: treeRef });\n useEvent('focusout', handleFocusEvent, { target: treeRef });\n useEvent('click', handleClick, { target: treeRef });\n\n // To capture focusNode from story\n useEffect(() => {\n if (focusedNodeId) {\n setFocusInsideNode(false);\n setFocusedNode(focusedNodeId);\n }\n }, [focusedNodeId]);\n\n const indexedNodes = useMemo(() => automationTreeHelpers.calculateStepIndices(nodes), [nodes]);\n\n const automationCtxValue = useMemo(\n () => ({\n focusedNodeId: focusedNode,\n focusInsideNode,\n focusInsideTree,\n firstNodeId: nodes[0]?.stepId\n }),\n [focusedNode, focusInsideNode, focusInsideTree, nodes]\n );\n\n return (\n <AutomationContext.Provider value={automationCtxValue}>\n <Flex\n container={{ pad: [2, 2, 2, 0] }}\n justify='space-between'\n data-testid={testIds.root}\n alignItems='center'\n >\n {onExpandAll && (\n <Button\n aria-label={t('expand_steps')}\n data-testid={testIds.expandAll}\n onClick={onExpandAll}\n >\n <Icon name='caret-down' />\n {t('expand_all')}\n </Button>\n )}\n\n {onCollapseAll && (\n <Button\n aria-label={t('collapse_steps')}\n data-testid={testIds.collapseAll}\n onClick={onCollapseAll}\n >\n <Icon name={`caret-${rtl ? 'left' : 'right'}`} />\n {t('collapse_all')}\n </Button>\n )}\n\n {onGenerateCommentsUsingGenAI && (\n <StyledAIButton\n label={t('generate_comments')}\n variant='secondary'\n onClick={onGenerateCommentsUsingGenAI}\n data-testid={testIds.generateComments}\n />\n )}\n </Flex>\n\n <StyledBaseTree\n ref={treeRef}\n testId={testIds.steps}\n nodes={indexedNodes}\n nodeRenderer={NodeRenderer}\n />\n </AutomationContext.Provider>\n );\n }\n);\n\nexport default withTestIds(Automation, getAutomationTestIds);\n"]}
@@ -15,39 +15,59 @@ export interface DeleteDialogProps {
15
15
  }
16
16
  export declare const StyledDeleteDialog: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<(Omit<Omit<import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps & {
17
17
  onDismiss?: () => void;
18
- onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
19
18
  onSubmit: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
20
19
  } & {
21
- compact: true;
20
+ compact?: boolean;
22
21
  } & {
23
22
  'aria-label': string;
24
23
  heading?: never;
25
24
  additionalInfo?: never;
26
- } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
25
+ } & {
26
+ onAfterClose?: () => void;
27
+ onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction | undefined;
28
+ } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo" | "onAfterClose">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
27
29
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
28
30
  }) | (Omit<Omit<import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps & {
29
31
  onDismiss?: () => void;
30
- onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
31
32
  onSubmit: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
32
33
  } & {
33
- compact?: false | undefined;
34
+ compact?: boolean;
35
+ } & {
36
+ 'aria-label': string;
37
+ heading?: never;
38
+ additionalInfo?: never;
39
+ } & {
40
+ onAfterClose: () => void;
41
+ onCancel?: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
42
+ } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo" | "onAfterClose">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
43
+ ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
44
+ }) | (Omit<Omit<import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps & {
45
+ onDismiss?: () => void;
46
+ onSubmit: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
47
+ } & {
48
+ compact?: false;
34
49
  } & {
35
50
  heading: string;
36
51
  additionalInfo?: import("@pega/cosmos-react-core").AdditionalInfoProps;
37
52
  'aria-label'?: never;
38
- } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
53
+ } & {
54
+ onAfterClose?: () => void;
55
+ onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction | undefined;
56
+ } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo" | "onAfterClose">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
39
57
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
40
58
  }) | (Omit<Omit<import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps & {
41
59
  onDismiss?: () => void;
42
- onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
43
60
  onSubmit: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
44
61
  } & {
45
- compact?: false | undefined;
62
+ compact?: false;
46
63
  } & {
47
- 'aria-label': string;
48
- heading?: never;
49
- additionalInfo?: never;
50
- } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
64
+ heading: string;
65
+ additionalInfo?: import("@pega/cosmos-react-core").AdditionalInfoProps;
66
+ 'aria-label'?: never;
67
+ } & {
68
+ onAfterClose: () => void;
69
+ onCancel?: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
70
+ } & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "compact" | "aria-label" | "onSubmit" | "onCancel" | "heading" | keyof import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps | "onDismiss" | "additionalInfo" | "onAfterClose">, "ref"> & import("react").RefAttributes<HTMLDivElement>, "ref"> & {
51
71
  ref?: ((instance: HTMLDivElement | null) => void | import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES[keyof import("react").DO_NOT_USE_OR_YOU_WILL_BE_FIRED_CALLBACK_REF_RETURN_VALUES]) | import("react").RefObject<HTMLDivElement> | null | undefined;
52
72
  }), import("styled-components/dist/types").BaseObject>> & string & Omit<import("react").ForwardRefExoticComponent<PropsWithoutRef<FormDialogProps> & import("react").RefAttributes<HTMLDivElement>>, keyof import("react").Component<any, {}, any>>;
53
73
  declare const DeleteDialog: ({ target, flowGraphData, rendererGraphData, nodeId, onChange, onSubmit, onCancel }: PropsWithoutRef<DeleteDialogProps>) => import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteDialog.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/DeleteDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,WAAW,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAc9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CACT,aAAa,EAAE,cAAc,EAC7B,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,EAAE,CAAC,EAAE,WAAW,KACb,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mPAI7B,CAAC;AAIH,QAAA,MAAM,YAAY,GAAI,oFAQnB,eAAe,CAAC,iBAAiB,CAAC,4CA6NpC,CAAC;AAEF,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"DeleteDialog.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/DeleteDialog.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAsB,WAAW,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAe9E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EAElB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAGnD,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,CAAC;IAClC,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACpC,iBAAiB,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CACT,aAAa,EAAE,cAAc,EAC7B,aAAa,EAAE,cAAc,GAAG,SAAS,EACzC,EAAE,CAAC,EAAE,WAAW,KACb,IAAI,CAAC;IACV,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,GAAG,CAAC,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC;CAC9B;AAED,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mPAM7B,CAAC;AAIH,QAAA,MAAM,YAAY,GAAI,oFAQnB,eAAe,CAAC,iBAAiB,CAAC,4CA6NpC,CAAC;AAEF,eAAe,YAAY,CAAC"}
@@ -1,13 +1,15 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
2
  import { useState, useEffect, useMemo } from 'react';
3
3
  import styled, { css } from 'styled-components';
4
- import { Select, Option, Text, Flex, useI18n, useElement, FormDialog, defaultThemeProp, getResolvedTarget } from '@pega/cosmos-react-core';
4
+ import { StyledTouchDialog, Select, Option, Text, Flex, useI18n, useElement, FormDialog, defaultThemeProp, getResolvedTarget } from '@pega/cosmos-react-core';
5
5
  import { DirectedGraph } from './Renderer/Utils/Graph';
6
6
  import deleteNodeUtils from './Utils/deleteNodeUtils';
7
7
  import { getReferences } from './helper';
8
8
  export const StyledDeleteDialog = styled(FormDialog)(({ theme }) => {
9
9
  return css `
10
- min-width: calc(30 * ${theme.base.spacing});
10
+ &:not(${StyledTouchDialog}) {
11
+ min-width: calc(30 * ${theme.base.spacing});
12
+ }
11
13
  `;
12
14
  });
13
15
  StyledDeleteDialog.defaultProps = defaultThemeProp;
@@ -1 +1 @@
1
- {"version":3,"file":"DeleteDialog.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/DeleteDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport type { ChangeEventHandler, ChangeEvent, PropsWithoutRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n Select,\n Option,\n Text,\n Flex,\n useI18n,\n useElement,\n FormDialog,\n defaultThemeProp,\n getResolvedTarget\n} from '@pega/cosmos-react-core';\nimport type { FormDialogProps } from '@pega/cosmos-react-core';\n\nimport { DirectedGraph } from './Renderer/Utils/Graph';\nimport type { GraphData } from './Renderer/Utils/Graph';\nimport type {\n GraphDataAsMap,\n DeleteNodeOutcome,\n DeleteNodeModalOption\n} from './Utils/deleteNodeUtils';\nimport deleteNodeUtils from './Utils/deleteNodeUtils';\nimport type { NodeProps } from './Node/Node.types';\nimport { getReferences } from './helper';\n\nexport interface DeleteDialogProps {\n target: FormDialogProps['target'];\n flowGraphData: GraphData<NodeProps>;\n rendererGraphData: GraphData<NodeProps>;\n nodeId: string;\n onChange?: (\n itemsToDelete: GraphDataAsMap,\n itemsToRetain: GraphDataAsMap | undefined,\n ev?: ChangeEvent\n ) => void;\n onSubmit?: (outcome: DeleteNodeOutcome) => void;\n onCancel?: () => void;\n ref?: FormDialogProps['ref'];\n}\n\nexport const StyledDeleteDialog = styled(FormDialog)(({ theme }) => {\n return css`\n min-width: calc(30 * ${theme.base.spacing});\n `;\n});\n\nStyledDeleteDialog.defaultProps = defaultThemeProp;\n\nconst DeleteDialog = ({\n target,\n flowGraphData,\n rendererGraphData,\n nodeId,\n onChange,\n onSubmit,\n onCancel\n}: PropsWithoutRef<DeleteDialogProps>) => {\n const [currentSelection, setCurrentSelection] = useState<number>(0);\n\n const [currNode, setCurrNode] = useElement<Element>();\n\n const t = useI18n();\n\n const graph = new DirectedGraph<NodeProps>(rendererGraphData);\n\n const deleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(graph, nodeId);\n\n const deleteOptions: DeleteNodeModalOption[] = deleteOptionsResult.options;\n\n const selectedPath: string = useMemo(() => {\n if (currentSelection === -1 || !deleteOptions[currentSelection]) {\n return 'none';\n }\n const option = deleteOptions[currentSelection];\n return option.connector.label || option.connector.id;\n }, [deleteOptions, currentSelection]);\n\n const nodeType = graph.getNode(nodeId).type.name;\n\n useEffect(() => {\n if (deleteOptionsResult && deleteOptions[currentSelection]) {\n const itemsToDelete: GraphDataAsMap =\n nodeType !== 'Decision'\n ? deleteOptionsResult.allItems\n : deleteOptions[currentSelection].restItems;\n\n // add the actual node to be deleted also, to the list\n itemsToDelete.nodes[nodeId] = graph.getNode(nodeId);\n setCurrNode(getResolvedTarget(target));\n onChange?.(itemsToDelete, deleteOptions[currentSelection].pathItems);\n }\n }, [rendererGraphData]);\n\n const onChangeHandler: ChangeEventHandler = (ev: ChangeEvent<HTMLSelectElement>) => {\n const newSelection =\n ev.target.selectedIndex >= deleteOptions.length ? -1 : ev.target.selectedIndex;\n\n setCurrentSelection(newSelection);\n\n let itemsToDelete;\n if (deleteOptionsResult) {\n itemsToDelete = deleteOptionsResult.allItems;\n }\n\n let itemsToRetain;\n\n if (newSelection !== -1) {\n itemsToDelete = deleteOptions[newSelection].restItems;\n itemsToRetain = deleteOptions[newSelection].pathItems;\n }\n\n // add the actual node to be deleted also, to the list\n if (itemsToDelete) {\n itemsToDelete.nodes[nodeId] = graph.getNode(nodeId);\n }\n\n if (itemsToDelete) {\n onChange?.(itemsToDelete, itemsToRetain, ev);\n }\n };\n\n const submitHandler = () => {\n let error = true;\n const finalGraph = new DirectedGraph<NodeProps>(flowGraphData);\n const finalDeleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(finalGraph, nodeId);\n\n let newTargetNode = finalDeleteOptionsResult?.destinationNodeId\n ? finalGraph.getNode(finalDeleteOptionsResult.destinationNodeId)\n : undefined;\n let itemsToDelete = finalDeleteOptionsResult.allItems;\n\n const selectedOption =\n currentSelection === -1 || nodeType !== 'Decision'\n ? undefined\n : finalDeleteOptionsResult?.options[currentSelection];\n let finalMetaData = selectedOption;\n\n if (selectedOption) {\n const pathConnectors = selectedOption.pathItems.connectors;\n const connectors = Object.keys(pathConnectors);\n for (let i = 0; i < connectors.length; i += 1) {\n const connectorData = pathConnectors[connectors[i]];\n if (\n connectorData &&\n finalGraph.getNode(connectorData.fromNodeId).type?.minConnectors !== 0 &&\n connectorData.toNodeId === finalDeleteOptionsResult.destinationNodeId\n ) {\n error = false;\n break;\n }\n }\n\n const references = getReferences(Object.values(itemsToDelete.nodes), finalGraph);\n if (error || references.length > 0) {\n onSubmit?.({\n graphData: {\n nodes: [],\n connectors: []\n },\n updates: {\n connectors: []\n },\n deletes: { nodes: {}, connectors: {} },\n error: true,\n references\n });\n return;\n }\n\n finalMetaData = finalDeleteOptionsResult.options.find(\n current => selectedOption.connector.id === current.connector.id\n );\n\n if (finalMetaData) {\n // get the ref of the first node of the retaining path\n newTargetNode = finalGraph.getNode(finalMetaData.connector.toNodeId);\n itemsToDelete = finalMetaData.restItems;\n }\n }\n\n // get the in-connectors of the selected node\n const nodeInConnectors = finalGraph.getInConnectors(nodeId);\n\n // iterate and set the targetNode to the above first node instead of the selected node.\n if (newTargetNode) {\n nodeInConnectors.forEach(con => {\n finalGraph.setConnector(con.id, {\n toNodeId: newTargetNode.id\n });\n });\n } else {\n // if no retaining path, then remove the in connectors of the deleted node as well\n nodeInConnectors.forEach(con => {\n finalGraph.removeConnector(con.id);\n });\n }\n\n const resultGraphData = finalGraph.getGraphData();\n\n itemsToDelete.nodes[nodeId] = finalGraph.getNode(nodeId);\n\n // filter the highlighted nodes, including the selected node\n const nodes = resultGraphData.nodes.filter(item => {\n return itemsToDelete.nodes[item.id] === undefined;\n });\n\n if (finalMetaData) {\n itemsToDelete.connectors[finalMetaData.connector.id] = finalMetaData.connector;\n }\n\n // filter the highlighted connectors\n const connectors = resultGraphData.connectors.filter(item => {\n return itemsToDelete.connectors[item.id] === undefined;\n });\n\n const outcome: DeleteNodeOutcome = {\n graphData: {\n nodes,\n connectors\n },\n updates: {\n connectors: nodeInConnectors\n },\n deletes: itemsToDelete,\n error: false\n };\n onSubmit?.(outcome);\n };\n\n const onCancelHandler = () => {\n if (currNode instanceof HTMLElement) {\n currNode.focus();\n }\n onCancel?.();\n };\n\n return (\n <StyledDeleteDialog\n target={target}\n heading={t('delete_step_title')}\n onCancel={onCancelHandler}\n onSubmit={submitHandler}\n placement='right-end'\n >\n <Flex container={{ gap: 2, pad: 2, direction: 'column' }}>\n {nodeType === 'Decision' ? (\n <>\n <Text>{t('delete_decision_step')}</Text>\n <Select\n id='select-demo'\n label={t('delete_step_outcome')}\n value={selectedPath}\n required\n onChange={onChangeHandler}\n >\n {deleteOptions.map(item => {\n return (\n <Option\n key={item.connector.id}\n value={item.connector.label ? item.connector.label : item.connector.id}\n >\n {item.connector.label ? item.connector.label : item.connector.id}\n </Option>\n );\n })}\n\n <Option key='none' value='none'>\n {t('delete_all_outcomes')}\n </Option>\n </Select>\n </>\n ) : (\n <Text>{t('delete_step')}</Text>\n )}\n </Flex>\n </StyledDeleteDialog>\n );\n};\n\nexport default DeleteDialog;\n"]}
1
+ {"version":3,"file":"DeleteDialog.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/DeleteDialog.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useMemo } from 'react';\nimport type { ChangeEventHandler, ChangeEvent, PropsWithoutRef } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport {\n StyledTouchDialog,\n Select,\n Option,\n Text,\n Flex,\n useI18n,\n useElement,\n FormDialog,\n defaultThemeProp,\n getResolvedTarget\n} from '@pega/cosmos-react-core';\nimport type { FormDialogProps } from '@pega/cosmos-react-core';\n\nimport { DirectedGraph } from './Renderer/Utils/Graph';\nimport type { GraphData } from './Renderer/Utils/Graph';\nimport type {\n GraphDataAsMap,\n DeleteNodeOutcome,\n DeleteNodeModalOption\n} from './Utils/deleteNodeUtils';\nimport deleteNodeUtils from './Utils/deleteNodeUtils';\nimport type { NodeProps } from './Node/Node.types';\nimport { getReferences } from './helper';\n\nexport interface DeleteDialogProps {\n target: FormDialogProps['target'];\n flowGraphData: GraphData<NodeProps>;\n rendererGraphData: GraphData<NodeProps>;\n nodeId: string;\n onChange?: (\n itemsToDelete: GraphDataAsMap,\n itemsToRetain: GraphDataAsMap | undefined,\n ev?: ChangeEvent\n ) => void;\n onSubmit?: (outcome: DeleteNodeOutcome) => void;\n onCancel?: () => void;\n ref?: FormDialogProps['ref'];\n}\n\nexport const StyledDeleteDialog = styled(FormDialog)(({ theme }) => {\n return css`\n &:not(${StyledTouchDialog}) {\n min-width: calc(30 * ${theme.base.spacing});\n }\n `;\n});\n\nStyledDeleteDialog.defaultProps = defaultThemeProp;\n\nconst DeleteDialog = ({\n target,\n flowGraphData,\n rendererGraphData,\n nodeId,\n onChange,\n onSubmit,\n onCancel\n}: PropsWithoutRef<DeleteDialogProps>) => {\n const [currentSelection, setCurrentSelection] = useState<number>(0);\n\n const [currNode, setCurrNode] = useElement<Element>();\n\n const t = useI18n();\n\n const graph = new DirectedGraph<NodeProps>(rendererGraphData);\n\n const deleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(graph, nodeId);\n\n const deleteOptions: DeleteNodeModalOption[] = deleteOptionsResult.options;\n\n const selectedPath: string = useMemo(() => {\n if (currentSelection === -1 || !deleteOptions[currentSelection]) {\n return 'none';\n }\n const option = deleteOptions[currentSelection];\n return option.connector.label || option.connector.id;\n }, [deleteOptions, currentSelection]);\n\n const nodeType = graph.getNode(nodeId).type.name;\n\n useEffect(() => {\n if (deleteOptionsResult && deleteOptions[currentSelection]) {\n const itemsToDelete: GraphDataAsMap =\n nodeType !== 'Decision'\n ? deleteOptionsResult.allItems\n : deleteOptions[currentSelection].restItems;\n\n // add the actual node to be deleted also, to the list\n itemsToDelete.nodes[nodeId] = graph.getNode(nodeId);\n setCurrNode(getResolvedTarget(target));\n onChange?.(itemsToDelete, deleteOptions[currentSelection].pathItems);\n }\n }, [rendererGraphData]);\n\n const onChangeHandler: ChangeEventHandler = (ev: ChangeEvent<HTMLSelectElement>) => {\n const newSelection =\n ev.target.selectedIndex >= deleteOptions.length ? -1 : ev.target.selectedIndex;\n\n setCurrentSelection(newSelection);\n\n let itemsToDelete;\n if (deleteOptionsResult) {\n itemsToDelete = deleteOptionsResult.allItems;\n }\n\n let itemsToRetain;\n\n if (newSelection !== -1) {\n itemsToDelete = deleteOptions[newSelection].restItems;\n itemsToRetain = deleteOptions[newSelection].pathItems;\n }\n\n // add the actual node to be deleted also, to the list\n if (itemsToDelete) {\n itemsToDelete.nodes[nodeId] = graph.getNode(nodeId);\n }\n\n if (itemsToDelete) {\n onChange?.(itemsToDelete, itemsToRetain, ev);\n }\n };\n\n const submitHandler = () => {\n let error = true;\n const finalGraph = new DirectedGraph<NodeProps>(flowGraphData);\n const finalDeleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(finalGraph, nodeId);\n\n let newTargetNode = finalDeleteOptionsResult?.destinationNodeId\n ? finalGraph.getNode(finalDeleteOptionsResult.destinationNodeId)\n : undefined;\n let itemsToDelete = finalDeleteOptionsResult.allItems;\n\n const selectedOption =\n currentSelection === -1 || nodeType !== 'Decision'\n ? undefined\n : finalDeleteOptionsResult?.options[currentSelection];\n let finalMetaData = selectedOption;\n\n if (selectedOption) {\n const pathConnectors = selectedOption.pathItems.connectors;\n const connectors = Object.keys(pathConnectors);\n for (let i = 0; i < connectors.length; i += 1) {\n const connectorData = pathConnectors[connectors[i]];\n if (\n connectorData &&\n finalGraph.getNode(connectorData.fromNodeId).type?.minConnectors !== 0 &&\n connectorData.toNodeId === finalDeleteOptionsResult.destinationNodeId\n ) {\n error = false;\n break;\n }\n }\n\n const references = getReferences(Object.values(itemsToDelete.nodes), finalGraph);\n if (error || references.length > 0) {\n onSubmit?.({\n graphData: {\n nodes: [],\n connectors: []\n },\n updates: {\n connectors: []\n },\n deletes: { nodes: {}, connectors: {} },\n error: true,\n references\n });\n return;\n }\n\n finalMetaData = finalDeleteOptionsResult.options.find(\n current => selectedOption.connector.id === current.connector.id\n );\n\n if (finalMetaData) {\n // get the ref of the first node of the retaining path\n newTargetNode = finalGraph.getNode(finalMetaData.connector.toNodeId);\n itemsToDelete = finalMetaData.restItems;\n }\n }\n\n // get the in-connectors of the selected node\n const nodeInConnectors = finalGraph.getInConnectors(nodeId);\n\n // iterate and set the targetNode to the above first node instead of the selected node.\n if (newTargetNode) {\n nodeInConnectors.forEach(con => {\n finalGraph.setConnector(con.id, {\n toNodeId: newTargetNode.id\n });\n });\n } else {\n // if no retaining path, then remove the in connectors of the deleted node as well\n nodeInConnectors.forEach(con => {\n finalGraph.removeConnector(con.id);\n });\n }\n\n const resultGraphData = finalGraph.getGraphData();\n\n itemsToDelete.nodes[nodeId] = finalGraph.getNode(nodeId);\n\n // filter the highlighted nodes, including the selected node\n const nodes = resultGraphData.nodes.filter(item => {\n return itemsToDelete.nodes[item.id] === undefined;\n });\n\n if (finalMetaData) {\n itemsToDelete.connectors[finalMetaData.connector.id] = finalMetaData.connector;\n }\n\n // filter the highlighted connectors\n const connectors = resultGraphData.connectors.filter(item => {\n return itemsToDelete.connectors[item.id] === undefined;\n });\n\n const outcome: DeleteNodeOutcome = {\n graphData: {\n nodes,\n connectors\n },\n updates: {\n connectors: nodeInConnectors\n },\n deletes: itemsToDelete,\n error: false\n };\n onSubmit?.(outcome);\n };\n\n const onCancelHandler = () => {\n if (currNode instanceof HTMLElement) {\n currNode.focus();\n }\n onCancel?.();\n };\n\n return (\n <StyledDeleteDialog\n target={target}\n heading={t('delete_step_title')}\n onCancel={onCancelHandler}\n onSubmit={submitHandler}\n placement='right-end'\n >\n <Flex container={{ gap: 2, pad: 2, direction: 'column' }}>\n {nodeType === 'Decision' ? (\n <>\n <Text>{t('delete_decision_step')}</Text>\n <Select\n id='select-demo'\n label={t('delete_step_outcome')}\n value={selectedPath}\n required\n onChange={onChangeHandler}\n >\n {deleteOptions.map(item => {\n return (\n <Option\n key={item.connector.id}\n value={item.connector.label ? item.connector.label : item.connector.id}\n >\n {item.connector.label ? item.connector.label : item.connector.id}\n </Option>\n );\n })}\n\n <Option key='none' value='none'>\n {t('delete_all_outcomes')}\n </Option>\n </Select>\n </>\n ) : (\n <Text>{t('delete_step')}</Text>\n )}\n </Flex>\n </StyledDeleteDialog>\n );\n};\n\nexport default DeleteDialog;\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSelect.d.ts","sourceRoot":"","sources":["../../../src/components/ObjectSelect/ObjectSelect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,QAAA,MAAM,YAAY,EAmJb,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AAEnG,eAAe,YAAY,CAAC"}
1
+ {"version":3,"file":"ObjectSelect.d.ts","sourceRoot":"","sources":["../../../src/components/ObjectSelect/ObjectSelect.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAO5D,OAAO,KAAK,EAAqB,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,QAAA,MAAM,YAAY,EAoJb,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,KAAK,EAAE,iBAAiB,CAAC,CAAC,CAAC,GAAG,YAAY,KAAK,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;AAEnG,eAAe,YAAY,CAAC"}
@@ -27,6 +27,7 @@ const ObjectSelect = forwardRef(({ testId, menu, configuration, createConfigurat
27
27
  } }));
28
28
  }
29
29
  return (_jsx(FormDialog, { ...commonProps, onDismiss: () => {
30
+ // FIXME: This makes the dialog to behave like a modal.
30
31
  if (preventDialogDismiss) {
31
32
  return;
32
33
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ObjectSelect.js","sourceRoot":"","sources":["../../../src/components/ObjectSelect/ObjectSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useEffect, useMemo, useState } from 'react';\nimport type { MouseEvent, PropsWithoutRef } from 'react';\n\nimport { hasProp, useElement, InfoDialog, FormDialog } from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport type { BaseDialogProps } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.types';\n\nimport RulePicker from '../RulePicker/RulePicker';\n\nimport useCreateModal from './useCreateModal';\nimport InputTree from './InputTree';\nimport type { ObjectConfigProps, ObjectSelectProps } from './ObjectSelect.types';\n\nconst ObjectSelect = forwardRef(\n <P extends object = object>(\n {\n testId,\n menu,\n configuration,\n createConfiguration,\n readOnly,\n disabled,\n ...restProps\n }: PropsWithoutRef<ObjectSelectProps<P>>,\n ref: ObjectSelectProps['ref']\n ) => {\n const [mode, setMode] = useState<'picker' | 'create'>('picker');\n const [configTarget, setConfigTarget] = useElement<\n HTMLAnchorElement | HTMLButtonElement | HTMLInputElement\n >();\n\n const isCreateModalConfig = createConfiguration && hasProp(createConfiguration, 'renderer');\n\n const configDialog = useMemo(() => {\n if (!configuration || !configTarget || disabled) {\n return null;\n }\n const { preventDialogDismiss = false } = configuration;\n\n const commonProps: Pick<BaseDialogProps, 'target' | 'progress' | 'ref' | 'children'> &\n Pick<ObjectConfigProps, 'heading'> = {\n heading: configuration.heading!,\n target: configTarget,\n progress: configuration.loading,\n ref: (configuration as ObjectConfigProps).ref,\n children: configuration.children\n };\n if (readOnly) {\n return (\n <InfoDialog\n {...commonProps}\n onDismiss={() => {\n setConfigTarget(null);\n configuration.onClose?.();\n }}\n />\n );\n }\n\n return (\n <FormDialog\n {...commonProps}\n onDismiss={() => {\n if (preventDialogDismiss) {\n return;\n }\n setConfigTarget(null);\n configuration.onClose?.();\n }}\n onCancel={() => {\n setConfigTarget(null);\n configuration.onClose?.();\n }}\n onSubmit={() => {\n configuration.onSubmit?.({\n close: () => {\n setConfigTarget(null);\n }\n });\n }}\n />\n );\n }, [configTarget, configuration, disabled, readOnly]);\n\n const { renderModal } = useCreateModal(\n isCreateModalConfig\n ? {\n ...createConfiguration,\n onAfterClose: () => {\n createConfiguration.onAfterClose?.();\n setMode('picker');\n }\n }\n : undefined\n );\n\n useEffect(() => {\n if (mode === 'create' && isCreateModalConfig) {\n renderModal(createConfiguration);\n }\n }, [mode, createConfiguration]);\n\n useEffect(() => {\n if (configTarget) {\n configuration?.onOpen?.();\n }\n }, [configTarget]);\n\n return (\n <div>\n <RulePicker\n {...restProps}\n testId={testId}\n ref={ref}\n readOnly={readOnly}\n disabled={disabled}\n onMenuOpen={(...args) => {\n setConfigTarget(null);\n configuration?.onClose?.();\n restProps.onMenuOpen?.(...args);\n }}\n menu={{\n ...menu,\n onCreateNew: (() => {\n if (isCreateModalConfig) {\n return () => setMode('create');\n }\n if (createConfiguration) {\n return () => {\n if (createConfiguration.onClick) {\n createConfiguration.onClick();\n }\n };\n }\n })()\n }}\n actions={\n configuration && !configuration.inlineParameter\n ? [\n {\n id: 'parameters-config',\n text: configuration?.label ? configuration.label : 'parameters',\n icon: 'gear',\n onClick: (\n id: string,\n e: MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLInputElement>\n ) => {\n e.preventDefault();\n setConfigTarget(e.currentTarget);\n }\n }\n ]\n : undefined\n }\n />\n {configDialog}\n {configuration?.inlineParameter && <InputTree testId={testId} {...configuration} />}\n </div>\n );\n }\n) as <P extends object = object>(props: ObjectSelectProps<P> & ForwardProps) => JSX.Element | null;\n\nexport default ObjectSelect;\n"]}
1
+ {"version":3,"file":"ObjectSelect.js","sourceRoot":"","sources":["../../../src/components/ObjectSelect/ObjectSelect.tsx"],"names":[],"mappings":"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","sourcesContent":["import { forwardRef, useEffect, useMemo, useState } from 'react';\nimport type { MouseEvent, PropsWithoutRef } from 'react';\n\nimport { hasProp, useElement, InfoDialog, FormDialog } from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport type { BaseDialogProps } from '@pega/cosmos-react-core/lib/components/Dialog/Dialog.types';\n\nimport RulePicker from '../RulePicker/RulePicker';\n\nimport useCreateModal from './useCreateModal';\nimport InputTree from './InputTree';\nimport type { ObjectConfigProps, ObjectSelectProps } from './ObjectSelect.types';\n\nconst ObjectSelect = forwardRef(\n <P extends object = object>(\n {\n testId,\n menu,\n configuration,\n createConfiguration,\n readOnly,\n disabled,\n ...restProps\n }: PropsWithoutRef<ObjectSelectProps<P>>,\n ref: ObjectSelectProps['ref']\n ) => {\n const [mode, setMode] = useState<'picker' | 'create'>('picker');\n const [configTarget, setConfigTarget] = useElement<\n HTMLAnchorElement | HTMLButtonElement | HTMLInputElement\n >();\n\n const isCreateModalConfig = createConfiguration && hasProp(createConfiguration, 'renderer');\n\n const configDialog = useMemo(() => {\n if (!configuration || !configTarget || disabled) {\n return null;\n }\n const { preventDialogDismiss = false } = configuration;\n\n const commonProps: Pick<BaseDialogProps, 'target' | 'progress' | 'ref' | 'children'> &\n Pick<ObjectConfigProps, 'heading'> = {\n heading: configuration.heading!,\n target: configTarget,\n progress: configuration.loading,\n ref: (configuration as ObjectConfigProps).ref,\n children: configuration.children\n };\n if (readOnly) {\n return (\n <InfoDialog\n {...commonProps}\n onDismiss={() => {\n setConfigTarget(null);\n configuration.onClose?.();\n }}\n />\n );\n }\n\n return (\n <FormDialog\n {...commonProps}\n onDismiss={() => {\n // FIXME: This makes the dialog to behave like a modal.\n if (preventDialogDismiss) {\n return;\n }\n setConfigTarget(null);\n configuration.onClose?.();\n }}\n onCancel={() => {\n setConfigTarget(null);\n configuration.onClose?.();\n }}\n onSubmit={() => {\n configuration.onSubmit?.({\n close: () => {\n setConfigTarget(null);\n }\n });\n }}\n />\n );\n }, [configTarget, configuration, disabled, readOnly]);\n\n const { renderModal } = useCreateModal(\n isCreateModalConfig\n ? {\n ...createConfiguration,\n onAfterClose: () => {\n createConfiguration.onAfterClose?.();\n setMode('picker');\n }\n }\n : undefined\n );\n\n useEffect(() => {\n if (mode === 'create' && isCreateModalConfig) {\n renderModal(createConfiguration);\n }\n }, [mode, createConfiguration]);\n\n useEffect(() => {\n if (configTarget) {\n configuration?.onOpen?.();\n }\n }, [configTarget]);\n\n return (\n <div>\n <RulePicker\n {...restProps}\n testId={testId}\n ref={ref}\n readOnly={readOnly}\n disabled={disabled}\n onMenuOpen={(...args) => {\n setConfigTarget(null);\n configuration?.onClose?.();\n restProps.onMenuOpen?.(...args);\n }}\n menu={{\n ...menu,\n onCreateNew: (() => {\n if (isCreateModalConfig) {\n return () => setMode('create');\n }\n if (createConfiguration) {\n return () => {\n if (createConfiguration.onClick) {\n createConfiguration.onClick();\n }\n };\n }\n })()\n }}\n actions={\n configuration && !configuration.inlineParameter\n ? [\n {\n id: 'parameters-config',\n text: configuration?.label ? configuration.label : 'parameters',\n icon: 'gear',\n onClick: (\n id: string,\n e: MouseEvent<HTMLAnchorElement | HTMLButtonElement | HTMLInputElement>\n ) => {\n e.preventDefault();\n setConfigTarget(e.currentTarget);\n }\n }\n ]\n : undefined\n }\n />\n {configDialog}\n {configuration?.inlineParameter && <InputTree testId={testId} {...configuration} />}\n </div>\n );\n }\n) as <P extends object = object>(props: ObjectSelectProps<P> & ForwardProps) => JSX.Element | null;\n\nexport default ObjectSelect;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-build",
3
- "version": "10.0.0-build.9.1",
3
+ "version": "10.0.0-build.9.10",
4
4
  "license": "SEE LICENSE IN LICENSE",
5
5
  "author": "Pegasystems",
6
6
  "sideEffects": false,
@@ -15,9 +15,9 @@
15
15
  },
16
16
  "dependencies": {
17
17
  "@dagrejs/dagre": "^3.0.0",
18
- "@pega/cosmos-react-core": "10.0.0-build.9.1",
19
- "@pega/cosmos-react-dnd": "10.0.0-build.9.1",
20
- "@pega/cosmos-react-rte": "10.0.0-build.9.1",
18
+ "@pega/cosmos-react-core": "10.0.0-build.9.10",
19
+ "@pega/cosmos-react-dnd": "10.0.0-build.9.10",
20
+ "@pega/cosmos-react-rte": "10.0.0-build.9.10",
21
21
  "@types/codemirror": "^5.60.15",
22
22
  "@types/react": "^17.0.62 || ^18.3.3",
23
23
  "@types/react-dom": "^17.0.20 || ^18.3.0",