@pega/react-sdk-components 25.1.10 → 25.1.11

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.
Files changed (99) hide show
  1. package/lib/components/designSystemExtension/AlertBanner/AlertBanner.css +46 -0
  2. package/lib/components/designSystemExtension/AlertBanner/AlertBanner.d.ts +2 -1
  3. package/lib/components/designSystemExtension/AlertBanner/AlertBanner.d.ts.map +1 -1
  4. package/lib/components/designSystemExtension/AlertBanner/AlertBanner.js +18 -16
  5. package/lib/components/designSystemExtension/AlertBanner/AlertBanner.js.map +1 -1
  6. package/lib/components/designSystemExtension/FieldGroupList/FieldGroupList.js +1 -1
  7. package/lib/components/designSystemExtension/FieldGroupList/FieldGroupList.js.map +1 -1
  8. package/lib/components/field/SelectableCard/SelectableCard.d.ts.map +1 -1
  9. package/lib/components/field/SelectableCard/SelectableCard.js +13 -2
  10. package/lib/components/field/SelectableCard/SelectableCard.js.map +1 -1
  11. package/lib/components/infra/Assignment/Assignment.d.ts.map +1 -1
  12. package/lib/components/infra/Assignment/Assignment.js +6 -2
  13. package/lib/components/infra/Assignment/Assignment.js.map +1 -1
  14. package/lib/components/infra/Assignment/useValidationBanner.d.ts +7 -0
  15. package/lib/components/infra/Assignment/useValidationBanner.d.ts.map +1 -0
  16. package/lib/components/infra/Assignment/useValidationBanner.js +26 -0
  17. package/lib/components/infra/Assignment/useValidationBanner.js.map +1 -0
  18. package/lib/components/infra/Containers/FlowContainer/FlowContainer.d.ts.map +1 -1
  19. package/lib/components/infra/Containers/FlowContainer/FlowContainer.js +5 -6
  20. package/lib/components/infra/Containers/FlowContainer/FlowContainer.js.map +1 -1
  21. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.d.ts +4 -0
  22. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.d.ts.map +1 -1
  23. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.js +1 -1
  24. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.js.map +1 -1
  25. package/lib/components/infra/Containers/ViewContainer/ViewContainer.d.ts +4 -0
  26. package/lib/components/infra/Containers/ViewContainer/ViewContainer.d.ts.map +1 -1
  27. package/lib/components/infra/Containers/ViewContainer/ViewContainer.js +4 -7
  28. package/lib/components/infra/Containers/ViewContainer/ViewContainer.js.map +1 -1
  29. package/lib/components/infra/DeferLoad/DeferLoad.d.ts +1 -0
  30. package/lib/components/infra/DeferLoad/DeferLoad.d.ts.map +1 -1
  31. package/lib/components/infra/DeferLoad/DeferLoad.js +24 -9
  32. package/lib/components/infra/DeferLoad/DeferLoad.js.map +1 -1
  33. package/lib/components/infra/NavBar/NavBar.d.ts.map +1 -1
  34. package/lib/components/infra/NavBar/NavBar.js +6 -0
  35. package/lib/components/infra/NavBar/NavBar.js.map +1 -1
  36. package/lib/components/infra/Reference/Reference.d.ts.map +1 -1
  37. package/lib/components/infra/Reference/Reference.js +4 -0
  38. package/lib/components/infra/Reference/Reference.js.map +1 -1
  39. package/lib/components/infra/RootContainer/RootContainer.d.ts.map +1 -1
  40. package/lib/components/infra/RootContainer/RootContainer.js +4 -5
  41. package/lib/components/infra/RootContainer/RootContainer.js.map +1 -1
  42. package/lib/components/infra/View/View.d.ts.map +1 -1
  43. package/lib/components/infra/View/View.js +5 -6
  44. package/lib/components/infra/View/View.js.map +1 -1
  45. package/lib/components/template/AppShell/AppShell.css +0 -4
  46. package/lib/components/template/CaseSummary/CaseSummary.d.ts.map +1 -1
  47. package/lib/components/template/CaseSummary/CaseSummary.js +2 -6
  48. package/lib/components/template/CaseSummary/CaseSummary.js.map +1 -1
  49. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.d.ts +1 -0
  50. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.d.ts.map +1 -1
  51. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.js +7 -3
  52. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.js.map +1 -1
  53. package/lib/components/template/HierarchicalForm/HierarchicalForm.d.ts +4 -0
  54. package/lib/components/template/HierarchicalForm/HierarchicalForm.d.ts.map +1 -0
  55. package/lib/components/template/HierarchicalForm/HierarchicalForm.js +16 -0
  56. package/lib/components/template/HierarchicalForm/HierarchicalForm.js.map +1 -0
  57. package/lib/components/template/HierarchicalForm/hooks.d.ts +15 -0
  58. package/lib/components/template/HierarchicalForm/hooks.d.ts.map +1 -0
  59. package/lib/components/template/HierarchicalForm/hooks.js +163 -0
  60. package/lib/components/template/HierarchicalForm/hooks.js.map +1 -0
  61. package/lib/components/template/HierarchicalForm/index.d.ts +2 -0
  62. package/lib/components/template/HierarchicalForm/index.d.ts.map +1 -0
  63. package/lib/components/template/HierarchicalForm/index.js +2 -0
  64. package/lib/components/template/HierarchicalForm/index.js.map +1 -0
  65. package/lib/components/template/ListView/ListView.d.ts +1 -0
  66. package/lib/components/template/ListView/ListView.d.ts.map +1 -1
  67. package/lib/components/template/ListView/ListView.js +56 -9
  68. package/lib/components/template/ListView/ListView.js.map +1 -1
  69. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.d.ts +3 -1
  70. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.d.ts.map +1 -1
  71. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.js +13 -1
  72. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.js.map +1 -1
  73. package/lib/components/template/ObjectPage/index.d.ts +2 -0
  74. package/lib/components/template/ObjectPage/index.d.ts.map +1 -0
  75. package/lib/components/template/ObjectPage/index.js +2 -0
  76. package/lib/components/template/ObjectPage/index.js.map +1 -0
  77. package/lib/components/template/SelfServiceCaseView/SelfServiceCaseView.d.ts.map +1 -1
  78. package/lib/components/template/SelfServiceCaseView/SelfServiceCaseView.js +13 -2
  79. package/lib/components/template/SelfServiceCaseView/SelfServiceCaseView.js.map +1 -1
  80. package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.d.ts.map +1 -1
  81. package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.js +8 -6
  82. package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.js.map +1 -1
  83. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.d.ts +17 -0
  84. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.d.ts.map +1 -0
  85. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.js +94 -0
  86. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.js.map +1 -0
  87. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.d.ts +2 -0
  88. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.d.ts.map +1 -0
  89. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.js +2 -0
  90. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.js.map +1 -0
  91. package/lib/hooks/useFocusFirstField.d.ts +3 -3
  92. package/lib/hooks/useFocusFirstField.d.ts.map +1 -1
  93. package/lib/hooks/useFocusFirstField.js +19 -12
  94. package/lib/hooks/useFocusFirstField.js.map +1 -1
  95. package/lib/sdk-pega-component-map.d.ts +6 -0
  96. package/lib/sdk-pega-component-map.d.ts.map +1 -1
  97. package/lib/sdk-pega-component-map.js +6 -0
  98. package/lib/sdk-pega-component-map.js.map +1 -1
  99. package/package.json +1 -1
@@ -0,0 +1,46 @@
1
+ .alert-banner-title {
2
+ font-weight: 700;
3
+ font-size: 1rem;
4
+ display: flex;
5
+ align-items: center;
6
+ gap: 0.25rem;
7
+ }
8
+
9
+ .alert-banner-badge {
10
+ display: inline-flex;
11
+ align-items: center;
12
+ justify-content: center;
13
+ min-width: 1rem;
14
+ height: 1rem;
15
+ padding: 0 0.2rem;
16
+ border-radius: 999px;
17
+ font-size: 0.6rem;
18
+ font-weight: 700;
19
+ line-height: 1;
20
+ vertical-align: middle;
21
+ }
22
+
23
+ .alert-banner-badge--urgent {
24
+ background: var(--app-error-dark-color);
25
+ color: #fff;
26
+ }
27
+
28
+ .alert-banner-badge--warning {
29
+ background: var(--app-warning-color-dark);
30
+ color: #fff;
31
+ }
32
+
33
+ .alert-banner-badge--success {
34
+ background: var(--stepper-completed-bg-color);
35
+ color: #fff;
36
+ }
37
+
38
+ .alert-banner-badge--info {
39
+ background: var(--link-button-color);
40
+ color: #fff;
41
+ }
42
+
43
+ .alert-banner-list {
44
+ margin: 0;
45
+ padding-left: 1.25rem;
46
+ }
@@ -1,9 +1,10 @@
1
+ import './AlertBanner.css';
1
2
  interface AlertBannerProps {
2
3
  id: string;
3
4
  variant: string;
4
5
  messages: string[];
5
6
  onDismiss?: any;
6
7
  }
7
- export default function AlertBanner(props: AlertBannerProps): import("react/jsx-runtime").JSX.Element;
8
+ export default function AlertBanner({ id, variant, messages, onDismiss }: AlertBannerProps): import("react/jsx-runtime").JSX.Element;
8
9
  export {};
9
10
  //# sourceMappingURL=AlertBanner.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlertBanner.d.ts","sourceRoot":"","sources":["../../../../src/components/designSystemExtension/AlertBanner/AlertBanner.tsx"],"names":[],"mappings":"AAIA,UAAU,gBAAgB;IAExB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AASD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAK,EAAE,gBAAgB,2CAmB1D"}
1
+ {"version":3,"file":"AlertBanner.d.ts","sourceRoot":"","sources":["../../../../src/components/designSystemExtension/AlertBanner/AlertBanner.tsx"],"names":[],"mappings":"AACA,OAAO,mBAAmB,CAAC;AAI3B,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAoBD,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAyBzF"}
@@ -1,19 +1,21 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { Alert } from '@mui/material';
3
- const SEVERITY_MAP = {
4
- urgent: 'error',
5
- warning: 'warning',
6
- success: 'success',
7
- info: 'info'
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Alert, AlertTitle } from '@mui/material';
3
+ import './AlertBanner.css';
4
+ const VARIANT_MAP = {
5
+ urgent: { severity: 'error', label: 'Error' },
6
+ warning: { severity: 'warning', label: 'Warning' },
7
+ success: { severity: 'success', label: 'Success' },
8
+ info: { severity: 'info', label: 'Info' }
8
9
  };
9
- export default function AlertBanner(props) {
10
- const { id, variant, messages, onDismiss } = props;
11
- let additionalProps = {};
12
- if (onDismiss) {
13
- additionalProps = {
14
- onClose: onDismiss
15
- };
16
- }
17
- return (_jsx("div", { id: id, children: messages.map(message => (_jsx(Alert, { variant: 'outlined', severity: SEVERITY_MAP[variant], ...additionalProps, children: message }, message))) }));
10
+ function renderMessage(message) {
11
+ const colonIndex = message.indexOf(':');
12
+ if (colonIndex === -1)
13
+ return message;
14
+ return (_jsxs(_Fragment, { children: [_jsx("strong", { children: message.slice(0, colonIndex + 1) }), message.slice(colonIndex + 1)] }));
15
+ }
16
+ export default function AlertBanner({ id, variant, messages, onDismiss }) {
17
+ const { severity, label } = VARIANT_MAP[variant] ?? VARIANT_MAP.info;
18
+ const isMultiple = messages.length > 1;
19
+ return (_jsx("div", { id: id, children: _jsxs(Alert, { variant: 'outlined', severity: severity, ...(onDismiss && { onClose: onDismiss }), children: [isMultiple && (_jsxs(AlertTitle, { className: 'alert-banner-title', children: [label, _jsx("span", { className: `alert-banner-badge alert-banner-badge--${variant}`, children: messages.length })] })), isMultiple ? (_jsx("ul", { className: 'alert-banner-list', children: messages.map(message => (_jsx("li", { children: renderMessage(message) }, message))) })) : (renderMessage(messages[0]))] }) }));
18
20
  }
19
21
  //# sourceMappingURL=AlertBanner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AlertBanner.js","sourceRoot":"","sources":["../../../../src/components/designSystemExtension/AlertBanner/AlertBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAYtC,MAAM,YAAY,GAAG;IACnB,MAAM,EAAE,OAAO;IACf,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,IAAI,EAAE,MAAM;CACb,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,KAAuB;IACzD,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;IACnD,IAAI,eAAe,GAAG,EAAE,CAAC;IAEzB,IAAI,SAAS,EAAE,CAAC;QACd,eAAe,GAAG;YAChB,OAAO,EAAE,SAAS;SACnB,CAAC;IACJ,CAAC;IAED,OAAO,CACL,cAAK,EAAE,EAAE,EAAE,YACR,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CACvB,KAAC,KAAK,IAAe,OAAO,EAAC,UAAU,EAAC,QAAQ,EAAE,YAAY,CAAC,OAAO,CAAC,KAAM,eAAe,YACzF,OAAO,IADE,OAAO,CAEX,CACT,CAAC,GACE,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { Alert } from '@mui/material';\n\n// AlertBanner is one of the few components that does NOT have getPConnect.\n// So, no need to extend PConnProps\ninterface AlertBannerProps {\n // If any, enter additional props that only exist on Date here\n id: string;\n variant: string;\n messages: string[];\n onDismiss?: any;\n}\n\nconst SEVERITY_MAP = {\n urgent: 'error',\n warning: 'warning',\n success: 'success',\n info: 'info'\n};\n\nexport default function AlertBanner(props: AlertBannerProps) {\n const { id, variant, messages, onDismiss } = props;\n let additionalProps = {};\n\n if (onDismiss) {\n additionalProps = {\n onClose: onDismiss\n };\n }\n\n return (\n <div id={id}>\n {messages.map(message => (\n <Alert key={message} variant='outlined' severity={SEVERITY_MAP[variant]} {...additionalProps}>\n {message}\n </Alert>\n ))}\n </div>\n );\n}\n"]}
1
+ {"version":3,"file":"AlertBanner.js","sourceRoot":"","sources":["../../../../src/components/designSystemExtension/AlertBanner/AlertBanner.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,mBAAmB,CAAC;AAW3B,MAAM,WAAW,GAAwD;IACvE,MAAM,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;IAC7C,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IAClD,OAAO,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE;IAClD,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE;CAC1C,CAAC;AAEF,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,UAAU,KAAK,CAAC,CAAC;QAAE,OAAO,OAAO,CAAC;IACtC,OAAO,CACL,8BACE,2BAAS,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,GAAU,EAClD,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,IAC7B,CACJ,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAoB;IACxF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC;IACrE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;IAEvC,OAAO,CACL,cAAK,EAAE,EAAE,EAAE,YACT,MAAC,KAAK,IAAC,OAAO,EAAC,UAAU,EAAC,QAAQ,EAAE,QAAe,KAAM,CAAC,SAAS,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,aAC3F,UAAU,IAAI,CACb,MAAC,UAAU,IAAC,SAAS,EAAC,oBAAoB,aACvC,KAAK,EACN,eAAM,SAAS,EAAE,0CAA0C,OAAO,EAAE,YAAG,QAAQ,CAAC,MAAM,GAAQ,IACnF,CACd,EACA,UAAU,CAAC,CAAC,CAAC,CACZ,aAAI,SAAS,EAAC,mBAAmB,YAC9B,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CACvB,uBAAmB,aAAa,CAAC,OAAO,CAAC,IAAhC,OAAO,CAA+B,CAChD,CAAC,GACC,CACN,CAAC,CAAC,CAAC,CACF,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC3B,IACK,GACJ,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { Alert, AlertTitle } from '@mui/material';\nimport './AlertBanner.css';\n\n// AlertBanner is one of the few components that does NOT have getPConnect.\n// So, no need to extend PConnProps\ninterface AlertBannerProps {\n id: string;\n variant: string;\n messages: string[];\n onDismiss?: any;\n}\n\nconst VARIANT_MAP: Record<string, { severity: string; label: string }> = {\n urgent: { severity: 'error', label: 'Error' },\n warning: { severity: 'warning', label: 'Warning' },\n success: { severity: 'success', label: 'Success' },\n info: { severity: 'info', label: 'Info' }\n};\n\nfunction renderMessage(message: string) {\n const colonIndex = message.indexOf(':');\n if (colonIndex === -1) return message;\n return (\n <>\n <strong>{message.slice(0, colonIndex + 1)}</strong>\n {message.slice(colonIndex + 1)}\n </>\n );\n}\n\nexport default function AlertBanner({ id, variant, messages, onDismiss }: AlertBannerProps) {\n const { severity, label } = VARIANT_MAP[variant] ?? VARIANT_MAP.info;\n const isMultiple = messages.length > 1;\n\n return (\n <div id={id}>\n <Alert variant='outlined' severity={severity as any} {...(onDismiss && { onClose: onDismiss })}>\n {isMultiple && (\n <AlertTitle className='alert-banner-title'>\n {label}\n <span className={`alert-banner-badge alert-banner-badge--${variant}`}>{messages.length}</span>\n </AlertTitle>\n )}\n {isMultiple ? (\n <ul className='alert-banner-list'>\n {messages.map(message => (\n <li key={message}>{renderMessage(message)}</li>\n ))}\n </ul>\n ) : (\n renderMessage(messages[0])\n )}\n </Alert>\n </div>\n );\n}\n"]}
@@ -10,6 +10,6 @@ export default function FieldGroupList(props) {
10
10
  }
11
11
  return (_jsx(Grid2, { container: true, spacing: 4, justifyContent: 'space-between', children: _jsx(Grid2, { style: { width: '100%' }, children: _jsxs(Grid2, { container: true, spacing: 1, children: [props.items.map(item => (_jsxs(Grid2, { style: { width: '100%' }, children: [_jsx("b", { children: item.name }), props.onDelete && (_jsx("button", { type: 'button', style: { float: 'right' }, className: 'psdk-utility-button', id: `delete-row-${item.id}`, "aria-label": 'Delete Row', onClick: () => {
12
12
  props.onDelete(item.id);
13
- }, children: _jsx("img", { className: 'psdk-utility-card-action-svg-icon', src: menuIconOverride$ }) })), item.children, _jsx("br", {}), props.onAdd && _jsx(Divider, {}), _jsx("br", {})] }))), props.onAdd && (_jsx(Link, { onClick: props.onAdd, style: { cursor: 'pointer' }, underline: 'hover', children: "+Add" }))] }) }) }));
13
+ }, children: _jsx("img", { className: 'psdk-utility-card-action-svg-icon', src: menuIconOverride$ }) })), item.children, _jsx("br", {}), props.onAdd && _jsx(Divider, {}), _jsx("br", {})] }, item.name))), props.onAdd && (_jsx(Link, { onClick: props.onAdd, style: { cursor: 'pointer' }, underline: 'hover', children: "+Add" }))] }) }) }));
14
14
  }
15
15
  //# sourceMappingURL=FieldGroupList.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroupList.js","sourceRoot":"","sources":["../../../../src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAW5C,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAA0B;IAC/D,IAAI,iBAAiB,GAAG,OAAO,CAAC;IAChC,IAAI,iBAAiB,EAAE,CAAC;QACtB,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,CACL,KAAC,KAAK,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAC,eAAe,YACzD,KAAC,KAAK,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAC7B,MAAC,KAAK,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,aACxB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACvB,MAAC,KAAK,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAC7B,sBAAI,IAAI,CAAC,IAAI,GAAK,EACjB,KAAK,CAAC,QAAQ,IAAI,CACjB,iBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EACzB,SAAS,EAAC,qBAAqB,EAC/B,EAAE,EAAE,cAAc,IAAI,CAAC,EAAE,EAAE,gBAChB,YAAY,EACvB,OAAO,EAAE,GAAG,EAAE;oCACZ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC1B,CAAC,YAED,cAAK,SAAS,EAAC,mCAAmC,EAAC,GAAG,EAAE,iBAAiB,GAAI,GACtE,CACV,EACA,IAAI,CAAC,QAAQ,EACd,cAAM,EACL,KAAK,CAAC,KAAK,IAAI,KAAC,OAAO,KAAG,EAC3B,cAAM,IACA,CACT,CAAC,EACD,KAAK,CAAC,KAAK,IAAI,CACd,KAAC,IAAI,IAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAC,OAAO,qBAEpE,CACR,IACK,GACF,GACF,CACT,CAAC;AACJ,CAAC","sourcesContent":["import Grid2 from '@mui/material/Grid2';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\n\nimport { Utils } from '../../helpers/utils';\n\n// FieldGroupList is one of the few components that does NOT have getPConnect.\n// So, no need to extend PConnProps\ninterface FieldGroupListProps {\n // If any, enter additional props that only exist on this component\n items: any[] | any;\n onDelete: any;\n onAdd: any;\n}\n\nexport default function FieldGroupList(props: FieldGroupListProps) {\n let menuIconOverride$ = 'trash';\n if (menuIconOverride$) {\n menuIconOverride$ = Utils.getImageSrc(menuIconOverride$, Utils.getSDKStaticConentUrl());\n }\n\n return (\n <Grid2 container spacing={4} justifyContent='space-between'>\n <Grid2 style={{ width: '100%' }}>\n <Grid2 container spacing={1}>\n {props.items.map(item => (\n <Grid2 style={{ width: '100%' }}>\n <b>{item.name}</b>\n {props.onDelete && (\n <button\n type='button'\n style={{ float: 'right' }}\n className='psdk-utility-button'\n id={`delete-row-${item.id}`}\n aria-label='Delete Row'\n onClick={() => {\n props.onDelete(item.id);\n }}\n >\n <img className='psdk-utility-card-action-svg-icon' src={menuIconOverride$} />\n </button>\n )}\n {item.children}\n <br />\n {props.onAdd && <Divider />}\n <br />\n </Grid2>\n ))}\n {props.onAdd && (\n <Link onClick={props.onAdd} style={{ cursor: 'pointer' }} underline='hover'>\n +Add\n </Link>\n )}\n </Grid2>\n </Grid2>\n </Grid2>\n );\n}\n"]}
1
+ {"version":3,"file":"FieldGroupList.js","sourceRoot":"","sources":["../../../../src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,qBAAqB,CAAC;AACxC,OAAO,OAAO,MAAM,uBAAuB,CAAC;AAC5C,OAAO,IAAI,MAAM,oBAAoB,CAAC;AAEtC,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAW5C,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAA0B;IAC/D,IAAI,iBAAiB,GAAG,OAAO,CAAC;IAChC,IAAI,iBAAiB,EAAE,CAAC;QACtB,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,iBAAiB,EAAE,KAAK,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,OAAO,CACL,KAAC,KAAK,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,EAAE,cAAc,EAAC,eAAe,YACzD,KAAC,KAAK,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAC7B,MAAC,KAAK,IAAC,SAAS,QAAC,OAAO,EAAE,CAAC,aACxB,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CACvB,MAAC,KAAK,IAAiB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aAC7C,sBAAI,IAAI,CAAC,IAAI,GAAK,EACjB,KAAK,CAAC,QAAQ,IAAI,CACjB,iBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EACzB,SAAS,EAAC,qBAAqB,EAC/B,EAAE,EAAE,cAAc,IAAI,CAAC,EAAE,EAAE,gBAChB,YAAY,EACvB,OAAO,EAAE,GAAG,EAAE;oCACZ,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gCAC1B,CAAC,YAED,cAAK,SAAS,EAAC,mCAAmC,EAAC,GAAG,EAAE,iBAAiB,GAAI,GACtE,CACV,EACA,IAAI,CAAC,QAAQ,EACd,cAAM,EACL,KAAK,CAAC,KAAK,IAAI,KAAC,OAAO,KAAG,EAC3B,cAAM,KAnBI,IAAI,CAAC,IAAI,CAoBb,CACT,CAAC,EACD,KAAK,CAAC,KAAK,IAAI,CACd,KAAC,IAAI,IAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,SAAS,EAAC,OAAO,qBAEpE,CACR,IACK,GACF,GACF,CACT,CAAC;AACJ,CAAC","sourcesContent":["import Grid2 from '@mui/material/Grid2';\nimport Divider from '@mui/material/Divider';\nimport Link from '@mui/material/Link';\n\nimport { Utils } from '../../helpers/utils';\n\n// FieldGroupList is one of the few components that does NOT have getPConnect.\n// So, no need to extend PConnProps\ninterface FieldGroupListProps {\n // If any, enter additional props that only exist on this component\n items: any[] | any;\n onDelete: any;\n onAdd: any;\n}\n\nexport default function FieldGroupList(props: FieldGroupListProps) {\n let menuIconOverride$ = 'trash';\n if (menuIconOverride$) {\n menuIconOverride$ = Utils.getImageSrc(menuIconOverride$, Utils.getSDKStaticConentUrl());\n }\n\n return (\n <Grid2 container spacing={4} justifyContent='space-between'>\n <Grid2 style={{ width: '100%' }}>\n <Grid2 container spacing={1}>\n {props.items.map(item => (\n <Grid2 key={item.name} style={{ width: '100%' }}>\n <b>{item.name}</b>\n {props.onDelete && (\n <button\n type='button'\n style={{ float: 'right' }}\n className='psdk-utility-button'\n id={`delete-row-${item.id}`}\n aria-label='Delete Row'\n onClick={() => {\n props.onDelete(item.id);\n }}\n >\n <img className='psdk-utility-card-action-svg-icon' src={menuIconOverride$} />\n </button>\n )}\n {item.children}\n <br />\n {props.onAdd && <Divider />}\n <br />\n </Grid2>\n ))}\n {props.onAdd && (\n <Link onClick={props.onAdd} style={{ cursor: 'pointer' }} underline='hover'>\n +Add\n </Link>\n )}\n </Grid2>\n </Grid2>\n </Grid2>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectableCard.d.ts","sourceRoot":"","sources":["../../../../src/components/field/SelectableCard/SelectableCard.tsx"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,KAAA,2CA2K3C"}
1
+ {"version":3,"file":"SelectableCard.d.ts","sourceRoot":"","sources":["../../../../src/components/field/SelectableCard/SelectableCard.tsx"],"names":[],"mappings":"AAGA,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,KAAA,2CAyL3C"}
@@ -8,6 +8,17 @@ export default function SelectableCard(props) {
8
8
  return _jsx(Typography, { children: "No Value" });
9
9
  const cardDataSource = readOnly || displayMode === 'DISPLAY_ONLY' ? readOnlyList || [] : dataSource?.source;
10
10
  const imageDescriptionKey = showImageDescription ? imageDescription : undefined;
11
+ const handleCardClick = event => {
12
+ if (disabled || readOnly)
13
+ return;
14
+ // If the click landed on or inside a label/input, native behavior already handles it.
15
+ if (event.target.closest?.('label, input'))
16
+ return;
17
+ // Find the radio/checkbox input inside this card and click it programmatically.
18
+ const input = event.currentTarget.querySelector('input[type="radio"], input[type="checkbox"]');
19
+ if (input)
20
+ input.click();
21
+ };
11
22
  let radioItemSelected = false;
12
23
  return (_jsxs(_Fragment, { children: [(cardDataSource || []).map(item => {
13
24
  const resolvedFields = resolveReferenceFields(item, hideFieldLabels, recordKey, pConn);
@@ -28,7 +39,7 @@ export default function SelectableCard(props) {
28
39
  if (displayMode === 'DISPLAY_ONLY') {
29
40
  return cardContent;
30
41
  }
31
- const component = (_jsx("div", { style: { paddingTop: '15px' }, children: _jsx(Card, { className: className, style: { display: 'flex', flexDirection: 'column', height: '100%' }, "data-testid": testId, children: _jsxs(CardContent, { style: {
42
+ const component = (_jsx("div", { style: { paddingTop: '15px' }, children: _jsx(Card, { className: className, style: { display: 'flex', flexDirection: 'column', height: '100%', cursor: disabled || readOnly ? 'default' : 'pointer' }, "data-testid": testId, onClick: handleCardClick, children: _jsxs(CardContent, { style: {
32
43
  ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { display: 'flex', height: '100%' }),
33
44
  ...(imagePosition === 'inline-end' && { flexDirection: 'row-reverse' })
34
45
  }, children: [_jsx("div", { style: {
@@ -43,7 +54,7 @@ export default function SelectableCard(props) {
43
54
  maxWidth: '100%'
44
55
  } })) }), _jsxs("div", { style: {
45
56
  ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { width: '60%' })
46
- }, children: [type === 'radio' ? (_jsx(FormControlLabel, { control: _jsx(Radio, { value: item[recordKey], checked: radioBtnValue === item[recordKey], onChange: onChange, onBlur: onBlur, onClick: onClick, onKeyDown: onKeyDown, disabled: disabled, ...additionalProps }), label: _jsx(Typography, { variant: 'body1', children: item[cardLabel] }) })) : (_jsx(FormControlLabel, { control: _jsx(Checkbox, { id: item[recordKey], getPConnect: getPConnect, checked: readOnlyList.some(data => data[recordKey] === item[recordKey]), onChange: onChange, onBlur: onBlur, onClick: onClick, onKeyDown: onKeyDown, disabled: disabled, ...additionalProps }), label: _jsx(Typography, { variant: 'body1', children: item[cardLabel] }) })), commonProps.fields.map((field, index) => (_jsxs("div", { style: {
57
+ }, children: [type === 'radio' ? (_jsx(FormControlLabel, { control: _jsx(Radio, { value: item[recordKey], checked: radioBtnValue === item[recordKey], onChange: onChange, onBlur: onBlur, onClick: onClick, onKeyDown: onKeyDown, disabled: disabled || readOnly, ...additionalProps }), label: _jsx(Typography, { variant: 'body1', children: item[cardLabel] }) })) : (_jsx(FormControlLabel, { control: _jsx(Checkbox, { id: item[recordKey], getPConnect: getPConnect, checked: readOnlyList.some(data => data[recordKey] === item[recordKey]), onChange: onChange, onBlur: onBlur, onClick: onClick, onKeyDown: onKeyDown, disabled: disabled || readOnly, ...additionalProps }), label: _jsx(Typography, { variant: 'body1', children: item[cardLabel] }) })), commonProps.fields.map((field, index) => (_jsxs("div", { style: {
47
58
  fontSize: '0.875rem',
48
59
  ...(field.type !== 'TextArea' && { display: 'grid', gridTemplateColumns: '1fr 1fr' }),
49
60
  margin: '5px'
@@ -1 +1 @@
1
- {"version":3,"file":"SelectableCard.js","sourceRoot":"","sources":["../../../../src/components/field/SelectableCard/SelectableCard.tsx"],"names":[],"mappings":"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","sourcesContent":["import { Radio, Checkbox, FormControlLabel, Card, CardContent, Typography } from '@mui/material';\nimport { resolveReferenceFields } from './utils';\n\nexport default function SelectableCard(props) {\n const {\n getPConnect,\n type,\n image: { imagePosition, imageSize, showImageDescription, imageField = '', imageDescription = '' },\n dataSource,\n recordKey = '',\n className,\n cardLabel,\n hideFieldLabels = false,\n readOnly,\n disabled,\n readOnlyList = [],\n displayMode,\n radioBtnValue,\n onChange,\n onBlur,\n onClick,\n onKeyDown,\n additionalProps,\n testId,\n setIsRadioCardSelected,\n showNoValue = false\n } = props;\n\n const pConn = getPConnect();\n\n if (showNoValue) return <Typography>No Value</Typography>;\n\n const cardDataSource = readOnly || displayMode === 'DISPLAY_ONLY' ? readOnlyList || [] : dataSource?.source;\n const imageDescriptionKey = showImageDescription ? imageDescription : undefined;\n\n let radioItemSelected = false;\n\n return (\n <>\n {(cardDataSource || []).map(item => {\n const resolvedFields = resolveReferenceFields(item, hideFieldLabels, recordKey, pConn);\n\n const commonProps = {\n id: item[recordKey],\n key: item[recordKey],\n fields: resolvedFields,\n label: item[cardLabel]\n };\n\n const image = item[imageField]\n ? {\n src: item[imageField],\n alt: showImageDescription && imageDescriptionKey ? item[imageDescriptionKey] : '',\n style: { width: imageSize, objectPosition: imagePosition }\n }\n : undefined;\n\n const cardContent = (\n <Card className={className} style={{ display: 'flex' }} data-testid={testId}>\n {image && <img src={image.src} alt={image.alt} style={{ width: '100px' }} />}\n <CardContent>\n <Typography variant='body1'>{item[cardLabel]}</Typography>\n {commonProps.fields.map((field, index) => (\n <Typography key={index} variant='body2'>\n {field.value}\n </Typography>\n ))}\n </CardContent>\n </Card>\n );\n\n if (displayMode === 'DISPLAY_ONLY') {\n return cardContent;\n }\n\n const component = (\n <div key={item[recordKey]} style={{ paddingTop: '15px' }}>\n <Card className={className} style={{ display: 'flex', flexDirection: 'column', height: '100%' }} data-testid={testId}>\n <CardContent\n style={{\n ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { display: 'flex', height: '100%' }),\n ...(imagePosition === 'inline-end' && { flexDirection: 'row-reverse' })\n }}\n >\n <div\n style={{\n ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { width: '40%' })\n }}\n >\n {image && (\n <img\n src={image.src}\n alt={image.alt}\n style={{\n width: '100%',\n backgroundColor: 'transparent',\n aspectRatio: '16 / 9',\n maxHeight: '100%',\n height: '100%',\n objectFit: 'contain',\n maxWidth: '100%'\n }}\n />\n )}\n </div>\n <div\n style={{\n ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { width: '60%' })\n }}\n >\n {type === 'radio' ? (\n <FormControlLabel\n control={\n <Radio\n value={item[recordKey]}\n checked={radioBtnValue === item[recordKey]}\n onChange={onChange}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n disabled={disabled}\n {...additionalProps}\n />\n }\n label={<Typography variant='body1'>{item[cardLabel]}</Typography>}\n />\n ) : (\n <FormControlLabel\n control={\n <Checkbox\n id={item[recordKey]}\n getPConnect={getPConnect}\n checked={readOnlyList.some(data => data[recordKey] === item[recordKey])}\n onChange={onChange}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n disabled={disabled}\n {...additionalProps}\n />\n }\n label={<Typography variant='body1'>{item[cardLabel]}</Typography>}\n />\n )}\n\n {commonProps.fields.map((field, index) => (\n <div\n key={index}\n style={{\n fontSize: '0.875rem',\n ...(field.type !== 'TextArea' && { display: 'grid', gridTemplateColumns: '1fr 1fr' }),\n margin: '5px'\n }}\n >\n {field.name && <div>{field.name}</div>}\n <div>{field?.value?.props.value}</div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n\n if (type === 'radio' && radioBtnValue === item[recordKey]) {\n radioItemSelected = true;\n }\n\n return component;\n })}\n\n {type === 'radio' && setIsRadioCardSelected && setIsRadioCardSelected(radioItemSelected)}\n </>\n );\n}\n"]}
1
+ {"version":3,"file":"SelectableCard.js","sourceRoot":"","sources":["../../../../src/components/field/SelectableCard/SelectableCard.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACjG,OAAO,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEjD,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK;IAC1C,MAAM,EACJ,WAAW,EACX,IAAI,EACJ,KAAK,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE,oBAAoB,EAAE,UAAU,GAAG,EAAE,EAAE,gBAAgB,GAAG,EAAE,EAAE,EACjG,UAAU,EACV,SAAS,GAAG,EAAE,EACd,SAAS,EACT,SAAS,EACT,eAAe,GAAG,KAAK,EACvB,QAAQ,EACR,QAAQ,EACR,YAAY,GAAG,EAAE,EACjB,WAAW,EACX,aAAa,EACb,QAAQ,EACR,MAAM,EACN,OAAO,EACP,SAAS,EACT,eAAe,EACf,MAAM,EACN,sBAAsB,EACtB,WAAW,GAAG,KAAK,EACpB,GAAG,KAAK,CAAC;IAEV,MAAM,KAAK,GAAG,WAAW,EAAE,CAAC;IAE5B,IAAI,WAAW;QAAE,OAAO,KAAC,UAAU,2BAAsB,CAAC;IAE1D,MAAM,cAAc,GAAG,QAAQ,IAAI,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5G,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC;IAEhF,MAAM,eAAe,GAAG,KAAK,CAAC,EAAE;QAC9B,IAAI,QAAQ,IAAI,QAAQ;YAAE,OAAO;QACjC,sFAAsF;QACtF,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,cAAc,CAAC;YAAE,OAAO;QACnD,gFAAgF;QAChF,MAAM,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,6CAA6C,CAAC,CAAC;QAC/F,IAAI,KAAK;YAAE,KAAK,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC,CAAC;IAEF,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,OAAO,CACL,8BACG,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;gBACjC,MAAM,cAAc,GAAG,sBAAsB,CAAC,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;gBAEvF,MAAM,WAAW,GAAG;oBAClB,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC;oBACpB,MAAM,EAAE,cAAc;oBACtB,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC;iBACvB,CAAC;gBAEF,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;oBAC5B,CAAC,CAAC;wBACE,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;wBACrB,GAAG,EAAE,oBAAoB,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE;wBACjF,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,aAAa,EAAE;qBAC3D;oBACH,CAAC,CAAC,SAAS,CAAC;gBAEd,MAAM,WAAW,GAAG,CAClB,MAAC,IAAI,IAAC,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAe,MAAM,aACxE,KAAK,IAAI,cAAK,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAI,EAC5E,MAAC,WAAW,eACV,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,YAAE,IAAI,CAAC,SAAS,CAAC,GAAc,EACzD,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,KAAC,UAAU,IAAa,OAAO,EAAC,OAAO,YACpC,KAAK,CAAC,KAAK,IADG,KAAK,CAET,CACd,CAAC,IACU,IACT,CACR,CAAC;gBAEF,IAAI,WAAW,KAAK,cAAc,EAAE,CAAC;oBACnC,OAAO,WAAW,CAAC;gBACrB,CAAC;gBAED,MAAM,SAAS,GAAG,CAChB,cAA2B,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,YACtD,KAAC,IAAI,IACH,SAAS,EAAE,SAAS,EACpB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,iBAC5G,MAAM,EACnB,OAAO,EAAE,eAAe,YAExB,MAAC,WAAW,IACV,KAAK,EAAE;gCACL,GAAG,CAAC,CAAC,aAAa,KAAK,cAAc,IAAI,aAAa,KAAK,YAAY,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;gCAChH,GAAG,CAAC,aAAa,KAAK,YAAY,IAAI,EAAE,aAAa,EAAE,aAAa,EAAE,CAAC;6BACxE,aAED,cACE,KAAK,EAAE;wCACL,GAAG,CAAC,CAAC,aAAa,KAAK,cAAc,IAAI,aAAa,KAAK,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;qCAC9F,YAEA,KAAK,IAAI,CACR,cACE,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,GAAG,EAAE,KAAK,CAAC,GAAG,EACd,KAAK,EAAE;4CACL,KAAK,EAAE,MAAM;4CACb,eAAe,EAAE,aAAa;4CAC9B,WAAW,EAAE,QAAQ;4CACrB,SAAS,EAAE,MAAM;4CACjB,MAAM,EAAE,MAAM;4CACd,SAAS,EAAE,SAAS;4CACpB,QAAQ,EAAE,MAAM;yCACjB,GACD,CACH,GACG,EACN,eACE,KAAK,EAAE;wCACL,GAAG,CAAC,CAAC,aAAa,KAAK,cAAc,IAAI,aAAa,KAAK,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;qCAC9F,aAEA,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,CAClB,KAAC,gBAAgB,IACf,OAAO,EACL,KAAC,KAAK,IACJ,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,EACtB,OAAO,EAAE,aAAa,KAAK,IAAI,CAAC,SAAS,CAAC,EAC1C,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,IAAI,QAAQ,KAC1B,eAAe,GACnB,EAEJ,KAAK,EAAE,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,YAAE,IAAI,CAAC,SAAS,CAAC,GAAc,GACjE,CACH,CAAC,CAAC,CAAC,CACF,KAAC,gBAAgB,IACf,OAAO,EACL,KAAC,QAAQ,IACP,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EACnB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,EACvE,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,IAAI,QAAQ,KAC1B,eAAe,GACnB,EAEJ,KAAK,EAAE,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,YAAE,IAAI,CAAC,SAAS,CAAC,GAAc,GACjE,CACH,EAEA,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACxC,eAEE,KAAK,EAAE;gDACL,QAAQ,EAAE,UAAU;gDACpB,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,EAAE,SAAS,EAAE,CAAC;gDACrF,MAAM,EAAE,KAAK;6CACd,aAEA,KAAK,CAAC,IAAI,IAAI,wBAAM,KAAK,CAAC,IAAI,GAAO,EACtC,wBAAM,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,GAAO,KARjC,KAAK,CASN,CACP,CAAC,IACE,IACM,GACT,IAzFC,IAAI,CAAC,SAAS,CAAC,CA0FnB,CACP,CAAC;gBAEF,IAAI,IAAI,KAAK,OAAO,IAAI,aAAa,KAAK,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1D,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC;gBAED,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC,EAED,IAAI,KAAK,OAAO,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,iBAAiB,CAAC,IACvF,CACJ,CAAC;AACJ,CAAC","sourcesContent":["import { Radio, Checkbox, FormControlLabel, Card, CardContent, Typography } from '@mui/material';\nimport { resolveReferenceFields } from './utils';\n\nexport default function SelectableCard(props) {\n const {\n getPConnect,\n type,\n image: { imagePosition, imageSize, showImageDescription, imageField = '', imageDescription = '' },\n dataSource,\n recordKey = '',\n className,\n cardLabel,\n hideFieldLabels = false,\n readOnly,\n disabled,\n readOnlyList = [],\n displayMode,\n radioBtnValue,\n onChange,\n onBlur,\n onClick,\n onKeyDown,\n additionalProps,\n testId,\n setIsRadioCardSelected,\n showNoValue = false\n } = props;\n\n const pConn = getPConnect();\n\n if (showNoValue) return <Typography>No Value</Typography>;\n\n const cardDataSource = readOnly || displayMode === 'DISPLAY_ONLY' ? readOnlyList || [] : dataSource?.source;\n const imageDescriptionKey = showImageDescription ? imageDescription : undefined;\n\n const handleCardClick = event => {\n if (disabled || readOnly) return;\n // If the click landed on or inside a label/input, native behavior already handles it.\n if (event.target.closest?.('label, input')) return;\n // Find the radio/checkbox input inside this card and click it programmatically.\n const input = event.currentTarget.querySelector('input[type=\"radio\"], input[type=\"checkbox\"]');\n if (input) input.click();\n };\n\n let radioItemSelected = false;\n\n return (\n <>\n {(cardDataSource || []).map(item => {\n const resolvedFields = resolveReferenceFields(item, hideFieldLabels, recordKey, pConn);\n\n const commonProps = {\n id: item[recordKey],\n key: item[recordKey],\n fields: resolvedFields,\n label: item[cardLabel]\n };\n\n const image = item[imageField]\n ? {\n src: item[imageField],\n alt: showImageDescription && imageDescriptionKey ? item[imageDescriptionKey] : '',\n style: { width: imageSize, objectPosition: imagePosition }\n }\n : undefined;\n\n const cardContent = (\n <Card className={className} style={{ display: 'flex' }} data-testid={testId}>\n {image && <img src={image.src} alt={image.alt} style={{ width: '100px' }} />}\n <CardContent>\n <Typography variant='body1'>{item[cardLabel]}</Typography>\n {commonProps.fields.map((field, index) => (\n <Typography key={index} variant='body2'>\n {field.value}\n </Typography>\n ))}\n </CardContent>\n </Card>\n );\n\n if (displayMode === 'DISPLAY_ONLY') {\n return cardContent;\n }\n\n const component = (\n <div key={item[recordKey]} style={{ paddingTop: '15px' }}>\n <Card\n className={className}\n style={{ display: 'flex', flexDirection: 'column', height: '100%', cursor: disabled || readOnly ? 'default' : 'pointer' }}\n data-testid={testId}\n onClick={handleCardClick}\n >\n <CardContent\n style={{\n ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { display: 'flex', height: '100%' }),\n ...(imagePosition === 'inline-end' && { flexDirection: 'row-reverse' })\n }}\n >\n <div\n style={{\n ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { width: '40%' })\n }}\n >\n {image && (\n <img\n src={image.src}\n alt={image.alt}\n style={{\n width: '100%',\n backgroundColor: 'transparent',\n aspectRatio: '16 / 9',\n maxHeight: '100%',\n height: '100%',\n objectFit: 'contain',\n maxWidth: '100%'\n }}\n />\n )}\n </div>\n <div\n style={{\n ...((imagePosition === 'inline-start' || imagePosition === 'inline-end') && { width: '60%' })\n }}\n >\n {type === 'radio' ? (\n <FormControlLabel\n control={\n <Radio\n value={item[recordKey]}\n checked={radioBtnValue === item[recordKey]}\n onChange={onChange}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n disabled={disabled || readOnly}\n {...additionalProps}\n />\n }\n label={<Typography variant='body1'>{item[cardLabel]}</Typography>}\n />\n ) : (\n <FormControlLabel\n control={\n <Checkbox\n id={item[recordKey]}\n getPConnect={getPConnect}\n checked={readOnlyList.some(data => data[recordKey] === item[recordKey])}\n onChange={onChange}\n onBlur={onBlur}\n onClick={onClick}\n onKeyDown={onKeyDown}\n disabled={disabled || readOnly}\n {...additionalProps}\n />\n }\n label={<Typography variant='body1'>{item[cardLabel]}</Typography>}\n />\n )}\n\n {commonProps.fields.map((field, index) => (\n <div\n key={index}\n style={{\n fontSize: '0.875rem',\n ...(field.type !== 'TextArea' && { display: 'grid', gridTemplateColumns: '1fr 1fr' }),\n margin: '5px'\n }}\n >\n {field.name && <div>{field.name}</div>}\n <div>{field?.value?.props.value}</div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n </div>\n );\n\n if (type === 'radio' && radioBtnValue === item[recordKey]) {\n radioItemSelected = true;\n }\n\n return component;\n })}\n\n {type === 'radio' && setIsRadioCardSelected && setIsRadioCardSelected(radioItemSelected)}\n </>\n );\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"Assignment.d.ts","sourceRoot":"","sources":["../../../../src/components/infra/Assignment/Assignment.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAQ3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,eAAgB,SAAQ,UAAU;IAE1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC;IAEf,aAAa,EAAE,GAAG,EAAE,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,eAAe,CAAC,2CAmV3E"}
1
+ {"version":3,"file":"Assignment.d.ts","sourceRoot":"","sources":["../../../../src/components/infra/Assignment/Assignment.tsx"],"names":[],"mappings":"AAAA,OAAc,EAAE,KAAK,iBAAiB,EAAuB,MAAM,OAAO,CAAC;AAU3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,eAAgB,SAAQ,UAAU;IAE1C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,GAAG,EAAE,CAAC;IAEf,aAAa,EAAE,GAAG,EAAE,CAAC;CACtB;AAED,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,KAAK,EAAE,iBAAiB,CAAC,eAAe,CAAC,2CA0V3E"}
@@ -5,11 +5,14 @@ import IconButton from '@mui/material/IconButton';
5
5
  import CloseIcon from '@mui/icons-material/Close';
6
6
  import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';
7
7
  import { useFocusFirstField, useScrolltoTop } from '../../../hooks';
8
+ import AlertBanner from '../../designSystemExtension/AlertBanner/AlertBanner';
9
+ import { useValidationBanner } from './useValidationBanner';
8
10
  export default function Assignment(props) {
9
11
  // Get emitted components from map (so we can get any override that may exist)
10
12
  const AssignmentCard = getComponentFromMap('AssignmentCard');
11
13
  const MultiStep = getComponentFromMap('MultiStep');
12
14
  const { getPConnect, children, itemKey = '', isInModal = false, banners = [] } = props;
15
+ const validationMessages = useValidationBanner(itemKey);
13
16
  const thePConn = getPConnect();
14
17
  const [bHasNavigation, setHasNavigation] = useState(false);
15
18
  const [actionButtons, setActionButtons] = useState([]);
@@ -68,8 +71,9 @@ export default function Assignment(props) {
68
71
  return formedSteps;
69
72
  }
70
73
  const scrollId = window.location.href.includes('embedded') ? '#pega-part-of-page' : '#portal';
74
+ const currentAssignmentViewName = getPConnect().getCaseInfo().getCurrentAssignmentViewName();
71
75
  useScrolltoTop(scrollId, children);
72
- useFocusFirstField('Assignment', children);
76
+ useFocusFirstField('Assignment', currentAssignmentViewName);
73
77
  useEffect(() => {
74
78
  if (children) {
75
79
  const firstChild = Array.isArray(children) ? children[0] : children;
@@ -246,6 +250,6 @@ export default function Assignment(props) {
246
250
  }), `${pageReference}.${prop[1]}`, `${context}/${pageReference}`, context);
247
251
  });
248
252
  }
249
- return (_jsxs("div", { id: 'Assignment', children: [banners, bHasNavigation ? (_jsxs(_Fragment, { children: [_jsx(MultiStep, { getPConnect: getPConnect, itemKey: itemKey, actionButtons: actionButtons, onButtonPress: buttonPress, bIsVertical: bIsVertical, arCurrentStepIndicies: arCurrentStepIndicies, arNavigationSteps: arNavigationSteps, children: children }), _jsx(Snackbar, { open: showSnackbar, autoHideDuration: 3000, onClose: handleSnackbarClose, message: snackbarMessage, action: _jsx(IconButton, { size: 'small', "aria-label": 'close', color: 'inherit', onClick: handleSnackbarClose, children: _jsx(CloseIcon, { fontSize: 'small' }) }) })] })) : (_jsxs(_Fragment, { children: [_jsx(AssignmentCard, { getPConnect: getPConnect, itemKey: itemKey, actionButtons: actionButtons, onButtonPress: buttonPress, children: children }), _jsx(Snackbar, { open: showSnackbar, autoHideDuration: 3000, onClose: handleSnackbarClose, message: snackbarMessage, action: _jsx(IconButton, { size: 'small', "aria-label": 'close', color: 'inherit', onClick: handleSnackbarClose, children: _jsx(CloseIcon, { fontSize: 'small' }) }) })] }))] }));
253
+ return (_jsxs("div", { id: 'Assignment', children: [validationMessages.length > 0 && (_jsx("div", { style: { marginBottom: '1rem' }, children: _jsx(AlertBanner, { id: `validation-banner-${itemKey}`, variant: 'urgent', messages: validationMessages }) })), banners, bHasNavigation ? (_jsxs(_Fragment, { children: [_jsx(MultiStep, { getPConnect: getPConnect, itemKey: itemKey, actionButtons: actionButtons, onButtonPress: buttonPress, bIsVertical: bIsVertical, arCurrentStepIndicies: arCurrentStepIndicies, arNavigationSteps: arNavigationSteps, children: children }), _jsx(Snackbar, { open: showSnackbar, autoHideDuration: 3000, onClose: handleSnackbarClose, message: snackbarMessage, action: _jsx(IconButton, { size: 'small', "aria-label": 'close', color: 'inherit', onClick: handleSnackbarClose, children: _jsx(CloseIcon, { fontSize: 'small' }) }) })] })) : (_jsxs(_Fragment, { children: [_jsx(AssignmentCard, { getPConnect: getPConnect, itemKey: itemKey, actionButtons: actionButtons, onButtonPress: buttonPress, children: children }), _jsx(Snackbar, { open: showSnackbar, autoHideDuration: 3000, onClose: handleSnackbarClose, message: snackbarMessage, action: _jsx(IconButton, { size: 'small', "aria-label": 'close', color: 'inherit', onClick: handleSnackbarClose, children: _jsx(CloseIcon, { fontSize: 'small' }) }) })] }))] }));
250
254
  }
251
255
  //# sourceMappingURL=Assignment.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Assignment.js","sourceRoot":"","sources":["../../../../src/components/infra/Assignment/Assignment.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type PropsWithChildren, useEffect, useState } from 'react';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';\nimport { useFocusFirstField, useScrolltoTop } from '../../../hooks';\n\nimport type { PConnProps } from '../../../types/PConnProps';\n\ninterface AssignmentProps extends PConnProps {\n // If any, enter additional props that only exist on this component\n itemKey: string;\n isInModal: boolean;\n banners: any[];\n\n actionButtons: any[];\n}\n\nexport default function Assignment(props: PropsWithChildren<AssignmentProps>) {\n // Get emitted components from map (so we can get any override that may exist)\n const AssignmentCard = getComponentFromMap('AssignmentCard');\n const MultiStep = getComponentFromMap('MultiStep');\n\n const { getPConnect, children, itemKey = '', isInModal = false, banners = [] } = props;\n const thePConn = getPConnect();\n\n const [bHasNavigation, setHasNavigation] = useState(false);\n const [actionButtons, setActionButtons] = useState([]);\n const [bIsVertical, setIsVertical] = useState(false);\n const [arCurrentStepIndicies, setArCurrentStepIndicies] = useState<any[]>([]);\n const [arNavigationSteps, setArNavigationSteps] = useState<any[]>([]);\n\n const actionsAPI = thePConn.getActionsApi();\n const localizedVal = PCore.getLocaleUtils().getLocaleValue;\n const localizationService = thePConn.getLocalizationService();\n const localeCategory = 'Assignment';\n\n // store off bound functions to above pointers\n const finishAssignment = actionsAPI.finishAssignment.bind(actionsAPI);\n const navigateToStep = actionsAPI.navigateToStep.bind(actionsAPI);\n const cancelAssignment = actionsAPI.cancelAssignment.bind(actionsAPI);\n const saveAssignment = actionsAPI.saveAssignment?.bind(actionsAPI);\n const cancelCreateStageAssignment = actionsAPI.cancelCreateStageAssignment.bind(actionsAPI);\n const approveCase = actionsAPI.approveCase?.bind(actionsAPI);\n const rejectCase = actionsAPI.rejectCase?.bind(actionsAPI);\n // const showPage = actionsAPI.showPage.bind(actionsAPI);\n\n const [showSnackbar, setShowSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n function findCurrentIndicies(arStepperSteps: any[], arIndicies: number[], depth: number): number[] {\n let count = 0;\n arStepperSteps.forEach(step => {\n if (step.visited_status === 'current') {\n arIndicies[depth] = count;\n\n // add in\n step.step_status = '';\n } else if (step.visited_status === 'success') {\n count += 1;\n step.step_status = 'completed';\n } else {\n count += 1;\n step.step_status = '';\n }\n\n if (step.steps) {\n arIndicies = findCurrentIndicies(step.steps, arIndicies, depth + 1);\n }\n });\n\n return arIndicies;\n }\n\n function getStepsInfo(steps, formedSteps: any = []) {\n steps.forEach(step => {\n if (step.name) {\n step.name = localizationService.getLocalizedText(step.name);\n }\n if (step.steps) {\n formedSteps = getStepsInfo(step.steps, formedSteps);\n } else {\n formedSteps.push(step);\n }\n });\n return formedSteps;\n }\n\n const scrollId = window.location.href.includes('embedded') ? '#pega-part-of-page' : '#portal';\n useScrolltoTop(scrollId, children);\n useFocusFirstField('Assignment', children);\n\n useEffect(() => {\n if (children) {\n const firstChild = Array.isArray(children) ? children[0] : children;\n const oWorkItem = firstChild.props.getPConnect();\n const oWorkData = oWorkItem.getDataObject();\n const oData: any = thePConn.getDataObject(''); // 1st arg empty string until typedefs allow it to be optional\n const caseInfo = oData?.caseInfo;\n if (!oWorkData?.caseInfo || oWorkData.caseInfo.assignments === null || !caseInfo) {\n return;\n }\n\n // Set action buttons\n if (caseInfo.actionButtons) {\n setActionButtons(caseInfo.actionButtons);\n }\n\n // Handle navigation setup\n const navigation = caseInfo.navigation;\n if (!navigation) {\n setHasNavigation(false);\n return;\n }\n\n const isStandardTemplate = navigation.template?.toLowerCase() === 'standard';\n const hasSingleStep = navigation.steps?.length === 1;\n const shouldHideNavigation = isStandardTemplate || hasSingleStep;\n\n setHasNavigation(!shouldHideNavigation);\n\n if (shouldHideNavigation) {\n return;\n }\n\n // set vertical navigation\n const isVerticalTemplate = navigation.template?.toLowerCase() === 'vertical';\n setIsVertical(isVerticalTemplate);\n\n if (navigation.steps) {\n const steps = JSON.parse(JSON.stringify(navigation.steps));\n const formedSteps = getStepsInfo(steps);\n setArNavigationSteps(formedSteps);\n }\n\n setArCurrentStepIndicies(findCurrentIndicies(arNavigationSteps, arCurrentStepIndicies, 0));\n }\n }, [children]);\n\n function showToast(message: string) {\n const theMessage = `Assignment: ${message}`;\n\n console.error(theMessage);\n setSnackbarMessage(message);\n setShowSnackbar(true);\n }\n\n function handleSnackbarClose(event: React.SyntheticEvent<any> | Event, reason?: string) {\n if (reason === 'clickaway') {\n return;\n }\n setShowSnackbar(false);\n }\n\n function onSaveActionSuccess(data) {\n actionsAPI.cancelAssignment(itemKey, false).then(() => {\n PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CREATE_STAGE_SAVED, data);\n });\n }\n\n function buttonPress(sAction: string, sButtonType: string) {\n if (sButtonType === 'secondary') {\n switch (sAction) {\n case 'navigateToStep': {\n const navigatePromise = navigateToStep('previous', itemKey);\n\n navigatePromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Navigation failed!', localeCategory)}`);\n });\n\n break;\n }\n\n case 'saveAssignment': {\n const caseID = thePConn.getCaseInfo().getKey();\n const assignmentID = thePConn.getCaseInfo().getAssignmentID();\n const savePromise = saveAssignment(itemKey);\n\n savePromise\n .then(() => {\n const caseType = thePConn.getCaseInfo().c11nEnv.getValue(PCore.getConstants().CASE_INFO.CASE_TYPE_ID);\n onSaveActionSuccess({ caseType, caseID, assignmentID });\n })\n .catch(() => {\n showToast(`${localizedVal('Save failed', localeCategory)}`);\n });\n\n break;\n }\n\n case 'cancelAssignment': {\n // check if create stage (modal)\n const { PUB_SUB_EVENTS } = PCore.getConstants();\n const { publish } = PCore.getPubSubUtils();\n const isAssignmentInCreateStage = thePConn.getCaseInfo().isAssignmentInCreateStage();\n const isLocalAction =\n thePConn.getCaseInfo().isLocalAction() ||\n (PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION && getPConnect().getValue(PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION));\n if (isAssignmentInCreateStage && isInModal && !isLocalAction) {\n const cancelPromise = cancelCreateStageAssignment(itemKey);\n\n cancelPromise\n .then(data => {\n publish(PUB_SUB_EVENTS.EVENT_CANCEL, data);\n })\n .catch(() => {\n showToast(`${localizedVal('Cancel failed!', localeCategory)}`);\n });\n } else {\n const cancelPromise = cancelAssignment(itemKey, false);\n\n cancelPromise\n .then(data => {\n publish(PUB_SUB_EVENTS.EVENT_CANCEL, data);\n })\n .catch(() => {\n showToast(`${localizedVal('Cancel failed!', localeCategory)}`);\n });\n }\n break;\n }\n\n case 'rejectCase': {\n const rejectPromise = rejectCase(itemKey);\n\n rejectPromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Rejection failed!', localeCategory)}`);\n });\n\n break;\n }\n\n default:\n break;\n }\n } else if (sButtonType === 'primary') {\n switch (sAction) {\n case 'finishAssignment': {\n const finishPromise = finishAssignment(itemKey);\n\n finishPromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Submit failed!', localeCategory)}`);\n });\n\n break;\n }\n\n case 'approveCase': {\n const approvePromise = approveCase(itemKey);\n\n approvePromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Approve failed!', localeCategory)}`);\n });\n\n break;\n }\n\n default:\n break;\n }\n }\n }\n\n function getRefreshProps(refreshConditions) {\n // refreshConditions cuurently supports only \"Changes\" event\n if (!refreshConditions) {\n return [];\n }\n return refreshConditions.filter(item => item.event && item.event === 'Changes').map(item => [item.field, item.field?.substring(1)]) || [];\n }\n\n // expected format of refreshConditions : [{field: \".Name\", event: \"Changes\"}]\n const refreshConditions = thePConn.getCaseInfo()?.getActionRefreshConditions();\n const context = thePConn.getContextName();\n const pageReference = thePConn.getPageReference();\n\n // refresh api de-registration\n PCore.getRefreshManager().deRegisterForRefresh(context);\n\n // refresh api registration\n const refreshProps = getRefreshProps(refreshConditions);\n const caseKey = thePConn.getCaseInfo().getKey();\n const refreshOptions = {\n autoDetectRefresh: true,\n preserveClientChanges: false\n };\n if (refreshProps.length > 0) {\n refreshProps.forEach(prop => {\n PCore.getRefreshManager().registerForRefresh(\n 'PROP_CHANGE',\n thePConn.getActionsApi().refreshCaseView.bind(thePConn.getActionsApi(), caseKey, '', pageReference, {\n ...refreshOptions,\n refreshFor: prop[0]\n }),\n `${pageReference}.${prop[1]}`,\n `${context}/${pageReference}`,\n context\n );\n });\n }\n\n return (\n <div id='Assignment'>\n {banners}\n {bHasNavigation ? (\n <>\n <MultiStep\n getPConnect={getPConnect}\n itemKey={itemKey}\n actionButtons={actionButtons}\n onButtonPress={buttonPress}\n bIsVertical={bIsVertical}\n arCurrentStepIndicies={arCurrentStepIndicies}\n arNavigationSteps={arNavigationSteps}\n >\n {children}\n </MultiStep>\n <Snackbar\n open={showSnackbar}\n autoHideDuration={3000}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n action={\n <IconButton size='small' aria-label='close' color='inherit' onClick={handleSnackbarClose}>\n <CloseIcon fontSize='small' />\n </IconButton>\n }\n />\n </>\n ) : (\n <>\n <AssignmentCard getPConnect={getPConnect} itemKey={itemKey} actionButtons={actionButtons} onButtonPress={buttonPress}>\n {children}\n </AssignmentCard>\n <Snackbar\n open={showSnackbar}\n autoHideDuration={3000}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n action={\n <IconButton size='small' aria-label='close' color='inherit' onClick={handleSnackbarClose}>\n <CloseIcon fontSize='small' />\n </IconButton>\n }\n />\n </>\n )}\n </div>\n );\n}\n\n// From WC SDK\n// const aHtml = html`\n// ${this.bHasNavigation?\n// html`\n// <div class=\"psdk-stepper\">\n// <multi-step-component .pConn=${this.pConn} .arChildren=${this.arChildren} itemKey=${this.itemKey}\n// .arMainButtons=${this.arMainButtons} .arSecondaryButtons=${this.arSecondaryButtons}\n// .bIsVertical=${this.bIsVertical} .arCurrentStepIndicies=${this.arCurrentStepIndicies}\n// .arNavigationSteps=${this.arNavigationSteps}\n// @MultiStepActionButtonClick=\"${this._onActionButtonClick}\">\n// </multi-step-component>\n// <lit-toast></lit-toast>\n// </div>`\n// :\n// html`\n// <div>\n// <assignment-card-component .pConn=${this.pConn} .arChildren=${this.arChildren} itemKey=${this.itemKey}\n// .arMainButtons=${this.arMainButtons} .arSecondaryButtons=${this.arSecondaryButtons}\n// @AssignmentActionButtonClick=\"${this._onActionButtonClick}\">\n// </assignment-card-component>\n// <lit-toast></lit-toast>\n// </div>`}\n// `;\n"]}
1
+ {"version":3,"file":"Assignment.js","sourceRoot":"","sources":["../../../../src/components/infra/Assignment/Assignment.tsx"],"names":[],"mappings":"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","sourcesContent":["import React, { type PropsWithChildren, useEffect, useState } from 'react';\nimport Snackbar from '@mui/material/Snackbar';\nimport IconButton from '@mui/material/IconButton';\nimport CloseIcon from '@mui/icons-material/Close';\n\nimport { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';\nimport { useFocusFirstField, useScrolltoTop } from '../../../hooks';\nimport AlertBanner from '../../designSystemExtension/AlertBanner/AlertBanner';\nimport { useValidationBanner } from './useValidationBanner';\n\nimport type { PConnProps } from '../../../types/PConnProps';\n\ninterface AssignmentProps extends PConnProps {\n // If any, enter additional props that only exist on this component\n itemKey: string;\n isInModal: boolean;\n banners: any[];\n\n actionButtons: any[];\n}\n\nexport default function Assignment(props: PropsWithChildren<AssignmentProps>) {\n // Get emitted components from map (so we can get any override that may exist)\n const AssignmentCard = getComponentFromMap('AssignmentCard');\n const MultiStep = getComponentFromMap('MultiStep');\n\n const { getPConnect, children, itemKey = '', isInModal = false, banners = [] } = props;\n const validationMessages = useValidationBanner(itemKey);\n const thePConn = getPConnect();\n\n const [bHasNavigation, setHasNavigation] = useState(false);\n const [actionButtons, setActionButtons] = useState([]);\n const [bIsVertical, setIsVertical] = useState(false);\n const [arCurrentStepIndicies, setArCurrentStepIndicies] = useState<any[]>([]);\n const [arNavigationSteps, setArNavigationSteps] = useState<any[]>([]);\n\n const actionsAPI = thePConn.getActionsApi();\n const localizedVal = PCore.getLocaleUtils().getLocaleValue;\n const localizationService = thePConn.getLocalizationService();\n const localeCategory = 'Assignment';\n\n // store off bound functions to above pointers\n const finishAssignment = actionsAPI.finishAssignment.bind(actionsAPI);\n const navigateToStep = actionsAPI.navigateToStep.bind(actionsAPI);\n const cancelAssignment = actionsAPI.cancelAssignment.bind(actionsAPI);\n const saveAssignment = actionsAPI.saveAssignment?.bind(actionsAPI);\n const cancelCreateStageAssignment = actionsAPI.cancelCreateStageAssignment.bind(actionsAPI);\n const approveCase = actionsAPI.approveCase?.bind(actionsAPI);\n const rejectCase = actionsAPI.rejectCase?.bind(actionsAPI);\n // const showPage = actionsAPI.showPage.bind(actionsAPI);\n\n const [showSnackbar, setShowSnackbar] = useState(false);\n const [snackbarMessage, setSnackbarMessage] = useState('');\n\n function findCurrentIndicies(arStepperSteps: any[], arIndicies: number[], depth: number): number[] {\n let count = 0;\n arStepperSteps.forEach(step => {\n if (step.visited_status === 'current') {\n arIndicies[depth] = count;\n\n // add in\n step.step_status = '';\n } else if (step.visited_status === 'success') {\n count += 1;\n step.step_status = 'completed';\n } else {\n count += 1;\n step.step_status = '';\n }\n\n if (step.steps) {\n arIndicies = findCurrentIndicies(step.steps, arIndicies, depth + 1);\n }\n });\n\n return arIndicies;\n }\n\n function getStepsInfo(steps, formedSteps: any = []) {\n steps.forEach(step => {\n if (step.name) {\n step.name = localizationService.getLocalizedText(step.name);\n }\n if (step.steps) {\n formedSteps = getStepsInfo(step.steps, formedSteps);\n } else {\n formedSteps.push(step);\n }\n });\n return formedSteps;\n }\n\n const scrollId = window.location.href.includes('embedded') ? '#pega-part-of-page' : '#portal';\n const currentAssignmentViewName = getPConnect().getCaseInfo().getCurrentAssignmentViewName();\n useScrolltoTop(scrollId, children);\n useFocusFirstField('Assignment', currentAssignmentViewName);\n\n useEffect(() => {\n if (children) {\n const firstChild = Array.isArray(children) ? children[0] : children;\n const oWorkItem = firstChild.props.getPConnect();\n const oWorkData = oWorkItem.getDataObject();\n const oData: any = thePConn.getDataObject(''); // 1st arg empty string until typedefs allow it to be optional\n const caseInfo = oData?.caseInfo;\n if (!oWorkData?.caseInfo || oWorkData.caseInfo.assignments === null || !caseInfo) {\n return;\n }\n\n // Set action buttons\n if (caseInfo.actionButtons) {\n setActionButtons(caseInfo.actionButtons);\n }\n\n // Handle navigation setup\n const navigation = caseInfo.navigation;\n if (!navigation) {\n setHasNavigation(false);\n return;\n }\n\n const isStandardTemplate = navigation.template?.toLowerCase() === 'standard';\n const hasSingleStep = navigation.steps?.length === 1;\n const shouldHideNavigation = isStandardTemplate || hasSingleStep;\n\n setHasNavigation(!shouldHideNavigation);\n\n if (shouldHideNavigation) {\n return;\n }\n\n // set vertical navigation\n const isVerticalTemplate = navigation.template?.toLowerCase() === 'vertical';\n setIsVertical(isVerticalTemplate);\n\n if (navigation.steps) {\n const steps = JSON.parse(JSON.stringify(navigation.steps));\n const formedSteps = getStepsInfo(steps);\n setArNavigationSteps(formedSteps);\n }\n\n setArCurrentStepIndicies(findCurrentIndicies(arNavigationSteps, arCurrentStepIndicies, 0));\n }\n }, [children]);\n\n function showToast(message: string) {\n const theMessage = `Assignment: ${message}`;\n\n console.error(theMessage);\n setSnackbarMessage(message);\n setShowSnackbar(true);\n }\n\n function handleSnackbarClose(event: React.SyntheticEvent<any> | Event, reason?: string) {\n if (reason === 'clickaway') {\n return;\n }\n setShowSnackbar(false);\n }\n\n function onSaveActionSuccess(data) {\n actionsAPI.cancelAssignment(itemKey, false).then(() => {\n PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CREATE_STAGE_SAVED, data);\n });\n }\n\n function buttonPress(sAction: string, sButtonType: string) {\n if (sButtonType === 'secondary') {\n switch (sAction) {\n case 'navigateToStep': {\n const navigatePromise = navigateToStep('previous', itemKey);\n\n navigatePromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Navigation failed!', localeCategory)}`);\n });\n\n break;\n }\n\n case 'saveAssignment': {\n const caseID = thePConn.getCaseInfo().getKey();\n const assignmentID = thePConn.getCaseInfo().getAssignmentID();\n const savePromise = saveAssignment(itemKey);\n\n savePromise\n .then(() => {\n const caseType = thePConn.getCaseInfo().c11nEnv.getValue(PCore.getConstants().CASE_INFO.CASE_TYPE_ID);\n onSaveActionSuccess({ caseType, caseID, assignmentID });\n })\n .catch(() => {\n showToast(`${localizedVal('Save failed', localeCategory)}`);\n });\n\n break;\n }\n\n case 'cancelAssignment': {\n // check if create stage (modal)\n const { PUB_SUB_EVENTS } = PCore.getConstants();\n const { publish } = PCore.getPubSubUtils();\n const isAssignmentInCreateStage = thePConn.getCaseInfo().isAssignmentInCreateStage();\n const isLocalAction =\n thePConn.getCaseInfo().isLocalAction() ||\n (PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION && getPConnect().getValue(PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION));\n if (isAssignmentInCreateStage && isInModal && !isLocalAction) {\n const cancelPromise = cancelCreateStageAssignment(itemKey);\n\n cancelPromise\n .then(data => {\n publish(PUB_SUB_EVENTS.EVENT_CANCEL, data);\n })\n .catch(() => {\n showToast(`${localizedVal('Cancel failed!', localeCategory)}`);\n });\n } else {\n const cancelPromise = cancelAssignment(itemKey, false);\n\n cancelPromise\n .then(data => {\n publish(PUB_SUB_EVENTS.EVENT_CANCEL, data);\n })\n .catch(() => {\n showToast(`${localizedVal('Cancel failed!', localeCategory)}`);\n });\n }\n break;\n }\n\n case 'rejectCase': {\n const rejectPromise = rejectCase(itemKey);\n\n rejectPromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Rejection failed!', localeCategory)}`);\n });\n\n break;\n }\n\n default:\n break;\n }\n } else if (sButtonType === 'primary') {\n switch (sAction) {\n case 'finishAssignment': {\n const finishPromise = finishAssignment(itemKey);\n\n finishPromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Submit failed!', localeCategory)}`);\n });\n\n break;\n }\n\n case 'approveCase': {\n const approvePromise = approveCase(itemKey);\n\n approvePromise\n .then(() => {})\n .catch(() => {\n showToast(`${localizedVal('Approve failed!', localeCategory)}`);\n });\n\n break;\n }\n\n default:\n break;\n }\n }\n }\n\n function getRefreshProps(refreshConditions) {\n // refreshConditions cuurently supports only \"Changes\" event\n if (!refreshConditions) {\n return [];\n }\n return refreshConditions.filter(item => item.event && item.event === 'Changes').map(item => [item.field, item.field?.substring(1)]) || [];\n }\n\n // expected format of refreshConditions : [{field: \".Name\", event: \"Changes\"}]\n const refreshConditions = thePConn.getCaseInfo()?.getActionRefreshConditions();\n const context = thePConn.getContextName();\n const pageReference = thePConn.getPageReference();\n\n // refresh api de-registration\n PCore.getRefreshManager().deRegisterForRefresh(context);\n\n // refresh api registration\n const refreshProps = getRefreshProps(refreshConditions);\n const caseKey = thePConn.getCaseInfo().getKey();\n const refreshOptions = {\n autoDetectRefresh: true,\n preserveClientChanges: false\n };\n if (refreshProps.length > 0) {\n refreshProps.forEach(prop => {\n PCore.getRefreshManager().registerForRefresh(\n 'PROP_CHANGE',\n thePConn.getActionsApi().refreshCaseView.bind(thePConn.getActionsApi(), caseKey, '', pageReference, {\n ...refreshOptions,\n refreshFor: prop[0]\n }),\n `${pageReference}.${prop[1]}`,\n `${context}/${pageReference}`,\n context\n );\n });\n }\n\n return (\n <div id='Assignment'>\n {validationMessages.length > 0 && (\n <div style={{ marginBottom: '1rem' }}>\n <AlertBanner id={`validation-banner-${itemKey}`} variant='urgent' messages={validationMessages} />\n </div>\n )}\n {banners}\n {bHasNavigation ? (\n <>\n <MultiStep\n getPConnect={getPConnect}\n itemKey={itemKey}\n actionButtons={actionButtons}\n onButtonPress={buttonPress}\n bIsVertical={bIsVertical}\n arCurrentStepIndicies={arCurrentStepIndicies}\n arNavigationSteps={arNavigationSteps}\n >\n {children}\n </MultiStep>\n <Snackbar\n open={showSnackbar}\n autoHideDuration={3000}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n action={\n <IconButton size='small' aria-label='close' color='inherit' onClick={handleSnackbarClose}>\n <CloseIcon fontSize='small' />\n </IconButton>\n }\n />\n </>\n ) : (\n <>\n <AssignmentCard getPConnect={getPConnect} itemKey={itemKey} actionButtons={actionButtons} onButtonPress={buttonPress}>\n {children}\n </AssignmentCard>\n <Snackbar\n open={showSnackbar}\n autoHideDuration={3000}\n onClose={handleSnackbarClose}\n message={snackbarMessage}\n action={\n <IconButton size='small' aria-label='close' color='inherit' onClick={handleSnackbarClose}>\n <CloseIcon fontSize='small' />\n </IconButton>\n }\n />\n </>\n )}\n </div>\n );\n}\n\n// From WC SDK\n// const aHtml = html`\n// ${this.bHasNavigation?\n// html`\n// <div class=\"psdk-stepper\">\n// <multi-step-component .pConn=${this.pConn} .arChildren=${this.arChildren} itemKey=${this.itemKey}\n// .arMainButtons=${this.arMainButtons} .arSecondaryButtons=${this.arSecondaryButtons}\n// .bIsVertical=${this.bIsVertical} .arCurrentStepIndicies=${this.arCurrentStepIndicies}\n// .arNavigationSteps=${this.arNavigationSteps}\n// @MultiStepActionButtonClick=\"${this._onActionButtonClick}\">\n// </multi-step-component>\n// <lit-toast></lit-toast>\n// </div>`\n// :\n// html`\n// <div>\n// <assignment-card-component .pConn=${this.pConn} .arChildren=${this.arChildren} itemKey=${this.itemKey}\n// .arMainButtons=${this.arMainButtons} .arSecondaryButtons=${this.arSecondaryButtons}\n// @AssignmentActionButtonClick=\"${this._onActionButtonClick}\">\n// </assignment-card-component>\n// <lit-toast></lit-toast>\n// </div>`}\n// `;\n"]}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Subscribes to the PCore store and returns formatted validation error messages
3
+ * for the given itemKey. Reacts to any ADD_MESSAGES / CLEAR_MESSAGES dispatch
4
+ * (blur, tab, submit, etc.) so the banner appears and clears in real time.
5
+ */
6
+ export declare function useValidationBanner(itemKey: string): string[];
7
+ //# sourceMappingURL=useValidationBanner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidationBanner.d.ts","sourceRoot":"","sources":["../../../../src/components/infra/Assignment/useValidationBanner.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CAe7D"}
@@ -0,0 +1,26 @@
1
+ import { useState, useEffect, useCallback } from 'react';
2
+ function formatError(error, localizedVal) {
3
+ if (typeof error === 'string')
4
+ return localizedVal(error, 'Messages');
5
+ const label = error.label?.endsWith(':') ? error.label : `${error.label}:`;
6
+ return localizedVal(`${label} ${error.description}`, 'Messages');
7
+ }
8
+ /**
9
+ * Subscribes to the PCore store and returns formatted validation error messages
10
+ * for the given itemKey. Reacts to any ADD_MESSAGES / CLEAR_MESSAGES dispatch
11
+ * (blur, tab, submit, etc.) so the banner appears and clears in real time.
12
+ */
13
+ export function useValidationBanner(itemKey) {
14
+ const [messages, setMessages] = useState([]);
15
+ const readMessages = useCallback(() => {
16
+ const localizedVal = PCore.getLocaleUtils().getLocaleValue;
17
+ const errors = PCore.getMessageManager().getValidationErrorMessages(itemKey) || [];
18
+ setMessages(errors.map(error => formatError(error, localizedVal)));
19
+ }, [itemKey]);
20
+ useEffect(() => {
21
+ readMessages();
22
+ return PCore.getStore().subscribe(readMessages);
23
+ }, [readMessages]);
24
+ return messages;
25
+ }
26
+ //# sourceMappingURL=useValidationBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useValidationBanner.js","sourceRoot":"","sources":["../../../../src/components/infra/Assignment/useValidationBanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAEzD,SAAS,WAAW,CAAC,KAAU,EAAE,YAAsB;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,YAAY,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC;IAC3E,OAAO,YAAY,CAAC,GAAG,KAAK,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,CAAC;AACnE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IAEvD,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM,YAAY,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,cAAc,CAAC;QAC3D,MAAM,MAAM,GAAU,KAAK,CAAC,iBAAiB,EAAE,CAAC,0BAA0B,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC1F,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,SAAS,CAAC,GAAG,EAAE;QACb,YAAY,EAAE,CAAC;QACf,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC;IAEnB,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import { useState, useEffect, useCallback } from 'react';\n\nfunction formatError(error: any, localizedVal: Function): string {\n if (typeof error === 'string') return localizedVal(error, 'Messages');\n const label = error.label?.endsWith(':') ? error.label : `${error.label}:`;\n return localizedVal(`${label} ${error.description}`, 'Messages');\n}\n\n/**\n * Subscribes to the PCore store and returns formatted validation error messages\n * for the given itemKey. Reacts to any ADD_MESSAGES / CLEAR_MESSAGES dispatch\n * (blur, tab, submit, etc.) so the banner appears and clears in real time.\n */\nexport function useValidationBanner(itemKey: string): string[] {\n const [messages, setMessages] = useState<string[]>([]);\n\n const readMessages = useCallback(() => {\n const localizedVal = PCore.getLocaleUtils().getLocaleValue;\n const errors: any[] = PCore.getMessageManager().getValidationErrorMessages(itemKey) || [];\n setMessages(errors.map(error => formatError(error, localizedVal)));\n }, [itemKey]);\n\n useEffect(() => {\n readMessages();\n return PCore.getStore().subscribe(readMessages);\n }, [readMessages]);\n\n return messages;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"FlowContainer.d.ts","sourceRoot":"","sources":["../../../../../src/components/infra/Containers/FlowContainer/FlowContainer.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI/D,UAAU,kBAAmB,SAAQ,UAAU;IAE7C,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,gCAAgC,EAAE,QAAQ,CAAC;IAC3C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA6BD,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAsNtD,CAAC;;AAEF,wBAA8D"}
1
+ {"version":3,"file":"FlowContainer.d.ts","sourceRoot":"","sources":["../../../../../src/components/infra/Containers/FlowContainer/FlowContainer.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAI/D,UAAU,kBAAmB,SAAQ,UAAU;IAE7C,YAAY,EAAE,GAAG,EAAE,CAAC;IACpB,eAAe,EAAE,KAAK,CAAC,SAAS,CAAC;IACjC,gCAAgC,EAAE,QAAQ,CAAC;IAC3C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA4BD,eAAO,MAAM,aAAa,GAAI,OAAO,kBAAkB,4CAsNtD,CAAC;;AAEF,wBAA8D"}
@@ -10,11 +10,10 @@ import { withSimpleViewContainerRenderer } from '../SimpleView/SimpleView';
10
10
  import { addContainerItem, getToDoAssignments, showBanner, hasContainerItems } from './helpers';
11
11
  import { LocalizationProvider } from '@mui/x-date-pickers';
12
12
  import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
13
- //
14
- // WARNING: It is not expected that this file should be modified. It is part of infrastructure code that works with
15
- // Redux and creation/update of Redux containers and PConnect. Modifying this code could have undesireable results and
16
- // is totally at your own risk.
17
- //
13
+ /**
14
+ * WARNING: This file is part of the infrastructure component responsible for working with Redux and managing the creation and update of Redux containers and PConnect.
15
+ * You may override Material components within this component if needed, but do not modify any container-related logic. Changing this logic can lead to unexpected behavior.
16
+ */
18
17
  const useStyles = makeStyles(theme => ({
19
18
  root: {
20
19
  paddingRight: theme.spacing(2),
@@ -156,7 +155,7 @@ export const FlowContainer = (props) => {
156
155
  }
157
156
  }, [props]);
158
157
  const caseId = thePConn.getCaseSummary().content.pyID;
159
- const urgency = getPConnect().getCaseSummary().assignments ? getPConnect().getCaseSummary().assignments?.[0].urgency : '';
158
+ const urgency = getPConnect().getCaseSummary().assignments ? getPConnect().getCaseSummary().assignments?.[0]?.urgency : '';
160
159
  const operatorInitials = Utils.getInitials(PCore.getEnvironmentInfo().getOperatorName() || '');
161
160
  const displayPageMessages = () => {
162
161
  let hasBanner = false;