@pega/react-sdk-components 0.25.10 → 0.25.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 (89) 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/infra/Assignment/Assignment.d.ts.map +1 -1
  9. package/lib/components/infra/Assignment/Assignment.js +6 -2
  10. package/lib/components/infra/Assignment/Assignment.js.map +1 -1
  11. package/lib/components/infra/Assignment/useValidationBanner.d.ts +7 -0
  12. package/lib/components/infra/Assignment/useValidationBanner.d.ts.map +1 -0
  13. package/lib/components/infra/Assignment/useValidationBanner.js +26 -0
  14. package/lib/components/infra/Assignment/useValidationBanner.js.map +1 -0
  15. package/lib/components/infra/Containers/FlowContainer/FlowContainer.d.ts.map +1 -1
  16. package/lib/components/infra/Containers/FlowContainer/FlowContainer.js +4 -5
  17. package/lib/components/infra/Containers/FlowContainer/FlowContainer.js.map +1 -1
  18. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.d.ts +4 -0
  19. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.d.ts.map +1 -1
  20. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.js +1 -1
  21. package/lib/components/infra/Containers/ModalViewContainer/ModalViewContainer.js.map +1 -1
  22. package/lib/components/infra/Containers/ViewContainer/ViewContainer.d.ts +4 -0
  23. package/lib/components/infra/Containers/ViewContainer/ViewContainer.d.ts.map +1 -1
  24. package/lib/components/infra/Containers/ViewContainer/ViewContainer.js +4 -7
  25. package/lib/components/infra/Containers/ViewContainer/ViewContainer.js.map +1 -1
  26. package/lib/components/infra/DeferLoad/DeferLoad.d.ts +1 -0
  27. package/lib/components/infra/DeferLoad/DeferLoad.d.ts.map +1 -1
  28. package/lib/components/infra/DeferLoad/DeferLoad.js +24 -9
  29. package/lib/components/infra/DeferLoad/DeferLoad.js.map +1 -1
  30. package/lib/components/infra/NavBar/NavBar.d.ts.map +1 -1
  31. package/lib/components/infra/NavBar/NavBar.js +6 -0
  32. package/lib/components/infra/NavBar/NavBar.js.map +1 -1
  33. package/lib/components/infra/RootContainer/RootContainer.d.ts.map +1 -1
  34. package/lib/components/infra/RootContainer/RootContainer.js +4 -5
  35. package/lib/components/infra/RootContainer/RootContainer.js.map +1 -1
  36. package/lib/components/infra/View/View.d.ts.map +1 -1
  37. package/lib/components/infra/View/View.js +5 -6
  38. package/lib/components/infra/View/View.js.map +1 -1
  39. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.d.ts +1 -0
  40. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.d.ts.map +1 -1
  41. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.js +7 -3
  42. package/lib/components/template/FieldGroupTemplate/FieldGroupTemplate.js.map +1 -1
  43. package/lib/components/template/HierarchicalForm/HierarchicalForm.d.ts +4 -0
  44. package/lib/components/template/HierarchicalForm/HierarchicalForm.d.ts.map +1 -0
  45. package/lib/components/template/HierarchicalForm/HierarchicalForm.js +16 -0
  46. package/lib/components/template/HierarchicalForm/HierarchicalForm.js.map +1 -0
  47. package/lib/components/template/HierarchicalForm/hooks.d.ts +15 -0
  48. package/lib/components/template/HierarchicalForm/hooks.d.ts.map +1 -0
  49. package/lib/components/template/HierarchicalForm/hooks.js +163 -0
  50. package/lib/components/template/HierarchicalForm/hooks.js.map +1 -0
  51. package/lib/components/template/HierarchicalForm/index.d.ts +2 -0
  52. package/lib/components/template/HierarchicalForm/index.d.ts.map +1 -0
  53. package/lib/components/template/HierarchicalForm/index.js +2 -0
  54. package/lib/components/template/HierarchicalForm/index.js.map +1 -0
  55. package/lib/components/template/ListView/ListView.d.ts +1 -0
  56. package/lib/components/template/ListView/ListView.d.ts.map +1 -1
  57. package/lib/components/template/ListView/ListView.js +56 -9
  58. package/lib/components/template/ListView/ListView.js.map +1 -1
  59. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.d.ts +3 -1
  60. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.d.ts.map +1 -1
  61. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.js +13 -1
  62. package/lib/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.js.map +1 -1
  63. package/lib/components/template/ObjectPage/index.d.ts +2 -0
  64. package/lib/components/template/ObjectPage/index.d.ts.map +1 -0
  65. package/lib/components/template/ObjectPage/index.js +2 -0
  66. package/lib/components/template/ObjectPage/index.js.map +1 -0
  67. package/lib/components/template/SelfServiceCaseView/SelfServiceCaseView.d.ts.map +1 -1
  68. package/lib/components/template/SelfServiceCaseView/SelfServiceCaseView.js +13 -2
  69. package/lib/components/template/SelfServiceCaseView/SelfServiceCaseView.js.map +1 -1
  70. package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.d.ts.map +1 -1
  71. package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.js +8 -6
  72. package/lib/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.js.map +1 -1
  73. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.d.ts +17 -0
  74. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.d.ts.map +1 -0
  75. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.js +94 -0
  76. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.js.map +1 -0
  77. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.d.ts +2 -0
  78. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.d.ts.map +1 -0
  79. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.js +2 -0
  80. package/lib/components/template/SimpleTable/SimpleTableSelectReadonly/index.js.map +1 -0
  81. package/lib/hooks/useFocusFirstField.d.ts +3 -3
  82. package/lib/hooks/useFocusFirstField.d.ts.map +1 -1
  83. package/lib/hooks/useFocusFirstField.js +19 -12
  84. package/lib/hooks/useFocusFirstField.js.map +1 -1
  85. package/lib/sdk-pega-component-map.d.ts +6 -0
  86. package/lib/sdk-pega-component-map.d.ts.map +1 -1
  87. package/lib/sdk-pega-component-map.js +6 -0
  88. package/lib/sdk-pega-component-map.js.map +1 -1
  89. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../../src/components/infra/View/View.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAI1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,YAAY,CAAC;AAEpB,UAAU,SAAU,SAAQ,UAAU;IAEpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAuBD,iBAAwB,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,SAAS,CAAC,uDAsH/D;kBAtHuB,IAAI;;;eAAJ,IAAI"}
1
+ {"version":3,"file":"View.d.ts","sourceRoot":"","sources":["../../../../src/components/infra/View/View.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAa,MAAM,OAAO,CAAC;AAI1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAI5D,OAAO,YAAY,CAAC;AAEpB,UAAU,SAAU,SAAQ,UAAU;IAEpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAsBD,iBAAwB,IAAI,CAAC,KAAK,EAAE,iBAAiB,CAAC,SAAS,CAAC,uDAsH/D;kBAtHuB,IAAI;;;eAAJ,IAAI"}
@@ -4,12 +4,11 @@ import { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';
4
4
  import { getAllFields } from '../../helpers/template-utils';
5
5
  // Need to import any templates that we might render
6
6
  import './View.css';
7
- //
8
- // WARNING: It is not expected that this file should be modified. It is part of infrastructure code that works with
9
- // Redux and creation/update of Redux containers and PConnect. Modifying this code could have undesireable results and
10
- // is totally at your own risk.
11
- //
12
- const FORMTEMPLATES = ['OneColumn', 'TwoColumn', 'DefaultForm', 'WideNarrow', 'NarrowWide'];
7
+ /**
8
+ * 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.
9
+ * 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.
10
+ */
11
+ const FORMTEMPLATES = ['OneColumn', 'TwoColumn', 'DefaultForm', 'WideNarrow', 'NarrowWide', 'HierarchicalForm'];
13
12
  const NO_HEADER_TEMPLATES = [
14
13
  'SubTabs',
15
14
  'SimpleTable',
@@ -1 +1 @@
1
- {"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../src/components/infra/View/View.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type PropsWithChildren, useEffect } from 'react';\n\nimport { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';\nimport { getAllFields } from '../../helpers/template-utils';\nimport type { PConnProps } from '../../../types/PConnProps';\n\n// Need to import any templates that we might render\n\nimport './View.css';\n\ninterface ViewProps extends PConnProps {\n // If any, enter additional props that only exist on this component\n template?: string;\n label?: string;\n showLabel: boolean;\n mode?: string;\n title?: string;\n visibility?: boolean;\n name?: string;\n bInForm?: boolean;\n type?: any;\n}\n\n//\n// WARNING: It is not expected that this file should be modified. It is part of infrastructure code that works with\n// Redux and creation/update of Redux containers and PConnect. Modifying this code could have undesireable results and\n// is totally at your own risk.\n//\n\nconst FORMTEMPLATES = ['OneColumn', 'TwoColumn', 'DefaultForm', 'WideNarrow', 'NarrowWide'];\nconst NO_HEADER_TEMPLATES = [\n 'SubTabs',\n 'SimpleTable',\n 'Details',\n 'DetailsTwoColumn',\n 'DetailsThreeColumn',\n 'NarrowWideDetails',\n 'WideNarrowDetails',\n 'Confirmation',\n 'DynamicTabs',\n 'DetailsSubTabs',\n 'ListView'\n];\n\nexport default function View(props: PropsWithChildren<ViewProps>) {\n const { children, template, getPConnect, mode, visibility, name: pageName, type, title } = props;\n let { label = '', showLabel = false } = props;\n const { PAGE_TYPES: { PAGE, LANDINGPAGE, LISTPAGE } = {}, MODAL } = PCore.getConstants();\n\n // Get the inherited props from the parent to determine label settings. For 8.6, this is only for embedded data form views\n // Putting this logic here instead of copy/paste in every Form template index.js\n\n const inheritedProps: any = getPConnect().getInheritedProps(); // try to remove any when getInheritedProps typedefs are fixed\n label = inheritedProps.label || label;\n showLabel = inheritedProps.showLabel || showLabel;\n const localeUtils = PCore.getLocaleUtils();\n\n const isEmbeddedDataView = mode === 'editable'; // would be better to check the reference child for `context` attribute if possible\n if (isEmbeddedDataView && showLabel === undefined) {\n showLabel = true;\n }\n\n useEffect(() => {\n // Get the localized application label\n let applicationLabel = PCore.getEnvironmentInfo().getApplicationLabel();\n applicationLabel = localeUtils.getLocaleValue(`${applicationLabel}`, '', '');\n const caseInfo = getPConnect().getCaseInfo();\n const isAssignmentInCreateStage = caseInfo && caseInfo.isAssignmentInCreateStage();\n const isRenderingInModal = getPConnect().getContainerName().includes(MODAL);\n const isRenderingInPreviewPanel = getPConnect().getContainerName().includes('preview');\n\n /* If assignment is in create stage and rendering in modal don't update the title.\n Title will be updated on completion of create stage and when the assignment is rendered inline to the page.\n */\n const canUpdateTitle =\n !isRenderingInPreviewPanel &&\n (type === PAGE || type === LANDINGPAGE || type === LISTPAGE) &&\n !(isRenderingInModal && isAssignmentInCreateStage) &&\n PCore.getEnvironmentInfo().getRenderingMode() === 'FULL_PORTAL';\n // Incase of home route title is same as applicationLabel so setting to empty to just show applicationLabel\n let titleVar = title === applicationLabel ? '' : title;\n\n if (canUpdateTitle) {\n if (caseInfo) {\n const name = caseInfo.getName();\n const id = caseInfo.getBusinessID();\n titleVar = name && id ? `${name} (${id})` : titleVar;\n }\n document.title = titleVar ? `${titleVar} - ${applicationLabel}` : applicationLabel;\n }\n }, [type, title, getPConnect, PAGE, LANDINGPAGE, LISTPAGE]);\n\n const key = `${getPConnect().getContextName()}_${getPConnect().getPageReference()}_${pageName}`;\n // As long as the template is defined in the dependencies of the view\n // it will be loaded, otherwise fall back to single column\n if (visibility === false) {\n return '';\n }\n\n // As long as the template is defined in the dependencies of the view\n // it will be loaded, otherwise fall back to single column\n // JA - React SDK not using LazyComponentMap yet\n if (template /* && LazyComponentMap[template] */) {\n // const ViewTemplate = LazyComponentMap[template];\n const ViewTemplate: any = getComponentFromMap(template);\n\n if (template === 'ListView') {\n // special case for ListView - add in a prop\n const bInForm = true;\n props = { ...props, bInForm };\n }\n\n // for debugging/investigation\n // console.log(`View rendering template: ${template}`);\n\n // spreading because all props should go to the template\n let RenderedTemplate = (\n <ViewTemplate key={key} {...props}>\n {children}\n </ViewTemplate>\n );\n\n if (FORMTEMPLATES.includes(template) && showLabel) {\n // Original:\n // RenderedTemplate = (\n // <FieldGroup name={label} style={{ marginBlockStart: \"1rem\" }}>\n // {RenderedTemplate}\n // </FieldGroup>\n // );\n RenderedTemplate = (\n <div\n data-name='RenderedTemplate'\n data-template-type={template}\n /* name */ id='label'\n style={{ marginBlockStart: '1rem' }}\n className='grid-column'\n >\n {RenderedTemplate}\n </div>\n );\n }\n\n return (\n <div className='grid-column'>\n {showLabel && !NO_HEADER_TEMPLATES.includes(template) && (\n <div className='template-title-container'>\n <span>{label}</span>\n </div>\n )}\n {RenderedTemplate}\n </div>\n );\n }\n\n // debugging/investigation help\n // console.log(`View about to render React.Fragment for children: ${children}`);\n\n if (children) {\n return <>{children}</>;\n }\n\n return null;\n}\n\n// Adapted from Constellation DX Component to add in additional props for some templates\nView.additionalProps = (state, getPConnect) => {\n const thePConn = getPConnect();\n const { template } = thePConn.getConfigProps();\n\n let propObj = {};\n let allFields = {};\n\n switch (template) {\n case 'CaseSummary':\n allFields = getAllFields(thePConn);\n // eslint-disable-next-line no-case-declarations\n const unresFields = {\n primaryFields: allFields[0],\n secondaryFields: allFields[1]\n };\n propObj = thePConn.resolveConfigProps(unresFields);\n break;\n\n case 'Details':\n allFields = getAllFields(thePConn);\n propObj = { fields: allFields[0] };\n break;\n\n default:\n break;\n }\n\n return propObj;\n};\n"]}
1
+ {"version":3,"file":"View.js","sourceRoot":"","sources":["../../../../src/components/infra/View/View.tsx"],"names":[],"mappings":"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","sourcesContent":["import { type PropsWithChildren, useEffect } from 'react';\n\nimport { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';\nimport { getAllFields } from '../../helpers/template-utils';\nimport type { PConnProps } from '../../../types/PConnProps';\n\n// Need to import any templates that we might render\n\nimport './View.css';\n\ninterface ViewProps extends PConnProps {\n // If any, enter additional props that only exist on this component\n template?: string;\n label?: string;\n showLabel: boolean;\n mode?: string;\n title?: string;\n visibility?: boolean;\n name?: string;\n bInForm?: boolean;\n type?: any;\n}\n\n/**\n * 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.\n * 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.\n */\n\nconst FORMTEMPLATES = ['OneColumn', 'TwoColumn', 'DefaultForm', 'WideNarrow', 'NarrowWide', 'HierarchicalForm'];\nconst NO_HEADER_TEMPLATES = [\n 'SubTabs',\n 'SimpleTable',\n 'Details',\n 'DetailsTwoColumn',\n 'DetailsThreeColumn',\n 'NarrowWideDetails',\n 'WideNarrowDetails',\n 'Confirmation',\n 'DynamicTabs',\n 'DetailsSubTabs',\n 'ListView'\n];\n\nexport default function View(props: PropsWithChildren<ViewProps>) {\n const { children, template, getPConnect, mode, visibility, name: pageName, type, title } = props;\n let { label = '', showLabel = false } = props;\n const { PAGE_TYPES: { PAGE, LANDINGPAGE, LISTPAGE } = {}, MODAL } = PCore.getConstants();\n\n // Get the inherited props from the parent to determine label settings. For 8.6, this is only for embedded data form views\n // Putting this logic here instead of copy/paste in every Form template index.js\n\n const inheritedProps: any = getPConnect().getInheritedProps(); // try to remove any when getInheritedProps typedefs are fixed\n label = inheritedProps.label || label;\n showLabel = inheritedProps.showLabel || showLabel;\n const localeUtils = PCore.getLocaleUtils();\n\n const isEmbeddedDataView = mode === 'editable'; // would be better to check the reference child for `context` attribute if possible\n if (isEmbeddedDataView && showLabel === undefined) {\n showLabel = true;\n }\n\n useEffect(() => {\n // Get the localized application label\n let applicationLabel = PCore.getEnvironmentInfo().getApplicationLabel();\n applicationLabel = localeUtils.getLocaleValue(`${applicationLabel}`, '', '');\n const caseInfo = getPConnect().getCaseInfo();\n const isAssignmentInCreateStage = caseInfo && caseInfo.isAssignmentInCreateStage();\n const isRenderingInModal = getPConnect().getContainerName().includes(MODAL);\n const isRenderingInPreviewPanel = getPConnect().getContainerName().includes('preview');\n\n /* If assignment is in create stage and rendering in modal don't update the title.\n Title will be updated on completion of create stage and when the assignment is rendered inline to the page.\n */\n const canUpdateTitle =\n !isRenderingInPreviewPanel &&\n (type === PAGE || type === LANDINGPAGE || type === LISTPAGE) &&\n !(isRenderingInModal && isAssignmentInCreateStage) &&\n PCore.getEnvironmentInfo().getRenderingMode() === 'FULL_PORTAL';\n // Incase of home route title is same as applicationLabel so setting to empty to just show applicationLabel\n let titleVar = title === applicationLabel ? '' : title;\n\n if (canUpdateTitle) {\n if (caseInfo) {\n const name = caseInfo.getName();\n const id = caseInfo.getBusinessID();\n titleVar = name && id ? `${name} (${id})` : titleVar;\n }\n document.title = titleVar ? `${titleVar} - ${applicationLabel}` : applicationLabel;\n }\n }, [type, title, getPConnect, PAGE, LANDINGPAGE, LISTPAGE]);\n\n const key = `${getPConnect().getContextName()}_${getPConnect().getPageReference()}_${pageName}`;\n // As long as the template is defined in the dependencies of the view\n // it will be loaded, otherwise fall back to single column\n if (visibility === false) {\n return '';\n }\n\n // As long as the template is defined in the dependencies of the view\n // it will be loaded, otherwise fall back to single column\n // JA - React SDK not using LazyComponentMap yet\n if (template /* && LazyComponentMap[template] */) {\n // const ViewTemplate = LazyComponentMap[template];\n const ViewTemplate: any = getComponentFromMap(template);\n\n if (template === 'ListView') {\n // special case for ListView - add in a prop\n const bInForm = true;\n props = { ...props, bInForm };\n }\n\n // for debugging/investigation\n // console.log(`View rendering template: ${template}`);\n\n // spreading because all props should go to the template\n let RenderedTemplate = (\n <ViewTemplate key={key} {...props}>\n {children}\n </ViewTemplate>\n );\n\n if (FORMTEMPLATES.includes(template) && showLabel) {\n // Original:\n // RenderedTemplate = (\n // <FieldGroup name={label} style={{ marginBlockStart: \"1rem\" }}>\n // {RenderedTemplate}\n // </FieldGroup>\n // );\n RenderedTemplate = (\n <div\n data-name='RenderedTemplate'\n data-template-type={template}\n /* name */ id='label'\n style={{ marginBlockStart: '1rem' }}\n className='grid-column'\n >\n {RenderedTemplate}\n </div>\n );\n }\n\n return (\n <div className='grid-column'>\n {showLabel && !NO_HEADER_TEMPLATES.includes(template) && (\n <div className='template-title-container'>\n <span>{label}</span>\n </div>\n )}\n {RenderedTemplate}\n </div>\n );\n }\n\n // debugging/investigation help\n // console.log(`View about to render React.Fragment for children: ${children}`);\n\n if (children) {\n return <>{children}</>;\n }\n\n return null;\n}\n\n// Adapted from Constellation DX Component to add in additional props for some templates\nView.additionalProps = (state, getPConnect) => {\n const thePConn = getPConnect();\n const { template } = thePConn.getConfigProps();\n\n let propObj = {};\n let allFields = {};\n\n switch (template) {\n case 'CaseSummary':\n allFields = getAllFields(thePConn);\n // eslint-disable-next-line no-case-declarations\n const unresFields = {\n primaryFields: allFields[0],\n secondaryFields: allFields[1]\n };\n propObj = thePConn.resolveConfigProps(unresFields);\n break;\n\n case 'Details':\n allFields = getAllFields(thePConn);\n propObj = { fields: allFields[0] };\n break;\n\n default:\n break;\n }\n\n return propObj;\n};\n"]}
@@ -8,6 +8,7 @@ interface FieldGroupTemplateProps extends PConnProps {
8
8
  displayMode?: string;
9
9
  fieldHeader?: string;
10
10
  allowTableEdit: boolean;
11
+ allowActions?: any;
11
12
  }
12
13
  export default function FieldGroupTemplate(props: FieldGroupTemplateProps): import("react/jsx-runtime").JSX.Element;
13
14
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroupTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,uBAAwB,SAAQ,UAAU;IAElD,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CA0FxE"}
1
+ {"version":3,"file":"FieldGroupTemplate.d.ts","sourceRoot":"","sources":["../../../../src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,uBAAwB,SAAQ,UAAU;IAElD,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,CAAC,EAAE,GAAG,CAAC;CACpB;AAED,MAAM,CAAC,OAAO,UAAU,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,2CAgGxE"}
@@ -6,13 +6,17 @@ export default function FieldGroupTemplate(props) {
6
6
  // Get emitted components from map (so we can get any override that may exist)
7
7
  const FieldGroup = getComponentFromMap('FieldGroup');
8
8
  const FieldGroupList = getComponentFromMap('FieldGroupList');
9
- const { referenceList = [], renderMode, contextClass, getPConnect, lookForChildInConfig, heading = '', displayMode, fieldHeader, allowTableEdit: allowAddEdit } = props;
9
+ const { referenceList = [], renderMode, contextClass, getPConnect, lookForChildInConfig, heading = '', displayMode, fieldHeader, allowActions, allowTableEdit: allowAddEdit } = props;
10
10
  const pConn = getPConnect();
11
11
  const resolvedList = getReferenceList(pConn);
12
12
  pConn.setReferenceList(resolvedList);
13
13
  const pageReference = `${pConn.getPageReference()}${resolvedList}`;
14
14
  const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY';
15
15
  const HEADING = heading ?? 'Row';
16
+ const hasAllowActions = Object.keys(allowActions ?? {}).length > 0;
17
+ const { allowAdd: actionAdd, allowDelete: actionDelete } = allowActions ?? {};
18
+ const allowAdd = hasAllowActions ? (actionAdd ?? true) : (allowAddEdit ?? true);
19
+ const allowDelete = hasAllowActions ? (actionDelete ?? true) : (allowAddEdit ?? true);
16
20
  useLayoutEffect(() => {
17
21
  if (!isReadonlyMode) {
18
22
  // @ts-expect-error - Expected 3 arguments, but got 1
@@ -45,7 +49,7 @@ export default function FieldGroupTemplate(props) {
45
49
  pConn.getListActions().deleteEntry(index);
46
50
  }
47
51
  };
48
- if (referenceList.length === 0 && allowAddEdit !== false) {
52
+ if (referenceList.length === 0 && allowAdd) {
49
53
  addFieldGroupItem();
50
54
  }
51
55
  const MemoisedChildren = useMemo(() => {
@@ -55,7 +59,7 @@ export default function FieldGroupTemplate(props) {
55
59
  children: buildView(pConn, index, lookForChildInConfig)
56
60
  }));
57
61
  }, [referenceList?.length]);
58
- return (_jsx(FieldGroupList, { items: MemoisedChildren, onAdd: allowAddEdit !== false ? addFieldGroupItem : undefined, onDelete: allowAddEdit !== false ? deleteFieldGroupItem : undefined }));
62
+ return (_jsx(FieldGroupList, { items: MemoisedChildren, onAdd: allowAdd ? addFieldGroupItem : undefined, onDelete: allowDelete ? deleteFieldGroupItem : undefined }));
59
63
  }
60
64
  pConn.setInheritedProp('displayMode', 'DISPLAY_ONLY');
61
65
  const memoisedReadOnlyList = useMemo(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"FieldGroupTemplate.js","sourceRoot":"","sources":["../../../../src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useLayoutEffect, useMemo } from 'react';\n\nimport { getReferenceList, buildView } from '../../helpers/field-group-utils';\nimport { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';\nimport type { PConnProps } from '../../../types/PConnProps';\n\ninterface FieldGroupTemplateProps extends PConnProps {\n // If any, enter additional props that only exist on this component\n referenceList?: any[];\n contextClass: string;\n renderMode?: string;\n heading?: string;\n lookForChildInConfig?: boolean;\n displayMode?: string;\n fieldHeader?: string;\n allowTableEdit: boolean;\n}\n\nexport default function FieldGroupTemplate(props: FieldGroupTemplateProps) {\n // Get emitted components from map (so we can get any override that may exist)\n const FieldGroup = getComponentFromMap('FieldGroup');\n const FieldGroupList = getComponentFromMap('FieldGroupList');\n\n const {\n referenceList = [],\n renderMode,\n contextClass,\n getPConnect,\n lookForChildInConfig,\n heading = '',\n displayMode,\n fieldHeader,\n allowTableEdit: allowAddEdit\n } = props;\n const pConn = getPConnect();\n const resolvedList = getReferenceList(pConn);\n pConn.setReferenceList(resolvedList);\n const pageReference = `${pConn.getPageReference()}${resolvedList}`;\n const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY';\n const HEADING = heading ?? 'Row';\n\n useLayoutEffect(() => {\n if (!isReadonlyMode) {\n // @ts-expect-error - Expected 3 arguments, but got 1\n pConn.getListActions().initDefaultPageInstructions(resolvedList);\n }\n }, [referenceList?.length]);\n\n const getDynamicHeaderProp = (item, index) => {\n if (fieldHeader === 'propertyRef' && heading && item[heading.substring(1)]) {\n return item[heading.substring(1)];\n }\n return `Row ${index + 1}`;\n };\n\n const addRecord = () => {\n if (PCore.getPCoreVersion()?.includes('8.7')) {\n pConn.getListActions().insert({ classID: contextClass }, referenceList.length, pageReference);\n } else {\n pConn.getListActions().insert({}, referenceList.length);\n }\n };\n\n if (!isReadonlyMode) {\n const addFieldGroupItem = () => {\n addRecord();\n };\n const deleteFieldGroupItem = index => {\n if (PCore.getPCoreVersion()?.includes('8.7')) {\n pConn.getListActions().deleteEntry(index, pageReference);\n } else {\n pConn.getListActions().deleteEntry(index);\n }\n };\n if (referenceList.length === 0 && allowAddEdit !== false) {\n addFieldGroupItem();\n }\n\n const MemoisedChildren = useMemo(() => {\n return referenceList.map((item, index) => ({\n id: index,\n name: fieldHeader === 'propertyRef' ? getDynamicHeaderProp(item, index) : `${HEADING} ${index + 1}`,\n children: buildView(pConn, index, lookForChildInConfig)\n }));\n }, [referenceList?.length]);\n\n return (\n <FieldGroupList\n items={MemoisedChildren}\n onAdd={allowAddEdit !== false ? addFieldGroupItem : undefined}\n onDelete={allowAddEdit !== false ? deleteFieldGroupItem : undefined}\n />\n );\n }\n\n pConn.setInheritedProp('displayMode', 'DISPLAY_ONLY');\n const memoisedReadOnlyList = useMemo(() => {\n return referenceList.map((item, index) => {\n const key = item[heading] || `field-group-row-${index}`;\n return (\n <FieldGroup key={key} name={fieldHeader === 'propertyRef' ? getDynamicHeaderProp(item, index) : `${HEADING} ${index + 1}`}>\n {buildView(pConn, index, lookForChildInConfig)}\n </FieldGroup>\n );\n });\n }, []);\n\n return <div>{memoisedReadOnlyList}</div>;\n}\n"]}
1
+ {"version":3,"file":"FieldGroupTemplate.js","sourceRoot":"","sources":["../../../../src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx"],"names":[],"mappings":"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","sourcesContent":["import { useLayoutEffect, useMemo } from 'react';\n\nimport { getReferenceList, buildView } from '../../helpers/field-group-utils';\nimport { getComponentFromMap } from '../../../bridge/helpers/sdk_component_map';\nimport type { PConnProps } from '../../../types/PConnProps';\n\ninterface FieldGroupTemplateProps extends PConnProps {\n // If any, enter additional props that only exist on this component\n referenceList?: any[];\n contextClass: string;\n renderMode?: string;\n heading?: string;\n lookForChildInConfig?: boolean;\n displayMode?: string;\n fieldHeader?: string;\n allowTableEdit: boolean;\n allowActions?: any;\n}\n\nexport default function FieldGroupTemplate(props: FieldGroupTemplateProps) {\n // Get emitted components from map (so we can get any override that may exist)\n const FieldGroup = getComponentFromMap('FieldGroup');\n const FieldGroupList = getComponentFromMap('FieldGroupList');\n\n const {\n referenceList = [],\n renderMode,\n contextClass,\n getPConnect,\n lookForChildInConfig,\n heading = '',\n displayMode,\n fieldHeader,\n allowActions,\n allowTableEdit: allowAddEdit\n } = props;\n const pConn = getPConnect();\n const resolvedList = getReferenceList(pConn);\n pConn.setReferenceList(resolvedList);\n const pageReference = `${pConn.getPageReference()}${resolvedList}`;\n const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY';\n const HEADING = heading ?? 'Row';\n\n const hasAllowActions = Object.keys(allowActions ?? {}).length > 0;\n const { allowAdd: actionAdd, allowDelete: actionDelete } = allowActions ?? {};\n const allowAdd = hasAllowActions ? (actionAdd ?? true) : (allowAddEdit ?? true);\n const allowDelete = hasAllowActions ? (actionDelete ?? true) : (allowAddEdit ?? true);\n\n useLayoutEffect(() => {\n if (!isReadonlyMode) {\n // @ts-expect-error - Expected 3 arguments, but got 1\n pConn.getListActions().initDefaultPageInstructions(resolvedList);\n }\n }, [referenceList?.length]);\n\n const getDynamicHeaderProp = (item, index) => {\n if (fieldHeader === 'propertyRef' && heading && item[heading.substring(1)]) {\n return item[heading.substring(1)];\n }\n return `Row ${index + 1}`;\n };\n\n const addRecord = () => {\n if (PCore.getPCoreVersion()?.includes('8.7')) {\n pConn.getListActions().insert({ classID: contextClass }, referenceList.length, pageReference);\n } else {\n pConn.getListActions().insert({}, referenceList.length);\n }\n };\n\n if (!isReadonlyMode) {\n const addFieldGroupItem = () => {\n addRecord();\n };\n const deleteFieldGroupItem = index => {\n if (PCore.getPCoreVersion()?.includes('8.7')) {\n pConn.getListActions().deleteEntry(index, pageReference);\n } else {\n pConn.getListActions().deleteEntry(index);\n }\n };\n if (referenceList.length === 0 && allowAdd) {\n addFieldGroupItem();\n }\n\n const MemoisedChildren = useMemo(() => {\n return referenceList.map((item, index) => ({\n id: index,\n name: fieldHeader === 'propertyRef' ? getDynamicHeaderProp(item, index) : `${HEADING} ${index + 1}`,\n children: buildView(pConn, index, lookForChildInConfig)\n }));\n }, [referenceList?.length]);\n\n return (\n <FieldGroupList\n items={MemoisedChildren}\n onAdd={allowAdd ? addFieldGroupItem : undefined}\n onDelete={allowDelete ? deleteFieldGroupItem : undefined}\n />\n );\n }\n\n pConn.setInheritedProp('displayMode', 'DISPLAY_ONLY');\n const memoisedReadOnlyList = useMemo(() => {\n return referenceList.map((item, index) => {\n const key = item[heading] || `field-group-row-${index}`;\n return (\n <FieldGroup key={key} name={fieldHeader === 'propertyRef' ? getDynamicHeaderProp(item, index) : `${HEADING} ${index + 1}`}>\n {buildView(pConn, index, lookForChildInConfig)}\n </FieldGroup>\n );\n });\n }, []);\n\n return <div>{memoisedReadOnlyList}</div>;\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import { type PropsWithChildren } from 'react';
2
+ import { type HierarchicalFormProps } from './hooks';
3
+ export default function HierarchicalForm(props: PropsWithChildren<HierarchicalFormProps>): import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=HierarchicalForm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HierarchicalForm.d.ts","sourceRoot":"","sources":["../../../../src/components/template/HierarchicalForm/HierarchicalForm.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAI/C,OAAO,EAAuB,KAAK,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAE1E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,kDAmDvF"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import {} from 'react';
3
+ import { Tab, Tabs, Box, Badge, Tooltip } from '@mui/material';
4
+ import { TabContext, TabPanel } from '@mui/lab';
5
+ import { useHierarchicalForm } from './hooks';
6
+ export default function HierarchicalForm(props) {
7
+ const { currentTabId, handleTabClick, processedTabs, instructions } = useHierarchicalForm(props);
8
+ if (!currentTabId) {
9
+ return null;
10
+ }
11
+ return (_jsxs(Box, { display: 'flex', flexDirection: 'column', children: [instructions && (_jsx(Box, { mb: 2, children: _jsx("div", { dangerouslySetInnerHTML: { __html: instructions } }) })), _jsx(Box, { sx: { flexGrow: 1 }, children: _jsxs(TabContext, { value: currentTabId.toString(), children: [_jsx(Box, { sx: { borderBottom: 1, borderColor: 'divider' }, children: _jsx(Tabs, { onChange: handleTabClick, value: currentTabId.toString(), variant: 'scrollable', children: processedTabs.map((tab) => {
12
+ const tabLabel = tab.name || tab.label;
13
+ return (_jsx(Tab, { sx: { textTransform: 'none' }, label: tab.errors ? (_jsx(Tooltip, { title: `${tabLabel} has errors`, placement: 'top', children: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 1 }, children: [_jsx("span", { children: tabLabel }), _jsx(Badge, { badgeContent: tab.errors, color: 'error', sx: { '& .MuiBadge-badge': { position: 'static', transform: 'none' } } })] }) })) : (tabLabel), value: tab.id?.toString() }, tab.id));
14
+ }) }) }), processedTabs.map((tab) => (_jsx(TabPanel, { value: tab.id?.toString(), tabIndex: +tab.id, keepMounted: true, sx: { px: 0 }, children: _jsx("div", { children: tab.content ? tab.content : 'No content exists' }) }, tab.id)))] }) })] }));
15
+ }
16
+ //# sourceMappingURL=HierarchicalForm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HierarchicalForm.js","sourceRoot":"","sources":["../../../../src/components/template/HierarchicalForm/HierarchicalForm.tsx"],"names":[],"mappings":";AAAA,OAAO,EAA0B,MAAM,OAAO,CAAC;AAC/C,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAEhD,OAAO,EAAE,mBAAmB,EAA8B,MAAM,SAAS,CAAC;AAE1E,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,KAA+C;IACtF,MAAM,EAAE,YAAY,EAAE,cAAc,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAEjG,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CACL,MAAC,GAAG,IAAC,OAAO,EAAC,MAAM,EAAC,aAAa,EAAC,QAAQ,aACvC,YAAY,IAAI,CACf,KAAC,GAAG,IAAC,EAAE,EAAE,CAAC,YACR,cAAK,uBAAuB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,GAAI,GACtD,CACP,EACD,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,YACtB,MAAC,UAAU,IAAC,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,aACxC,KAAC,GAAG,IAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,YAClD,KAAC,IAAI,IAAC,QAAQ,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAC,YAAY,YACjF,aAAa,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE;oCAC9B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC;oCACvC,OAAO,CACL,KAAC,GAAG,IAEF,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,EAC7B,KAAK,EACH,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CACX,KAAC,OAAO,IAAC,KAAK,EAAE,GAAG,QAAQ,aAAa,EAAE,SAAS,EAAC,KAAK,YACvD,MAAC,GAAG,IAAC,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,EAAE,aACxD,yBAAO,QAAQ,GAAQ,EACvB,KAAC,KAAK,IAAC,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,EAAC,OAAO,EAAC,EAAE,EAAE,EAAE,mBAAmB,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,GAAI,IACrH,GACE,CACX,CAAC,CAAC,CAAC,CACF,QAAQ,CACT,EAEH,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,IAdpB,GAAG,CAAC,EAAE,CAeX,CACH,CAAC;gCACJ,CAAC,CAAC,GACG,GACH,EACL,aAAa,CAAC,GAAG,CAAC,CAAC,GAAQ,EAAE,EAAE,CAAC,CAC/B,KAAC,QAAQ,IAAc,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,QAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,YAC5F,wBAAM,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,GAAO,IAD/C,GAAG,CAAC,EAAE,CAEV,CACZ,CAAC,IACS,GACT,IACF,CACP,CAAC;AACJ,CAAC","sourcesContent":["import { type PropsWithChildren } from 'react';\nimport { Tab, Tabs, Box, Badge, Tooltip } from '@mui/material';\nimport { TabContext, TabPanel } from '@mui/lab';\n\nimport { useHierarchicalForm, type HierarchicalFormProps } from './hooks';\n\nexport default function HierarchicalForm(props: PropsWithChildren<HierarchicalFormProps>) {\n const { currentTabId, handleTabClick, processedTabs, instructions } = useHierarchicalForm(props);\n\n if (!currentTabId) {\n return null;\n }\n\n return (\n <Box display='flex' flexDirection='column'>\n {instructions && (\n <Box mb={2}>\n <div dangerouslySetInnerHTML={{ __html: instructions }} />\n </Box>\n )}\n <Box sx={{ flexGrow: 1 }}>\n <TabContext value={currentTabId.toString()}>\n <Box sx={{ borderBottom: 1, borderColor: 'divider' }}>\n <Tabs onChange={handleTabClick} value={currentTabId.toString()} variant='scrollable'>\n {processedTabs.map((tab: any) => {\n const tabLabel = tab.name || tab.label;\n return (\n <Tab\n key={tab.id}\n sx={{ textTransform: 'none' }}\n label={\n tab.errors ? (\n <Tooltip title={`${tabLabel} has errors`} placement='top'>\n <Box sx={{ display: 'flex', alignItems: 'center', gap: 1 }}>\n <span>{tabLabel}</span>\n <Badge badgeContent={tab.errors} color='error' sx={{ '& .MuiBadge-badge': { position: 'static', transform: 'none' } }} />\n </Box>\n </Tooltip>\n ) : (\n tabLabel\n )\n }\n value={tab.id?.toString()}\n />\n );\n })}\n </Tabs>\n </Box>\n {processedTabs.map((tab: any) => (\n <TabPanel key={tab.id} value={tab.id?.toString()} tabIndex={+tab.id} keepMounted sx={{ px: 0 }}>\n <div>{tab.content ? tab.content : 'No content exists'}</div>\n </TabPanel>\n ))}\n </TabContext>\n </Box>\n </Box>\n );\n}\n"]}
@@ -0,0 +1,15 @@
1
+ import { type PropsWithChildren, type SyntheticEvent } from 'react';
2
+ import type { PConnProps } from '../../../types/PConnProps';
3
+ export interface HierarchicalFormProps extends PConnProps {
4
+ tabsVisibility?: Record<string, boolean>;
5
+ template?: string;
6
+ instructions?: string;
7
+ lastUpdateCaseTime?: string | number;
8
+ }
9
+ export declare function useHierarchicalForm(props: PropsWithChildren<HierarchicalFormProps>): {
10
+ currentTabId: any;
11
+ handleTabClick: (event: SyntheticEvent, id: string) => void;
12
+ processedTabs: any[];
13
+ instructions: string | undefined;
14
+ };
15
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/components/template/HierarchicalForm/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+D,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,OAAO,CAAC;AAKjI,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAW5D,MAAM,WAAW,qBAAsB,SAAQ,UAAU;IACvD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kBAAkB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACtC;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,CAAC,qBAAqB,CAAC;;4BAoGvE,cAAc,MAAM,MAAM;;;EAoGrC"}
@@ -0,0 +1,163 @@
1
+ import { useState, useEffect, useMemo, useCallback, useRef, Children } from 'react';
2
+ import useGetTabsCount from '../../../hooks/useGetTabsCount';
3
+ import { searchtabsClick as tabClick, getActiveTabId, getFirstVisibleTabId } from '../SubTabs/tabUtils';
4
+ import { getInstructions } from '../../helpers/template-utils';
5
+ const ComponentName = 'HierarchicalForm';
6
+ const getLandingPageViewName = (contextName) => {
7
+ const target = contextName.substring(0, contextName.lastIndexOf('_'));
8
+ const activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(target);
9
+ const containerItemData = PCore.getContainerUtils().getContainerItemData(target, activeContainerItemID);
10
+ return containerItemData?.view?.config?.name;
11
+ };
12
+ export function useHierarchicalForm(props) {
13
+ const { children = [], getPConnect, tabsVisibility = {}, template } = props;
14
+ const [tabErrors, setTabErrors] = useState({});
15
+ const tabErrorsRef = useRef({});
16
+ const submitAttemptedRef = useRef(false);
17
+ const { lastUpdateCaseTime = getPConnect().getValue('caseInfo.lastUpdateTime') } = props;
18
+ const fullCaseId = getPConnect().getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);
19
+ const deferLoadedTabs = Children.toArray(children)[0];
20
+ deferLoadedTabs.props.getPConnect().setInheritedProp('template', template);
21
+ const navigationKey = useMemo(() => {
22
+ const parentNavKey = `${getPConnect().getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID) || getLandingPageViewName(getPConnect().getContextName())}`;
23
+ return `${parentNavKey}-${getPConnect().getMetadata()?.name}-${ComponentName}`;
24
+ }, []);
25
+ const instructions = getInstructions(getPConnect(), props.instructions);
26
+ const storedTab = PCore.getNavigationUtils().getComponentState(navigationKey)?.activeTab;
27
+ const tabsFromChildren = deferLoadedTabs.props.getPConnect().getChildren();
28
+ const firstTabId = getFirstVisibleTabId(deferLoadedTabs, undefined);
29
+ const [currentTabId, setCurrentTabId] = useState(getActiveTabId(tabsFromChildren, storedTab || firstTabId));
30
+ const [tabVisibilityStr, setTabVisibilityStr] = useState('');
31
+ const { data: tabData, refreshTabData } = useGetTabsCount(deferLoadedTabs, 'hierarchical', currentTabId, template);
32
+ const handleCaseRefresh = (message) => {
33
+ if (message.subtype === 'tab') {
34
+ refreshTabData();
35
+ }
36
+ };
37
+ useEffect(() => {
38
+ let index = 0;
39
+ let caseSubId = '';
40
+ deferLoadedTabs.props
41
+ .getPConnect()
42
+ .getChildren()
43
+ ?.forEach((child) => {
44
+ const rawConfigProps = child.getPConnect().getRawConfigProps();
45
+ if ('visibility' in rawConfigProps) {
46
+ tabsVisibility[`${index}`] = rawConfigProps.visibility;
47
+ }
48
+ index += 1;
49
+ });
50
+ getPConnect().registerAdditionalProps({ tabsVisibility });
51
+ getPConnect().registerAdditionalProps({ lastUpdateCaseTime: '@P caseInfo.lastUpdateTime' });
52
+ if (fullCaseId) {
53
+ caseSubId = PCore.getMessagingServiceManager().getCaseSubscription(fullCaseId).subscribe({ caseId: fullCaseId }, handleCaseRefresh);
54
+ }
55
+ return () => {
56
+ if (fullCaseId)
57
+ PCore.getMessagingServiceManager().getCaseSubscription(fullCaseId).unsubscribe(caseSubId);
58
+ };
59
+ }, []);
60
+ useEffect(() => {
61
+ refreshTabData();
62
+ }, [lastUpdateCaseTime]);
63
+ useEffect(() => {
64
+ const isVisibilityAvailable = Object.values(tabsVisibility).length > 0 && Object.values(tabsVisibility).every(visibility => typeof visibility === 'boolean');
65
+ if (isVisibilityAvailable) {
66
+ let str = '';
67
+ Object.keys(tabsVisibility).forEach(key => {
68
+ str += key + tabsVisibility[key];
69
+ });
70
+ setTabVisibilityStr(str);
71
+ }
72
+ }, [tabsVisibility]);
73
+ useEffect(() => {
74
+ if (tabData && tabData.length) {
75
+ const activeTabId = getActiveTabId(tabData, currentTabId);
76
+ if (activeTabId !== currentTabId) {
77
+ setCurrentTabId(activeTabId);
78
+ }
79
+ }
80
+ }, [tabVisibilityStr, tabData]);
81
+ useEffect(() => {
82
+ PCore.getNavigationUtils().setComponentState(navigationKey, { activeTab: currentTabId });
83
+ const activeTabNavKey = `${getPConnect().getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID)}-CaseView-ActiveTab`;
84
+ PCore.getNavigationUtils().setComponentState(activeTabNavKey, { id: currentTabId });
85
+ return () => {
86
+ if (getPConnect().getContextName()?.includes('/modal')) {
87
+ PCore.getNavigationUtils().setComponentState(navigationKey, { activeTab: firstTabId });
88
+ }
89
+ };
90
+ }, [currentTabId, children]);
91
+ const handleTabClick = useCallback((event, id) => {
92
+ tabClick(id, tabData, currentTabId, setCurrentTabId);
93
+ }, [tabData, currentTabId]);
94
+ const tabItems = useMemo(() => tabData?.filter((tab) => tab.visibility()) ?? [], [tabData, tabVisibilityStr]);
95
+ const tabsRef = useRef(tabItems);
96
+ tabsRef.current = tabItems;
97
+ const updateTabErrorsOnViewMutate = useCallback((messageObject, tab) => {
98
+ if (!messageObject.type) {
99
+ return;
100
+ }
101
+ const previousTabErrors = tabErrorsRef.current;
102
+ let currentTabState = previousTabErrors[tab.id] || {};
103
+ const { MESSAGES_TYPE_ERROR } = PCore.getConstants().MESSAGES;
104
+ if (messageObject.type !== MESSAGES_TYPE_ERROR) {
105
+ delete currentTabState[messageObject.fieldName];
106
+ currentTabState = Object.keys(currentTabState).length > 0 ? currentTabState : undefined;
107
+ }
108
+ else {
109
+ currentTabState = { ...currentTabState, [messageObject.fieldName]: messageObject.messages };
110
+ }
111
+ const newErrors = { ...previousTabErrors, [tab.id]: currentTabState };
112
+ tabErrorsRef.current = newErrors;
113
+ setTabErrors(newErrors);
114
+ }, []);
115
+ useEffect(() => {
116
+ const rawConfig = '_rawConfig';
117
+ tabItems.forEach((tab) => {
118
+ PCore.getContextTreeManager().onViewMutate(tab.getPConnect().getContextName(), tab.getPConnect().getPageReference(), tab.getPConnect()[rawConfig].config?.name, (messageObject) => updateTabErrorsOnViewMutate(messageObject, tab));
119
+ });
120
+ }, [tabItems, updateTabErrorsOnViewMutate]);
121
+ const navigateToFirstErrorTab = useCallback(() => {
122
+ const currentErrors = tabErrorsRef.current;
123
+ const firstTabWithError = tabsRef.current.find((tab) => {
124
+ const tabErrorState = currentErrors[tab.id];
125
+ return tabErrorState && Object.keys(tabErrorState).length > 0;
126
+ });
127
+ if (firstTabWithError) {
128
+ submitAttemptedRef.current = false;
129
+ setCurrentTabId(firstTabWithError.id);
130
+ }
131
+ }, []);
132
+ const highlightFirstErrorTab = useCallback(() => {
133
+ submitAttemptedRef.current = true;
134
+ navigateToFirstErrorTab();
135
+ }, [navigateToFirstErrorTab]);
136
+ useEffect(() => {
137
+ const { CURRENT_ASSIGNMENT_UPDATED } = PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS;
138
+ PCore.getPubSubUtils().subscribe(CURRENT_ASSIGNMENT_UPDATED, () => {
139
+ tabErrorsRef.current = {};
140
+ submitAttemptedRef.current = false;
141
+ setTabErrors({});
142
+ }, 'CURRENT_ASSIGNMENT_UPDATED-HierarchicalForm');
143
+ PCore.getPubSubUtils().subscribe(PCore.getConstants().PUB_SUB_EVENTS.ERROR_ON_FINISH_ASSIGNMENT, highlightFirstErrorTab, 'ERROR_ON_FINISH_ASSIGNMENT-HierarchicalForm');
144
+ return () => {
145
+ PCore.getPubSubUtils().unsubscribe(CURRENT_ASSIGNMENT_UPDATED, 'CURRENT_ASSIGNMENT_UPDATED-HierarchicalForm');
146
+ PCore.getPubSubUtils().unsubscribe(PCore.getConstants().PUB_SUB_EVENTS.ERROR_ON_FINISH_ASSIGNMENT, 'ERROR_ON_FINISH_ASSIGNMENT-HierarchicalForm');
147
+ };
148
+ }, []);
149
+ useEffect(() => {
150
+ if (submitAttemptedRef.current) {
151
+ navigateToFirstErrorTab();
152
+ }
153
+ }, [tabErrors, navigateToFirstErrorTab]);
154
+ const processedTabs = useMemo(() => {
155
+ return tabItems.map(tab => {
156
+ const errorKeys = Object.keys(tabErrors[tab.id] ?? {});
157
+ const errors = errorKeys.length > 0 ? errorKeys.reduce((sum, fieldName) => sum + tabErrors[tab.id][fieldName].length, 0) : undefined;
158
+ return { ...tab, errors };
159
+ });
160
+ }, [tabItems, tabErrors]);
161
+ return { currentTabId, handleTabClick, processedTabs, instructions };
162
+ }
163
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../../src/components/template/HierarchicalForm/hooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { useState, useEffect, useMemo, useCallback, useRef, Children, type PropsWithChildren, type SyntheticEvent } from 'react';\n\nimport useGetTabsCount from '../../../hooks/useGetTabsCount';\nimport { searchtabsClick as tabClick, getActiveTabId, getFirstVisibleTabId } from '../SubTabs/tabUtils';\nimport { getInstructions } from '../../helpers/template-utils';\nimport type { PConnProps } from '../../../types/PConnProps';\n\nconst ComponentName = 'HierarchicalForm';\n\nconst getLandingPageViewName = (contextName: string) => {\n const target = contextName.substring(0, contextName.lastIndexOf('_'));\n const activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(target);\n const containerItemData = PCore.getContainerUtils().getContainerItemData(target, activeContainerItemID);\n return containerItemData?.view?.config?.name;\n};\n\nexport interface HierarchicalFormProps extends PConnProps {\n tabsVisibility?: Record<string, boolean>;\n template?: string;\n instructions?: string;\n lastUpdateCaseTime?: string | number;\n}\n\nexport function useHierarchicalForm(props: PropsWithChildren<HierarchicalFormProps>) {\n const { children = [], getPConnect, tabsVisibility = {}, template } = props;\n const [tabErrors, setTabErrors] = useState<Record<string, any>>({});\n const tabErrorsRef = useRef<Record<string, any>>({});\n const submitAttemptedRef = useRef(false);\n const { lastUpdateCaseTime = getPConnect().getValue('caseInfo.lastUpdateTime') } = props;\n const fullCaseId = getPConnect().getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID);\n\n const deferLoadedTabs: any = Children.toArray(children)[0];\n deferLoadedTabs.props.getPConnect().setInheritedProp('template', template);\n\n const navigationKey = useMemo(() => {\n const parentNavKey = `${\n getPConnect().getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID) || getLandingPageViewName(getPConnect().getContextName())\n }`;\n return `${parentNavKey}-${getPConnect().getMetadata()?.name}-${ComponentName}`;\n }, []);\n\n const instructions = getInstructions(getPConnect(), props.instructions);\n\n const storedTab = (PCore.getNavigationUtils().getComponentState(navigationKey) as any)?.activeTab;\n\n const tabsFromChildren = deferLoadedTabs.props.getPConnect().getChildren();\n\n const firstTabId = getFirstVisibleTabId(deferLoadedTabs, undefined);\n\n const [currentTabId, setCurrentTabId] = useState(getActiveTabId(tabsFromChildren, storedTab || firstTabId));\n const [tabVisibilityStr, setTabVisibilityStr] = useState('');\n const { data: tabData, refreshTabData } = useGetTabsCount(deferLoadedTabs, 'hierarchical', currentTabId, template);\n\n const handleCaseRefresh = (message: any) => {\n if (message.subtype === 'tab') {\n refreshTabData();\n }\n };\n\n useEffect(() => {\n let index = 0;\n let caseSubId = '';\n deferLoadedTabs.props\n .getPConnect()\n .getChildren()\n ?.forEach((child: any) => {\n const rawConfigProps = child.getPConnect().getRawConfigProps();\n if ('visibility' in rawConfigProps) {\n tabsVisibility[`${index}`] = rawConfigProps.visibility;\n }\n index += 1;\n });\n\n getPConnect().registerAdditionalProps({ tabsVisibility });\n getPConnect().registerAdditionalProps({ lastUpdateCaseTime: '@P caseInfo.lastUpdateTime' });\n\n if (fullCaseId) {\n caseSubId = PCore.getMessagingServiceManager().getCaseSubscription(fullCaseId).subscribe({ caseId: fullCaseId }, handleCaseRefresh);\n }\n\n return () => {\n if (fullCaseId) PCore.getMessagingServiceManager().getCaseSubscription(fullCaseId).unsubscribe(caseSubId);\n };\n }, []);\n\n useEffect(() => {\n refreshTabData();\n }, [lastUpdateCaseTime]);\n\n useEffect(() => {\n const isVisibilityAvailable =\n Object.values(tabsVisibility).length > 0 && Object.values(tabsVisibility).every(visibility => typeof visibility === 'boolean');\n if (isVisibilityAvailable) {\n let str = '';\n Object.keys(tabsVisibility).forEach(key => {\n str += key + tabsVisibility[key];\n });\n setTabVisibilityStr(str);\n }\n }, [tabsVisibility]);\n\n useEffect(() => {\n if (tabData && tabData.length) {\n const activeTabId = getActiveTabId(tabData, currentTabId);\n if (activeTabId !== currentTabId) {\n setCurrentTabId(activeTabId);\n }\n }\n }, [tabVisibilityStr, tabData]);\n\n useEffect(() => {\n PCore.getNavigationUtils().setComponentState(navigationKey, { activeTab: currentTabId });\n const activeTabNavKey = `${getPConnect().getValue(PCore.getConstants().CASE_INFO.CASE_INFO_ID)}-CaseView-ActiveTab`;\n PCore.getNavigationUtils().setComponentState(activeTabNavKey, { id: currentTabId });\n\n return () => {\n if (getPConnect().getContextName()?.includes('/modal')) {\n PCore.getNavigationUtils().setComponentState(navigationKey, { activeTab: firstTabId });\n }\n };\n }, [currentTabId, children]);\n\n const handleTabClick = useCallback(\n (event: SyntheticEvent, id: string) => {\n tabClick(id, tabData, currentTabId, setCurrentTabId);\n },\n [tabData, currentTabId]\n );\n\n const tabItems = useMemo(() => tabData?.filter((tab: any) => tab.visibility()) ?? [], [tabData, tabVisibilityStr]);\n\n const tabsRef = useRef(tabItems);\n tabsRef.current = tabItems;\n\n const updateTabErrorsOnViewMutate = useCallback((messageObject: any, tab: any) => {\n if (!messageObject.type) {\n return;\n }\n const previousTabErrors = tabErrorsRef.current;\n let currentTabState = previousTabErrors[tab.id] || {};\n const { MESSAGES_TYPE_ERROR } = PCore.getConstants().MESSAGES;\n if (messageObject.type !== MESSAGES_TYPE_ERROR) {\n delete currentTabState[messageObject.fieldName];\n currentTabState = Object.keys(currentTabState).length > 0 ? currentTabState : undefined;\n } else {\n currentTabState = { ...currentTabState, [messageObject.fieldName]: messageObject.messages };\n }\n const newErrors = { ...previousTabErrors, [tab.id]: currentTabState };\n tabErrorsRef.current = newErrors;\n setTabErrors(newErrors);\n }, []);\n\n useEffect(() => {\n const rawConfig = '_rawConfig';\n tabItems.forEach((tab: any) => {\n PCore.getContextTreeManager().onViewMutate(\n tab.getPConnect().getContextName(),\n tab.getPConnect().getPageReference(),\n tab.getPConnect()[rawConfig].config?.name,\n (messageObject: any) => updateTabErrorsOnViewMutate(messageObject, tab)\n );\n });\n }, [tabItems, updateTabErrorsOnViewMutate]);\n\n const navigateToFirstErrorTab = useCallback(() => {\n const currentErrors = tabErrorsRef.current;\n const firstTabWithError = tabsRef.current.find((tab: any) => {\n const tabErrorState = currentErrors[tab.id];\n return tabErrorState && Object.keys(tabErrorState).length > 0;\n });\n if (firstTabWithError) {\n submitAttemptedRef.current = false;\n setCurrentTabId(firstTabWithError.id);\n }\n }, []);\n\n const highlightFirstErrorTab = useCallback(() => {\n submitAttemptedRef.current = true;\n navigateToFirstErrorTab();\n }, [navigateToFirstErrorTab]);\n\n useEffect(() => {\n const { CURRENT_ASSIGNMENT_UPDATED } = PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS;\n PCore.getPubSubUtils().subscribe(\n CURRENT_ASSIGNMENT_UPDATED,\n () => {\n tabErrorsRef.current = {};\n submitAttemptedRef.current = false;\n setTabErrors({});\n },\n 'CURRENT_ASSIGNMENT_UPDATED-HierarchicalForm'\n );\n\n PCore.getPubSubUtils().subscribe(\n PCore.getConstants().PUB_SUB_EVENTS.ERROR_ON_FINISH_ASSIGNMENT,\n highlightFirstErrorTab,\n 'ERROR_ON_FINISH_ASSIGNMENT-HierarchicalForm'\n );\n\n return () => {\n PCore.getPubSubUtils().unsubscribe(CURRENT_ASSIGNMENT_UPDATED, 'CURRENT_ASSIGNMENT_UPDATED-HierarchicalForm');\n PCore.getPubSubUtils().unsubscribe(\n PCore.getConstants().PUB_SUB_EVENTS.ERROR_ON_FINISH_ASSIGNMENT,\n 'ERROR_ON_FINISH_ASSIGNMENT-HierarchicalForm'\n );\n };\n }, []);\n\n useEffect(() => {\n if (submitAttemptedRef.current) {\n navigateToFirstErrorTab();\n }\n }, [tabErrors, navigateToFirstErrorTab]);\n\n const processedTabs = useMemo(() => {\n return tabItems.map(tab => {\n const errorKeys = Object.keys(tabErrors[tab.id] ?? {});\n const errors = errorKeys.length > 0 ? errorKeys.reduce((sum, fieldName) => sum + tabErrors[tab.id][fieldName].length, 0) : undefined;\n return { ...tab, errors };\n });\n }, [tabItems, tabErrors]);\n\n return { currentTabId, handleTabClick, processedTabs, instructions };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export { default } from './HierarchicalForm';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/template/HierarchicalForm/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { default } from './HierarchicalForm';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/template/HierarchicalForm/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export { default } from './HierarchicalForm';\n"]}
@@ -15,6 +15,7 @@ interface ListViewProps extends PConnProps {
15
15
  viewName?: string;
16
16
  showRecords?: boolean;
17
17
  displayAs?: string;
18
+ localeReference?: string;
18
19
  }
19
20
  export default function ListView(props: ListViewProps): import("react/jsx-runtime").JSX.Element;
20
21
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../../src/components/template/ListView/ListView.tsx"],"names":[],"mappings":"AAoCA,OAAO,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,aAAc,SAAQ,UAAU;IAExC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAEtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAwuCpD"}
1
+ {"version":3,"file":"ListView.d.ts","sourceRoot":"","sources":["../../../../src/components/template/ListView/ListView.tsx"],"names":[],"mappings":"AAoCA,OAAO,gBAAgB,CAAC;AAOxB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAE5D,UAAU,aAAc,SAAQ,UAAU;IAExC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;IAEtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,GAAG,CAAC;IACd,UAAU,CAAC,EAAE,GAAG,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,mBAAmB,CAAC,EAAE,GAAG,CAAC;IAC1B,KAAK,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAcD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,2CAiyCpD"}
@@ -50,7 +50,7 @@ export default function ListView(props) {
50
50
  const { getPConnect, bInForm = true } = props;
51
51
  const { globalSearch, referenceList,
52
52
  /* rowClickAction, */
53
- selectionMode, referenceType, payload, parameters, compositeKeys, showDynamicFields, viewName, readonlyContextList: selectedValues, value, displayAs } = props;
53
+ selectionMode, referenceType, payload, parameters, compositeKeys, showDynamicFields, viewName, readonlyContextList: selectedValues, value, displayAs, localeReference } = props;
54
54
  let { showRecords } = props;
55
55
  const ref = useRef({}).current;
56
56
  const cosmosTableRef = useRef();
@@ -84,6 +84,8 @@ export default function ListView(props) {
84
84
  const [showSnackbar, setShowSnackbar] = useState(false);
85
85
  const [snackbarMessage, setSnackbarMessage] = useState('');
86
86
  const [selectedValue, setSelectedValue] = useState(value);
87
+ // Tracks selected row keys for multi-select mode (mirrors Angular's SelectionModel)
88
+ const [selectedRowSet, setSelectedRowSet] = useState(new Set());
87
89
  // This basically will hold the list of all current filters
88
90
  const filters = useRef({});
89
91
  // Will contain the list of columns specific for an instance
@@ -150,6 +152,7 @@ export default function ListView(props) {
150
152
  }
151
153
  else {
152
154
  getPConnect().getListActions().clearSelectedRows();
155
+ setSelectedRowSet(new Set());
153
156
  }
154
157
  }
155
158
  }
@@ -463,6 +466,7 @@ export default function ListView(props) {
463
466
  const myColumns = getHeaderCells(columnFields, fieldDefs);
464
467
  const selectParams = [];
465
468
  myColumns.forEach(column => {
469
+ column.label = PCore.getLocaleUtils().getLocaleValue(column.label, localeReference);
466
470
  selectParams.push({
467
471
  field: column.id
468
472
  });
@@ -482,6 +486,16 @@ export default function ListView(props) {
482
486
  if (bCallSetRowsColumns) {
483
487
  setRows(myRows);
484
488
  setColumns(myColumns);
489
+ if (selectionMode === SELECTION_MODE.MULTI && selectedValues?.length > 0) {
490
+ const readonlyIds = new Set(selectedValues.map((element) => element[rowID]));
491
+ const initialSet = new Set();
492
+ myRows?.forEach(row => {
493
+ if (readonlyIds.has(row[rowID])) {
494
+ initialSet.add(row[rowID]);
495
+ }
496
+ });
497
+ setSelectedRowSet(initialSet);
498
+ }
485
499
  }
486
500
  return () => {
487
501
  // Inspired by https://juliangaramendy.dev/blog/use-promise-subscription
@@ -834,12 +848,11 @@ export default function ListView(props) {
834
848
  getPConnect()?.getListActions?.()?.setSelectedRows([reqObj]);
835
849
  setSelectedValue(value);
836
850
  };
837
- const onCheckboxClick = event => {
838
- const value = event?.target?.value;
839
- const checked = event?.target?.checked;
851
+ const getSelectedValue = (row, checked) => {
852
+ const rowValue = row[rowID];
840
853
  const reqObj = {};
841
854
  if (compositeKeys?.length > 1) {
842
- const index = response.findIndex(element => element[rowID] === value);
855
+ const index = response.findIndex(element => element[rowID] === rowValue);
843
856
  const selectedRow = response[index];
844
857
  compositeKeys.forEach(element => {
845
858
  reqObj[element] = selectedRow[element];
@@ -847,10 +860,44 @@ export default function ListView(props) {
847
860
  reqObj.$selected = checked;
848
861
  }
849
862
  else {
850
- reqObj[rowID] = value;
863
+ reqObj[rowID] = rowValue;
851
864
  reqObj.$selected = checked;
852
865
  }
853
- getPConnect()?.getListActions()?.setSelectedRows([reqObj]);
866
+ return reqObj;
867
+ };
868
+ const onCheckboxClick = (row) => {
869
+ const rowKey = row[rowID];
870
+ const newSet = new Set(selectedRowSet);
871
+ if (newSet.has(rowKey)) {
872
+ newSet.delete(rowKey);
873
+ }
874
+ else {
875
+ newSet.add(rowKey);
876
+ }
877
+ setSelectedRowSet(newSet);
878
+ const checked = newSet.has(rowKey);
879
+ const requiredValue = getSelectedValue(row, checked);
880
+ getPConnect()?.getListActions()?.setSelectedRows([requiredValue]);
881
+ };
882
+ const isAllSelected = () => {
883
+ const numSelected = selectedRowSet.size;
884
+ const numRows = arRows?.length || 0;
885
+ return numRows > 0 && numSelected === numRows;
886
+ };
887
+ const toggleAllRows = () => {
888
+ if (isAllSelected()) {
889
+ setSelectedRowSet(new Set());
890
+ getPConnect()?.getListActions()?.clearSelectedRows();
891
+ return;
892
+ }
893
+ if (selectedRowSet.size > 0 && !isAllSelected()) {
894
+ getPConnect()?.getListActions()?.clearSelectedRows();
895
+ }
896
+ const newSet = new Set();
897
+ arRows.forEach(row => newSet.add(row[rowID]));
898
+ setSelectedRowSet(newSet);
899
+ const requiredValues = arRows.map(row => getSelectedValue(row, true));
900
+ getPConnect()?.getListActions()?.setSelectedRows(requiredValues);
854
901
  };
855
902
  const processColumnValue = (column, value) => {
856
903
  let val;
@@ -888,14 +935,14 @@ export default function ListView(props) {
888
935
  _listViewClick(row, column);
889
936
  }, underline: 'hover', children: column.format && typeof value === 'number' ? column.format(value) : value })) : (_jsx(_Fragment, { children: column.format && typeof value === 'number' ? column.format(value) : value || '---' })) }, column.id));
890
937
  }) }, row.pxRefObjectInsName || row.pyID));
891
- }) })] }) })) : (_jsxs(TableContainer, { id: 'list-view', children: [_jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [(selectionMode === SELECTION_MODE.SINGLE || selectionMode === SELECTION_MODE.MULTI) && _jsx(TableCell, {}), arColumns.map(column => {
938
+ }) })] }) })) : (_jsxs(TableContainer, { id: 'list-view', children: [_jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [selectionMode === SELECTION_MODE.SINGLE && _jsx(TableCell, { padding: 'checkbox' }), selectionMode === SELECTION_MODE.MULTI && (_jsx(TableCell, { padding: 'checkbox', children: _jsx(Checkbox, { indeterminate: selectedRowSet.size > 0 && !isAllSelected(), checked: arRows?.length > 0 && isAllSelected(), onChange: toggleAllRows }) })), arColumns.map(column => {
892
939
  return (_jsx(TableCell, { className: classes.cell, sortDirection: orderBy === column.id ? order : false, children: _jsxs(TableSortLabel, { active: orderBy === column.id, direction: orderBy === column.id ? order : 'asc', onClick: createSortHandler(column.id), children: [column.label, orderBy === column.id ? (_jsx("span", { className: classes.visuallyHidden, children: order === 'desc' ? 'sorted descending' : 'sorted ascending' })) : null] }) }, column.id));
893
940
  })] }) }), _jsx(TableBody, { children: arRows &&
894
941
  arRows.length > 0 &&
895
942
  stableSort(arRows, getComparator(order, orderBy))
896
943
  .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)
897
944
  .map(row => {
898
- return (_jsxs(TableRow, { children: [selectionMode === SELECTION_MODE.SINGLE && (_jsx(TableCell, { children: _jsx(Radio, { onChange: handleChange, value: row[rowID], name: 'radio-buttons', inputProps: { 'aria-label': 'A' }, checked: selectedValue === row[rowID] }) })), selectionMode === SELECTION_MODE.MULTI && (_jsx(TableCell, { children: _jsx(Checkbox, { onChange: onCheckboxClick, checked: selectedValues.some(selectedValue => selectedValue[rowID] === row[rowID]), value: row[rowID] }) })), arColumns.map(column => {
945
+ return (_jsxs(TableRow, { children: [selectionMode === SELECTION_MODE.SINGLE && (_jsx(TableCell, { padding: 'checkbox', children: _jsx(Radio, { onChange: handleChange, value: row[rowID], name: 'radio-buttons', inputProps: { 'aria-label': 'A' }, checked: selectedValue === row[rowID] }) })), selectionMode === SELECTION_MODE.MULTI && (_jsx(TableCell, { padding: 'checkbox', children: _jsx(Checkbox, { onChange: () => onCheckboxClick(row), checked: selectedRowSet.has(row[rowID]) }) })), arColumns.map(column => {
899
946
  const value = row[column.id];
900
947
  return (_jsx(TableCell, { className: classes.cell, align: column.align, children: processColumnValue(column, value) }, column.id));
901
948
  })] }, row[rowID]));