@pega/cosmos-react-build 9.0.0-build.27.9 → 9.0.0-build.28.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionItem.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAiB/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;;;AA2HrE,wBAAsE"}
1
+ {"version":3,"file":"ExpressionItem.d.ts","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAgB/C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;;;;AA+HrE,wBAAsE"}
@@ -1,6 +1,6 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useContext, useMemo } from 'react';
3
- import { Button, ExpandCollapse, Flex, Icon, Mark, registerIcon, replaceMatchWithElement, StyledLabel, Text, useDirection, useI18n, useTestIds, withTestIds } from '@pega/cosmos-react-core';
2
+ import { useContext, useMemo, useRef } from 'react';
3
+ import { Button, ExpandCollapse, Flex, Icon, registerIcon, StyledLabel, Text, useDirection, useHighlight, useI18n, useTestIds, withTestIds } from '@pega/cosmos-react-core';
4
4
  import * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';
5
5
  import * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';
6
6
  import { StyledPrimaryText, StyledExpandCollapseContent, StyledExpressionExplanation, StyledExpressionItem } from './ExpressionBuilder.styles';
@@ -13,19 +13,23 @@ const ExpressionItem = ({ id, testId, primary, type, onAdd, onExpand, onCollapse
13
13
  const t = useI18n();
14
14
  const testIds = useTestIds(testId, getExpressionItemsTestIds);
15
15
  const { accent } = useContext(ExpressionBuilderContext);
16
- const accentedText = (text) => {
17
- if (accent) {
18
- const accentRegex = typeof accent === 'function' ? accent(text) : accent;
19
- return replaceMatchWithElement(text, accentRegex, str => {
20
- return _jsx(Mark, { children: str });
21
- });
22
- }
23
- return text;
24
- };
16
+ const primaryRef = useRef(null);
17
+ const metaRef = useRef(null);
18
+ const primaryPattern = useMemo(() => {
19
+ if (!accent || matchedField)
20
+ return undefined;
21
+ return typeof accent === 'function' ? accent(primary) : accent;
22
+ }, [accent, matchedField, primary]);
23
+ const metaPattern = useMemo(() => {
24
+ if (!accent || !matchedField || expanded)
25
+ return undefined;
26
+ return typeof accent === 'function' ? accent(matchedField.value) : accent;
27
+ }, [accent, matchedField, expanded]);
28
+ useHighlight(primaryRef, primaryPattern);
29
+ useHighlight(metaRef, metaPattern);
25
30
  const caretIcon = useMemo(() => {
26
31
  return expanded ? 'caret-down' : `caret-${caretDirection}`;
27
32
  }, [expanded, caretDirection]);
28
- const accentedMeta = matchedField && !expanded ? accentedText(matchedField.value) : undefined;
29
33
  return (_jsxs(StyledExpressionItem, { expanded: expanded, children: [_jsxs(Flex, { "data-testid": testIds.root, ...restProps, as: StyledExpressionExplanation, id: id, container: { gap: 1, alignItems: 'start' }, children: [_jsx(Button, { "data-testid": testIds.collapseItemButton, icon: true, variant: 'simple', onClick: onCollapse || onExpand
30
34
  ? () => {
31
35
  if (expanded) {
@@ -35,7 +39,7 @@ const ExpressionItem = ({ id, testId, primary, type, onAdd, onExpand, onCollapse
35
39
  onExpand?.(id);
36
40
  }
37
41
  }
38
- : undefined, "aria-label": `${type}: ${primary}`, "aria-expanded": expanded, label: expanded ? t('collapse') : t('expand'), children: _jsx(Icon, { name: caretIcon }) }), _jsxs(Flex, { container: { alignItems: 'start', direction: 'column' }, item: { grow: 1 }, children: [_jsx(StyledPrimaryText, { variant: 'primary', children: !matchedField ? accentedText(primary) : primary }), accentedMeta ? (_jsxs("div", { children: [_jsxs(StyledLabel, { as: 'span', children: [matchedField?.name, ":"] }), accentedMeta] })) : (_jsx(Text, { variant: 'secondary', children: type }))] }), !expanded && (_jsx(Button, { "data-testid": testIds.addItemButton, icon: true, variant: 'simple', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), label: t('add'), children: _jsx(Icon, { name: 'plus' }) }))] }), _jsx(ExpandCollapse, { collapsed: !expanded, children: _jsxs(Flex, { as: StyledExpandCollapseContent, container: { direction: 'column' }, children: [details && _jsx(ExpressionDetails, { testId: testIds.root, ...details }), _jsx(Button, { "data-testid": testIds.addItem, variant: 'primary', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), children: t('add') })] }) })] }));
42
+ : undefined, "aria-label": `${type}: ${primary}`, "aria-expanded": expanded, label: expanded ? t('collapse') : t('expand'), children: _jsx(Icon, { name: caretIcon }) }), _jsxs(Flex, { container: { alignItems: 'start', direction: 'column' }, item: { grow: 1 }, children: [_jsx(StyledPrimaryText, { variant: 'primary', children: _jsx("span", { ref: primaryRef, children: primary }) }), matchedField && !expanded ? (_jsxs("div", { children: [_jsxs(StyledLabel, { as: 'span', children: [matchedField?.name, ":"] }), _jsx("span", { ref: metaRef, children: matchedField.value })] })) : (_jsx(Text, { variant: 'secondary', children: type }))] }), !expanded && (_jsx(Button, { "data-testid": testIds.addItemButton, icon: true, variant: 'simple', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), label: t('add'), children: _jsx(Icon, { name: 'plus' }) }))] }), _jsx(ExpandCollapse, { collapsed: !expanded, children: _jsxs(Flex, { as: StyledExpandCollapseContent, container: { direction: 'column' }, children: [details && _jsx(ExpressionDetails, { testId: testIds.root, ...details }), _jsx(Button, { "data-testid": testIds.addItem, variant: 'primary', onClick: () => onAdd(id), "aria-label": t('add_noun', [`${type}: ${primary}`]), children: t('add') })] }) })] }));
39
43
  };
40
44
  export default withTestIds(ExpressionItem, getExpressionItemsTestIds);
41
45
  //# sourceMappingURL=ExpressionItem.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExpressionItem.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport {\n Button,\n ExpandCollapse,\n Flex,\n Icon,\n Mark,\n registerIcon,\n replaceMatchWithElement,\n StyledLabel,\n Text,\n useDirection,\n useI18n,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\n\nimport type { ExpressionItemProps } from './ExpressionBuilder.types';\nimport {\n StyledPrimaryText,\n StyledExpandCollapseContent,\n StyledExpressionExplanation,\n StyledExpressionItem\n} from './ExpressionBuilder.styles';\nimport ExpressionDetails from './ExpressionDetails';\nimport ExpressionBuilderContext from './ExpressionBuilderContext';\nimport { getExpressionItemsTestIds } from './ExpressionBuilder.test-ids';\n\nregisterIcon(caretLeftIcon, caretRightIcon);\n\nconst ExpressionItem: FunctionComponent<ExpressionItemProps & ForwardProps> = ({\n id,\n testId,\n primary,\n type,\n onAdd,\n onExpand,\n onCollapse,\n details,\n matchedField,\n expanded = false,\n ...restProps\n}) => {\n const { end: caretDirection } = useDirection();\n const t = useI18n();\n const testIds = useTestIds(testId, getExpressionItemsTestIds);\n\n const { accent } = useContext(ExpressionBuilderContext);\n\n const accentedText = (text: string) => {\n if (accent) {\n const accentRegex = typeof accent === 'function' ? accent(text) : accent;\n return replaceMatchWithElement(text, accentRegex, str => {\n return <Mark>{str}</Mark>;\n });\n }\n return text;\n };\n\n const caretIcon = useMemo(() => {\n return expanded ? 'caret-down' : `caret-${caretDirection}`;\n }, [expanded, caretDirection]);\n\n const accentedMeta = matchedField && !expanded ? accentedText(matchedField.value) : undefined;\n\n return (\n <StyledExpressionItem expanded={expanded}>\n <Flex\n data-testid={testIds.root}\n {...restProps}\n as={StyledExpressionExplanation}\n id={id}\n container={{ gap: 1, alignItems: 'start' }}\n >\n <Button\n data-testid={testIds.collapseItemButton}\n icon\n variant='simple'\n onClick={\n onCollapse || onExpand\n ? () => {\n if (expanded) {\n onCollapse?.(id);\n } else {\n onExpand?.(id);\n }\n }\n : undefined\n }\n aria-label={`${type}: ${primary}`}\n aria-expanded={expanded}\n label={expanded ? t('collapse') : t('expand')}\n >\n <Icon name={caretIcon} />\n </Button>\n\n <Flex container={{ alignItems: 'start', direction: 'column' }} item={{ grow: 1 }}>\n <StyledPrimaryText variant='primary'>\n {!matchedField ? accentedText(primary) : primary}\n </StyledPrimaryText>\n {accentedMeta ? (\n <div>\n <StyledLabel as='span'>{matchedField?.name}:</StyledLabel>\n {accentedMeta}\n </div>\n ) : (\n <Text variant='secondary'>{type}</Text>\n )}\n </Flex>\n\n {!expanded && (\n <Button\n data-testid={testIds.addItemButton}\n icon\n variant='simple'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n label={t('add')}\n >\n <Icon name='plus' />\n </Button>\n )}\n </Flex>\n <ExpandCollapse collapsed={!expanded}>\n <Flex as={StyledExpandCollapseContent} container={{ direction: 'column' }}>\n {details && <ExpressionDetails testId={testIds.root} {...details} />}\n <Button\n data-testid={testIds.addItem}\n variant='primary'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n >\n {t('add')}\n </Button>\n </Flex>\n </ExpandCollapse>\n </StyledExpressionItem>\n );\n};\n\nexport default withTestIds(ExpressionItem, getExpressionItemsTestIds);\n"]}
1
+ {"version":3,"file":"ExpressionItem.js","sourceRoot":"","sources":["../../../src/components/ExpressionBuilder/ExpressionItem.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useContext, useMemo, useRef } from 'react';\nimport type { FunctionComponent } from 'react';\n\nimport {\n Button,\n ExpandCollapse,\n Flex,\n Icon,\n registerIcon,\n StyledLabel,\n Text,\n useDirection,\n useHighlight,\n useI18n,\n useTestIds,\n withTestIds\n} from '@pega/cosmos-react-core';\nimport type { ForwardProps } from '@pega/cosmos-react-core';\nimport * as caretRightIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-right.icon';\nimport * as caretLeftIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/caret-left.icon';\n\nimport type { ExpressionItemProps } from './ExpressionBuilder.types';\nimport {\n StyledPrimaryText,\n StyledExpandCollapseContent,\n StyledExpressionExplanation,\n StyledExpressionItem\n} from './ExpressionBuilder.styles';\nimport ExpressionDetails from './ExpressionDetails';\nimport ExpressionBuilderContext from './ExpressionBuilderContext';\nimport { getExpressionItemsTestIds } from './ExpressionBuilder.test-ids';\n\nregisterIcon(caretLeftIcon, caretRightIcon);\n\nconst ExpressionItem: FunctionComponent<ExpressionItemProps & ForwardProps> = ({\n id,\n testId,\n primary,\n type,\n onAdd,\n onExpand,\n onCollapse,\n details,\n matchedField,\n expanded = false,\n ...restProps\n}) => {\n const { end: caretDirection } = useDirection();\n const t = useI18n();\n const testIds = useTestIds(testId, getExpressionItemsTestIds);\n\n const { accent } = useContext(ExpressionBuilderContext);\n\n const primaryRef = useRef<HTMLSpanElement>(null);\n const metaRef = useRef<HTMLSpanElement>(null);\n\n const primaryPattern = useMemo(() => {\n if (!accent || matchedField) return undefined;\n return typeof accent === 'function' ? accent(primary) : accent;\n }, [accent, matchedField, primary]);\n\n const metaPattern = useMemo(() => {\n if (!accent || !matchedField || expanded) return undefined;\n return typeof accent === 'function' ? accent(matchedField.value) : accent;\n }, [accent, matchedField, expanded]);\n\n useHighlight(primaryRef, primaryPattern);\n useHighlight(metaRef, metaPattern);\n\n const caretIcon = useMemo(() => {\n return expanded ? 'caret-down' : `caret-${caretDirection}`;\n }, [expanded, caretDirection]);\n\n return (\n <StyledExpressionItem expanded={expanded}>\n <Flex\n data-testid={testIds.root}\n {...restProps}\n as={StyledExpressionExplanation}\n id={id}\n container={{ gap: 1, alignItems: 'start' }}\n >\n <Button\n data-testid={testIds.collapseItemButton}\n icon\n variant='simple'\n onClick={\n onCollapse || onExpand\n ? () => {\n if (expanded) {\n onCollapse?.(id);\n } else {\n onExpand?.(id);\n }\n }\n : undefined\n }\n aria-label={`${type}: ${primary}`}\n aria-expanded={expanded}\n label={expanded ? t('collapse') : t('expand')}\n >\n <Icon name={caretIcon} />\n </Button>\n\n <Flex container={{ alignItems: 'start', direction: 'column' }} item={{ grow: 1 }}>\n <StyledPrimaryText variant='primary'>\n <span ref={primaryRef}>{primary}</span>\n </StyledPrimaryText>\n {matchedField && !expanded ? (\n <div>\n <StyledLabel as='span'>{matchedField?.name}:</StyledLabel>\n <span ref={metaRef}>{matchedField.value}</span>\n </div>\n ) : (\n <Text variant='secondary'>{type}</Text>\n )}\n </Flex>\n\n {!expanded && (\n <Button\n data-testid={testIds.addItemButton}\n icon\n variant='simple'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n label={t('add')}\n >\n <Icon name='plus' />\n </Button>\n )}\n </Flex>\n <ExpandCollapse collapsed={!expanded}>\n <Flex as={StyledExpandCollapseContent} container={{ direction: 'column' }}>\n {details && <ExpressionDetails testId={testIds.root} {...details} />}\n <Button\n data-testid={testIds.addItem}\n variant='primary'\n onClick={() => onAdd(id)}\n aria-label={t('add_noun', [`${type}: ${primary}`])}\n >\n {t('add')}\n </Button>\n </Flex>\n </ExpandCollapse>\n </StyledExpressionItem>\n );\n};\n\nexport default withTestIds(ExpressionItem, getExpressionItemsTestIds);\n"]}
@@ -10,7 +10,7 @@ export interface AddHelperParams {
10
10
  connectorsCount?: number;
11
11
  getNewNode?: () => NodeProps;
12
12
  isBranchNode: boolean;
13
- getNewConnector?: (fromNodeId: string, toNodeId: string) => ConnectorProps;
13
+ getNewConnector?: (fromNodeId: string, toNodeId: string, connectorIndex?: number) => ConnectorProps;
14
14
  }
15
15
  export interface NodeInfo<T extends NodeProps = NodeProps, U extends ConnectorProps = ConnectorProps> {
16
16
  node: T;
@@ -1 +1 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,SAAS,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,KAAK,cAAc,CAAC;CAC5E;AAED,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,cAAc,GAAG,cAAc;IAEzC,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,EAAE,EAAE,OAAO,aAAa,KAAG,MAAM,EAezE,CAAC;AAuCF,QAAA,MAAM,OAAO;4BAEE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,UACN,MAAM,oBACI,eAAe,CAAC,iBAAiB,CAAC;;;;;;;iCA+BzB,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,cAAc;6GAwDzF,eAAe;;;;0BA8DL,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,GACb,iBAAiB,GAAG,KAAK;0BAmDN,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ;6CAYjF,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,kBAC/B,cAAc,kBACd,MAAM,GAAG,SAAS,GACjC,cAAc;CAelB,CAAC;AAEF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7D,OAAO,KAAK,EAEV,iBAAiB,EACjB,cAAc,EACf,MAAM,yBAAyB,CAAC;AAGjC,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IAChD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,SAAS,CAAC;IAC7B,YAAY,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,CAChB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,cAAc,CAAC,EAAE,MAAM,KACpB,cAAc,CAAC;CACrB;AAED,MAAM,WAAW,QAAQ,CACvB,CAAC,SAAS,SAAS,GAAG,SAAS,EAC/B,CAAC,SAAS,cAAc,GAAG,cAAc;IAEzC,IAAI,EAAE,CAAC,CAAC;IACR,YAAY,EAAE,CAAC,EAAE,CAAC;IAClB,aAAa,EAAE,CAAC,EAAE,CAAC;CACpB;AAED,eAAO,MAAM,aAAa,GAAI,OAAO,IAAI,EAAE,EAAE,OAAO,aAAa,KAAG,MAAM,EAezE,CAAC;AAuCF,QAAA,MAAM,OAAO;4BAEE,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,UACN,MAAM,oBACI,eAAe,CAAC,iBAAiB,CAAC;;;;;;;iCA+BzB,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,aAAa,cAAc;6GAwDzF,eAAe;;;;0BA8DL,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UACvC,MAAM,GACb,iBAAiB,GAAG,KAAK;0BAmDN,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,UAAU,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ;6CAYjF,SAAS,CAAC,SAAS,EAAE,cAAc,CAAC,kBAC/B,cAAc,kBACd,MAAM,GAAG,SAAS,GACjC,cAAc;CAelB,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -147,7 +147,7 @@ const helpers = {
147
147
  }
148
148
  for (let i = 0; i < minConnectors; i += 1) {
149
149
  const newConnector = getNewConnector
150
- ? getNewConnector(newNode.id, toNodeId)
150
+ ? getNewConnector(newNode.id, toNodeId, i)
151
151
  : {
152
152
  id: createUID(),
153
153
  fromNodeId: newNode.id,
@@ -1 +1 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"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","sourcesContent":["import { createUID } from '@pega/cosmos-react-core';\n\nimport type { GraphData, ConnectorProps, Node } from './Renderer/Utils/Graph';\nimport { DirectedGraph } from './Renderer/Utils/Graph';\nimport type { AddNodeHandlerParams } from './Renderer/Renderer.types';\nimport type { NodeProps, NodeType } from './Node/Node.types';\nimport GraphTraversal from './Renderer/Utils/GraphTraversal';\nimport type {\n DeleteNodeModalOption,\n DeleteNodeOutcome,\n GraphDataAsMap\n} from './Utils/deleteNodeUtils';\nimport deleteNodeUtils from './Utils/deleteNodeUtils';\n\nexport interface AddHelperParams {\n nodeType: NodeType;\n graphData: GraphData<NodeProps, ConnectorProps>;\n metaData: AddNodeHandlerParams;\n connectorsCount?: number;\n getNewNode?: () => NodeProps;\n isBranchNode: boolean;\n getNewConnector?: (fromNodeId: string, toNodeId: string) => ConnectorProps;\n}\n\nexport interface NodeInfo<\n T extends NodeProps = NodeProps,\n U extends ConnectorProps = ConnectorProps\n> {\n node: T;\n inConnectors: U[];\n outConnectors: U[];\n}\n\nexport const getReferences = (nodes: Node[], graph: DirectedGraph): string[] => {\n const references: string[] = [];\n const restGraphNodes = graph\n .getNodes()\n .filter(node => !nodes.some(i => i.id === node.id))\n .filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n for (const node of restGraphNodes) {\n if (node.type?.minConnectors === 0 && nodes.find(i => i.id === node.reference)) {\n references.push(node.label);\n }\n }\n return references;\n};\n\nconst checkForConnectorContinuity = (\n graph: DirectedGraph,\n targetNodeId: string,\n targetBranch: DeleteNodeModalOption\n): boolean => {\n let visibleInConnectors = graph.getInConnectors(targetNodeId);\n const restConnectors = targetBranch.restItems.connectors;\n let flowConnectorExists = false;\n for (const connectorData of Object.values(restConnectors)) {\n if (\n connectorData &&\n connectorData.toNodeId === targetNodeId &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors !== 0\n ) {\n flowConnectorExists = true;\n break;\n }\n if (\n connectorData &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors === 0 &&\n connectorData.toNodeId === targetNodeId\n ) {\n visibleInConnectors = visibleInConnectors.filter(\n con =>\n graph.getNode(con.fromNodeId).type?.minConnectors !== 0 &&\n con.id !== connectorData.id &&\n !targetBranch.pathItems.connectors[con.id]\n );\n }\n }\n\n if (!flowConnectorExists && visibleInConnectors.length >= 1) {\n flowConnectorExists = true;\n }\n return flowConnectorExists;\n};\n\nconst helpers = {\n addConnector(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string,\n label?: string,\n getNewConnector?: AddHelperParams['getNewConnector']\n ) {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const convergenceData = GraphTraversal.getConvergenceData(graphData, nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const convergenceNodeId = convergenceData ? convergenceData.nodeId : undefined;\n const targetNodeId =\n outConnectors.length > 0 && outConnectors.length < 2\n ? outConnectors[0].toNodeId\n : convergenceNodeId;\n\n if (targetNodeId) {\n const newConnector = getNewConnector\n ? getNewConnector(nodeId, targetNodeId)\n : {\n id: createUID(),\n fromNodeId: nodeId,\n toNodeId: targetNodeId,\n label: label || ''\n };\n\n graph.addConnector(newConnector);\n\n return {\n graphData: graph.getGraphData(),\n connector: newConnector\n };\n }\n return { graphData, connector: {} };\n },\n\n deleteConnector: (graphData: GraphData<NodeProps, ConnectorProps>, connector: ConnectorProps) => {\n const nodeId = connector.fromNodeId;\n const graph = new DirectedGraph(graphData);\n const deleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(graph, nodeId);\n const deleteOptions = deleteOptionsResult.options;\n let itemsToDelete: GraphDataAsMap = deleteOptionsResult.allItems;\n const targetNodeId = deleteOptionsResult?.destinationNodeId\n ? deleteOptionsResult.destinationNodeId\n : '';\n\n const targetBranch = deleteOptions.find(\n deleteOption => connector.id === deleteOption.connector.id\n );\n\n let flowConnectorExists = false;\n let nodeReferences: string[] = [];\n\n if (targetBranch) {\n itemsToDelete = targetBranch.pathItems;\n /** From the rest of the connectors check if any connector originating from a shape other than go to and\n * is having the toNode as destination node ensuring the flow to continue\n */\n flowConnectorExists = checkForConnectorContinuity(graph, targetNodeId, targetBranch);\n /** Check for go to References for nodes to be deleted */\n const nodesToDelete = Object.values(targetBranch.pathItems.nodes).filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n nodeReferences = getReferences(nodesToDelete, graph);\n }\n\n // filter the highlighted nodes, including the selected node\n const nodes = graphData.nodes.filter(item => !itemsToDelete.nodes[item.id]);\n // filter the highlighted connectors\n const connectors = graphData.connectors.filter(item => !itemsToDelete.connectors[item.id]);\n\n const outcome: DeleteNodeOutcome = {\n graphData: {\n nodes,\n connectors\n },\n deletes: itemsToDelete,\n error: !flowConnectorExists || nodeReferences.length > 0,\n references: nodeReferences\n };\n return outcome;\n },\n\n addNode: ({\n graphData,\n nodeType,\n isBranchNode,\n metaData,\n getNewNode,\n getNewConnector,\n connectorsCount\n }: AddHelperParams) => {\n const graph = new DirectedGraph(graphData);\n const newNode = getNewNode\n ? getNewNode()\n : {\n ...nodeType.defaults.node,\n id: createUID(),\n type: nodeType\n };\n // add new node\n graph.addNode(newNode);\n\n let toNodeId = '';\n if (metaData.refType === 'connector') {\n if (!Array.isArray(metaData.refId)) {\n metaData.refId = [metaData.refId];\n }\n metaData.refId.forEach(conId => {\n const refConnector = graph.getConnector(conId);\n // backup current connectors toNodeId\n toNodeId = refConnector.toNodeId;\n // update the actual connector\n graph.setConnector(conId, {\n toNodeId: newNode.id\n });\n });\n } else if (metaData.refType === 'node' && typeof metaData.refId === 'string') {\n toNodeId = metaData.refId;\n // iterate and update all in-connectors to point to the new node\n graph.getInConnectors(metaData.refId).forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: newNode.id\n });\n });\n }\n\n let minConnectors = 1;\n if (connectorsCount !== undefined) {\n minConnectors = connectorsCount;\n } else {\n minConnectors =\n nodeType.minConnectors !== undefined && !isBranchNode ? nodeType.minConnectors : 1;\n }\n for (let i = 0; i < minConnectors; i += 1) {\n const newConnector = getNewConnector\n ? getNewConnector(newNode.id, toNodeId)\n : {\n id: createUID(),\n fromNodeId: newNode.id,\n toNodeId,\n label: !isBranchNode ? nodeType.defaults?.connector[i].label : ''\n };\n graph.addConnector(newConnector);\n }\n\n return {\n graphData: graph.getGraphData(),\n node: newNode\n };\n },\n\n deleteNode(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string\n ): DeleteNodeOutcome | false {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const node = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n\n const outcome: DeleteNodeOutcome = {\n graphData: graph.getGraphData(),\n deletes: {\n nodes: {\n [nodeId]: node\n },\n connectors: {}\n },\n error: false\n };\n\n outcome.references = getReferences([node], graph);\n\n if (outcome.references.length > 0) {\n outcome.error = true;\n return outcome;\n }\n\n if (outConnectors.length > 1) {\n return false;\n }\n\n const inConnectors = graph.getInConnectors(nodeId);\n\n const connectorUpdates: ConnectorProps[] = [];\n if (outConnectors[0]) {\n inConnectors.forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: outConnectors[0].toNodeId\n });\n\n connectorUpdates.push(con);\n });\n\n graph.removeConnector(outConnectors[0].id);\n }\n\n graph.deleteNode(nodeId, true);\n\n outcome.graphData = graph.getGraphData();\n outcome.updates = {\n connectors: connectorUpdates\n };\n return outcome;\n },\n\n selectNode(graphData: GraphData<NodeProps, ConnectorProps>, nodeId: NodeProps['id']): NodeInfo {\n const graph = new DirectedGraph(graphData);\n const selectedNode = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const inConnectors = graph.getInConnectors(nodeId);\n return {\n node: selectedNode,\n inConnectors,\n outConnectors\n };\n },\n getHighlightsWithPlaceholders(\n graphData: GraphData<NodeProps, ConnectorProps>,\n highlightsData: GraphDataAsMap,\n selectedNodeId: string | undefined\n ): GraphDataAsMap {\n let selectedConnector: ConnectorProps | undefined;\n for (const connector of Object.keys(highlightsData.connectors)) {\n if (highlightsData.connectors[connector].fromNodeId === selectedNodeId) {\n selectedConnector = highlightsData.connectors[connector];\n break;\n }\n }\n\n if (!selectedConnector) {\n return { nodes: {}, connectors: {} };\n }\n\n return this.deleteConnector(graphData, selectedConnector).deletes;\n }\n};\n\nexport default helpers;\n"]}
1
+ {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../src/components/FlowModeller/helper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAGpD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAGvD,OAAO,cAAc,MAAM,iCAAiC,CAAC;AAM7D,OAAO,eAAe,MAAM,yBAAyB,CAAC;AAyBtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,KAAoB,EAAY,EAAE;IAC7E,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,MAAM,cAAc,GAAG,KAAK;SACzB,QAAQ,EAAE;SACV,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAC;SAClD,MAAM,CACL,CAAC,IAAI,EAAqB,EAAE,CAC1B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAC9E,CAAC;IACJ,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,aAAa,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC,CAAC;AAEF,MAAM,2BAA2B,GAAG,CAClC,KAAoB,EACpB,YAAoB,EACpB,YAAmC,EAC1B,EAAE;IACX,IAAI,mBAAmB,GAAG,KAAK,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IAC9D,MAAM,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC;IACzD,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,KAAK,MAAM,aAAa,IAAI,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;QAC1D,IACE,aAAa;YACb,aAAa,CAAC,QAAQ,KAAK,YAAY;YACvC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,CAAC,EACjE,CAAC;YACD,mBAAmB,GAAG,IAAI,CAAC;YAC3B,MAAM;QACR,CAAC;QACD,IACE,aAAa;YACb,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,CAAC;YACjE,aAAa,CAAC,QAAQ,KAAK,YAAY,EACvC,CAAC;YACD,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAC9C,GAAG,CAAC,EAAE,CACJ,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,aAAa,KAAK,CAAC;gBACvD,GAAG,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE;gBAC3B,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAC7C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,IAAI,CAAC,mBAAmB,IAAI,mBAAmB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QAC5D,mBAAmB,GAAG,IAAI,CAAC;IAC7B,CAAC;IACD,OAAO,mBAAmB,CAAC;AAC7B,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG;IACd,YAAY,CACV,SAA+C,EAC/C,MAAc,EACd,KAAc,EACd,eAAoD;QAEpD,MAAM,KAAK,GAAG,IAAI,aAAa,CAA4B,SAAS,CAAC,CAAC;QACtE,MAAM,eAAe,GAAG,cAAc,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,MAAM,YAAY,GAChB,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC;YAClD,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ;YAC3B,CAAC,CAAC,iBAAiB,CAAC;QAExB,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,YAAY,GAAG,eAAe;gBAClC,CAAC,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC;gBACvC,CAAC,CAAC;oBACE,EAAE,EAAE,SAAS,EAAE;oBACf,UAAU,EAAE,MAAM;oBAClB,QAAQ,EAAE,YAAY;oBACtB,KAAK,EAAE,KAAK,IAAI,EAAE;iBACnB,CAAC;YAEN,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;YAEjC,OAAO;gBACL,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE;gBAC/B,SAAS,EAAE,YAAY;aACxB,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IACtC,CAAC;IAED,eAAe,EAAE,CAAC,SAA+C,EAAE,SAAyB,EAAE,EAAE;QAC9F,MAAM,MAAM,GAAG,SAAS,CAAC,UAAU,CAAC;QACpC,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,mBAAmB,GAAG,eAAe,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAChF,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAClD,IAAI,aAAa,GAAmB,mBAAmB,CAAC,QAAQ,CAAC;QACjE,MAAM,YAAY,GAAG,mBAAmB,EAAE,iBAAiB;YACzD,CAAC,CAAC,mBAAmB,CAAC,iBAAiB;YACvC,CAAC,CAAC,EAAE,CAAC;QAEP,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CACrC,YAAY,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,YAAY,CAAC,SAAS,CAAC,EAAE,CAC3D,CAAC;QAEF,IAAI,mBAAmB,GAAG,KAAK,CAAC;QAChC,IAAI,cAAc,GAAa,EAAE,CAAC;QAElC,IAAI,YAAY,EAAE,CAAC;YACjB,aAAa,GAAG,YAAY,CAAC,SAAS,CAAC;YACvC;;eAEG;YACH,mBAAmB,GAAG,2BAA2B,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YACrF,yDAAyD;YACzD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,MAAM,CACtE,CAAC,IAAI,EAAqB,EAAE,CAC1B,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,CAC9E,CAAC;YACF,cAAc,GAAG,aAAa,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACvD,CAAC;QAED,4DAA4D;QAC5D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5E,oCAAoC;QACpC,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAE3F,MAAM,OAAO,GAAsB;YACjC,SAAS,EAAE;gBACT,KAAK;gBACL,UAAU;aACX;YACD,OAAO,EAAE,aAAa;YACtB,KAAK,EAAE,CAAC,mBAAmB,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;YACxD,UAAU,EAAE,cAAc;SAC3B,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,OAAO,EAAE,CAAC,EACR,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,eAAe,EACf,eAAe,EACC,EAAE,EAAE;QACpB,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,OAAO,GAAG,UAAU;YACxB,CAAC,CAAC,UAAU,EAAE;YACd,CAAC,CAAC;gBACE,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI;gBACzB,EAAE,EAAE,SAAS,EAAE;gBACf,IAAI,EAAE,QAAQ;aACf,CAAC;QACN,eAAe;QACf,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,QAAQ,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnC,QAAQ,CAAC,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACpC,CAAC;YACD,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;gBAC/C,qCAAqC;gBACrC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACjC,8BAA8B;gBAC9B,KAAK,CAAC,YAAY,CAAC,KAAK,EAAE;oBACxB,QAAQ,EAAE,OAAO,CAAC,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,IAAI,QAAQ,CAAC,OAAO,KAAK,MAAM,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC7E,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC;YAC1B,gEAAgE;YAChE,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAClD,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;oBACzB,QAAQ,EAAE,OAAO,CAAC,EAAE;iBACrB,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,aAAa,GAAG,CAAC,CAAC;QACtB,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,aAAa,GAAG,eAAe,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,aAAa;gBACX,QAAQ,CAAC,aAAa,KAAK,SAAS,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC1C,MAAM,YAAY,GAAG,eAAe;gBAClC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;gBAC1C,CAAC,CAAC;oBACE,EAAE,EAAE,SAAS,EAAE;oBACf,UAAU,EAAE,OAAO,CAAC,EAAE;oBACtB,QAAQ;oBACR,KAAK,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE;iBAClE,CAAC;YACN,KAAK,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;QAED,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE;YAC/B,IAAI,EAAE,OAAO;SACd,CAAC;IACJ,CAAC;IAED,UAAU,CACR,SAA+C,EAC/C,MAAc;QAEd,MAAM,KAAK,GAAG,IAAI,aAAa,CAA4B,SAAS,CAAC,CAAC;QACtE,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAErD,MAAM,OAAO,GAAsB;YACjC,SAAS,EAAE,KAAK,CAAC,YAAY,EAAE;YAC/B,OAAO,EAAE;gBACP,KAAK,EAAE;oBACL,CAAC,MAAM,CAAC,EAAE,IAAI;iBACf;gBACD,UAAU,EAAE,EAAE;aACf;YACD,KAAK,EAAE,KAAK;SACb,CAAC;QAEF,OAAO,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;QAElD,IAAI,OAAO,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAEnD,MAAM,gBAAgB,GAAqB,EAAE,CAAC;QAC9C,IAAI,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC;YACrB,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACzB,KAAK,CAAC,YAAY,CAAC,GAAG,CAAC,EAAE,EAAE;oBACzB,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,QAAQ;iBACpC,CAAC,CAAC;gBAEH,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE/B,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,YAAY,EAAE,CAAC;QACzC,OAAO,CAAC,OAAO,GAAG;YAChB,UAAU,EAAE,gBAAgB;SAC7B,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,UAAU,CAAC,SAA+C,EAAE,MAAuB;QACjF,MAAM,KAAK,GAAG,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,KAAK,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACnD,OAAO;YACL,IAAI,EAAE,YAAY;YAClB,YAAY;YACZ,aAAa;SACd,CAAC;IACJ,CAAC;IACD,6BAA6B,CAC3B,SAA+C,EAC/C,cAA8B,EAC9B,cAAkC;QAElC,IAAI,iBAA6C,CAAC;QAClD,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/D,IAAI,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;gBACvE,iBAAiB,GAAG,cAAc,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;gBACzD,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QACvC,CAAC;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC;IACpE,CAAC;CACF,CAAC;AAEF,eAAe,OAAO,CAAC","sourcesContent":["import { createUID } from '@pega/cosmos-react-core';\n\nimport type { GraphData, ConnectorProps, Node } from './Renderer/Utils/Graph';\nimport { DirectedGraph } from './Renderer/Utils/Graph';\nimport type { AddNodeHandlerParams } from './Renderer/Renderer.types';\nimport type { NodeProps, NodeType } from './Node/Node.types';\nimport GraphTraversal from './Renderer/Utils/GraphTraversal';\nimport type {\n DeleteNodeModalOption,\n DeleteNodeOutcome,\n GraphDataAsMap\n} from './Utils/deleteNodeUtils';\nimport deleteNodeUtils from './Utils/deleteNodeUtils';\n\nexport interface AddHelperParams {\n nodeType: NodeType;\n graphData: GraphData<NodeProps, ConnectorProps>;\n metaData: AddNodeHandlerParams;\n connectorsCount?: number;\n getNewNode?: () => NodeProps;\n isBranchNode: boolean;\n getNewConnector?: (\n fromNodeId: string,\n toNodeId: string,\n connectorIndex?: number\n ) => ConnectorProps;\n}\n\nexport interface NodeInfo<\n T extends NodeProps = NodeProps,\n U extends ConnectorProps = ConnectorProps\n> {\n node: T;\n inConnectors: U[];\n outConnectors: U[];\n}\n\nexport const getReferences = (nodes: Node[], graph: DirectedGraph): string[] => {\n const references: string[] = [];\n const restGraphNodes = graph\n .getNodes()\n .filter(node => !nodes.some(i => i.id === node.id))\n .filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n for (const node of restGraphNodes) {\n if (node.type?.minConnectors === 0 && nodes.find(i => i.id === node.reference)) {\n references.push(node.label);\n }\n }\n return references;\n};\n\nconst checkForConnectorContinuity = (\n graph: DirectedGraph,\n targetNodeId: string,\n targetBranch: DeleteNodeModalOption\n): boolean => {\n let visibleInConnectors = graph.getInConnectors(targetNodeId);\n const restConnectors = targetBranch.restItems.connectors;\n let flowConnectorExists = false;\n for (const connectorData of Object.values(restConnectors)) {\n if (\n connectorData &&\n connectorData.toNodeId === targetNodeId &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors !== 0\n ) {\n flowConnectorExists = true;\n break;\n }\n if (\n connectorData &&\n graph.getNode(connectorData.fromNodeId).type?.minConnectors === 0 &&\n connectorData.toNodeId === targetNodeId\n ) {\n visibleInConnectors = visibleInConnectors.filter(\n con =>\n graph.getNode(con.fromNodeId).type?.minConnectors !== 0 &&\n con.id !== connectorData.id &&\n !targetBranch.pathItems.connectors[con.id]\n );\n }\n }\n\n if (!flowConnectorExists && visibleInConnectors.length >= 1) {\n flowConnectorExists = true;\n }\n return flowConnectorExists;\n};\n\nconst helpers = {\n addConnector(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string,\n label?: string,\n getNewConnector?: AddHelperParams['getNewConnector']\n ) {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const convergenceData = GraphTraversal.getConvergenceData(graphData, nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const convergenceNodeId = convergenceData ? convergenceData.nodeId : undefined;\n const targetNodeId =\n outConnectors.length > 0 && outConnectors.length < 2\n ? outConnectors[0].toNodeId\n : convergenceNodeId;\n\n if (targetNodeId) {\n const newConnector = getNewConnector\n ? getNewConnector(nodeId, targetNodeId)\n : {\n id: createUID(),\n fromNodeId: nodeId,\n toNodeId: targetNodeId,\n label: label || ''\n };\n\n graph.addConnector(newConnector);\n\n return {\n graphData: graph.getGraphData(),\n connector: newConnector\n };\n }\n return { graphData, connector: {} };\n },\n\n deleteConnector: (graphData: GraphData<NodeProps, ConnectorProps>, connector: ConnectorProps) => {\n const nodeId = connector.fromNodeId;\n const graph = new DirectedGraph(graphData);\n const deleteOptionsResult = deleteNodeUtils.getDeleteNodeOptions(graph, nodeId);\n const deleteOptions = deleteOptionsResult.options;\n let itemsToDelete: GraphDataAsMap = deleteOptionsResult.allItems;\n const targetNodeId = deleteOptionsResult?.destinationNodeId\n ? deleteOptionsResult.destinationNodeId\n : '';\n\n const targetBranch = deleteOptions.find(\n deleteOption => connector.id === deleteOption.connector.id\n );\n\n let flowConnectorExists = false;\n let nodeReferences: string[] = [];\n\n if (targetBranch) {\n itemsToDelete = targetBranch.pathItems;\n /** From the rest of the connectors check if any connector originating from a shape other than go to and\n * is having the toNode as destination node ensuring the flow to continue\n */\n flowConnectorExists = checkForConnectorContinuity(graph, targetNodeId, targetBranch);\n /** Check for go to References for nodes to be deleted */\n const nodesToDelete = Object.values(targetBranch.pathItems.nodes).filter(\n (node): node is NodeProps =>\n typeof node === 'object' && node !== null && 'id' in node && 'type' in node\n );\n nodeReferences = getReferences(nodesToDelete, graph);\n }\n\n // filter the highlighted nodes, including the selected node\n const nodes = graphData.nodes.filter(item => !itemsToDelete.nodes[item.id]);\n // filter the highlighted connectors\n const connectors = graphData.connectors.filter(item => !itemsToDelete.connectors[item.id]);\n\n const outcome: DeleteNodeOutcome = {\n graphData: {\n nodes,\n connectors\n },\n deletes: itemsToDelete,\n error: !flowConnectorExists || nodeReferences.length > 0,\n references: nodeReferences\n };\n return outcome;\n },\n\n addNode: ({\n graphData,\n nodeType,\n isBranchNode,\n metaData,\n getNewNode,\n getNewConnector,\n connectorsCount\n }: AddHelperParams) => {\n const graph = new DirectedGraph(graphData);\n const newNode = getNewNode\n ? getNewNode()\n : {\n ...nodeType.defaults.node,\n id: createUID(),\n type: nodeType\n };\n // add new node\n graph.addNode(newNode);\n\n let toNodeId = '';\n if (metaData.refType === 'connector') {\n if (!Array.isArray(metaData.refId)) {\n metaData.refId = [metaData.refId];\n }\n metaData.refId.forEach(conId => {\n const refConnector = graph.getConnector(conId);\n // backup current connectors toNodeId\n toNodeId = refConnector.toNodeId;\n // update the actual connector\n graph.setConnector(conId, {\n toNodeId: newNode.id\n });\n });\n } else if (metaData.refType === 'node' && typeof metaData.refId === 'string') {\n toNodeId = metaData.refId;\n // iterate and update all in-connectors to point to the new node\n graph.getInConnectors(metaData.refId).forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: newNode.id\n });\n });\n }\n\n let minConnectors = 1;\n if (connectorsCount !== undefined) {\n minConnectors = connectorsCount;\n } else {\n minConnectors =\n nodeType.minConnectors !== undefined && !isBranchNode ? nodeType.minConnectors : 1;\n }\n for (let i = 0; i < minConnectors; i += 1) {\n const newConnector = getNewConnector\n ? getNewConnector(newNode.id, toNodeId, i)\n : {\n id: createUID(),\n fromNodeId: newNode.id,\n toNodeId,\n label: !isBranchNode ? nodeType.defaults?.connector[i].label : ''\n };\n graph.addConnector(newConnector);\n }\n\n return {\n graphData: graph.getGraphData(),\n node: newNode\n };\n },\n\n deleteNode(\n graphData: GraphData<NodeProps, ConnectorProps>,\n nodeId: string\n ): DeleteNodeOutcome | false {\n const graph = new DirectedGraph<NodeProps, ConnectorProps>(graphData);\n const node = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n\n const outcome: DeleteNodeOutcome = {\n graphData: graph.getGraphData(),\n deletes: {\n nodes: {\n [nodeId]: node\n },\n connectors: {}\n },\n error: false\n };\n\n outcome.references = getReferences([node], graph);\n\n if (outcome.references.length > 0) {\n outcome.error = true;\n return outcome;\n }\n\n if (outConnectors.length > 1) {\n return false;\n }\n\n const inConnectors = graph.getInConnectors(nodeId);\n\n const connectorUpdates: ConnectorProps[] = [];\n if (outConnectors[0]) {\n inConnectors.forEach(con => {\n graph.setConnector(con.id, {\n toNodeId: outConnectors[0].toNodeId\n });\n\n connectorUpdates.push(con);\n });\n\n graph.removeConnector(outConnectors[0].id);\n }\n\n graph.deleteNode(nodeId, true);\n\n outcome.graphData = graph.getGraphData();\n outcome.updates = {\n connectors: connectorUpdates\n };\n return outcome;\n },\n\n selectNode(graphData: GraphData<NodeProps, ConnectorProps>, nodeId: NodeProps['id']): NodeInfo {\n const graph = new DirectedGraph(graphData);\n const selectedNode = graph.getNode(nodeId);\n const outConnectors = graph.getOutConnectors(nodeId);\n const inConnectors = graph.getInConnectors(nodeId);\n return {\n node: selectedNode,\n inConnectors,\n outConnectors\n };\n },\n getHighlightsWithPlaceholders(\n graphData: GraphData<NodeProps, ConnectorProps>,\n highlightsData: GraphDataAsMap,\n selectedNodeId: string | undefined\n ): GraphDataAsMap {\n let selectedConnector: ConnectorProps | undefined;\n for (const connector of Object.keys(highlightsData.connectors)) {\n if (highlightsData.connectors[connector].fromNodeId === selectedNodeId) {\n selectedConnector = highlightsData.connectors[connector];\n break;\n }\n }\n\n if (!selectedConnector) {\n return { nodes: {}, connectors: {} };\n }\n\n return this.deleteConnector(graphData, selectedConnector).deletes;\n }\n};\n\nexport default helpers;\n"]}
@@ -7,7 +7,7 @@ export declare const PrimaryHeaderText: ({ type: { href, onClick, name }, testId
7
7
  type: ConstructPageHeaderProps["type"];
8
8
  testId?: TestIdProp["testId"];
9
9
  }) => import("react/jsx-runtime").JSX.Element;
10
- declare const _default: (({ testId, title, primaryAction, additionalActions, metadata, visual, type, description, secondaryAction, progress, onHeightChange }: ConstructPageHeaderProps) => import("react/jsx-runtime").JSX.Element) & {
10
+ declare const _default: (({ testId, title, primaryAction, additionalActions, metadata, visual, type, description, secondaryAction, progress, onHeightChange, closeAction }: ConstructPageHeaderProps) => import("react/jsx-runtime").JSX.Element) & {
11
11
  getTestIds: (testIdProp?: TestIdProp["testId"]) => import("@pega/cosmos-react-core").TestIdsRecord<readonly ["title", "status", "edit-details", "additional-info-icon", "type", "meta-data", "primary-meta-data", "secondary-meta-data", "visual", "primary-action", "secondary-action", "additional-actions", "banner-description", "banner-link", "banner-actions", "banner-image"]>;
12
12
  };
13
13
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"ConstructPageHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAgBL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU3F,KAAK,wBAAwB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,GAClE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GACnC,UAAU,GAAG;IACX,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEJ,eAAO,MAAM,iBAAiB,GAAI,2CAG/B;IACD,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CAC/B,4CASA,CAAC;+JAcC,wBAAwB;;;AAuT3B,wBAAsE"}
1
+ {"version":3,"file":"ConstructPageHeader.d.ts","sourceRoot":"","sources":["../../../../src/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,EAgBL,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAIjC,OAAO,KAAK,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAU3F,KAAK,wBAAwB,GAAG,0BAA0B,CAAC,QAAQ,CAAC,GAClE,IAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,GACnC,UAAU,GAAG;IACX,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC3C,CAAC;AAEJ,eAAO,MAAM,iBAAiB,GAAI,2CAG/B;IACD,IAAI,EAAE,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;CAC/B,4CASA,CAAC;4KAeC,wBAAwB;;;AAgU3B,wBAAsE"}
@@ -9,9 +9,9 @@ export const PrimaryHeaderText = ({ type: { href, onClick, name }, testId }) =>
9
9
  if (href || onClick) {
10
10
  return (_jsx(Button, { variant: 'link', href: href, onClick: onClick, "data-testid": testId, children: name }));
11
11
  }
12
- return _jsx(StyledText, { variant: 'secondary', children: name });
12
+ return _jsx(StyledLabel, { as: StyledText, children: name });
13
13
  };
14
- const ConstructPageHeader = ({ testId, title, primaryAction, additionalActions = [], metadata = { additional: [] }, visual, type, description, secondaryAction, progress, onHeightChange }) => {
14
+ const ConstructPageHeader = ({ testId, title, primaryAction, additionalActions = [], metadata = { additional: [] }, visual, type, description, secondaryAction, progress, onHeightChange, closeAction }) => {
15
15
  // States
16
16
  const [countOfSecondaryMetaToShow, setCountOfSecondaryMetaToShow] = useState(metadata?.secondary?.length ?? 0);
17
17
  const [countOfPrimaryMetaToShow, setCountOfPrimaryMetaToShow] = useState(metadata.primary?.length ?? 0);
@@ -41,8 +41,16 @@ const ConstructPageHeader = ({ testId, title, primaryAction, additionalActions =
41
41
  if (additionalActionsData.length > 0 && secondaryAction && !showSecondaryAction) {
42
42
  additionalActionsData.unshift(secondaryAction);
43
43
  }
44
- return (_jsx(HeaderActionButtons, { additionalActions: additionalActionsData, primaryAction: primaryAction, secondaryAction: secondaryActionsData, testIds: testIds, progress: progress, animatePrimaryButton: true }));
45
- }, [showSecondaryAction, primaryAction, secondaryAction, additionalActions]);
44
+ return (_jsx(HeaderActionButtons, { additionalActions: additionalActionsData, primaryAction: primaryAction, secondaryAction: secondaryActionsData, testIds: testIds, progress: progress, animatePrimaryButton: true, closeAction: closeAction }));
45
+ }, [
46
+ showSecondaryAction,
47
+ primaryAction,
48
+ secondaryAction,
49
+ additionalActions,
50
+ testIds,
51
+ progress,
52
+ closeAction
53
+ ]);
46
54
  // CB to be run on resize observer
47
55
  const showOrHideElements = useCallback(() => {
48
56
  // Logic to show or hide primary metadata
@@ -155,7 +163,7 @@ const ConstructPageHeader = ({ testId, title, primaryAction, additionalActions =
155
163
  direction: 'column',
156
164
  alignItems: 'start',
157
165
  gap: 1
158
- }, item: { grow: 1, alignSelf: 'stretch' }, children: [_jsx(FieldValueList, { fields: metadata.additional, variant: 'inline', testId: testIds.metaData }), description && (_jsxs(StyledStackedFieldValue, { children: [_jsx(StyledLabel, { as: StyledFieldName, children: t('description') }), _jsx(ShowMoreLess, { lines: 3, children: description })] }))] }) }) })), actions] })] }), description && (_jsx(StyledDescription, { children: _jsx(ShowMoreLess, { lines: 1, children: _jsx(Text, { children: description }) }) }))] }));
166
+ }, item: { grow: 1, alignSelf: 'stretch' }, children: [_jsx(FieldValueList, { fields: metadata.additional, variant: 'inline', testId: testIds.metaData }), description && (_jsxs(StyledStackedFieldValue, { children: [_jsx(StyledLabel, { as: StyledFieldName, children: t('description') }), _jsx(ShowMoreLess, { lines: 3, children: description })] }))] }) }) })), actions] })] }), description && (_jsx(StyledDescription, { children: _jsx(ShowMoreLess, { lines: 2, children: _jsx(Text, { children: description }) }) }))] }));
159
167
  };
160
168
  export default withTestIds(ConstructPageHeader, getPageHeaderTestIds);
161
169
  //# sourceMappingURL=ConstructPageHeader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ConstructPageHeader.js","sourceRoot":"","sources":["../../../../src/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEhF,OAAO,EACL,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,MAAM,EACN,YAAY,EACZ,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,cAAc,EACd,cAAc,EACd,OAAO,EACP,yBAAyB,EAE1B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,QAAQ,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE,OAAO,mBAAmB,MAAM,wBAAwB,CAAC;AACzD,OAAO,EACL,UAAU,EACV,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,oBAAoB,EACrB,MAAM,wBAAwB,CAAC;AAQhC,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAC7B,MAAM,EAIP,EAAE,EAAE;IACH,IAAI,IAAI,IAAI,OAAO,EAAE,CAAC;QACpB,OAAO,CACL,KAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,iBAAe,MAAM,YACrE,IAAI,GACE,CACV,CAAC;IACJ,CAAC;IACD,OAAO,KAAC,UAAU,IAAC,OAAO,EAAC,WAAW,YAAE,IAAI,GAAc,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,EAC3B,MAAM,EACN,KAAK,EACL,aAAa,EACb,iBAAiB,GAAG,EAAE,EACtB,QAAQ,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,EAC7B,MAAM,EACN,IAAI,EACJ,WAAW,EACX,eAAe,EACf,QAAQ,EACR,cAAc,EACW,EAAE,EAAE;IAC7B,SAAS;IACT,MAAM,CAAC,0BAA0B,EAAE,6BAA6B,CAAC,GAAG,QAAQ,CAC1E,QAAQ,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,CACjC,CAAC;IACF,MAAM,CAAC,wBAAwB,EAAE,2BAA2B,CAAC,GAAG,QAAQ,CACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAC9B,CAAC;IACF,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IACrE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,UAAU,EAAE,CAAC;IACnD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,UAAU,EAAE,CAAC;IAEvD,QAAQ;IACR,MAAM,sBAAsB,GAAG,yBAAyB,EAAE,CAAC;IAC3D,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;IACzD,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,OAAO;IACP,MAAM,SAAS,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACtD,MAAM,qBAAqB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC3D,MAAM,mBAAmB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACzD,MAAM,oBAAoB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IAC1D,MAAM,kBAAkB,GAAG,MAAM,CAAiB,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,MAAM,EAAkB,CAAC;IAC7C,MAAM,kBAAkB,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAChD,MAAM,oBAAoB,GAAG,MAAM,CAAW,EAAE,CAAC,CAAC;IAElD,QAAQ;IACR,MAAM,oBAAoB,GAAG,OAAO,CAClC,GAAG,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,MAAM,GAAG,sBAAsB,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,EAC1F,CAAC,eAAe,CAAC,CAClB,CAAC;IAEF,yBAAyB;IACzB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3B,MAAM,qBAAqB,GAAG,CAAC,GAAG,iBAAiB,CAAC,CAAC;QACrD,MAAM,oBAAoB,GACxB,mBAAmB,IAAI,qBAAqB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,CAAC;QAC1F,IAAI,qBAAqB,CAAC,MAAM,GAAG,CAAC,IAAI,eAAe,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAChF,qBAAqB,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,CACL,KAAC,mBAAmB,IAClB,iBAAiB,EAAE,qBAAqB,EACxC,aAAa,EAAE,aAAa,EAC5B,eAAe,EAAE,oBAAoB,EACrC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,oBAAoB,SACpB,CACH,CAAC;IACJ,CAAC,EAAE,CAAC,mBAAmB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAE7E,kCAAkC;IAClC,MAAM,kBAAkB,GAAG,WAAW,CAAC,GAAG,EAAE;QAC1C,yCAAyC;QACzC,MAAM,WAAW,GAAG,gBAAgB,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,qBAAqB,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;QACnE,IAAI,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;QACjE,IAAI,2BAA2B,GAAG,wBAAwB,CAAC;QAC3D,IAAI,6BAA6B,GAAG,0BAA0B,CAAC;QAE/D,IAAI,kBAAkB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,CAAC;YACxE,IAAI,0BAA0B,KAAK,CAAC,EAAE,CAAC;gBACrC,MAAM,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,YAAY,GAAG,EAAE,CAAC;gBACpE,MAAM,YAAY,GAAG,kBAAkB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACnF,2BAA2B;oBACzB,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;YAC3E,CAAC;iBAAM,CAAC;gBACN,2BAA2B,GAAG,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC;YAClE,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,IACE,oBAAoB,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YACzC,oBAAoB,CAAC,OAAO;YAC5B,kBAAkB,CAAC,OAAO;YAC1B,kBAAkB,CAAC,OAAO,CAAC,MAAM,KAAK,2BAA2B,EACjE,CAAC;YACD,MAAM,cAAc,GAClB,kBAAkB,CAAC,OAAO,CAAC,WAAW;gBACtC,CAAC,kBAAkB,CAAC,OAAO,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC3E,IAAI,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC3F,6BAA6B,GAAG,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC;YACtE,CAAC;iBAAM,IAAI,cAAc,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,6BAA6B,GAAG,CAAC,CAAC;YACpC,CAAC;iBAAM,CAAC;gBACN,MAAM,YAAY,GAAG,oBAAoB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,cAAc,CAAC,CAAC;gBACrF,6BAA6B;oBAC3B,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC;YAC7E,CAAC;QACH,CAAC;QAED,yCAAyC;QACzC,YAAY;YACV,eAAe,IAAI,mBAAmB,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,GAAG,oBAAoB,CAAC;QAC9F,sBAAsB,CAAC,CAAC,CAAC,eAAe,IAAI,WAAW,IAAI,UAAU,GAAG,YAAY,GAAG,EAAE,CAAC,CAAC;QAC3F,2BAA2B,CAAC,2BAA2B,CAAC,CAAC;QACzD,6BAA6B,CAAC,6BAA6B,CAAC,CAAC;QAE7D,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;YAC3C,2BAA2B,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC/D,sBAAsB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;YAC1C,6BAA6B,CAAC,oBAAoB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrE,CAAC;QAED,cAAc,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC,EAAE;QACD,0BAA0B;QAC1B,oBAAoB;QACpB,mBAAmB;QACnB,kBAAkB;QAClB,wBAAwB;QACxB,cAAc;KACf,CAAC,CAAC;IAEH,eAAe,CAAC,GAAG,EAAE;QACnB,kBAAkB,CAAC,OAAO,GAAG,EAAE,CAAC;QAChC,oBAAoB,CAAC,OAAO,GAAG,EAAE,CAAC;QAClC,MAAM,qBAAqB,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;QAC5D,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,CAAC,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE;YACjF,IAAI,KAAK,GAAG,qBAAqB,EAAE,CAAC;gBAClC,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAC7B,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,kBAAkB,CAAC,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;oBACrF,EAAE,CACL,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAC/B,CAAC,KAAK,KAAK,qBAAqB;oBAC9B,CAAC,CAAC,EAAE,CAAC,WAAW;oBAChB,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,oBAAoB,CAAC,OAAO,CAAC,KAAK,GAAG,qBAAqB,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,CAC3F,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC;IAE3C,6BAA6B;IAC7B,eAAe,CAAC,GAAG,EAAE;QACnB,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;YACxB,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACnC,CAAC;QACD,IAAI,gBAAgB,CAAC,OAAO,EAAE,CAAC;YAC7B,WAAW,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,CAAC,kBAAkB,EAAE,CAAC,CAAC;YACrE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,EAAE,CAAC;IACjD,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEzB,kFAAkF;IAClF,eAAe,CAAC,GAAG,EAAE;QACnB,kBAAkB,EAAE,CAAC;IACvB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CACL,MAAC,IAAI,IACH,EAAE,EAAE,YAAY,EAChB,SAAS,EAAE;YACT,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE,CAAC;SACV,EACD,GAAG,EAAE,SAAS,aAEd,MAAC,IAAI,IACH,SAAS,EAAE;oBACT,SAAS,EAAE,KAAK;oBAChB,UAAU,EAAE,QAAQ;oBACpB,MAAM,EAAE,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG;iBAC/C,EACD,GAAG,EAAE,gBAAgB,aAErB,MAAC,IAAI,IACH,GAAG,EAAE,qBAAqB,EAC1B,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAChE,IAAI,EAAE,EAAE,MAAM,EAAE,mBAAmB,IAAI,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,aAE5E,MAAM,IAAI,KAAC,QAAQ,IAAC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAM,MAAM,EAAE,IAAI,EAAC,IAAI,GAAG,EACrE,MAAC,IAAI,IACH,EAAE,EAAE,oBAAoB,EACxB,SAAS,EAAE;oCACT,UAAU,EAAE,OAAO;oCACnB,SAAS,EAAE,QAAQ;oCACnB,IAAI,EAAE,MAAM;iCACb,aAEA,IAAI,CAAC,IAAI,IAAI,KAAC,iBAAiB,IAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,GAAI,EACrE,KAAC,UAAU,IACT,YAAY,EAAE,CAAC,mBAAmB,IAAI,wBAAwB,KAAK,CAAC,iBACvD,OAAO,CAAC,KAAK,EAC1B,OAAO,EAAC,IAAI,EACZ,GAAG,EAAE,cAAc,YAElB,KAAK,GACK,EACb,KAAC,OAAO,IAAC,MAAM,EAAE,WAAW,EAAE,KAAK,QAAC,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YAClE,KAAK,GACE,IACL,IACF,EAEP,MAAC,IAAI,IACH,SAAS,EAAE;4BACT,SAAS,EAAE,KAAK;4BAChB,MAAM,EAAE,0BAA0B,GAAG,CAAC,IAAI,wBAAwB,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;4BAC9E,UAAU,EAAE,QAAQ;yBACrB,EACD,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAC5B,GAAG,EAAE,kBAAkB,EACvB,EAAE,EAAC,IAAI,aAEN,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CACpE,MAAC,IAAI,IAEH,EAAE,EAAE,uBAAuB,EAC3B,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,EAClC,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,iBACN,OAAO,CAAC,eAAe,aAEpC,KAAC,WAAW,IAAC,EAAE,EAAE,eAAe,YAAG,QAAQ,CAAC,IAAI,GAAe,EAC9D,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAClB,uBACE,KAAC,uBAAuB,IACtB,GAAG,EAAE,gBAAgB,EACrB,OAAO,EAAC,MAAM,EACd,OAAO,EAAE,QAAQ,CAAC,OAAO,iBACZ,MAAM,YAElB,QAAQ,CAAC,KAAK,GACS,GACvB,CACN,CAAC,CAAC,CAAC,CACF,KAAC,UAAU,IAAC,GAAG,EAAE,gBAAgB,EAAE,OAAO,EAAC,IAAI,EAAC,WAAW,EAAC,IAAI,YAC7D,QAAQ,CAAC,KAAK,GACJ,CACd,EACD,KAAC,OAAO,IAAC,MAAM,EAAE,aAAa,EAAE,KAAK,QAAC,SAAS,EAAC,MAAM,EAAC,SAAS,EAAC,MAAM,YACpE,QAAQ,CAAC,KAAK,GACP,KAzBL,QAAQ,CAAC,IAAI,CA0Bb,CACR,CAAC,EAED,QAAQ,CAAC,SAAS,IAAI,CACrB,KAAC,IAAI,IACH,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAC1D,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAC5B,GAAG,EAAE,oBAAoB,iBACZ,OAAO,CAAC,iBAAiB,YAErC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,0BAA0B,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CACvE,MAAC,IAAI,IAAC,EAAE,EAAE,uBAAuB,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,aACpD,KAAC,WAAW,IAAC,EAAE,EAAE,eAAe,YAAG,QAAQ,CAAC,IAAI,GAAe,EAC/D,KAAC,UAAU,IAAC,EAAE,EAAC,IAAI,YAAE,QAAQ,CAAC,KAAK,GAAc,KAFU,QAAQ,CAAC,IAAI,CAGnE,CACR,CAAC,GACG,CACR,IACI,EAEP,MAAC,IAAI,IACH,GAAG,EAAE,mBAAmB,EACxB,SAAS,EAAE;4BACT,SAAS,EAAE,KAAK;4BAChB,MAAM,EAAE,CAAC;4BACT,OAAO,EAAE,QAAQ;yBAClB,EACD,IAAI,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,aAEvC,QAAQ,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,IAAI,IAAC,SAAS,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,YACpE,KAAC,cAAc,mBAAc,OAAO,CAAC,kBAAkB,EAAE,OAAO,EAAE,KAAK,YACrE,MAAC,IAAI,IACH,SAAS,EAAE;4CACT,SAAS,EAAE,QAAQ;4CACnB,UAAU,EAAE,OAAO;4CACnB,GAAG,EAAE,CAAC;yCACP,EACD,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,aAEvC,KAAC,cAAc,IACb,MAAM,EAAE,QAAQ,CAAC,UAAU,EAC3B,OAAO,EAAC,QAAQ,EAChB,MAAM,EAAE,OAAO,CAAC,QAAQ,GACxB,EACD,WAAW,IAAI,CACd,MAAC,uBAAuB,eACtB,KAAC,WAAW,IAAC,EAAE,EAAE,eAAe,YAAG,CAAC,CAAC,aAAa,CAAC,GAAe,EAClE,KAAC,YAAY,IAAC,KAAK,EAAE,CAAC,YAAG,WAAW,GAAgB,IAC5B,CAC3B,IACI,GACQ,GACZ,CACR,EAEA,OAAO,IACH,IACF,EAEN,WAAW,IAAI,CACd,KAAC,iBAAiB,cAChB,KAAC,YAAY,IAAC,KAAK,EAAE,CAAC,YACpB,KAAC,IAAI,cAAE,WAAW,GAAQ,GACb,GACG,CACrB,IACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,WAAW,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,CAAC","sourcesContent":["import { useMemo, useRef, useState, useLayoutEffect, useCallback } from 'react';\n\nimport {\n Text,\n Flex,\n useTestIds,\n withTestIds,\n useElement,\n Tooltip,\n Button,\n ShowMoreLess,\n StyledStackedFieldValue,\n StyledLabel,\n StyledFieldName,\n FieldValueList,\n AdditionalInfo,\n useI18n,\n useChToPxConversionFactor,\n type TestIdProp\n} from '@pega/cosmos-react-core';\n\nimport IconTile from '../../IconTile';\nimport { getPageHeaderTestIds } from '../PageTemplates.test-ids';\nimport type { ConstructPageTemplateProps, PageTemplateProps } from '../PageTemplate.types';\nimport HeaderActionButtons from '../HeaderActionButtons';\nimport {\n StyledText,\n StyledDescription,\n StyledPrimaryMetaButton,\n StyledHeader,\n StyledTitleContainer\n} from '../PageTemplate.styles';\n\ntype ConstructPageHeaderProps = ConstructPageTemplateProps['header'] &\n Pick<PageTemplateProps, 'progress'> &\n TestIdProp & {\n onHeightChange?: (height: number) => void;\n };\n\nexport const PrimaryHeaderText = ({\n type: { href, onClick, name },\n testId\n}: {\n type: ConstructPageHeaderProps['type'];\n testId?: TestIdProp['testId'];\n}) => {\n if (href || onClick) {\n return (\n <Button variant='link' href={href} onClick={onClick} data-testid={testId}>\n {name}\n </Button>\n );\n }\n return <StyledText variant='secondary'>{name}</StyledText>;\n};\n\nconst ConstructPageHeader = ({\n testId,\n title,\n primaryAction,\n additionalActions = [],\n metadata = { additional: [] },\n visual,\n type,\n description,\n secondaryAction,\n progress,\n onHeightChange\n}: ConstructPageHeaderProps) => {\n // States\n const [countOfSecondaryMetaToShow, setCountOfSecondaryMetaToShow] = useState<number>(\n metadata?.secondary?.length ?? 0\n );\n const [countOfPrimaryMetaToShow, setCountOfPrimaryMetaToShow] = useState<number>(\n metadata.primary?.length ?? 0\n );\n const [showSecondaryAction, setShowSecondaryAction] = useState(true);\n const [pageTitleEl, setPageTitleEl] = useElement();\n const [primaryMetaEl, setPrimaryMetaEl] = useElement();\n\n // Hooks\n const chToPxConversionFactor = useChToPxConversionFactor();\n const testIds = useTestIds(testId, getPageHeaderTestIds);\n const t = useI18n();\n\n // Refs\n const headerRef = useRef<HTMLDivElement>(null);\n const headerContentRef = useRef<HTMLDivElement>(null);\n const pageTitleContainerRef = useRef<HTMLDivElement>(null);\n const actionsContainerRef = useRef<HTMLDivElement>(null);\n const secondaryMetaDataRef = useRef<HTMLDivElement>(null);\n const primaryMetaDataRef = useRef<HTMLDivElement>(null);\n const observerRef = useRef<ResizeObserver>();\n const primaryMetaLengths = useRef<number[]>([]);\n const secondaryMetaLengths = useRef<number[]>([]);\n\n // Memos\n const secondaryActionWidth = useMemo(\n () => (secondaryAction ? secondaryAction.primary.length * chToPxConversionFactor + 44 : 0),\n [secondaryAction]\n );\n\n // Page actions component\n const actions = useMemo(() => {\n const additionalActionsData = [...additionalActions];\n const secondaryActionsData =\n showSecondaryAction || additionalActionsData.length === 0 ? secondaryAction : undefined;\n if (additionalActionsData.length > 0 && secondaryAction && !showSecondaryAction) {\n additionalActionsData.unshift(secondaryAction);\n }\n\n return (\n <HeaderActionButtons\n additionalActions={additionalActionsData}\n primaryAction={primaryAction}\n secondaryAction={secondaryActionsData}\n testIds={testIds}\n progress={progress}\n animatePrimaryButton\n />\n );\n }, [showSecondaryAction, primaryAction, secondaryAction, additionalActions]);\n\n // CB to be run on resize observer\n const showOrHideElements = useCallback(() => {\n // Logic to show or hide primary metadata\n const headerWidth = headerContentRef.current?.offsetWidth ?? 0;\n const titleWidth = pageTitleContainerRef.current?.offsetWidth ?? 0;\n let actionsWidth = actionsContainerRef.current?.offsetWidth ?? 0;\n let newCountOfPrimaryMetaToShow = countOfPrimaryMetaToShow;\n let newCountOfSecondaryMetaToShow = countOfSecondaryMetaToShow;\n\n if (primaryMetaLengths.current.length > 0 && primaryMetaDataRef.current) {\n if (countOfSecondaryMetaToShow === 0) {\n const availableSpace = headerWidth - titleWidth - actionsWidth - 48;\n const closestIndex = primaryMetaLengths.current.findIndex(i => i > availableSpace);\n newCountOfPrimaryMetaToShow =\n closestIndex === -1 ? primaryMetaLengths.current.length : closestIndex;\n } else {\n newCountOfPrimaryMetaToShow = primaryMetaLengths.current.length;\n }\n }\n\n // Logic to show and hide secondary metadata items\n if (\n secondaryMetaLengths.current.length !== 0 &&\n secondaryMetaDataRef.current &&\n primaryMetaDataRef.current &&\n primaryMetaLengths.current.length === newCountOfPrimaryMetaToShow\n ) {\n const availableSpace =\n primaryMetaDataRef.current.offsetWidth -\n (primaryMetaLengths.current[primaryMetaLengths.current.length - 1] ?? 0);\n if (availableSpace > secondaryMetaLengths.current[secondaryMetaLengths.current.length - 1]) {\n newCountOfSecondaryMetaToShow = secondaryMetaLengths.current.length;\n } else if (availableSpace < secondaryMetaLengths.current[0]) {\n newCountOfSecondaryMetaToShow = 0;\n } else {\n const closestIndex = secondaryMetaLengths.current.findIndex(i => i > availableSpace);\n newCountOfSecondaryMetaToShow =\n closestIndex === -1 ? secondaryMetaLengths.current.length : closestIndex;\n }\n }\n\n // Logic to show or hide secondary action\n actionsWidth =\n secondaryAction && showSecondaryAction ? actionsWidth : actionsWidth + secondaryActionWidth;\n setShowSecondaryAction(!!secondaryAction && headerWidth >= titleWidth + actionsWidth + 25);\n setCountOfPrimaryMetaToShow(newCountOfPrimaryMetaToShow);\n setCountOfSecondaryMetaToShow(newCountOfSecondaryMetaToShow);\n\n if (!headerContentRef.current?.offsetWidth) {\n setCountOfPrimaryMetaToShow(primaryMetaLengths.current.length);\n setShowSecondaryAction(!!secondaryAction);\n setCountOfSecondaryMetaToShow(secondaryMetaLengths.current.length);\n }\n\n onHeightChange?.(headerRef.current?.offsetHeight ?? 0);\n }, [\n countOfSecondaryMetaToShow,\n secondaryMetaLengths,\n showSecondaryAction,\n primaryMetaLengths,\n countOfPrimaryMetaToShow,\n onHeightChange\n ]);\n\n useLayoutEffect(() => {\n primaryMetaLengths.current = [];\n secondaryMetaLengths.current = [];\n const primaryMetaDataLength = metadata.primary?.length ?? 0;\n primaryMetaDataRef.current?.querySelectorAll('div:has(>dt)').forEach((el, index) => {\n if (index < primaryMetaDataLength) {\n primaryMetaLengths.current.push(\n (index === 0 ? el.clientWidth : el.clientWidth + primaryMetaLengths.current[index - 1]) +\n 16\n );\n } else {\n secondaryMetaLengths.current.push(\n (index === primaryMetaDataLength\n ? el.clientWidth\n : el.clientWidth + secondaryMetaLengths.current[index - primaryMetaDataLength - 1]) + 16\n );\n }\n });\n }, [metadata.primary, metadata.secondary]);\n\n // Resize observer for header\n useLayoutEffect(() => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n if (headerContentRef.current) {\n observerRef.current = new ResizeObserver(() => showOrHideElements());\n observerRef.current.observe(headerContentRef.current);\n }\n return () => observerRef.current?.disconnect();\n }, [showOrHideElements]);\n\n // Run CB once on mount incase if component is mounted initially on resized screen\n useLayoutEffect(() => {\n showOrHideElements();\n }, []);\n\n return (\n <Flex\n as={StyledHeader}\n container={{\n direction: 'column',\n rowGap: 1\n }}\n ref={headerRef}\n >\n <Flex\n container={{\n direction: 'row',\n alignItems: 'center',\n colGap: countOfPrimaryMetaToShow > 0 ? 3 : 1.5\n }}\n ref={headerContentRef}\n >\n <Flex\n ref={pageTitleContainerRef}\n container={{ direction: 'row', colGap: 1, alignItems: 'center' }}\n item={{ shrink: showSecondaryAction || countOfPrimaryMetaToShow > 0 ? 0 : 1 }}\n >\n {visual && <IconTile testId={testIds.visual} {...visual} size='xl' />}\n <Flex\n as={StyledTitleContainer}\n container={{\n alignItems: 'start',\n direction: 'column',\n wrap: 'wrap'\n }}\n >\n {type.name && <PrimaryHeaderText type={type} testId={testIds.type} />}\n <StyledText\n showEllipsis={!showSecondaryAction && countOfPrimaryMetaToShow === 0}\n data-testid={testIds.title}\n variant='h1'\n ref={setPageTitleEl}\n >\n {title}\n </StyledText>\n <Tooltip target={pageTitleEl} smart showDelay='none' hideDelay='none'>\n {title}\n </Tooltip>\n </Flex>\n </Flex>\n\n <Flex\n container={{\n direction: 'row',\n colGap: countOfSecondaryMetaToShow > 0 || countOfPrimaryMetaToShow > 1 ? 3 : 0,\n alignItems: 'center'\n }}\n item={{ grow: 1, shrink: 1 }}\n ref={primaryMetaDataRef}\n as='dl'\n >\n {metadata.primary?.slice(0, countOfPrimaryMetaToShow).map(metaItem => (\n <Flex\n key={metaItem.name}\n as={StyledStackedFieldValue}\n container={{ direction: 'column' }}\n item={{ shrink: 0 }}\n data-testid={testIds.primaryMetaData}\n >\n <StyledLabel as={StyledFieldName}>{metaItem.name}</StyledLabel>\n {metaItem.onClick ? (\n <dd>\n <StyledPrimaryMetaButton\n ref={setPrimaryMetaEl}\n variant='link'\n onClick={metaItem.onClick}\n data-testid={testId}\n >\n {metaItem.value}\n </StyledPrimaryMetaButton>\n </dd>\n ) : (\n <StyledText ref={setPrimaryMetaEl} variant='h1' forwardedAs='dd'>\n {metaItem.value}\n </StyledText>\n )}\n <Tooltip target={primaryMetaEl} smart showDelay='none' hideDelay='none'>\n {metaItem.value}\n </Tooltip>\n </Flex>\n ))}\n\n {metadata.secondary && (\n <Flex\n container={{ direction: 'row', colGap: 2, justify: 'end' }}\n item={{ grow: 1, shrink: 1 }}\n ref={secondaryMetaDataRef}\n data-testid={testIds.secondaryMetaData}\n >\n {metadata.secondary.slice(0, countOfSecondaryMetaToShow).map(metaItem => (\n <Flex as={StyledStackedFieldValue} item={{ shrink: 0 }} key={metaItem.name}>\n <StyledLabel as={StyledFieldName}>{metaItem.name}</StyledLabel>\n <StyledText as='dd'>{metaItem.value}</StyledText>\n </Flex>\n ))}\n </Flex>\n )}\n </Flex>\n\n <Flex\n ref={actionsContainerRef}\n container={{\n direction: 'row',\n colGap: 2,\n justify: 'center'\n }}\n item={{ alignSelf: 'center', shrink: 0 }}\n >\n {metadata.additional.length > 0 && (\n <Flex container={{ direction: 'row', colGap: 2, alignItems: 'center' }}>\n <AdditionalInfo data-testid={testIds.additionalInfoIcon} heading={title}>\n <Flex\n container={{\n direction: 'column',\n alignItems: 'start',\n gap: 1\n }}\n item={{ grow: 1, alignSelf: 'stretch' }}\n >\n <FieldValueList\n fields={metadata.additional}\n variant='inline'\n testId={testIds.metaData}\n />\n {description && (\n <StyledStackedFieldValue>\n <StyledLabel as={StyledFieldName}>{t('description')}</StyledLabel>\n <ShowMoreLess lines={3}>{description}</ShowMoreLess>\n </StyledStackedFieldValue>\n )}\n </Flex>\n </AdditionalInfo>\n </Flex>\n )}\n\n {actions}\n </Flex>\n </Flex>\n\n {description && (\n <StyledDescription>\n <ShowMoreLess lines={1}>\n <Text>{description}</Text>\n </ShowMoreLess>\n </StyledDescription>\n )}\n </Flex>\n );\n};\n\nexport default withTestIds(ConstructPageHeader, getPageHeaderTestIds);\n"]}
1
+ {"version":3,"file":"ConstructPageHeader.js","sourceRoot":"","sources":["../../../../src/components/PageTemplates/ConstructPageTemplate/ConstructPageHeader.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useMemo, useRef, useState, useLayoutEffect, useCallback } from 'react';\n\nimport {\n Text,\n Flex,\n useTestIds,\n withTestIds,\n useElement,\n Tooltip,\n Button,\n ShowMoreLess,\n StyledStackedFieldValue,\n StyledLabel,\n StyledFieldName,\n FieldValueList,\n AdditionalInfo,\n useI18n,\n useChToPxConversionFactor,\n type TestIdProp\n} from '@pega/cosmos-react-core';\n\nimport IconTile from '../../IconTile';\nimport { getPageHeaderTestIds } from '../PageTemplates.test-ids';\nimport type { ConstructPageTemplateProps, PageTemplateProps } from '../PageTemplate.types';\nimport HeaderActionButtons from '../HeaderActionButtons';\nimport {\n StyledText,\n StyledDescription,\n StyledPrimaryMetaButton,\n StyledHeader,\n StyledTitleContainer\n} from '../PageTemplate.styles';\n\ntype ConstructPageHeaderProps = ConstructPageTemplateProps['header'] &\n Pick<PageTemplateProps, 'progress'> &\n TestIdProp & {\n onHeightChange?: (height: number) => void;\n };\n\nexport const PrimaryHeaderText = ({\n type: { href, onClick, name },\n testId\n}: {\n type: ConstructPageHeaderProps['type'];\n testId?: TestIdProp['testId'];\n}) => {\n if (href || onClick) {\n return (\n <Button variant='link' href={href} onClick={onClick} data-testid={testId}>\n {name}\n </Button>\n );\n }\n return <StyledLabel as={StyledText}>{name}</StyledLabel>;\n};\n\nconst ConstructPageHeader = ({\n testId,\n title,\n primaryAction,\n additionalActions = [],\n metadata = { additional: [] },\n visual,\n type,\n description,\n secondaryAction,\n progress,\n onHeightChange,\n closeAction\n}: ConstructPageHeaderProps) => {\n // States\n const [countOfSecondaryMetaToShow, setCountOfSecondaryMetaToShow] = useState<number>(\n metadata?.secondary?.length ?? 0\n );\n const [countOfPrimaryMetaToShow, setCountOfPrimaryMetaToShow] = useState<number>(\n metadata.primary?.length ?? 0\n );\n const [showSecondaryAction, setShowSecondaryAction] = useState(true);\n const [pageTitleEl, setPageTitleEl] = useElement();\n const [primaryMetaEl, setPrimaryMetaEl] = useElement();\n\n // Hooks\n const chToPxConversionFactor = useChToPxConversionFactor();\n const testIds = useTestIds(testId, getPageHeaderTestIds);\n const t = useI18n();\n\n // Refs\n const headerRef = useRef<HTMLDivElement>(null);\n const headerContentRef = useRef<HTMLDivElement>(null);\n const pageTitleContainerRef = useRef<HTMLDivElement>(null);\n const actionsContainerRef = useRef<HTMLDivElement>(null);\n const secondaryMetaDataRef = useRef<HTMLDivElement>(null);\n const primaryMetaDataRef = useRef<HTMLDivElement>(null);\n const observerRef = useRef<ResizeObserver>();\n const primaryMetaLengths = useRef<number[]>([]);\n const secondaryMetaLengths = useRef<number[]>([]);\n\n // Memos\n const secondaryActionWidth = useMemo(\n () => (secondaryAction ? secondaryAction.primary.length * chToPxConversionFactor + 44 : 0),\n [secondaryAction]\n );\n\n // Page actions component\n const actions = useMemo(() => {\n const additionalActionsData = [...additionalActions];\n const secondaryActionsData =\n showSecondaryAction || additionalActionsData.length === 0 ? secondaryAction : undefined;\n if (additionalActionsData.length > 0 && secondaryAction && !showSecondaryAction) {\n additionalActionsData.unshift(secondaryAction);\n }\n\n return (\n <HeaderActionButtons\n additionalActions={additionalActionsData}\n primaryAction={primaryAction}\n secondaryAction={secondaryActionsData}\n testIds={testIds}\n progress={progress}\n animatePrimaryButton\n closeAction={closeAction}\n />\n );\n }, [\n showSecondaryAction,\n primaryAction,\n secondaryAction,\n additionalActions,\n testIds,\n progress,\n closeAction\n ]);\n\n // CB to be run on resize observer\n const showOrHideElements = useCallback(() => {\n // Logic to show or hide primary metadata\n const headerWidth = headerContentRef.current?.offsetWidth ?? 0;\n const titleWidth = pageTitleContainerRef.current?.offsetWidth ?? 0;\n let actionsWidth = actionsContainerRef.current?.offsetWidth ?? 0;\n let newCountOfPrimaryMetaToShow = countOfPrimaryMetaToShow;\n let newCountOfSecondaryMetaToShow = countOfSecondaryMetaToShow;\n\n if (primaryMetaLengths.current.length > 0 && primaryMetaDataRef.current) {\n if (countOfSecondaryMetaToShow === 0) {\n const availableSpace = headerWidth - titleWidth - actionsWidth - 48;\n const closestIndex = primaryMetaLengths.current.findIndex(i => i > availableSpace);\n newCountOfPrimaryMetaToShow =\n closestIndex === -1 ? primaryMetaLengths.current.length : closestIndex;\n } else {\n newCountOfPrimaryMetaToShow = primaryMetaLengths.current.length;\n }\n }\n\n // Logic to show and hide secondary metadata items\n if (\n secondaryMetaLengths.current.length !== 0 &&\n secondaryMetaDataRef.current &&\n primaryMetaDataRef.current &&\n primaryMetaLengths.current.length === newCountOfPrimaryMetaToShow\n ) {\n const availableSpace =\n primaryMetaDataRef.current.offsetWidth -\n (primaryMetaLengths.current[primaryMetaLengths.current.length - 1] ?? 0);\n if (availableSpace > secondaryMetaLengths.current[secondaryMetaLengths.current.length - 1]) {\n newCountOfSecondaryMetaToShow = secondaryMetaLengths.current.length;\n } else if (availableSpace < secondaryMetaLengths.current[0]) {\n newCountOfSecondaryMetaToShow = 0;\n } else {\n const closestIndex = secondaryMetaLengths.current.findIndex(i => i > availableSpace);\n newCountOfSecondaryMetaToShow =\n closestIndex === -1 ? secondaryMetaLengths.current.length : closestIndex;\n }\n }\n\n // Logic to show or hide secondary action\n actionsWidth =\n secondaryAction && showSecondaryAction ? actionsWidth : actionsWidth + secondaryActionWidth;\n setShowSecondaryAction(!!secondaryAction && headerWidth >= titleWidth + actionsWidth + 25);\n setCountOfPrimaryMetaToShow(newCountOfPrimaryMetaToShow);\n setCountOfSecondaryMetaToShow(newCountOfSecondaryMetaToShow);\n\n if (!headerContentRef.current?.offsetWidth) {\n setCountOfPrimaryMetaToShow(primaryMetaLengths.current.length);\n setShowSecondaryAction(!!secondaryAction);\n setCountOfSecondaryMetaToShow(secondaryMetaLengths.current.length);\n }\n\n onHeightChange?.(headerRef.current?.offsetHeight ?? 0);\n }, [\n countOfSecondaryMetaToShow,\n secondaryMetaLengths,\n showSecondaryAction,\n primaryMetaLengths,\n countOfPrimaryMetaToShow,\n onHeightChange\n ]);\n\n useLayoutEffect(() => {\n primaryMetaLengths.current = [];\n secondaryMetaLengths.current = [];\n const primaryMetaDataLength = metadata.primary?.length ?? 0;\n primaryMetaDataRef.current?.querySelectorAll('div:has(>dt)').forEach((el, index) => {\n if (index < primaryMetaDataLength) {\n primaryMetaLengths.current.push(\n (index === 0 ? el.clientWidth : el.clientWidth + primaryMetaLengths.current[index - 1]) +\n 16\n );\n } else {\n secondaryMetaLengths.current.push(\n (index === primaryMetaDataLength\n ? el.clientWidth\n : el.clientWidth + secondaryMetaLengths.current[index - primaryMetaDataLength - 1]) + 16\n );\n }\n });\n }, [metadata.primary, metadata.secondary]);\n\n // Resize observer for header\n useLayoutEffect(() => {\n if (observerRef.current) {\n observerRef.current.disconnect();\n }\n if (headerContentRef.current) {\n observerRef.current = new ResizeObserver(() => showOrHideElements());\n observerRef.current.observe(headerContentRef.current);\n }\n return () => observerRef.current?.disconnect();\n }, [showOrHideElements]);\n\n // Run CB once on mount incase if component is mounted initially on resized screen\n useLayoutEffect(() => {\n showOrHideElements();\n }, []);\n\n return (\n <Flex\n as={StyledHeader}\n container={{\n direction: 'column',\n rowGap: 1\n }}\n ref={headerRef}\n >\n <Flex\n container={{\n direction: 'row',\n alignItems: 'center',\n colGap: countOfPrimaryMetaToShow > 0 ? 3 : 1.5\n }}\n ref={headerContentRef}\n >\n <Flex\n ref={pageTitleContainerRef}\n container={{ direction: 'row', colGap: 1, alignItems: 'center' }}\n item={{ shrink: showSecondaryAction || countOfPrimaryMetaToShow > 0 ? 0 : 1 }}\n >\n {visual && <IconTile testId={testIds.visual} {...visual} size='xl' />}\n <Flex\n as={StyledTitleContainer}\n container={{\n alignItems: 'start',\n direction: 'column',\n wrap: 'wrap'\n }}\n >\n {type.name && <PrimaryHeaderText type={type} testId={testIds.type} />}\n <StyledText\n showEllipsis={!showSecondaryAction && countOfPrimaryMetaToShow === 0}\n data-testid={testIds.title}\n variant='h1'\n ref={setPageTitleEl}\n >\n {title}\n </StyledText>\n <Tooltip target={pageTitleEl} smart showDelay='none' hideDelay='none'>\n {title}\n </Tooltip>\n </Flex>\n </Flex>\n\n <Flex\n container={{\n direction: 'row',\n colGap: countOfSecondaryMetaToShow > 0 || countOfPrimaryMetaToShow > 1 ? 3 : 0,\n alignItems: 'center'\n }}\n item={{ grow: 1, shrink: 1 }}\n ref={primaryMetaDataRef}\n as='dl'\n >\n {metadata.primary?.slice(0, countOfPrimaryMetaToShow).map(metaItem => (\n <Flex\n key={metaItem.name}\n as={StyledStackedFieldValue}\n container={{ direction: 'column' }}\n item={{ shrink: 0 }}\n data-testid={testIds.primaryMetaData}\n >\n <StyledLabel as={StyledFieldName}>{metaItem.name}</StyledLabel>\n {metaItem.onClick ? (\n <dd>\n <StyledPrimaryMetaButton\n ref={setPrimaryMetaEl}\n variant='link'\n onClick={metaItem.onClick}\n data-testid={testId}\n >\n {metaItem.value}\n </StyledPrimaryMetaButton>\n </dd>\n ) : (\n <StyledText ref={setPrimaryMetaEl} variant='h1' forwardedAs='dd'>\n {metaItem.value}\n </StyledText>\n )}\n <Tooltip target={primaryMetaEl} smart showDelay='none' hideDelay='none'>\n {metaItem.value}\n </Tooltip>\n </Flex>\n ))}\n\n {metadata.secondary && (\n <Flex\n container={{ direction: 'row', colGap: 2, justify: 'end' }}\n item={{ grow: 1, shrink: 1 }}\n ref={secondaryMetaDataRef}\n data-testid={testIds.secondaryMetaData}\n >\n {metadata.secondary.slice(0, countOfSecondaryMetaToShow).map(metaItem => (\n <Flex as={StyledStackedFieldValue} item={{ shrink: 0 }} key={metaItem.name}>\n <StyledLabel as={StyledFieldName}>{metaItem.name}</StyledLabel>\n <StyledText as='dd'>{metaItem.value}</StyledText>\n </Flex>\n ))}\n </Flex>\n )}\n </Flex>\n\n <Flex\n ref={actionsContainerRef}\n container={{\n direction: 'row',\n colGap: 2,\n justify: 'center'\n }}\n item={{ alignSelf: 'center', shrink: 0 }}\n >\n {metadata.additional.length > 0 && (\n <Flex container={{ direction: 'row', colGap: 2, alignItems: 'center' }}>\n <AdditionalInfo data-testid={testIds.additionalInfoIcon} heading={title}>\n <Flex\n container={{\n direction: 'column',\n alignItems: 'start',\n gap: 1\n }}\n item={{ grow: 1, alignSelf: 'stretch' }}\n >\n <FieldValueList\n fields={metadata.additional}\n variant='inline'\n testId={testIds.metaData}\n />\n {description && (\n <StyledStackedFieldValue>\n <StyledLabel as={StyledFieldName}>{t('description')}</StyledLabel>\n <ShowMoreLess lines={3}>{description}</ShowMoreLess>\n </StyledStackedFieldValue>\n )}\n </Flex>\n </AdditionalInfo>\n </Flex>\n )}\n\n {actions}\n </Flex>\n </Flex>\n\n {description && (\n <StyledDescription>\n <ShowMoreLess lines={2}>\n <Text>{description}</Text>\n </ShowMoreLess>\n </StyledDescription>\n )}\n </Flex>\n );\n};\n\nexport default withTestIds(ConstructPageHeader, getPageHeaderTestIds);\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderActionButtons.d.ts","sourceRoot":"","sources":["../../../src/components/PageTemplates/HeaderActionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAKhC,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,sBAAsB,CAAC;AASrF,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAoDxC,CAAC;AAEF,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"HeaderActionButtons.d.ts","sourceRoot":"","sources":["../../../src/components/PageTemplates/HeaderActionButtons.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAOhC,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,sBAAsB,CAAC;AAWrF,QAAA,MAAM,aAAa,EAAE,EAAE,CAAC,iBAAiB,CAgExC,CAAC;AAEF,eAAe,aAAa,CAAC"}
@@ -1,14 +1,16 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { isValidElement } from 'react';
3
- import { Button, Flex, MenuButton, useI18n } from '@pega/cosmos-react-core';
3
+ import { Button, Flex, Icon, MenuButton, registerIcon, useI18n } from '@pega/cosmos-react-core';
4
+ import * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';
4
5
  import { StyledPrimaryActionWrapper } from './PageTemplate.styles';
6
+ registerIcon(timesIcon);
5
7
  const isButtonConfig = (action) => {
6
8
  return !!(action && typeof action === 'object' && !isValidElement(action) && 'onClick' in action);
7
9
  };
8
- const ActionButtons = ({ primaryAction, progress, testIds, secondaryAction, additionalActions, animatePrimaryButton }) => {
10
+ const ActionButtons = ({ primaryAction, progress, testIds, secondaryAction, additionalActions, animatePrimaryButton, closeAction }) => {
9
11
  const t = useI18n();
10
12
  return (_jsxs(Flex, { container: true, children: [primaryAction &&
11
- (isButtonConfig(primaryAction) ? (_jsx(Button, { variant: primaryAction.variant, onClick: primaryAction.onClick, disabled: progress || primaryAction.disabled, "data-testid": testIds.primaryAction, animate: animatePrimaryButton, children: primaryAction.primary })) : (_jsx(StyledPrimaryActionWrapper, { hasAdditionalAction: !!additionalActions, children: primaryAction }))), secondaryAction && (_jsx(Button, { variant: 'secondary', onClick: secondaryAction.onClick, disabled: progress || secondaryAction.disabled, "data-testid": testIds.secondaryAction, children: secondaryAction.primary })), additionalActions && additionalActions.length > 0 && (_jsx(MenuButton, { testId: testIds.additionalActions, text: t('actions'), "aria-label": t('actions'), disabled: progress, iconOnly: true, icon: 'more', menu: { items: additionalActions } }))] }));
13
+ (isButtonConfig(primaryAction) ? (_jsx(Button, { variant: primaryAction.variant, onClick: primaryAction.onClick, disabled: progress || primaryAction.disabled, "data-testid": testIds.primaryAction, animate: animatePrimaryButton, children: primaryAction.primary })) : (_jsx(StyledPrimaryActionWrapper, { hasAdditionalAction: !!additionalActions, children: primaryAction }))), secondaryAction && (_jsx(Button, { variant: 'secondary', onClick: secondaryAction.onClick, disabled: progress || secondaryAction.disabled, "data-testid": testIds.secondaryAction, children: secondaryAction.primary })), additionalActions && additionalActions.length > 0 && (_jsx(MenuButton, { testId: testIds.additionalActions, text: t('actions'), "aria-label": t('actions'), disabled: progress || additionalActions.every(action => action.disabled), iconOnly: true, icon: 'more', menu: { items: additionalActions } })), closeAction && (_jsx(Button, { variant: 'secondary', icon: true, onClick: closeAction.onClick, disabled: closeAction.disabled || progress, "aria-label": t('close'), children: _jsx(Icon, { name: 'times' }) }))] }));
12
14
  };
13
15
  export default ActionButtons;
14
16
  //# sourceMappingURL=HeaderActionButtons.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeaderActionButtons.js","sourceRoot":"","sources":["../../../src/components/PageTemplates/HeaderActionButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAoB,MAAM,yBAAyB,CAAC;AAG9F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,MAAM,cAAc,GAAG,CACrB,MAA0C,EAC8B,EAAE;IAC1E,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,aAAa,GAA0B,CAAC,EAC5C,aAAa,EACb,QAAQ,EACR,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACrB,EAAE,EAAE;IACH,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,mBAEZ,aAAa;gBACZ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC/B,KAAC,MAAM,IACL,OAAO,EAAE,aAAa,CAAC,OAAO,EAC9B,OAAO,EAAE,aAAa,CAAC,OAAO,EAC9B,QAAQ,EAAE,QAAQ,IAAI,aAAa,CAAC,QAAQ,iBAC/B,OAAO,CAAC,aAAa,EAClC,OAAO,EAAE,oBAAoB,YAE5B,aAAa,CAAC,OAAO,GACf,CACV,CAAC,CAAC,CAAC,CACF,KAAC,0BAA0B,IAAC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,YACjE,aAAa,GACa,CAC9B,CAAC,EACH,eAAe,IAAI,CAClB,KAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,eAAe,CAAC,OAAO,EAChC,QAAQ,EAAE,QAAQ,IAAI,eAAe,CAAC,QAAQ,iBACjC,OAAO,CAAC,eAAe,YAEnC,eAAe,CAAC,OAAO,GACjB,CACV,EACA,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CACpD,KAAC,UAAU,IACT,MAAM,EAAE,OAAO,CAAC,iBAAiB,EACjC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,gBACN,CAAC,CAAC,SAAS,CAAC,EACxB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,QACR,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAClC,CACH,IACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import type { FC } from 'react';\nimport { isValidElement } from 'react';\n\nimport { Button, Flex, MenuButton, useI18n, type ButtonProps } from '@pega/cosmos-react-core';\n\nimport type { ActionButtonProps, HeaderActionItemProps } from './PageTemplate.types';\nimport { StyledPrimaryActionWrapper } from './PageTemplate.styles';\n\nconst isButtonConfig = (\n action: ActionButtonProps['primaryAction']\n): action is HeaderActionItemProps & { variant?: ButtonProps['variant'] } => {\n return !!(action && typeof action === 'object' && !isValidElement(action) && 'onClick' in action);\n};\n\nconst ActionButtons: FC<ActionButtonProps> = ({\n primaryAction,\n progress,\n testIds,\n secondaryAction,\n additionalActions,\n animatePrimaryButton\n}) => {\n const t = useI18n();\n\n return (\n <Flex container>\n {/* Primary Action */}\n {primaryAction &&\n (isButtonConfig(primaryAction) ? (\n <Button\n variant={primaryAction.variant}\n onClick={primaryAction.onClick}\n disabled={progress || primaryAction.disabled}\n data-testid={testIds.primaryAction}\n animate={animatePrimaryButton}\n >\n {primaryAction.primary}\n </Button>\n ) : (\n <StyledPrimaryActionWrapper hasAdditionalAction={!!additionalActions}>\n {primaryAction}\n </StyledPrimaryActionWrapper>\n ))}\n {secondaryAction && (\n <Button\n variant='secondary'\n onClick={secondaryAction.onClick}\n disabled={progress || secondaryAction.disabled}\n data-testid={testIds.secondaryAction}\n >\n {secondaryAction.primary}\n </Button>\n )}\n {additionalActions && additionalActions.length > 0 && (\n <MenuButton\n testId={testIds.additionalActions}\n text={t('actions')}\n aria-label={t('actions')}\n disabled={progress}\n iconOnly\n icon='more'\n menu={{ items: additionalActions }}\n />\n )}\n </Flex>\n );\n};\n\nexport default ActionButtons;\n"]}
1
+ {"version":3,"file":"HeaderActionButtons.js","sourceRoot":"","sources":["../../../src/components/PageTemplates/HeaderActionButtons.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEhG,OAAO,KAAK,SAAS,MAAM,8DAA8D,CAAC;AAG1F,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,YAAY,CAAC,SAAS,CAAC,CAAC;AAExB,MAAM,cAAc,GAAG,CACrB,MAA0C,EAC8B,EAAE;IAC1E,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,CAAC;AACpG,CAAC,CAAC;AAEF,MAAM,aAAa,GAA0B,CAAC,EAC5C,aAAa,EACb,QAAQ,EACR,OAAO,EACP,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,WAAW,EACZ,EAAE,EAAE;IACH,MAAM,CAAC,GAAG,OAAO,EAAE,CAAC;IAEpB,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,mBAEZ,aAAa;gBACZ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAC/B,KAAC,MAAM,IACL,OAAO,EAAE,aAAa,CAAC,OAAO,EAC9B,OAAO,EAAE,aAAa,CAAC,OAAO,EAC9B,QAAQ,EAAE,QAAQ,IAAI,aAAa,CAAC,QAAQ,iBAC/B,OAAO,CAAC,aAAa,EAClC,OAAO,EAAE,oBAAoB,YAE5B,aAAa,CAAC,OAAO,GACf,CACV,CAAC,CAAC,CAAC,CACF,KAAC,0BAA0B,IAAC,mBAAmB,EAAE,CAAC,CAAC,iBAAiB,YACjE,aAAa,GACa,CAC9B,CAAC,EACH,eAAe,IAAI,CAClB,KAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,OAAO,EAAE,eAAe,CAAC,OAAO,EAChC,QAAQ,EAAE,QAAQ,IAAI,eAAe,CAAC,QAAQ,iBACjC,OAAO,CAAC,eAAe,YAEnC,eAAe,CAAC,OAAO,GACjB,CACV,EACA,iBAAiB,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,IAAI,CACpD,KAAC,UAAU,IACT,MAAM,EAAE,OAAO,CAAC,iBAAiB,EACjC,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,gBACN,CAAC,CAAC,SAAS,CAAC,EACxB,QAAQ,EAAE,QAAQ,IAAI,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,EACxE,QAAQ,QACR,IAAI,EAAC,MAAM,EACX,IAAI,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAClC,CACH,EACA,WAAW,IAAI,CACd,KAAC,MAAM,IACL,OAAO,EAAC,WAAW,EACnB,IAAI,QACJ,OAAO,EAAE,WAAW,CAAC,OAAO,EAC5B,QAAQ,EAAE,WAAW,CAAC,QAAQ,IAAI,QAAQ,gBAC9B,CAAC,CAAC,OAAO,CAAC,YAEtB,KAAC,IAAI,IAAC,IAAI,EAAC,OAAO,GAAG,GACd,CACV,IACI,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,eAAe,aAAa,CAAC","sourcesContent":["import type { FC } from 'react';\nimport { isValidElement } from 'react';\n\nimport { Button, Flex, Icon, MenuButton, registerIcon, useI18n } from '@pega/cosmos-react-core';\nimport type { ButtonProps } from '@pega/cosmos-react-core';\nimport * as timesIcon from '@pega/cosmos-react-core/lib/components/Icon/icons/times.icon';\n\nimport type { ActionButtonProps, HeaderActionItemProps } from './PageTemplate.types';\nimport { StyledPrimaryActionWrapper } from './PageTemplate.styles';\n\nregisterIcon(timesIcon);\n\nconst isButtonConfig = (\n action: ActionButtonProps['primaryAction']\n): action is HeaderActionItemProps & { variant?: ButtonProps['variant'] } => {\n return !!(action && typeof action === 'object' && !isValidElement(action) && 'onClick' in action);\n};\n\nconst ActionButtons: FC<ActionButtonProps> = ({\n primaryAction,\n progress,\n testIds,\n secondaryAction,\n additionalActions,\n animatePrimaryButton,\n closeAction\n}) => {\n const t = useI18n();\n\n return (\n <Flex container>\n {/* Primary Action */}\n {primaryAction &&\n (isButtonConfig(primaryAction) ? (\n <Button\n variant={primaryAction.variant}\n onClick={primaryAction.onClick}\n disabled={progress || primaryAction.disabled}\n data-testid={testIds.primaryAction}\n animate={animatePrimaryButton}\n >\n {primaryAction.primary}\n </Button>\n ) : (\n <StyledPrimaryActionWrapper hasAdditionalAction={!!additionalActions}>\n {primaryAction}\n </StyledPrimaryActionWrapper>\n ))}\n {secondaryAction && (\n <Button\n variant='secondary'\n onClick={secondaryAction.onClick}\n disabled={progress || secondaryAction.disabled}\n data-testid={testIds.secondaryAction}\n >\n {secondaryAction.primary}\n </Button>\n )}\n {additionalActions && additionalActions.length > 0 && (\n <MenuButton\n testId={testIds.additionalActions}\n text={t('actions')}\n aria-label={t('actions')}\n disabled={progress || additionalActions.every(action => action.disabled)}\n iconOnly\n icon='more'\n menu={{ items: additionalActions }}\n />\n )}\n {closeAction && (\n <Button\n variant='secondary'\n icon\n onClick={closeAction.onClick}\n disabled={closeAction.disabled || progress}\n aria-label={t('close')}\n >\n <Icon name='times' />\n </Button>\n )}\n </Flex>\n );\n};\n\nexport default ActionButtons;\n"]}
@@ -35,6 +35,7 @@ export interface ActionButtonProps {
35
35
  secondaryAction?: HeaderActionItemProps;
36
36
  additionalActions?: HeaderActionItemProps[];
37
37
  animatePrimaryButton?: boolean;
38
+ closeAction?: HeaderActionItemProps;
38
39
  }
39
40
  type ConstructPageTemplateContentProps = {
40
41
  tabs: OmitStrict<TabsProps, 'tabs'> & {
@@ -46,7 +47,7 @@ type ConstructPageTemplateContentProps = {
46
47
  content: ReactNode;
47
48
  };
48
49
  export type ConstructPageTemplateProps = PageTemplateProps & {
49
- header: PageHeaderProps & {
50
+ header: PageHeaderProps & Pick<ActionButtonProps, 'closeAction'> & {
50
51
  /**
51
52
  * Metadata for the Page Header and additional info dialog.
52
53
  * Only First 4 items of metadata are rendered on page header.
@@ -1 +1 @@
1
- {"version":3,"file":"PageTemplate.types.d.ts","sourceRoot":"","sources":["../../../src/components/PageTemplates/PageTemplate.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PageTemplate.types.d.ts","sourceRoot":"","sources":["../../../src/components/PageTemplates/PageTemplate.types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageTemplate.types.js","sourceRoot":"","sources":["../../../src/components/PageTemplates/PageTemplate.types.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["import type { MouseEvent, ReactNode, Ref } from 'react';\n\nimport type {\n BannerProps,\n OmitStrict,\n TestIdProp,\n ButtonProps,\n BaseProps,\n TabsProps,\n MenuItemProps,\n TestIdsRecord\n} from '@pega/cosmos-react-core';\nimport type {\n OneColumnPageProps,\n TabbedPageTab\n} from '@pega/cosmos-react-core/lib/components/PageTemplates/PageTemplates';\n\nimport type { IconTileProps } from '../IconTile';\n\nimport type { PageBannerProps } from './OverviewPageTemplate/PageBanner';\nimport { elements as pageHeaderElements } from './PageTemplates.test-ids';\n\nexport interface PageTemplateProps extends BaseProps, TestIdProp {\n /** PropTypes for error banner inside Page Template. */\n errorBanner?: Pick<BannerProps, 'variant' | 'onDismiss' | 'messages'>;\n /** If true, disables all the action buttons on page header. */\n progress?: boolean;\n /** Ref to the Page Template. */\n ref?: Ref<HTMLDivElement>;\n}\n\ntype PageHeaderProps = {\n /** The primary header text on the page header. */\n title: string;\n /** Description text for the page header and additional info dialog. */\n description?: string;\n};\n\nexport type HeaderActionItemProps = Pick<MenuItemProps, 'id' | 'onClick' | 'disabled' | 'primary'>;\n\nexport interface MetaFieldValueListProps {\n id?: string;\n name: string;\n value?: string;\n simpleValue?: Record<string, unknown> | string;\n onClick?: (value: string) => void;\n}\n\nexport interface ActionButtonProps {\n testIds: Partial<TestIdsRecord<typeof pageHeaderElements>>;\n progress?: PageTemplateProps['progress'];\n primaryAction?:\n | (HeaderActionItemProps & {\n variant?: ButtonProps['variant'];\n })\n | ReactNode;\n secondaryAction?: HeaderActionItemProps;\n additionalActions?: HeaderActionItemProps[];\n animatePrimaryButton?: boolean;\n}\n\ntype ConstructPageTemplateContentProps =\n | {\n tabs: OmitStrict<TabsProps, 'tabs'> & {\n tabs: TabbedPageTab[];\n };\n content?: never;\n }\n | {\n tabs?: never;\n content: ReactNode;\n };\n\nexport type ConstructPageTemplateProps = PageTemplateProps & {\n header: PageHeaderProps & {\n /**\n * Metadata for the Page Header and additional info dialog.\n * Only First 4 items of metadata are rendered on page header.\n */\n metadata?: {\n /** Primary Metadata\n * Primary Metadata highlights the important metadata for the user by staying next to the title\n */\n primary?: MetaFieldValueListProps[];\n /** Secondary Metadata\n * Secondary Metadata highlights the next secondary meta information for the user by staying close to the action button\n */\n secondary?: [MetaFieldValueListProps] | [MetaFieldValueListProps, MetaFieldValueListProps];\n /** Additional Metadata\n * All meta information for the user shown within the interaction of Info icon.\n */\n additional: MetaFieldValueListProps[];\n };\n /** A visual associated with the page header. */\n visual: OmitStrict<IconTileProps, 'size'>;\n /** The type of the page content. */\n type: {\n name: string;\n onClick?: (e?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n href?: string;\n };\n /**\n * PrimaryAction button on page header.\n * If variant is set as primary, live log is triggered announcing the user about dirty changes state on the page. */\n primaryAction?: ActionButtonProps['primaryAction'];\n /**\n * SecondaryAction to the page header.\n * Secondary Action button shifts inside the additionalActions based on screen width.\n */\n secondaryAction?: HeaderActionItemProps;\n /** A set of Action Buttons to render on the Action Menu button on page header. */\n additionalActions?: HeaderActionItemProps[];\n };\n /** Determines if the template is in preview mode */\n isPreview?: boolean;\n} & ConstructPageTemplateContentProps;\n\nexport interface InventoryPageTemplateProps extends PageTemplateProps {\n header: PageHeaderProps & {\n /**\n * PrimaryAction button on page header.\n * If variant is set as primary, live log is triggered announcing the user about dirty changes state on the page. */\n primaryAction?: HeaderActionItemProps & {\n variant?: ButtonProps['variant'];\n };\n /**\n * SecondaryAction to the page header.\n * Secondary Action button shifts inside the additionalActions based on screen width.\n */\n secondaryAction?: HeaderActionItemProps;\n /** A set of Action Buttons to render on the Action Menu button on page header. */\n additionalActions?: HeaderActionItemProps[];\n };\n content: OneColumnPageProps['a'];\n}\n\nexport interface OverviewPageTemplateProps extends TestIdProp, BaseProps {\n header: PageBannerProps;\n content: OneColumnPageProps['a'];\n ref?: Ref<HTMLDivElement>;\n}\n"]}
1
+ {"version":3,"file":"PageTemplate.types.js","sourceRoot":"","sources":["../../../src/components/PageTemplates/PageTemplate.types.ts"],"names":[],"mappings":"AAoBA,OAAO,EAAE,QAAQ,IAAI,kBAAkB,EAAE,MAAM,0BAA0B,CAAC","sourcesContent":["import type { MouseEvent, ReactNode, Ref } from 'react';\n\nimport type {\n BannerProps,\n OmitStrict,\n TestIdProp,\n ButtonProps,\n BaseProps,\n TabsProps,\n MenuItemProps,\n TestIdsRecord\n} from '@pega/cosmos-react-core';\nimport type {\n OneColumnPageProps,\n TabbedPageTab\n} from '@pega/cosmos-react-core/lib/components/PageTemplates/PageTemplates';\n\nimport type { IconTileProps } from '../IconTile';\n\nimport type { PageBannerProps } from './OverviewPageTemplate/PageBanner';\nimport { elements as pageHeaderElements } from './PageTemplates.test-ids';\n\nexport interface PageTemplateProps extends BaseProps, TestIdProp {\n /** PropTypes for error banner inside Page Template. */\n errorBanner?: Pick<BannerProps, 'variant' | 'onDismiss' | 'messages'>;\n /** If true, disables all the action buttons on page header. */\n progress?: boolean;\n /** Ref to the Page Template. */\n ref?: Ref<HTMLDivElement>;\n}\n\ntype PageHeaderProps = {\n /** The primary header text on the page header. */\n title: string;\n /** Description text for the page header and additional info dialog. */\n description?: string;\n};\n\nexport type HeaderActionItemProps = Pick<MenuItemProps, 'id' | 'onClick' | 'disabled' | 'primary'>;\n\nexport interface MetaFieldValueListProps {\n id?: string;\n name: string;\n value?: string;\n simpleValue?: Record<string, unknown> | string;\n onClick?: (value: string) => void;\n}\n\nexport interface ActionButtonProps {\n testIds: Partial<TestIdsRecord<typeof pageHeaderElements>>;\n progress?: PageTemplateProps['progress'];\n primaryAction?:\n | (HeaderActionItemProps & {\n variant?: ButtonProps['variant'];\n })\n | ReactNode;\n secondaryAction?: HeaderActionItemProps;\n additionalActions?: HeaderActionItemProps[];\n animatePrimaryButton?: boolean;\n closeAction?: HeaderActionItemProps;\n}\n\ntype ConstructPageTemplateContentProps =\n | {\n tabs: OmitStrict<TabsProps, 'tabs'> & {\n tabs: TabbedPageTab[];\n };\n content?: never;\n }\n | {\n tabs?: never;\n content: ReactNode;\n };\n\nexport type ConstructPageTemplateProps = PageTemplateProps & {\n header: PageHeaderProps &\n Pick<ActionButtonProps, 'closeAction'> & {\n /**\n * Metadata for the Page Header and additional info dialog.\n * Only First 4 items of metadata are rendered on page header.\n */\n metadata?: {\n /** Primary Metadata\n * Primary Metadata highlights the important metadata for the user by staying next to the title\n */\n primary?: MetaFieldValueListProps[];\n /** Secondary Metadata\n * Secondary Metadata highlights the next secondary meta information for the user by staying close to the action button\n */\n secondary?: [MetaFieldValueListProps] | [MetaFieldValueListProps, MetaFieldValueListProps];\n /** Additional Metadata\n * All meta information for the user shown within the interaction of Info icon.\n */\n additional: MetaFieldValueListProps[];\n };\n /** A visual associated with the page header. */\n visual: OmitStrict<IconTileProps, 'size'>;\n /** The type of the page content. */\n type: {\n name: string;\n onClick?: (e?: MouseEvent<HTMLButtonElement | HTMLAnchorElement>) => void;\n href?: string;\n };\n /**\n * PrimaryAction button on page header.\n * If variant is set as primary, live log is triggered announcing the user about dirty changes state on the page. */\n primaryAction?: ActionButtonProps['primaryAction'];\n /**\n * SecondaryAction to the page header.\n * Secondary Action button shifts inside the additionalActions based on screen width.\n */\n secondaryAction?: HeaderActionItemProps;\n /** A set of Action Buttons to render on the Action Menu button on page header. */\n additionalActions?: HeaderActionItemProps[];\n };\n /** Determines if the template is in preview mode */\n isPreview?: boolean;\n} & ConstructPageTemplateContentProps;\n\nexport interface InventoryPageTemplateProps extends PageTemplateProps {\n header: PageHeaderProps & {\n /**\n * PrimaryAction button on page header.\n * If variant is set as primary, live log is triggered announcing the user about dirty changes state on the page. */\n primaryAction?: HeaderActionItemProps & {\n variant?: ButtonProps['variant'];\n };\n /**\n * SecondaryAction to the page header.\n * Secondary Action button shifts inside the additionalActions based on screen width.\n */\n secondaryAction?: HeaderActionItemProps;\n /** A set of Action Buttons to render on the Action Menu button on page header. */\n additionalActions?: HeaderActionItemProps[];\n };\n content: OneColumnPageProps['a'];\n}\n\nexport interface OverviewPageTemplateProps extends TestIdProp, BaseProps {\n header: PageBannerProps;\n content: OneColumnPageProps['a'];\n ref?: Ref<HTMLDivElement>;\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pega/cosmos-react-build",
3
- "version": "9.0.0-build.27.9",
3
+ "version": "9.0.0-build.28.1",
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": "9.0.0-build.27.9",
19
- "@pega/cosmos-react-dnd": "9.0.0-build.27.9",
20
- "@pega/cosmos-react-rte": "9.0.0-build.27.9",
18
+ "@pega/cosmos-react-core": "9.0.0-build.28.1",
19
+ "@pega/cosmos-react-dnd": "9.0.0-build.28.1",
20
+ "@pega/cosmos-react-rte": "9.0.0-build.28.1",
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",