@pega/cosmos-react-build 9.0.0-build.9.9 → 9.0.0
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/AppShell/AppShell.styles.d.ts +13 -11
- package/lib/components/AppShell/AppShell.styles.d.ts.map +1 -1
- package/lib/components/AppShell/Header/AppHeader.styles.d.ts +11 -7
- package/lib/components/AppShell/Header/AppHeader.styles.d.ts.map +1 -1
- package/lib/components/AppShell/Header/BranchButton.d.ts +6 -4
- package/lib/components/AppShell/Header/BranchButton.d.ts.map +1 -1
- package/lib/components/AppShell/Header/BranchButton.js.map +1 -1
- package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts +753 -15
- package/lib/components/AuthoringPanel/AuthoringPanel.styles.d.ts.map +1 -1
- package/lib/components/AuthoringPanel/AuthoringPanel.styles.js +5 -4
- package/lib/components/AuthoringPanel/AuthoringPanel.styles.js.map +1 -1
- package/lib/components/Automation/Automation.js.map +1 -1
- package/lib/components/Automation/Automation.styles.d.ts +33 -10
- package/lib/components/Automation/Automation.styles.d.ts.map +1 -1
- package/lib/components/Automation/Automation.styles.js +1 -1
- package/lib/components/Automation/Automation.styles.js.map +1 -1
- package/lib/components/BackgroundPicker/BackgroundPicker.styles.d.ts +375 -11
- package/lib/components/BackgroundPicker/BackgroundPicker.styles.d.ts.map +1 -1
- package/lib/components/BackgroundPicker/BackgroundPicker.styles.js.map +1 -1
- package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts +8 -4
- package/lib/components/DynamicContentEditor/DynamicContentEditor.d.ts.map +1 -1
- package/lib/components/DynamicContentEditor/DynamicContentEditor.js +88 -68
- package/lib/components/DynamicContentEditor/DynamicContentEditor.js.map +1 -1
- package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.d.ts +2 -0
- package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.d.ts.map +1 -0
- package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.js +9 -0
- package/lib/components/DynamicContentEditor/DynamicContentEditor.test-ids.js.map +1 -0
- package/lib/components/DynamicContentEditor/DynamicContentEditor.types.d.ts +12 -3
- package/lib/components/DynamicContentEditor/DynamicContentEditor.types.d.ts.map +1 -1
- package/lib/components/DynamicContentEditor/DynamicContentEditor.types.js +2 -1
- package/lib/components/DynamicContentEditor/DynamicContentEditor.types.js.map +1 -1
- package/lib/components/DynamicInput/DynamicInput.d.ts.map +1 -1
- package/lib/components/DynamicInput/DynamicInput.js +11 -5
- package/lib/components/DynamicInput/DynamicInput.js.map +1 -1
- package/lib/components/DynamicInput/DynamicInput.styles.d.ts +187 -2
- package/lib/components/DynamicInput/DynamicInput.styles.d.ts.map +1 -1
- package/lib/components/DynamicInput/DynamicInput.styles.js +29 -2
- package/lib/components/DynamicInput/DynamicInput.styles.js.map +1 -1
- package/lib/components/DynamicInput/DynamicInput.types.d.ts +4 -2
- package/lib/components/DynamicInput/DynamicInput.types.d.ts.map +1 -1
- package/lib/components/DynamicInput/DynamicInput.types.js.map +1 -1
- package/lib/components/DynamicInput/SourceButton.d.ts +1 -1
- package/lib/components/DynamicInput/SourceButton.d.ts.map +1 -1
- package/lib/components/DynamicInput/SourceButton.js.map +1 -1
- package/lib/components/DynamicInput/utils.d.ts.map +1 -1
- package/lib/components/DynamicInput/utils.js +5 -1
- package/lib/components/DynamicInput/utils.js.map +1 -1
- package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.d.ts +5 -5
- package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.d.ts.map +1 -1
- package/lib/components/EmptyRuleTemplate/EmptyRuleTemplate.js.map +1 -1
- package/lib/components/Expression/Expression.styles.d.ts +376 -8
- package/lib/components/Expression/Expression.styles.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js +138 -41
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.js.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts +190 -8
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js +53 -32
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.styles.js.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.d.ts +2 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/CodeEditor.types.js.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.d.ts +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.js +7 -7
- package/lib/components/ExpressionBuilder/CodeEditor/getCodeSuggestions.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.js +7 -6
- package/lib/components/ExpressionBuilder/ExpressionBuilder.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts +211 -22
- package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js +6 -0
- package/lib/components/ExpressionBuilder/ExpressionBuilder.styles.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts +5 -3
- package/lib/components/ExpressionBuilder/ExpressionBuilder.types.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionBuilder.types.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionItem.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionItem.js +17 -13
- package/lib/components/ExpressionBuilder/ExpressionItem.js.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionList.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/ExpressionList.js +18 -13
- package/lib/components/ExpressionBuilder/ExpressionList.js.map +1 -1
- package/lib/components/ExpressionBuilder/index.d.ts +1 -1
- package/lib/components/ExpressionBuilder/index.d.ts.map +1 -1
- package/lib/components/ExpressionBuilder/index.js.map +1 -1
- package/lib/components/FieldReference/FieldReference.styles.d.ts +20 -11
- package/lib/components/FieldReference/FieldReference.styles.d.ts.map +1 -1
- package/lib/components/FieldReference/FieldReference.styles.js +10 -1
- package/lib/components/FieldReference/FieldReference.styles.js.map +1 -1
- package/lib/components/FieldReference/FieldReferenceDisplay.d.ts.map +1 -1
- package/lib/components/FieldReference/FieldReferenceDisplay.js +3 -3
- package/lib/components/FieldReference/FieldReferenceDisplay.js.map +1 -1
- package/lib/components/FieldReference/FieldReferenceInput.d.ts.map +1 -1
- package/lib/components/FieldReference/FieldReferenceInput.js +13 -5
- package/lib/components/FieldReference/FieldReferenceInput.js.map +1 -1
- package/lib/components/FlowModeller/AddNode.d.ts +22 -0
- package/lib/components/FlowModeller/AddNode.d.ts.map +1 -0
- package/lib/components/FlowModeller/AddNode.js +95 -0
- package/lib/components/FlowModeller/AddNode.js.map +1 -0
- package/lib/components/FlowModeller/Connector.d.ts +12 -0
- package/lib/components/FlowModeller/Connector.d.ts.map +1 -0
- package/lib/components/FlowModeller/Connector.js +84 -0
- package/lib/components/FlowModeller/Connector.js.map +1 -0
- package/lib/components/FlowModeller/DeleteDialog.d.ts +39 -0
- package/lib/components/FlowModeller/DeleteDialog.d.ts.map +1 -0
- package/lib/components/FlowModeller/DeleteDialog.js +158 -0
- package/lib/components/FlowModeller/DeleteDialog.js.map +1 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.d.ts +4 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.js +37 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.js.map +1 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.d.ts +8 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.js +80 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.styles.js.map +1 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.d.ts +36 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.js +2 -0
- package/lib/components/FlowModeller/FlowAuthoringPanel/FlowAuthoringPanel.types.js.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.d.ts +5 -0
- package/lib/components/FlowModeller/FlowModeller.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.js +359 -0
- package/lib/components/FlowModeller/FlowModeller.js.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.test-ids.d.ts +3 -0
- package/lib/components/FlowModeller/FlowModeller.test-ids.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.test-ids.js +5 -0
- package/lib/components/FlowModeller/FlowModeller.test-ids.js.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.types.d.ts +84 -0
- package/lib/components/FlowModeller/FlowModeller.types.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowModeller.types.js +2 -0
- package/lib/components/FlowModeller/FlowModeller.types.js.map +1 -0
- package/lib/components/FlowModeller/FlowModellerContext.d.ts +10 -0
- package/lib/components/FlowModeller/FlowModellerContext.d.ts.map +1 -0
- package/lib/components/FlowModeller/FlowModellerContext.js +8 -0
- package/lib/components/FlowModeller/FlowModellerContext.js.map +1 -0
- package/lib/components/FlowModeller/Node/Node.types.d.ts +93 -0
- package/lib/components/FlowModeller/Node/Node.types.d.ts.map +1 -0
- package/lib/components/FlowModeller/Node/Node.types.js +27 -0
- package/lib/components/FlowModeller/Node/Node.types.js.map +1 -0
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts +212 -0
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.d.ts.map +1 -0
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.js +144 -0
- package/lib/components/FlowModeller/Node/NodeTemplate.styles.js.map +1 -0
- package/lib/components/FlowModeller/Node/NodeTemplates.d.ts +5 -0
- package/lib/components/FlowModeller/Node/NodeTemplates.d.ts.map +1 -0
- package/lib/components/FlowModeller/Node/NodeTemplates.js +130 -0
- package/lib/components/FlowModeller/Node/NodeTemplates.js.map +1 -0
- package/lib/components/FlowModeller/Node.d.ts +10 -0
- package/lib/components/FlowModeller/Node.d.ts.map +1 -0
- package/lib/components/FlowModeller/Node.js +43 -0
- package/lib/components/FlowModeller/Node.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Renderer.d.ts +4 -0
- package/lib/components/FlowModeller/Renderer/Renderer.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Renderer.js +198 -0
- package/lib/components/FlowModeller/Renderer/Renderer.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts +20 -0
- package/lib/components/FlowModeller/Renderer/Renderer.types.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Renderer.types.js +2 -0
- package/lib/components/FlowModeller/Renderer/Renderer.types.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts +63 -0
- package/lib/components/FlowModeller/Renderer/Utils/Graph.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/Graph.js +291 -0
- package/lib/components/FlowModeller/Renderer/Utils/Graph.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts +37 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js +114 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphLayout.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts +29 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js +191 -0
- package/lib/components/FlowModeller/Renderer/Utils/GraphTraversal.js.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.d.ts +38 -0
- package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.d.ts.map +1 -0
- package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.js +363 -0
- package/lib/components/FlowModeller/Renderer/Utils/RendererUtils.js.map +1 -0
- package/lib/components/FlowModeller/Utils/addNodeUtils.d.ts +18 -0
- package/lib/components/FlowModeller/Utils/addNodeUtils.d.ts.map +1 -0
- package/lib/components/FlowModeller/Utils/addNodeUtils.js +148 -0
- package/lib/components/FlowModeller/Utils/addNodeUtils.js.map +1 -0
- package/lib/components/FlowModeller/Utils/deleteNodeUtils.d.ts +33 -0
- package/lib/components/FlowModeller/Utils/deleteNodeUtils.d.ts.map +1 -0
- package/lib/components/FlowModeller/Utils/deleteNodeUtils.js +89 -0
- package/lib/components/FlowModeller/Utils/deleteNodeUtils.js.map +1 -0
- package/lib/components/FlowModeller/constants.d.ts +10 -0
- package/lib/components/FlowModeller/constants.d.ts.map +1 -0
- package/lib/components/FlowModeller/constants.js +9 -0
- package/lib/components/FlowModeller/constants.js.map +1 -0
- package/lib/components/FlowModeller/helper.d.ts +39 -0
- package/lib/components/FlowModeller/helper.d.ts.map +1 -0
- package/lib/components/FlowModeller/helper.js +230 -0
- package/lib/components/FlowModeller/helper.js.map +1 -0
- package/lib/components/FlowModeller/index.d.ts +18 -0
- package/lib/components/FlowModeller/index.d.ts.map +1 -0
- package/lib/components/FlowModeller/index.js +11 -0
- package/lib/components/FlowModeller/index.js.map +1 -0
- package/lib/components/IconTile/IconTile.d.ts +2 -2
- package/lib/components/IconTile/IconTile.d.ts.map +1 -1
- package/lib/components/ItemLibrary/ItemLibrary.d.ts +2 -2
- package/lib/components/ItemLibrary/ItemLibrary.d.ts.map +1 -1
- package/lib/components/ItemLibrary/ItemLibrary.js +5 -1
- package/lib/components/ItemLibrary/ItemLibrary.js.map +1 -1
- package/lib/components/LifeCycle/Category.d.ts +6 -6
- package/lib/components/LifeCycle/Category.d.ts.map +1 -1
- package/lib/components/LifeCycle/LifeCycle.d.ts +184 -2
- package/lib/components/LifeCycle/LifeCycle.d.ts.map +1 -1
- package/lib/components/LifeCycle/LifeCycle.types.d.ts +70 -0
- package/lib/components/LifeCycle/LifeCycle.types.d.ts.map +1 -1
- package/lib/components/LifeCycle/Stage.d.ts +6 -6
- package/lib/components/LifeCycle/Stage.d.ts.map +1 -1
- package/lib/components/LifeCycle/Step.d.ts +8 -8
- package/lib/components/LifeCycle/Step.d.ts.map +1 -1
- package/lib/components/LifeCycle/Step.js +1 -1
- package/lib/components/LifeCycle/Step.js.map +1 -1
- package/lib/components/LifeCycle/Task.d.ts +14 -10
- package/lib/components/LifeCycle/Task.d.ts.map +1 -1
- package/lib/components/LifeCycle/TaskGroup.d.ts +3 -1
- package/lib/components/LifeCycle/TaskGroup.d.ts.map +1 -1
- package/lib/components/MobileBuildSummary/MobileBuildSummary.d.ts +2 -2
- package/lib/components/MobileBuildSummary/MobileBuildSummary.d.ts.map +1 -1
- package/lib/components/ObjectSelect/InputTree/InputTree.styles.d.ts +10 -8
- package/lib/components/ObjectSelect/InputTree/InputTree.styles.d.ts.map +1 -1
- package/lib/components/ObjectSelect/InputTree/InputTree.styles.js +1 -1
- package/lib/components/ObjectSelect/InputTree/InputTree.styles.js.map +1 -1
- package/lib/components/PageBanner/PageBanner.d.ts +3 -3
- package/lib/components/PageBanner/PageBanner.d.ts.map +1 -1
- package/lib/components/PageBanner/PageBanner.js +6 -2
- package/lib/components/PageBanner/PageBanner.js.map +1 -1
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.d.ts +4 -2
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.d.ts.map +1 -1
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.js +23 -12
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.js.map +1 -1
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.d.ts.map +1 -1
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.js +14 -5
- package/lib/components/PageTemplates/ConstructPageTemplate/ConstructPageTemplate.js.map +1 -1
- package/lib/components/PageTemplates/GalleryPage.d.ts +2 -2
- package/lib/components/PageTemplates/GalleryPage.d.ts.map +1 -1
- package/lib/components/PageTemplates/HeaderActionButtons.d.ts.map +1 -1
- package/lib/components/PageTemplates/HeaderActionButtons.js +11 -3
- package/lib/components/PageTemplates/HeaderActionButtons.js.map +1 -1
- package/lib/components/PageTemplates/PageTemplate.styles.d.ts +375 -8
- package/lib/components/PageTemplates/PageTemplate.styles.d.ts.map +1 -1
- package/lib/components/PageTemplates/PageTemplate.styles.js +18 -10
- package/lib/components/PageTemplates/PageTemplate.styles.js.map +1 -1
- package/lib/components/PageTemplates/PageTemplate.types.d.ts +18 -13
- package/lib/components/PageTemplates/PageTemplate.types.d.ts.map +1 -1
- package/lib/components/PageTemplates/PageTemplate.types.js.map +1 -1
- package/lib/components/PageTemplates/PageTemplates.d.ts +4 -1
- package/lib/components/PageTemplates/PageTemplates.d.ts.map +1 -1
- package/lib/components/PageTemplates/PageTemplates.js +9 -5
- package/lib/components/PageTemplates/PageTemplates.js.map +1 -1
- package/lib/components/PageTemplates/ShowcasePage.d.ts +2 -2
- package/lib/components/PageTemplates/ShowcasePage.d.ts.map +1 -1
- package/lib/components/RulePicker/RulePicker.d.ts +1 -1
- package/lib/components/SummaryCard/SummaryCard.d.ts.map +1 -1
- package/lib/components/SummaryCard/SummaryCard.js +13 -1
- package/lib/components/SummaryCard/SummaryCard.js.map +1 -1
- package/lib/components/Workbench/Workbench.styles.d.ts +12 -8
- package/lib/components/Workbench/Workbench.styles.d.ts.map +1 -1
- package/lib/index.d.ts +2 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/utils/typeIconMapping.d.ts.map +1 -1
- package/lib/utils/typeIconMapping.js +2 -0
- package/lib/utils/typeIconMapping.js.map +1 -1
- package/lib/utils/utils.d.ts +5 -0
- package/lib/utils/utils.d.ts.map +1 -0
- package/lib/utils/utils.js +19 -0
- package/lib/utils/utils.js.map +1 -0
- package/package.json +7 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FieldReferenceInput.js","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReferenceInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n Fragment,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n MouseEvent,\n KeyboardEvent as ReactKeyboardEvent,\n PropsWithoutRef,\n Ref,\n MutableRefObject,\n ChangeEvent\n} from 'react';\n\nimport {\n registerIcon,\n navigatorIsAvailable,\n useUID,\n useTestIds,\n useI18n,\n type MenuProps,\n useElement,\n useConsolidatedRef,\n useFocusWithin,\n type FieldValueListItemProps,\n Icon,\n useEscape,\n Button,\n Flex,\n Grid,\n StyledFormControl,\n VisuallyHiddenText,\n FieldValueList,\n Popover,\n getFocusables,\n Menu,\n FormField,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport { fitToContent } from '@pega/cosmos-react-core/lib/components/Popover/modifiers';\n\nimport type FieldReferenceInputProps from './FieldReference.types';\nimport {\n StyledFieldReferenceInput,\n StyledFieldReferencePicker,\n StyledPathSegment,\n StyledSelection,\n StyledFieldReferenceMenu,\n StyledLeadingDot\n} from './FieldReference.styles';\nimport { getFieldReferenceInputTestIds } from './FieldReference.test-ids';\nimport type {\n FieldReferenceDisplayProps,\n FieldReferencedMenuListProps,\n FieldReferenceMenuItem,\n FieldReferenceMenuProps\n} from './FieldReference.types';\nimport FieldReferenceDisplay from './FieldReferenceDisplay';\nimport FieldReferenceMenuList from './FieldReferenceMenuList';\nimport helpers, { addFieldToPath, removeFieldFromPath } from './helpers';\n\nregisterIcon(caretDownIcon, caretUpIcon);\n\nconst isMobile = navigatorIsAvailable && navigator.userAgent.includes('Mobile');\n\nconst FieldReferenceInput = forwardRef(function FieldReferenceInput(\n props: PropsWithoutRef<FieldReferenceInputProps>,\n ref: Ref<HTMLDivElement>\n) {\n const uid = useUID();\n const {\n testId,\n additionalInfo,\n required,\n id = uid,\n label,\n labelHidden,\n info,\n status,\n readOnly,\n disabled,\n placeholder,\n menu,\n showTooltips,\n showCurrentContext,\n onAltContextClick,\n selected = [],\n onSelectedChange,\n filterValue,\n onFilterChange,\n showPath,\n link,\n actions,\n onFocus,\n onBlur,\n onDropdownButtonClick: onDropdownButtonClickProp,\n onMenuOpen,\n onClick,\n onKeyDown,\n handle\n } = props;\n const {\n items: menuItems,\n itemLayout = 'inline',\n altContexts,\n currentContext,\n parentItem,\n onCreateNew,\n createNewLabel,\n scrollAt,\n loading,\n loadMore\n } = menu;\n\n const testIds = useTestIds(testId, getFieldReferenceInputTestIds);\n const bodyRef = useRef<Element>(document.body);\n\n const [pauseMenuDescendantEvaluation, setPauseMenuDescendantEvaluation] = useState(true);\n const [pauseSelectedDescendantEvaluation, setPauseSelectedDescendantEvaluation] = useState(false);\n const t = useI18n();\n const listId = `${id}-list`;\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [showDot, setShowDot] = useState(false);\n const [modifyingLeafItem, setModifyingLeafItem] = useState(false);\n const [open, setOpen] = useState(false);\n const menuRef: MenuProps['ref'] = useRef(null);\n const menuComponentId = `${id}-listbox`;\n\n // Force a re-render to make sure useFocusWithin has valid elements to set listeners on.\n const [, setContainerEl] = useElement();\n const containerRef = useConsolidatedRef<HTMLDivElement>(ref, setContainerEl);\n\n const toggleMenuDescendantsActive = useCallback((bool: boolean) => {\n setPauseMenuDescendantEvaluation(!bool);\n setPauseSelectedDescendantEvaluation(bool);\n }, []);\n\n const focus = useFocusWithin([containerRef, popoverRef], focused => {\n if (!focused) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n onBlur?.();\n } else {\n onFocus?.();\n if (isMobile) {\n setTimeout(() => {\n containerRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, 150); // delay it to let keyboard expand first\n }\n }\n });\n\n useImperativeHandle(\n handle,\n () => ({\n openMenu: () => {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n inputRef.current?.focus();\n },\n closeMenu: () => {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }),\n [open]\n );\n\n const formatMenuItems = ({\n items,\n context,\n altContextItems\n }: {\n items: FieldReferenceMenuItem[];\n context?: FieldReferenceMenuProps['currentContext'];\n altContextItems?: FieldReferenceMenuProps['altContexts'];\n }): FieldReferencedMenuListProps['items'] => {\n const formattedItems = items\n .sort((a, b) => {\n if (a.selected) return -1;\n if (b.selected) return 1;\n return 0;\n })\n .map(item => {\n const tooltipData: FieldValueListItemProps[] = [\n { name: t('id'), value: item.id, truncate: false },\n { name: t('name'), value: item.name, truncate: false }\n ];\n if (item.type) tooltipData.push({ name: t('type'), value: item.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (item.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n item.metadata.forEach(meta => {\n const override = tooltipData.find(data => data.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n tooltipData.push(...metaData);\n }\n\n return {\n id: item.id,\n visual: item.icon ? <Icon {...item.icon} size='s' /> : undefined,\n primary: item.name,\n secondary: item.type ? [item.type] : undefined,\n items: item.items ? formatMenuItems({ items: item.items, context: item }) : undefined,\n tooltip: showTooltips ? (\n <FieldValueList fields={tooltipData} truncate={false} />\n ) : undefined,\n selected: item.selected\n };\n });\n const formattedAltContextItems = (\n altContextItems && filterValue\n ? helpers.filterBySearch(altContextItems as FieldReferenceMenuItem[], filterValue)\n : altContextItems\n )?.map(item => ({\n id: item.id,\n primary: item.name,\n items: formatMenuItems({ items: item.items || [], context: item }),\n selected: item.selected\n }));\n\n const organizedMenuItems: MenuProps['items'] = [];\n if (!!formattedAltContextItems?.length && !parentItem && !showDot) {\n organizedMenuItems.push(...formattedAltContextItems);\n }\n\n if (!filterValue && context && !parentItem) {\n organizedMenuItems.push({\n id: context.id,\n label: t('current_context', [context.name]),\n items: formattedItems\n });\n } else if (!!filterValue || !context || parentItem) {\n organizedMenuItems.push(...formattedItems);\n }\n\n return organizedMenuItems;\n };\n\n const handleEscape = useCallback(\n (e: KeyboardEvent) => {\n e.preventDefault();\n if (open) {\n e.stopPropagation();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n },\n [open]\n );\n\n useEscape(handleEscape, containerRef, [handleEscape]);\n\n const onInputKeyDown = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n if (onKeyDown?.(e) === false) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowUp':\n if (e.altKey) {\n e.preventDefault();\n if (open) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!open) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n break;\n case 'Tab': {\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem = searchableItems.find(\n item =>\n item.id === filterValue || item.name.toLowerCase() === filterValue?.toLowerCase()\n );\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n }\n\n setOpen(false);\n toggleMenuDescendantsActive(false);\n\n break;\n }\n case 'Backspace': {\n if (showDot && !filterValue) {\n setShowDot(false);\n } else if (open && selected.length) {\n const removeAll = e.altKey || e.metaKey;\n const lastSelectedItem = selected.at(-1);\n\n if (\n !showDot &&\n lastSelectedItem &&\n (removeAll || lastSelectedItem.id === parentItem?.id)\n ) {\n onSelectedChange(removeAll ? [] : removeFieldFromPath(selected, lastSelectedItem.id));\n } else if (filterValue && lastSelectedItem && lastSelectedItem.id !== parentItem?.id) {\n setModifyingLeafItem(true);\n }\n }\n break;\n }\n default:\n }\n },\n [open, selected, readOnly, filterValue, showDot, parentItem, onKeyDown]\n );\n\n const onInputKeyUp = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n\n if (e.key === 'Backspace' && selected.length) {\n const lastSelectedItem = selected.at(-1)!;\n if (!filterValue && modifyingLeafItem && open) {\n onSelectedChange(showPath ? removeFieldFromPath(selected, lastSelectedItem.id) : []);\n setModifyingLeafItem(false);\n }\n }\n },\n [open, selected, readOnly, filterValue]\n );\n\n const onDropdownButtonClick = useCallback(() => {\n onDropdownButtonClickProp?.(!open);\n setOpen(!open);\n }, [open, onDropdownButtonClickProp]);\n\n const dropdownButton = useMemo(() => {\n return (menuItems || onDropdownButtonClickProp) && !readOnly ? (\n <Button\n aria-label={t(open ? 'fieldref_close_list_button_a11y' : 'fieldref_open_list_button_a11y')}\n icon\n variant='simple'\n onClick={onDropdownButtonClick}\n onMouseDown={(e: MouseEvent) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n disabled={disabled}\n tabIndex='-1'\n >\n <Icon name={open ? 'caret-up' : 'caret-down'} />\n </Button>\n ) : null;\n }, [menuItems, onDropdownButtonClick, readOnly, open, disabled]);\n\n const ariaDescribedBy = useMemo(() => {\n let idString = `${id}-inputDescription`;\n\n if (info) {\n idString = idString.concat(` ${id}-info`);\n }\n idString = idString.concat(` ${id}-searchDescription`);\n\n return idString;\n }, [info, id]);\n\n const onInputClick = useCallback(\n (e: MouseEvent) => {\n if (readOnly) return;\n setOpen(true);\n toggleMenuDescendantsActive(true);\n onClick?.(e);\n },\n [readOnly, onClick]\n );\n\n const tooltipData: FieldReferenceDisplayProps['tooltipData'] = useMemo(() => {\n const selectedField = selected.at(-1);\n if (selectedField) {\n const data: FieldValueListItemProps[] = [\n { name: t('id'), value: selectedField.id, truncate: false },\n { name: t('name'), value: selectedField.name, truncate: false }\n ];\n\n if (selectedField.type)\n data.push({ name: t('type'), value: selectedField.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (selectedField.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n selectedField.metadata.forEach(meta => {\n const override = data.find(d => d.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n data.push(...metaData);\n }\n return data;\n }\n\n return undefined;\n }, [selected]);\n\n const formattedMenuItems = useMemo(() => {\n return formatMenuItems({\n items: menuItems || [],\n context: currentContext,\n altContextItems: altContexts\n });\n }, [menuItems, currentContext, altContexts, filterValue, parentItem, showPath, showDot]);\n\n useEffect(() => {\n if (focus && !!filterValue) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }, [filterValue, focus]);\n\n useEffect(() => {\n if (open) {\n onMenuOpen?.();\n if (!!selected.length && selected.at(-1)!.id !== parentItem?.id) {\n onFilterChange(`${selected.at(-1)!.name}${filterValue ?? ''}`);\n }\n } else {\n setShowDot(false);\n onFilterChange('');\n }\n }, [open]);\n\n useEffect(() => {\n if (!showDot && !!selected.length && selected.at(-1)!.id === parentItem?.id) {\n setShowDot(true);\n }\n }, [parentItem, selected]);\n\n const handleItemClick = (itemId: string) => {\n onFilterChange('');\n const matchedItem = menuItems.find(item => item.id === itemId);\n const altContext = altContexts?.find(context => context.id === itemId);\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n } else if (altContext) {\n onAltContextClick?.(altContext);\n }\n };\n\n const ariaControls = open && !pauseMenuDescendantEvaluation ? listId : undefined;\n\n const selectedFieldPath: FieldReferenceDisplayProps['fieldPath'] = useMemo(() => {\n if (!showPath && !!selected.length) return [selected.at(-1)!];\n if (showCurrentContext && currentContext) return [currentContext, ...selected];\n return selected;\n }, [showCurrentContext, currentContext, selected, showPath]);\n\n const formattedActions: FieldReferenceDisplayProps['actions'] = useMemo(() => {\n if (actions)\n return actions.map(action => ({\n ...action,\n onClick: (clickId, e, menuButton) => {\n e.stopPropagation();\n action.onClick?.(clickId, e, menuButton);\n }\n }));\n }, [actions]);\n\n const Comp = (\n <StyledFieldReferencePicker ref={containerRef} id={`${id}-field-reference`}>\n <Grid\n data-testid={testIds.control}\n as={StyledFieldReferenceInput}\n forwardedAs={StyledFormControl}\n spellCheck={false}\n restingState={!!selected.length && !open}\n container={{ alignItems: 'center', cols: '1fr auto' }}\n readOnly={readOnly}\n disabled={disabled}\n status={status}\n >\n <Grid\n container={{\n cols: 'auto auto minmax(8ch, 1fr)',\n autoFlow: 'column',\n alignContent: 'center',\n colGap: 0.25,\n pad: 0.25\n }}\n onClick={(e: MouseEvent<HTMLDivElement>) => {\n // Ignore clicks on selection items\n if (e.target instanceof HTMLElement && !(e.target instanceof HTMLInputElement)) {\n e.stopPropagation();\n inputRef.current?.focus();\n inputRef.current?.click();\n }\n }}\n >\n {!!selected.length && !open && (\n <Grid item={{ colStart: '1', colEnd: '4' }}>\n <FieldReferenceDisplay\n testId={testId}\n fieldPath={selectedFieldPath}\n link={link}\n actions={formattedActions}\n tooltipData={showTooltips ? tooltipData : undefined}\n />\n </Grid>\n )}\n {!!selected.length && open && showPath && (\n <Flex container={{ gap: 0.25, alignItems: 'center' }} as={StyledSelection}>\n {[...selectedFieldPath].reverse().map((field, index) => {\n if (index === 0 && field.id !== parentItem?.id) return null;\n return (\n <Fragment key={field.id}>\n {(index > 0 || showDot) && '.'}\n <StyledPathSegment>{field.name}</StyledPathSegment>\n </Fragment>\n );\n })}\n </Flex>\n )}\n\n {selected.length === 0 && showDot && <StyledLeadingDot>.</StyledLeadingDot>}\n\n <Grid\n item={{\n colStart: !!selected.length && open ? '3' : '1',\n colEnd: '4',\n alignSelf: 'center'\n }}\n as='input'\n size={1}\n ref={inputRef}\n role='combobox'\n aria-autocomplete='list'\n aria-expanded={!readOnly && !disabled && open}\n aria-controls={!pauseSelectedDescendantEvaluation ? listId : ariaControls}\n aria-haspopup='menu'\n aria-describedby={ariaDescribedBy}\n value={open ? filterValue : ''}\n id={id}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value !== '.') {\n if (e.target.value.endsWith('.')) {\n const search = e.target.value.replace('.', '');\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem =\n menuItems.length === 1\n ? menuItems[0]\n : searchableItems.find(item => item.id === search) ||\n searchableItems.find(\n item => item.name.toLowerCase() === search.toLowerCase()\n );\n if (matchedItem && !!matchedItem.items) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n setShowDot(true);\n onFilterChange('');\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n setShowDot(true);\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }}\n onClick={onInputClick}\n onKeyDown={onInputKeyDown}\n onKeyUp={onInputKeyUp}\n readOnly={readOnly}\n disabled={disabled}\n placeholder={!selected.length && !showDot ? placeholder : undefined}\n autoComplete='off'\n required={undefined}\n />\n </Grid>\n {dropdownButton}\n </Grid>\n\n <Popover\n ref={popoverRef}\n show={open}\n target={containerRef.current}\n placement='bottom-start'\n modifiers={[fitToContent]}\n strategy='fixed'\n onMouseDown={(e: MouseEvent) => e.preventDefault()}\n onKeyDown={(e: KeyboardEvent) => {\n if (!inputRef.current) return;\n\n if (e.key === 'Tab') {\n const popoverFocusables = getFocusables(popoverRef);\n const currentIndex = popoverFocusables.indexOf(e.target as HTMLElement);\n const forward = !e.shiftKey;\n const isLast = currentIndex === popoverFocusables.length - 1;\n\n if (forward && isLast) {\n e.preventDefault();\n const allFocusable = getFocusables(bodyRef as MutableRefObject<HTMLElement>);\n const nextIndex = allFocusable.indexOf(inputRef.current) + 1;\n\n allFocusable[nextIndex]?.focus();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n } else if (!forward && currentIndex === 0) {\n e.preventDefault();\n inputRef.current.focus();\n }\n }\n if (e.key === 'Escape') {\n handleEscape(e);\n inputRef.current.focus();\n }\n }}\n >\n <Menu\n testId={testIds.root}\n as={StyledFieldReferenceMenu}\n ref={menuRef}\n listId={listId}\n id={menuComponentId}\n role='menu'\n items={formattedMenuItems}\n itemLayout={itemLayout}\n focusControlEl={inputRef.current || undefined}\n mode='single-select'\n onItemClick={itemId => {\n handleItemClick(itemId);\n setOpen(false);\n }}\n onItemExpand={handleItemClick}\n onItemCollapse={itemId => {\n onFilterChange('');\n setShowDot(false);\n onSelectedChange(removeFieldFromPath(selected, itemId));\n }}\n aria-label={t('menu_option_list')}\n pauseDescendantEvaluation={pauseMenuDescendantEvaluation}\n arrowNavigationUnsupported\n footer={\n onCreateNew ? (\n <Button variant='link' onClick={onCreateNew}>\n <Icon name='plus' /> {createNewLabel || t('create_new')}\n </Button>\n ) : undefined\n }\n scrollAt={scrollAt}\n loading={loading}\n loadMore={loadMore}\n menuList={\n <FieldReferenceMenuList\n id={listId}\n items={formattedMenuItems}\n parent={\n parentItem && !filterValue\n ? { id: parentItem.id, primary: parentItem.name }\n : undefined\n }\n aria-labelledby={`${menuComponentId}-menuLabel`}\n />\n }\n />\n </Popover>\n </StyledFieldReferencePicker>\n );\n\n return (\n <>\n {label ? (\n <FormField\n testId={testIds}\n label={label}\n labelHidden={labelHidden}\n id={id}\n info={info}\n status={status}\n required={required}\n disabled={disabled}\n additionalInfo={additionalInfo}\n >\n {Comp}\n </FormField>\n ) : (\n Comp\n )}\n <VisuallyHiddenText id={`${id}-inputDescription`} aria-hidden>\n {`${t('fieldref_open_close')} `}\n </VisuallyHiddenText>\n <VisuallyHiddenText id={`${id}-searchDescription`} aria-hidden>\n {t('fieldref_search_instructions')}\n </VisuallyHiddenText>\n </>\n );\n});\n\nexport default withTestIds(FieldReferenceInput, getFieldReferenceInputTestIds);\n"]}
|
|
1
|
+
{"version":3,"file":"FieldReferenceInput.js","sourceRoot":"","sources":["../../../src/components/FieldReference/FieldReferenceInput.tsx"],"names":[],"mappings":"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","sourcesContent":["import {\n forwardRef,\n Fragment,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState\n} from 'react';\nimport type {\n MouseEvent,\n KeyboardEvent as ReactKeyboardEvent,\n PropsWithoutRef,\n Ref,\n MutableRefObject,\n ChangeEvent\n} from 'react';\n\nimport {\n registerIcon,\n navigatorIsAvailable,\n useUID,\n useTestIds,\n useI18n,\n type MenuProps,\n useElement,\n useConsolidatedRef,\n useFocusWithin,\n type FieldValueListItemProps,\n Icon,\n useEscape,\n Button,\n Flex,\n Grid,\n StyledFormControl,\n VisuallyHiddenText,\n Popover,\n getFocusables,\n Menu,\n FormField,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport * as caretDownIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-down.icon';\nimport * as caretUpIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-up.icon';\nimport { fitToContent } from '@pega/cosmos-react-core/lib/components/Popover/modifiers';\n\nimport type FieldReferenceInputProps from './FieldReference.types';\nimport {\n StyledFieldReferenceInput,\n StyledFieldReferencePicker,\n StyledPathSegment,\n StyledSelection,\n StyledFieldReferenceMenu,\n StyledLeadingDot,\n StyledFieldValueList\n} from './FieldReference.styles';\nimport { getFieldReferenceInputTestIds } from './FieldReference.test-ids';\nimport type {\n FieldReferenceDisplayProps,\n FieldReferencedMenuListProps,\n FieldReferenceMenuItem,\n FieldReferenceMenuProps\n} from './FieldReference.types';\nimport FieldReferenceDisplay from './FieldReferenceDisplay';\nimport FieldReferenceMenuList from './FieldReferenceMenuList';\nimport helpers, { addFieldToPath, removeFieldFromPath } from './helpers';\n\nregisterIcon(caretDownIcon, caretUpIcon);\n\nconst isMobile = navigatorIsAvailable && navigator.userAgent.includes('Mobile');\n\nconst FieldReferenceInput = forwardRef(function FieldReferenceInput(\n props: PropsWithoutRef<FieldReferenceInputProps>,\n ref: Ref<HTMLDivElement>\n) {\n const uid = useUID();\n const {\n testId,\n additionalInfo,\n required,\n id = uid,\n label,\n labelHidden,\n info,\n status,\n readOnly,\n disabled,\n placeholder,\n menu,\n showTooltips,\n showCurrentContext,\n onAltContextClick,\n selected = [],\n onSelectedChange,\n filterValue,\n onFilterChange,\n showPath,\n link,\n actions,\n onFocus,\n onBlur,\n onDropdownButtonClick: onDropdownButtonClickProp,\n onMenuOpen,\n onClick,\n onKeyDown,\n handle\n } = props;\n const {\n items: menuItems,\n itemLayout = 'inline',\n altContexts,\n currentContext,\n parentItem,\n onCreateNew,\n createNewLabel,\n scrollAt,\n loading,\n loadMore\n } = menu;\n\n const testIds = useTestIds(testId, getFieldReferenceInputTestIds);\n const bodyRef = useRef<Element>(document.body);\n\n const [pauseMenuDescendantEvaluation, setPauseMenuDescendantEvaluation] = useState(true);\n const [pauseSelectedDescendantEvaluation, setPauseSelectedDescendantEvaluation] = useState(false);\n const t = useI18n();\n const listId = `${id}-list`;\n const inputRef = useRef<HTMLInputElement>(null);\n const popoverRef = useRef<HTMLDivElement>(null);\n const [showDot, setShowDot] = useState(false);\n const [modifyingLeafItem, setModifyingLeafItem] = useState(false);\n const [open, setOpen] = useState(false);\n const menuRef: MenuProps['ref'] = useRef(null);\n const menuComponentId = `${id}-listbox`;\n\n // Force a re-render to make sure useFocusWithin has valid elements to set listeners on.\n const [, setContainerEl] = useElement();\n const containerRef = useConsolidatedRef<HTMLDivElement>(ref, setContainerEl);\n\n const toggleMenuDescendantsActive = useCallback((bool: boolean) => {\n setPauseMenuDescendantEvaluation(!bool);\n setPauseSelectedDescendantEvaluation(bool);\n }, []);\n\n const focus = useFocusWithin([containerRef, popoverRef], focused => {\n if (!focused) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n onBlur?.();\n } else {\n onFocus?.();\n if (isMobile) {\n setTimeout(() => {\n containerRef.current?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n }, 150); // delay it to let keyboard expand first\n }\n }\n });\n\n useImperativeHandle(\n handle,\n () => ({\n openMenu: () => {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n inputRef.current?.focus();\n },\n closeMenu: () => {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }),\n [open]\n );\n\n const formatMenuItems = ({\n items,\n context,\n altContextItems\n }: {\n items: FieldReferenceMenuItem[];\n context?: FieldReferenceMenuProps['currentContext'];\n altContextItems?: FieldReferenceMenuProps['altContexts'];\n }): FieldReferencedMenuListProps['items'] => {\n const formattedItems = items\n .sort((a, b) => {\n if (a.selected) return -1;\n if (b.selected) return 1;\n return 0;\n })\n .map(item => {\n const tooltipData: FieldValueListItemProps[] = [\n { name: t('id'), value: item.id, truncate: false },\n { name: t('name'), value: item.name, truncate: false }\n ];\n if (item.type) tooltipData.push({ name: t('type'), value: item.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (item.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n item.metadata.forEach(meta => {\n const override = tooltipData.find(data => data.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n tooltipData.push(...metaData);\n }\n\n return {\n id: item.id,\n visual: item.icon ? <Icon {...item.icon} size='s' /> : undefined,\n primary: item.name,\n secondary: item.type ? [item.type] : undefined,\n items: item.items ? formatMenuItems({ items: item.items, context: item }) : undefined,\n tooltip: showTooltips ? (\n <StyledFieldValueList fields={tooltipData} truncate={false} />\n ) : undefined,\n selected: item.selected\n };\n });\n const formattedAltContextItems = (\n altContextItems && filterValue\n ? helpers.filterBySearch(altContextItems as FieldReferenceMenuItem[], filterValue)\n : altContextItems\n )?.map(item => ({\n id: item.id,\n primary: item.name,\n items: formatMenuItems({ items: item.items || [], context: item }),\n selected: item.selected\n }));\n\n const organizedMenuItems: MenuProps['items'] = [];\n if (!!formattedAltContextItems?.length && !parentItem && !showDot) {\n organizedMenuItems.push(...formattedAltContextItems);\n }\n\n if (!filterValue && context && !parentItem) {\n organizedMenuItems.push({\n id: context.id,\n label: t('current_context', [context.name]),\n items: formattedItems\n });\n } else if (!!filterValue || !context || parentItem) {\n organizedMenuItems.push(...formattedItems);\n }\n\n return organizedMenuItems;\n };\n\n const handleEscape = useCallback(\n (e: KeyboardEvent) => {\n e.preventDefault();\n if (open) {\n e.stopPropagation();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n },\n [open]\n );\n\n useEscape(handleEscape, containerRef, [handleEscape]);\n\n const onInputKeyDown = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n if (onKeyDown?.(e) === false) {\n return;\n }\n\n switch (e.key) {\n case 'ArrowUp':\n if (e.altKey) {\n e.preventDefault();\n if (open) {\n setOpen(false);\n toggleMenuDescendantsActive(false);\n }\n }\n break;\n case 'ArrowDown':\n e.preventDefault();\n if (!open) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n break;\n case 'Tab': {\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem = searchableItems.find(\n item =>\n item.id === filterValue || item.name.toLowerCase() === filterValue?.toLowerCase()\n );\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n }\n\n setOpen(false);\n toggleMenuDescendantsActive(false);\n\n break;\n }\n case 'Backspace': {\n if (showDot && !filterValue) {\n setShowDot(false);\n } else if (open && selected.length) {\n const removeAll = e.altKey || e.metaKey;\n const lastSelectedItem = selected.at(-1);\n\n if (\n !showDot &&\n lastSelectedItem &&\n (removeAll || lastSelectedItem.id === parentItem?.id)\n ) {\n onSelectedChange(removeAll ? [] : removeFieldFromPath(selected, lastSelectedItem.id));\n } else if (filterValue && lastSelectedItem && lastSelectedItem.id !== parentItem?.id) {\n setModifyingLeafItem(true);\n }\n }\n break;\n }\n default:\n }\n },\n [open, selected, readOnly, filterValue, showDot, parentItem, onKeyDown]\n );\n\n const onInputKeyUp = useCallback(\n (e: ReactKeyboardEvent<HTMLInputElement>) => {\n if (readOnly) return;\n\n if (e.key === 'Backspace' && selected.length) {\n const lastSelectedItem = selected.at(-1)!;\n if (!filterValue && modifyingLeafItem && open) {\n onSelectedChange(showPath ? removeFieldFromPath(selected, lastSelectedItem.id) : []);\n setModifyingLeafItem(false);\n }\n }\n },\n [open, selected, readOnly, filterValue]\n );\n\n const onDropdownButtonClick = useCallback(() => {\n onDropdownButtonClickProp?.(!open);\n setOpen(!open);\n }, [open, onDropdownButtonClickProp]);\n\n const dropdownButton = useMemo(() => {\n return (menuItems || onDropdownButtonClickProp) && !readOnly ? (\n <Button\n aria-label={t(open ? 'fieldref_close_list_button_a11y' : 'fieldref_open_list_button_a11y')}\n icon\n variant='simple'\n onClick={onDropdownButtonClick}\n onMouseDown={(e: MouseEvent) => {\n e.preventDefault();\n inputRef.current?.focus();\n }}\n disabled={disabled}\n tabIndex='-1'\n >\n <Icon name={open ? 'caret-up' : 'caret-down'} />\n </Button>\n ) : null;\n }, [menuItems, onDropdownButtonClick, readOnly, open, disabled]);\n\n const ariaDescribedBy = useMemo(() => {\n let idString = `${id}-inputDescription`;\n\n if (info) {\n idString = idString.concat(` ${id}-info`);\n }\n idString = idString.concat(` ${id}-searchDescription`);\n\n return idString;\n }, [info, id]);\n\n const onInputClick = useCallback(\n (e: MouseEvent) => {\n if (readOnly) return;\n setOpen(true);\n toggleMenuDescendantsActive(true);\n onClick?.(e);\n },\n [readOnly, onClick]\n );\n\n const tooltipData: FieldReferenceDisplayProps['tooltipData'] = useMemo(() => {\n const selectedField = selected.at(-1);\n if (selectedField) {\n const data: FieldValueListItemProps[] = [\n { name: t('id'), value: selectedField.id, truncate: false },\n { name: t('name'), value: selectedField.name, truncate: false }\n ];\n\n if (selectedField.type)\n data.push({ name: t('type'), value: selectedField.type, truncate: false });\n // Override any OOTB attributes with provided metadata value if there are duplicates\n if (selectedField.metadata) {\n const metaData: FieldValueListItemProps[] = [];\n selectedField.metadata.forEach(meta => {\n const override = data.find(d => d.name === meta.name);\n if (override) {\n override.value = meta.value;\n } else {\n metaData.push({ ...meta, truncate: false });\n }\n });\n data.push(...metaData);\n }\n return data;\n }\n\n return undefined;\n }, [selected]);\n\n const formattedMenuItems = useMemo(() => {\n return formatMenuItems({\n items: menuItems || [],\n context: currentContext,\n altContextItems: altContexts\n });\n }, [menuItems, currentContext, altContexts, filterValue, parentItem, showPath, showDot]);\n\n useEffect(() => {\n if (focus && !!filterValue) {\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }, [filterValue, focus]);\n\n useEffect(() => {\n if (open) {\n onMenuOpen?.();\n if (!!selected.length && selected.at(-1)!.id !== parentItem?.id) {\n onFilterChange(`${selected.at(-1)!.name}${filterValue ?? ''}`);\n }\n } else {\n setShowDot(false);\n onFilterChange('');\n }\n }, [open]);\n\n useEffect(() => {\n if (!showDot && !!selected.length && selected.at(-1)!.id === parentItem?.id) {\n setShowDot(true);\n }\n }, [parentItem, selected]);\n\n const handleItemClick = (itemId: string) => {\n onFilterChange('');\n const matchedItem = menuItems.find(item => item.id === itemId);\n const altContext = altContexts?.find(context => context.id === itemId);\n if (matchedItem) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n } else if (altContext) {\n onAltContextClick?.(altContext);\n }\n };\n\n const ariaControls = open && !pauseMenuDescendantEvaluation ? listId : undefined;\n\n const selectedFieldPath: FieldReferenceDisplayProps['fieldPath'] = useMemo(() => {\n if (!showPath && !!selected.length) return [selected.at(-1)!];\n if (showCurrentContext && currentContext) return [currentContext, ...selected];\n return selected;\n }, [showCurrentContext, currentContext, selected, showPath]);\n\n const formattedActions: FieldReferenceDisplayProps['actions'] = useMemo(() => {\n if (actions)\n return actions.map(action => ({\n ...action,\n onClick: (clickId, e, menuButton) => {\n e.stopPropagation();\n action.onClick?.(clickId, e, menuButton);\n }\n }));\n }, [actions]);\n\n const Comp = (\n <StyledFieldReferencePicker ref={containerRef} id={`${id}-field-reference`}>\n <Grid\n data-testid={testIds.control}\n as={StyledFieldReferenceInput}\n forwardedAs={StyledFormControl}\n spellCheck={false}\n restingState={!!selected.length && !open}\n container={{ alignItems: 'center', cols: '1fr auto' }}\n readOnly={readOnly}\n disabled={disabled}\n status={status}\n >\n <Grid\n container={{\n cols: 'auto auto minmax(8ch, 1fr)',\n autoFlow: 'column',\n alignContent: 'center',\n colGap: 0.25,\n pad: 0.25\n }}\n onClick={(e: MouseEvent<HTMLDivElement>) => {\n // Ignore clicks on selection items\n if (e.target instanceof HTMLElement && !(e.target instanceof HTMLInputElement)) {\n e.stopPropagation();\n inputRef.current?.focus();\n inputRef.current?.click();\n }\n }}\n >\n {!!selected.length && !open && (\n <Grid item={{ colStart: '1', colEnd: '4' }}>\n <FieldReferenceDisplay\n testId={testId}\n fieldPath={selectedFieldPath}\n link={link}\n actions={formattedActions}\n tooltipData={showTooltips ? tooltipData : undefined}\n />\n </Grid>\n )}\n {!!selected.length && open && showPath && (\n <Flex container={{ gap: 0.25, alignItems: 'center' }} as={StyledSelection}>\n {[...selectedFieldPath].reverse().map((field, index) => {\n if (index === 0 && field.id !== parentItem?.id) return null;\n return (\n <Fragment key={field.id}>\n {(index > 0 || showDot) && '.'}\n <StyledPathSegment>{field.name}</StyledPathSegment>\n </Fragment>\n );\n })}\n </Flex>\n )}\n\n {selected.length === 0 && showDot && <StyledLeadingDot>.</StyledLeadingDot>}\n\n <Grid\n item={{\n colStart: !!selected.length && open ? '3' : '1',\n colEnd: '4',\n alignSelf: 'center'\n }}\n as='input'\n size={1}\n ref={inputRef}\n role='combobox'\n aria-autocomplete='list'\n aria-expanded={!readOnly && !disabled && open}\n aria-controls={!pauseSelectedDescendantEvaluation ? listId : ariaControls}\n aria-haspopup='menu'\n aria-describedby={ariaDescribedBy}\n value={(() => {\n if (open) {\n return filterValue;\n }\n\n if (selected.length > 0) {\n return selected.map(({ name }) => name).join('.');\n }\n\n return '';\n })()}\n id={id}\n onChange={(e: ChangeEvent<HTMLInputElement>) => {\n if (e.target.value !== '.') {\n if (e.target.value.endsWith('.')) {\n const search = e.target.value.replace('.', '');\n const searchableItems = [...(altContexts || []), ...menuItems];\n const matchedItem =\n menuItems.length === 1\n ? menuItems[0]\n : searchableItems.find(item => item.id === search) ||\n searchableItems.find(\n item => item.name.toLowerCase() === search.toLowerCase()\n );\n if (matchedItem && !!matchedItem.items) {\n onSelectedChange(addFieldToPath(selected, matchedItem, parentItem));\n setShowDot(true);\n onFilterChange('');\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n onFilterChange(e.target.value);\n }\n } else {\n setShowDot(true);\n setOpen(true);\n toggleMenuDescendantsActive(true);\n }\n }}\n onClick={onInputClick}\n onKeyDown={onInputKeyDown}\n onKeyUp={onInputKeyUp}\n readOnly={readOnly}\n disabled={disabled}\n placeholder={!selected.length && !showDot ? placeholder : undefined}\n autoComplete='off'\n required={required}\n />\n </Grid>\n {dropdownButton}\n </Grid>\n\n <Popover\n ref={popoverRef}\n show={open}\n target={containerRef.current}\n placement='bottom-start'\n modifiers={[fitToContent]}\n strategy='fixed'\n onMouseDown={(e: MouseEvent) => e.preventDefault()}\n onKeyDown={(e: KeyboardEvent) => {\n if (!inputRef.current) return;\n\n if (e.key === 'Tab') {\n const popoverFocusables = getFocusables(popoverRef);\n const currentIndex = popoverFocusables.indexOf(e.target as HTMLElement);\n const forward = !e.shiftKey;\n const isLast = currentIndex === popoverFocusables.length - 1;\n\n if (forward && isLast) {\n e.preventDefault();\n const allFocusable = getFocusables(bodyRef as MutableRefObject<HTMLElement>);\n const nextIndex = allFocusable.indexOf(inputRef.current) + 1;\n\n allFocusable[nextIndex]?.focus();\n setOpen(false);\n toggleMenuDescendantsActive(false);\n } else if (!forward && currentIndex === 0) {\n e.preventDefault();\n inputRef.current.focus();\n }\n }\n if (e.key === 'Escape') {\n handleEscape(e);\n inputRef.current.focus();\n }\n }}\n >\n <Menu\n testId={testIds.root}\n as={StyledFieldReferenceMenu}\n ref={menuRef}\n listId={listId}\n id={menuComponentId}\n role='menu'\n items={formattedMenuItems}\n itemLayout={itemLayout}\n focusControlEl={inputRef.current || undefined}\n mode='single-select'\n onItemClick={itemId => {\n handleItemClick(itemId);\n setOpen(false);\n }}\n onItemExpand={handleItemClick}\n onItemCollapse={itemId => {\n onFilterChange('');\n setShowDot(false);\n onSelectedChange(removeFieldFromPath(selected, itemId));\n }}\n aria-label={t('menu_option_list')}\n pauseDescendantEvaluation={pauseMenuDescendantEvaluation}\n arrowNavigationUnsupported\n footer={\n onCreateNew ? (\n <Button variant='link' onClick={onCreateNew}>\n <Icon name='plus' /> {createNewLabel || t('create_new')}\n </Button>\n ) : undefined\n }\n scrollAt={scrollAt}\n loading={loading}\n loadMore={loadMore}\n menuList={\n <FieldReferenceMenuList\n id={listId}\n items={formattedMenuItems}\n parent={\n parentItem && !filterValue\n ? { id: parentItem.id, primary: parentItem.name }\n : undefined\n }\n aria-labelledby={`${menuComponentId}-menuLabel`}\n />\n }\n />\n </Popover>\n </StyledFieldReferencePicker>\n );\n\n return (\n <>\n {label ? (\n <FormField\n testId={testIds}\n label={label}\n labelHidden={labelHidden}\n id={id}\n info={info}\n status={status}\n required={required}\n disabled={disabled}\n additionalInfo={additionalInfo}\n >\n {Comp}\n </FormField>\n ) : (\n Comp\n )}\n <VisuallyHiddenText id={`${id}-inputDescription`} aria-hidden>\n {`${t('fieldref_open_close')} `}\n </VisuallyHiddenText>\n <VisuallyHiddenText id={`${id}-searchDescription`} aria-hidden>\n {t('fieldref_search_instructions')}\n </VisuallyHiddenText>\n </>\n );\n});\n\nexport default withTestIds(FieldReferenceInput, getFieldReferenceInputTestIds);\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { MouseEvent } from 'react';
|
|
2
|
+
import type { PlottedGraphNode } from './Renderer/Utils/GraphLayout';
|
|
3
|
+
import type { NodeEvents, NodeLabels } from './Node/Node.types';
|
|
4
|
+
export declare const StyledDot: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("@pega/cosmos-react-core").IconProps & import("styled-components/dist/types").BaseObject, {
|
|
5
|
+
highlight: boolean | undefined;
|
|
6
|
+
}>> & string & Omit<import("react").ForwardRefExoticComponent<import("@pega/cosmos-react-core").IconProps>, keyof import("react").Component<any, {}, any>>;
|
|
7
|
+
export declare const StyledPlus: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<import("@pega/cosmos-react-core").IconProps & import("styled-components/dist/types").BaseObject, import("styled-components/dist/types").BaseObject>> & string & Omit<import("react").ForwardRefExoticComponent<import("@pega/cosmos-react-core").IconProps>, keyof import("react").Component<any, {}, any>>;
|
|
8
|
+
export declare const StyledWrapper: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>> & string;
|
|
9
|
+
export declare const StyledButton: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components").FastOmit<Omit<Omit<import("@pega/cosmos-react-core").ButtonProps, "ref"> & import("react").RefAttributes<HTMLAnchorElement | HTMLButtonElement> & import("@pega/cosmos-react-core").ForwardProps, "ref"> & {
|
|
10
|
+
ref?: ((instance: HTMLAnchorElement | HTMLButtonElement | 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<HTMLAnchorElement | HTMLButtonElement> | null | undefined;
|
|
11
|
+
}, never>> & string & Omit<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").ButtonProps>, keyof import("react").Component<any, {}, any>>;
|
|
12
|
+
export interface AddNodeProps extends PlottedGraphNode {
|
|
13
|
+
onClick?: (ev: Event) => void;
|
|
14
|
+
addNodeHandler: (e: MouseEvent<HTMLButtonElement>) => void;
|
|
15
|
+
highlight?: boolean;
|
|
16
|
+
}
|
|
17
|
+
type AddButtonProps = Pick<AddNodeProps, 'addNodeHandler' | 'highlight'> & Pick<NodeEvents, 'active' | 'onFocus'> & NodeLabels;
|
|
18
|
+
declare const _default: (({ addNodeHandler, highlight, active, fromNodeLabel, toNodeLabel, ...restProps }: AddButtonProps) => import("react/jsx-runtime").JSX.Element) & {
|
|
19
|
+
getTestIds: (testIdProp?: import("@pega/cosmos-react-core").TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly []>;
|
|
20
|
+
};
|
|
21
|
+
export default _default;
|
|
22
|
+
//# sourceMappingURL=AddNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddNode.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/AddNode.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAexC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGhE,eAAO,MAAM,SAAS;eAA6B,OAAO,GAAG,SAAS;0JAcpE,CAAC;AAIH,eAAO,MAAM,UAAU,kaAEtB,CAAC;AAEF,eAAO,MAAM,aAAa,6NASxB,CAAC;AAIH,eAAO,MAAM,YAAY;;2LA0BvB,CAAC;AAIH,MAAM,WAAW,YAAa,SAAQ,gBAAgB;IACpD,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,cAAc,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAC;IAC3D,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,KAAK,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,gBAAgB,GAAG,WAAW,CAAC,GACtE,IAAI,CAAC,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAC,GACtC,UAAU,CAAC;2GASV,cAAc;;;AAuDjB,wBAA2D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import styled, { css } from 'styled-components';
|
|
3
|
+
import { useContext, useState, useEffect, useRef } from 'react';
|
|
4
|
+
import { Button, defaultThemeProp, Flex, Icon, StyledTooltip, useI18n, withTestIds, useTestIds } from '@pega/cosmos-react-core';
|
|
5
|
+
import { generateDynamicTestId } from '../../utils/utils';
|
|
6
|
+
import FlowModellerContext from './FlowModellerContext';
|
|
7
|
+
import { getConnectorTestIds } from './FlowModeller.test-ids';
|
|
8
|
+
export const StyledDot = styled(Icon)(({ highlight, theme }) => {
|
|
9
|
+
return css `
|
|
10
|
+
position: absolute;
|
|
11
|
+
color: transparent;
|
|
12
|
+
background-color: ${highlight ? theme.base.colors.red.dark : theme.base.colors.slate.dark};
|
|
13
|
+
border-radius: 50%;
|
|
14
|
+
|
|
15
|
+
path {
|
|
16
|
+
fill: ${highlight ? theme.base.colors.red.dark : theme.base.colors.slate.dark};
|
|
17
|
+
}
|
|
18
|
+
`;
|
|
19
|
+
});
|
|
20
|
+
StyledDot.defaultProps = defaultThemeProp;
|
|
21
|
+
export const StyledPlus = styled(Icon) `
|
|
22
|
+
opacity: 0;
|
|
23
|
+
`;
|
|
24
|
+
export const StyledWrapper = styled.div(({ theme }) => {
|
|
25
|
+
return css `
|
|
26
|
+
margin-block-start: ${theme.base.spacing};
|
|
27
|
+
|
|
28
|
+
${StyledTooltip} {
|
|
29
|
+
min-width: calc(${theme.base['content-width'].xs} * 0.6);
|
|
30
|
+
text-align: center;
|
|
31
|
+
}
|
|
32
|
+
`;
|
|
33
|
+
});
|
|
34
|
+
StyledWrapper.defaultProps = defaultThemeProp;
|
|
35
|
+
export const StyledButton = styled(Button)(({ theme }) => {
|
|
36
|
+
return css `
|
|
37
|
+
top: calc(-0.5 * ${theme.base.spacing});
|
|
38
|
+
border: 0;
|
|
39
|
+
background: transparent;
|
|
40
|
+
color: ${theme.base.colors.black};
|
|
41
|
+
&:hover,
|
|
42
|
+
&:focus {
|
|
43
|
+
background: ${theme.base.colors.white};
|
|
44
|
+
${StyledDot} {
|
|
45
|
+
opacity: 0;
|
|
46
|
+
}
|
|
47
|
+
${StyledPlus} {
|
|
48
|
+
opacity: 1;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
&[aria-haspopup='menu'] {
|
|
52
|
+
background: ${theme.base.colors.white};
|
|
53
|
+
${StyledDot} {
|
|
54
|
+
opacity: 0;
|
|
55
|
+
}
|
|
56
|
+
${StyledPlus} {
|
|
57
|
+
opacity: 1;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
});
|
|
62
|
+
StyledButton.defaultProps = defaultThemeProp;
|
|
63
|
+
const AddButton = ({ addNodeHandler, highlight, active = false, fromNodeLabel, toNodeLabel, ...restProps }) => {
|
|
64
|
+
const t = useI18n();
|
|
65
|
+
const [hasMenuActive, setHasMenuActive] = useState(false);
|
|
66
|
+
const { showNodeLibrary } = useContext(FlowModellerContext);
|
|
67
|
+
const addNodeRef = useRef(null);
|
|
68
|
+
const [isFocused, setFocused] = useState(false);
|
|
69
|
+
const addNodeClickHandler = (e) => {
|
|
70
|
+
setHasMenuActive(true);
|
|
71
|
+
addNodeHandler(e);
|
|
72
|
+
};
|
|
73
|
+
useEffect(() => {
|
|
74
|
+
if (active) {
|
|
75
|
+
addNodeRef.current?.focus();
|
|
76
|
+
}
|
|
77
|
+
}, [active]);
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (!showNodeLibrary) {
|
|
80
|
+
setHasMenuActive(false);
|
|
81
|
+
}
|
|
82
|
+
}, [showNodeLibrary]);
|
|
83
|
+
const connectorTestID = generateDynamicTestId([
|
|
84
|
+
fromNodeLabel || 'merge',
|
|
85
|
+
toNodeLabel || 'branch-end'
|
|
86
|
+
]);
|
|
87
|
+
const testIds = useTestIds(connectorTestID, getConnectorTestIds);
|
|
88
|
+
return (_jsx(Flex, { "data-testid": testIds.root, container: { justify: 'center' }, as: StyledWrapper, children: _jsxs(StyledButton, { ...restProps, ref: addNodeRef, label: t('step_name', [t('add')]), "aria-haspopup": hasMenuActive ? 'menu' : false, icon: true, onClick: addNodeClickHandler, tabIndex: isFocused ? 0 : -1, onFocus: () => {
|
|
89
|
+
setFocused(true);
|
|
90
|
+
}, onBlur: () => {
|
|
91
|
+
setFocused(false);
|
|
92
|
+
}, children: [_jsx(StyledDot, { name: 'circle', highlight: highlight }), _jsx(StyledPlus, { name: 'plus' })] }) }));
|
|
93
|
+
};
|
|
94
|
+
export default withTestIds(AddButton, getConnectorTestIds);
|
|
95
|
+
//# sourceMappingURL=AddNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AddNode.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/AddNode.tsx"],"names":[],"mappings":"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","sourcesContent":["import styled, { css } from 'styled-components';\nimport { useContext, useState, useEffect, useRef } from 'react';\nimport type { MouseEvent } from 'react';\n\nimport {\n Button,\n defaultThemeProp,\n Flex,\n Icon,\n StyledTooltip,\n useI18n,\n withTestIds,\n useTestIds\n} from '@pega/cosmos-react-core';\n\nimport { generateDynamicTestId } from '../../utils/utils';\n\nimport type { PlottedGraphNode } from './Renderer/Utils/GraphLayout';\nimport FlowModellerContext from './FlowModellerContext';\nimport type { NodeEvents, NodeLabels } from './Node/Node.types';\nimport { getConnectorTestIds } from './FlowModeller.test-ids';\n\nexport const StyledDot = styled(Icon)<{ highlight: boolean | undefined }>(({\n highlight,\n theme\n}) => {\n return css`\n position: absolute;\n color: transparent;\n background-color: ${highlight ? theme.base.colors.red.dark : theme.base.colors.slate.dark};\n border-radius: 50%;\n\n path {\n fill: ${highlight ? theme.base.colors.red.dark : theme.base.colors.slate.dark};\n }\n `;\n});\n\nStyledDot.defaultProps = defaultThemeProp;\n\nexport const StyledPlus = styled(Icon)`\n opacity: 0;\n`;\n\nexport const StyledWrapper = styled.div(({ theme }) => {\n return css`\n margin-block-start: ${theme.base.spacing};\n\n ${StyledTooltip} {\n min-width: calc(${theme.base['content-width'].xs} * 0.6);\n text-align: center;\n }\n `;\n});\n\nStyledWrapper.defaultProps = defaultThemeProp;\n\nexport const StyledButton = styled(Button)(({ theme }) => {\n return css`\n top: calc(-0.5 * ${theme.base.spacing});\n border: 0;\n background: transparent;\n color: ${theme.base.colors.black};\n &:hover,\n &:focus {\n background: ${theme.base.colors.white};\n ${StyledDot} {\n opacity: 0;\n }\n ${StyledPlus} {\n opacity: 1;\n }\n }\n &[aria-haspopup='menu'] {\n background: ${theme.base.colors.white};\n ${StyledDot} {\n opacity: 0;\n }\n ${StyledPlus} {\n opacity: 1;\n }\n }\n `;\n});\n\nStyledButton.defaultProps = defaultThemeProp;\n\nexport interface AddNodeProps extends PlottedGraphNode {\n onClick?: (ev: Event) => void;\n addNodeHandler: (e: MouseEvent<HTMLButtonElement>) => void;\n highlight?: boolean;\n}\n\ntype AddButtonProps = Pick<AddNodeProps, 'addNodeHandler' | 'highlight'> &\n Pick<NodeEvents, 'active' | 'onFocus'> &\n NodeLabels;\n\nconst AddButton = ({\n addNodeHandler,\n highlight,\n active = false,\n fromNodeLabel,\n toNodeLabel,\n ...restProps\n}: AddButtonProps) => {\n const t = useI18n();\n const [hasMenuActive, setHasMenuActive] = useState(false);\n const { showNodeLibrary } = useContext(FlowModellerContext);\n const addNodeRef = useRef<HTMLButtonElement>(null);\n const [isFocused, setFocused] = useState(false);\n\n const addNodeClickHandler = (e: MouseEvent<HTMLButtonElement>) => {\n setHasMenuActive(true);\n addNodeHandler(e);\n };\n\n useEffect(() => {\n if (active) {\n addNodeRef.current?.focus();\n }\n }, [active]);\n\n useEffect(() => {\n if (!showNodeLibrary) {\n setHasMenuActive(false);\n }\n }, [showNodeLibrary]);\n\n const connectorTestID = generateDynamicTestId([\n fromNodeLabel || 'merge',\n toNodeLabel || 'branch-end'\n ]);\n\n const testIds = useTestIds(connectorTestID, getConnectorTestIds);\n\n return (\n <Flex data-testid={testIds.root} container={{ justify: 'center' }} as={StyledWrapper}>\n <StyledButton\n {...restProps}\n ref={addNodeRef}\n label={t('step_name', [t('add')])}\n aria-haspopup={hasMenuActive ? 'menu' : false}\n icon\n onClick={addNodeClickHandler}\n tabIndex={isFocused ? 0 : -1}\n onFocus={() => {\n setFocused(true);\n }}\n onBlur={() => {\n setFocused(false);\n }}\n >\n <StyledDot name='circle' highlight={highlight} />\n <StyledPlus name='plus' />\n </StyledButton>\n </Flex>\n );\n};\n\nexport default withTestIds(AddButton, getConnectorTestIds);\n"]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PlaceHolderConnector } from './Utils/addNodeUtils';
|
|
2
|
+
import type { PlottedGraphConnector } from './Renderer/Utils/GraphLayout';
|
|
3
|
+
import type { NodeEvents } from './Node/Node.types';
|
|
4
|
+
export declare const StyledLabel: import("styled-components/dist/types").IStyledComponentBase<"web", import("styled-components/dist/types").Substitute<Omit<Omit<import("@pega/cosmos-react-core").TextProps, "ref"> & import("react").RefAttributes<HTMLHeadingElement | HTMLSpanElement> & import("@pega/cosmos-react-core").ForwardProps, "ref"> & {
|
|
5
|
+
ref?: ((instance: HTMLHeadingElement | HTMLSpanElement | 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<HTMLHeadingElement | HTMLSpanElement> | null | undefined;
|
|
6
|
+
}, {
|
|
7
|
+
highlight: boolean;
|
|
8
|
+
}>> & string & Omit<import("@pega/cosmos-react-core").ForwardRefForwardPropsComponent<import("@pega/cosmos-react-core").TextProps>, keyof import("react").Component<any, {}, any>>;
|
|
9
|
+
type ConnectorProps = Pick<PlottedGraphConnector, 'id' | 'data' | 'labelLayout' | 'points'> & Partial<Pick<PlaceHolderConnector, 'realConnectors'>>;
|
|
10
|
+
declare const _default: import("react").MemoExoticComponent<({ id, data, labelLayout, points, realConnectors, onKeyDown, ...restProps }: ConnectorProps & NodeEvents) => import("react/jsx-runtime").JSX.Element | null>;
|
|
11
|
+
export default _default;
|
|
12
|
+
//# sourceMappingURL=Connector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Connector.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/Connector.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAWpD,eAAO,MAAM,WAAW;;;eAA6B,OAAO;kLAmB1D,CAAC;AAsDH,KAAK,cAAc,GAAG,IAAI,CAAC,qBAAqB,EAAE,IAAI,GAAG,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC,GACzF,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,CAAC;yIAUrD,cAAc,GAAG,UAAU;AAwD9B,wBAA+B"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { memo, useContext, useRef } from 'react';
|
|
3
|
+
import styled, { css } from 'styled-components';
|
|
4
|
+
import { defaultThemeProp, Flex, Text, useTheme } from '@pega/cosmos-react-core';
|
|
5
|
+
import AddButton from './AddNode';
|
|
6
|
+
import FlowModellerContext from './FlowModellerContext';
|
|
7
|
+
const isConnectorData = (data) => typeof data === 'object' && data !== null && 'type' in data && typeof data.type === 'string';
|
|
8
|
+
export const StyledLabel = styled(Text)(({ highlight, theme }) => {
|
|
9
|
+
return css `
|
|
10
|
+
border-radius: ${theme.base['border-radius']};
|
|
11
|
+
background: ${theme.base.colors.slate.dark};
|
|
12
|
+
color: ${theme.base.colors.white};
|
|
13
|
+
text-align: center;
|
|
14
|
+
padding: calc(0.5 * ${theme.base.spacing}) ${theme.base.spacing};
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
text-overflow: ellipsis;
|
|
17
|
+
max-width: calc(1.2 * ${theme.base['content-width'].xs});
|
|
18
|
+
white-space: nowrap;
|
|
19
|
+
|
|
20
|
+
${highlight &&
|
|
21
|
+
css `
|
|
22
|
+
&& {
|
|
23
|
+
background-color: ${theme.base.colors.red.dark};
|
|
24
|
+
}
|
|
25
|
+
`}
|
|
26
|
+
`;
|
|
27
|
+
});
|
|
28
|
+
StyledLabel.defaultProps = defaultThemeProp;
|
|
29
|
+
const curveRadius = 12;
|
|
30
|
+
const genLine = (points) => {
|
|
31
|
+
const lineStr = points
|
|
32
|
+
.map((point, idx, arr) => {
|
|
33
|
+
const { x, y } = point;
|
|
34
|
+
const prev = arr[idx - 1];
|
|
35
|
+
const next = arr[idx + 1];
|
|
36
|
+
const line = `L${x},${y}`;
|
|
37
|
+
// if the point is extreme end, no need to add a curve
|
|
38
|
+
if (!prev || !next) {
|
|
39
|
+
return line;
|
|
40
|
+
}
|
|
41
|
+
// if point is colinear with prev and next, no need to add a curve
|
|
42
|
+
if (prev.x === next.x || prev.y === next.y) {
|
|
43
|
+
return line;
|
|
44
|
+
}
|
|
45
|
+
if (point.x > next.x) {
|
|
46
|
+
// BOTTOM-RIGHT ↲
|
|
47
|
+
return `L${x},${y - curveRadius}a${curveRadius},${curveRadius} 0 0 1 -${curveRadius},${curveRadius}`;
|
|
48
|
+
}
|
|
49
|
+
// BOTTOM-LEFT ↳
|
|
50
|
+
if (point.x < next.x) {
|
|
51
|
+
return `L${x},${y - curveRadius}a${curveRadius},${curveRadius} 0 0 0 ${curveRadius},${curveRadius}`;
|
|
52
|
+
}
|
|
53
|
+
// TOP-LEFT ↱
|
|
54
|
+
if (point.x < prev.x) {
|
|
55
|
+
return `L${x + curveRadius},${y}a${curveRadius},${curveRadius} 0 0 0 -${curveRadius},${curveRadius}`;
|
|
56
|
+
}
|
|
57
|
+
// TOP-RIGHT ↴
|
|
58
|
+
if (point.x > prev.x) {
|
|
59
|
+
return `L${x - curveRadius},${y}a${curveRadius},${curveRadius} 0 0 1 ${curveRadius},${curveRadius}`;
|
|
60
|
+
}
|
|
61
|
+
return `L${x},${y}`;
|
|
62
|
+
})
|
|
63
|
+
.join('');
|
|
64
|
+
return `M${lineStr.substr(1)}`;
|
|
65
|
+
};
|
|
66
|
+
const Connector = ({ id, data, labelLayout, points, realConnectors, onKeyDown, ...restProps }) => {
|
|
67
|
+
const refId = realConnectors || id;
|
|
68
|
+
const { readOnly, highlights } = useContext(FlowModellerContext);
|
|
69
|
+
const theme = useTheme();
|
|
70
|
+
const connectorRef = useRef(null);
|
|
71
|
+
const metaData = {
|
|
72
|
+
refType: 'connector',
|
|
73
|
+
refId
|
|
74
|
+
};
|
|
75
|
+
return isConnectorData(data) && data.type === 'default' ? (_jsxs("g", { onKeyDown: onKeyDown, children: [_jsx("path", { id: id, d: genLine(points), stroke: highlights?.connectors?.[id] ? theme.base.colors.red.medium : theme.base.colors.slate.dark, strokeWidth: highlights?.connectors?.[id] ? 2 : 1, fill: 'none' }), labelLayout && (_jsxs("foreignObject", { x: labelLayout.x - labelLayout.width, y: points[3].y - 20, width: labelLayout.width, height: labelLayout.height, ref: connectorRef, children: [labelLayout?.value && (_jsx(Flex, { container: { justify: 'center' }, children: _jsx(StyledLabel, { highlight: !!highlights?.connectors?.[id], children: labelLayout.value }) })), !readOnly && data.onNodeCreate && (_jsx(AddButton, { ...restProps, highlight: !!highlights?.connectors?.[id], addNodeHandler: (e) => {
|
|
76
|
+
data.onNodeCreate?.(e.currentTarget, metaData);
|
|
77
|
+
connectorRef.current?.scrollIntoView({
|
|
78
|
+
block: 'center',
|
|
79
|
+
behavior: 'smooth'
|
|
80
|
+
});
|
|
81
|
+
} }))] }))] }, id)) : null;
|
|
82
|
+
};
|
|
83
|
+
export default memo(Connector);
|
|
84
|
+
//# sourceMappingURL=Connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Connector.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/Connector.tsx"],"names":[],"mappings":"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","sourcesContent":["import { memo, useContext, useRef } from 'react';\nimport type { MouseEvent } from 'react';\nimport styled, { css } from 'styled-components';\n\nimport { defaultThemeProp, Flex, Text, useTheme } from '@pega/cosmos-react-core';\n\nimport AddButton from './AddNode';\nimport type { AddNodeHandlerParams } from './Renderer/Renderer.types';\nimport type { PlaceHolderConnector } from './Utils/addNodeUtils';\nimport FlowModellerContext from './FlowModellerContext';\nimport type { PlottedGraphConnector } from './Renderer/Utils/GraphLayout';\nimport type { NodeEvents } from './Node/Node.types';\n\ninterface ConnectorData {\n type: string;\n label?: string;\n onNodeCreate?: (el: HTMLElement | SVGForeignObjectElement, meta: AddNodeHandlerParams) => void;\n}\n\nconst isConnectorData = (data: unknown): data is ConnectorData =>\n typeof data === 'object' && data !== null && 'type' in data && typeof data.type === 'string';\n\nexport const StyledLabel = styled(Text)<{ highlight: boolean }>(({ highlight, theme }) => {\n return css`\n border-radius: ${theme.base['border-radius']};\n background: ${theme.base.colors.slate.dark};\n color: ${theme.base.colors.white};\n text-align: center;\n padding: calc(0.5 * ${theme.base.spacing}) ${theme.base.spacing};\n overflow: hidden;\n text-overflow: ellipsis;\n max-width: calc(1.2 * ${theme.base['content-width'].xs});\n white-space: nowrap;\n\n ${highlight &&\n css`\n && {\n background-color: ${theme.base.colors.red.dark};\n }\n `}\n `;\n});\n\nStyledLabel.defaultProps = defaultThemeProp;\n\ninterface Points {\n x: number;\n y: number;\n}\n\nconst curveRadius = 12;\nconst genLine = (points: Points[]) => {\n const lineStr: string = points\n .map((point: Points, idx: number, arr: Points[]) => {\n const { x, y } = point;\n const prev = arr[idx - 1];\n const next = arr[idx + 1];\n const line = `L${x},${y}`;\n\n // if the point is extreme end, no need to add a curve\n if (!prev || !next) {\n return line;\n }\n\n // if point is colinear with prev and next, no need to add a curve\n if (prev.x === next.x || prev.y === next.y) {\n return line;\n }\n\n if (point.x > next.x) {\n // BOTTOM-RIGHT ↲\n return `L${x},${y - curveRadius}a${curveRadius},${curveRadius} 0 0 1 -${curveRadius},${curveRadius}`;\n }\n\n // BOTTOM-LEFT ↳\n if (point.x < next.x) {\n return `L${x},${y - curveRadius}a${curveRadius},${curveRadius} 0 0 0 ${curveRadius},${curveRadius}`;\n }\n\n // TOP-LEFT ↱\n if (point.x < prev.x) {\n return `L${x + curveRadius},${y}a${curveRadius},${curveRadius} 0 0 0 -${curveRadius},${curveRadius}`;\n }\n\n // TOP-RIGHT ↴\n if (point.x > prev.x) {\n return `L${x - curveRadius},${y}a${curveRadius},${curveRadius} 0 0 1 ${curveRadius},${curveRadius}`;\n }\n\n return `L${x},${y}`;\n })\n .join('');\n return `M${lineStr.substr(1)}`;\n};\n\ntype ConnectorProps = Pick<PlottedGraphConnector, 'id' | 'data' | 'labelLayout' | 'points'> &\n Partial<Pick<PlaceHolderConnector, 'realConnectors'>>;\n\nconst Connector = ({\n id,\n data,\n labelLayout,\n points,\n realConnectors,\n onKeyDown,\n ...restProps\n}: ConnectorProps & NodeEvents) => {\n const refId = realConnectors || id;\n const { readOnly, highlights } = useContext(FlowModellerContext);\n const theme = useTheme();\n const connectorRef = useRef<SVGForeignObjectElement>(null);\n\n const metaData: AddNodeHandlerParams = {\n refType: 'connector',\n refId\n };\n\n return isConnectorData(data) && data.type === 'default' ? (\n <g key={id} onKeyDown={onKeyDown}>\n <path\n id={id}\n d={genLine(points)}\n stroke={\n highlights?.connectors?.[id] ? theme.base.colors.red.medium : theme.base.colors.slate.dark\n }\n strokeWidth={highlights?.connectors?.[id] ? 2 : 1}\n fill='none'\n />\n {labelLayout && (\n <foreignObject\n x={labelLayout.x - labelLayout.width}\n y={points[3].y - 20}\n width={labelLayout.width}\n height={labelLayout.height}\n ref={connectorRef}\n >\n {labelLayout?.value && (\n <Flex container={{ justify: 'center' }}>\n <StyledLabel highlight={!!highlights?.connectors?.[id]}>\n {labelLayout.value}\n </StyledLabel>\n </Flex>\n )}\n {!readOnly && data.onNodeCreate && (\n <AddButton\n {...restProps}\n highlight={!!highlights?.connectors?.[id]}\n addNodeHandler={(e: MouseEvent<HTMLButtonElement>) => {\n data.onNodeCreate?.(e.currentTarget, metaData);\n connectorRef.current?.scrollIntoView({\n block: 'center',\n behavior: 'smooth'\n });\n }}\n />\n )}\n </foreignObject>\n )}\n </g>\n ) : null;\n};\n\nexport default memo(Connector);\n"]}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import type { ChangeEvent, PropsWithoutRef } from 'react';
|
|
2
|
+
import type { FormDialogProps } from '@pega/cosmos-react-core';
|
|
3
|
+
import type { GraphData } from './Renderer/Utils/Graph';
|
|
4
|
+
import type { GraphDataAsMap, DeleteNodeOutcome } from './Utils/deleteNodeUtils';
|
|
5
|
+
import type { NodeProps } from './Node/Node.types';
|
|
6
|
+
export interface DeleteDialogProps {
|
|
7
|
+
target: FormDialogProps['target'];
|
|
8
|
+
flowGraphData: GraphData<NodeProps>;
|
|
9
|
+
rendererGraphData: GraphData<NodeProps>;
|
|
10
|
+
nodeId: string;
|
|
11
|
+
onChange?: (itemsToDelete: GraphDataAsMap, itemsToRetain: GraphDataAsMap | undefined, ev?: ChangeEvent) => void;
|
|
12
|
+
onSubmit?: (outcome: DeleteNodeOutcome) => void;
|
|
13
|
+
onCancel?: () => void;
|
|
14
|
+
ref?: FormDialogProps['ref'];
|
|
15
|
+
}
|
|
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
|
+
onDismiss?: () => void;
|
|
18
|
+
onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
|
|
19
|
+
onSubmit: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
|
|
20
|
+
} & {
|
|
21
|
+
heading: string;
|
|
22
|
+
additionalInfo?: import("@pega/cosmos-react-core").AdditionalInfoProps;
|
|
23
|
+
'aria-label'?: never;
|
|
24
|
+
} & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "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
|
+
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;
|
|
26
|
+
}) | (Omit<Omit<import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").BaseDialogProps & {
|
|
27
|
+
onDismiss?: () => void;
|
|
28
|
+
onCancel: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
|
|
29
|
+
onSubmit: import("@pega/cosmos-react-core/lib/components/Dialog/Dialog.types").FormAction;
|
|
30
|
+
} & {
|
|
31
|
+
heading?: never;
|
|
32
|
+
'aria-label': string;
|
|
33
|
+
additionalInfo?: never;
|
|
34
|
+
} & Omit<import("@pega/cosmos-react-core").Attributes<"div">, "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"> & {
|
|
35
|
+
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;
|
|
36
|
+
}), import("styled-components/dist/types").BaseObject>> & string & Omit<import("react").ForwardRefExoticComponent<PropsWithoutRef<FormDialogProps> & import("react").RefAttributes<HTMLDivElement>>, keyof import("react").Component<any, {}, any>>;
|
|
37
|
+
declare const DeleteDialog: ({ target, flowGraphData, rendererGraphData, nodeId, onChange, onSubmit, onCancel }: PropsWithoutRef<DeleteDialogProps>) => import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
export default DeleteDialog;
|
|
39
|
+
//# sourceMappingURL=DeleteDialog.d.ts.map
|
|
@@ -0,0 +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;AAa9E,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,4CA2NpC,CAAC;AAEF,eAAe,YAAY,CAAC"}
|