@pega/custom-dx-components 0.24.3 → 0.24.5

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 (119) hide show
  1. package/package.json +1 -1
  2. package/src/tasks/bundle/builder/webpack.config.js +15 -1
  3. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/index.tsx.mustache +11 -0
  4. package/src/tasks/create/templates/Constellation/Field/Picklist-Autocomplete/utils.ts.mustache +3 -0
  5. package/src/tasks/create/templates/Constellation/Field/Text/index.tsx.mustache +94 -4
  6. package/src/tasks/create/templates/Constellation/Template/DETAILS/DetailsRender.tsx +58 -0
  7. package/src/tasks/create/templates/Constellation/Template/DETAILS/HighlightRender.tsx +50 -0
  8. package/src/tasks/create/templates/Constellation/Template/DETAILS/index.tsx.mustache +38 -24
  9. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/DetailsRender.tsx +58 -0
  10. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/HighlightRender.tsx +50 -0
  11. package/src/tasks/create/templates/Constellation/Template/DETAILS-region/index.tsx.mustache +45 -23
  12. package/src/tasks/create/templates/Constellation/Template/FORM/DetailsRender.tsx +58 -0
  13. package/src/tasks/create/templates/Constellation/Template/FORM/index.tsx.mustache +31 -5
  14. package/src/tasks/create/templates/Constellation/Template/FORM-region/DetailsRender.tsx +58 -0
  15. package/src/tasks/create/templates/Constellation/Template/FORM-region/index.tsx.mustache +28 -6
  16. package/src/tasks/create/templates/Constellation/Template/PAGE/GetNextWork.tsx.mustache +2 -1
  17. package/src/tasks/init/template/package.json.mustache +1 -1
  18. package/src/tasks/init/template/tsconfig.build.json +3 -1
  19. package/tests/assets/components/create/Pega_DXIL_MyDetails.zip +0 -0
  20. package/tests/assets/components/create/Pega_DXIL_MyTestText/demo.stories.tsx +0 -3
  21. package/tests/assets/components/create/Pega_DXIL_MyTestText/index.tsx +94 -4
  22. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyBoolean/demo.stories.tsx +3 -13
  23. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyBoolean/index.tsx +8 -5
  24. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyCaseWidget/demo.stories.tsx +3 -2
  25. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyCurrency/demo.stories.tsx +2 -9
  26. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyCurrency/mock.ts +2 -0
  27. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDate/demo.stories.tsx +8 -19
  28. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/demo.stories.tsx +7 -18
  29. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDateTime/mock.ts +1 -0
  30. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDecimal/demo.stories.tsx +1 -7
  31. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDecimal/mock.ts +1 -0
  32. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/DetailsRender.tsx +58 -0
  33. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/HighlightRender.tsx +50 -0
  34. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/demo.stories.tsx +5 -5
  35. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails/index.tsx +35 -21
  36. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyDetails.zip +0 -0
  37. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyEmail/demo.stories.tsx +1 -5
  38. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyForm/DetailsRender.tsx +58 -0
  39. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyForm/demo.stories.tsx +5 -3
  40. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyForm/index.tsx +28 -5
  41. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyInteger/demo.stories.tsx +2 -6
  42. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPage/GetNextWork.tsx +2 -1
  43. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPage/demo.stories.tsx +4 -3
  44. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPageCaseWidget/demo.stories.tsx +5 -4
  45. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPageWidget/demo.stories.tsx +5 -8
  46. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyParagraph/demo.stories.tsx +1 -5
  47. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyParagraph/mock.ts +1 -0
  48. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPercentage/demo.stories.tsx +2 -6
  49. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPercentage/mock.ts +1 -0
  50. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPhone/demo.stories.tsx +2 -5
  51. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPhone/mock.ts +1 -0
  52. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPicklist/demo.stories.tsx +2 -6
  53. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyPicklist/mock.ts +1 -0
  54. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyRadioButtons/demo.stories.tsx +1 -7
  55. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MySearchbox/demo.stories.tsx +2 -8
  56. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MySearchbox/index.tsx +11 -0
  57. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MySearchbox/utils.ts +3 -0
  58. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyText/demo.stories.tsx +0 -3
  59. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyText/index.tsx +94 -4
  60. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTextInput/demo.stories.tsx +1 -5
  61. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTextInput/mock.ts +1 -0
  62. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +5 -15
  63. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx +58 -0
  64. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx +50 -0
  65. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +5 -5
  66. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnDetails/index.tsx +42 -20
  67. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx +58 -0
  68. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +4 -2
  69. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyTwoColumnForm/index.tsx +22 -3
  70. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyURL/demo.stories.tsx +1 -5
  71. package/tests/assets/components/createAll/Constellation/Pega_DXIL_MyURL/mock.ts +1 -0
  72. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyBoolean/demo.stories.tsx +3 -13
  73. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyBoolean/index.tsx +8 -5
  74. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyCurrency/demo.stories.tsx +2 -9
  75. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyCurrency/mock.ts +2 -0
  76. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDate/demo.stories.tsx +8 -19
  77. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/demo.stories.tsx +7 -18
  78. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDateTime/mock.ts +1 -0
  79. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDecimal/demo.stories.tsx +1 -7
  80. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDecimal/mock.ts +1 -0
  81. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/DetailsRender.tsx +58 -0
  82. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/HighlightRender.tsx +50 -0
  83. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/demo.stories.tsx +5 -5
  84. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails/index.tsx +35 -21
  85. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyDetails.zip +0 -0
  86. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyEmail/demo.stories.tsx +1 -5
  87. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyForm/DetailsRender.tsx +58 -0
  88. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyForm/demo.stories.tsx +5 -3
  89. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyForm/index.tsx +28 -5
  90. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyInteger/demo.stories.tsx +2 -6
  91. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPage/GetNextWork.tsx +2 -1
  92. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPage/demo.stories.tsx +4 -3
  93. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPageWidget/demo.stories.tsx +5 -8
  94. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyParagraph/demo.stories.tsx +1 -5
  95. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyParagraph/mock.ts +1 -0
  96. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPercentage/demo.stories.tsx +2 -6
  97. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPercentage/mock.ts +1 -0
  98. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPhone/demo.stories.tsx +2 -5
  99. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPhone/mock.ts +1 -0
  100. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPicklist/demo.stories.tsx +2 -6
  101. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyPicklist/mock.ts +1 -0
  102. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyRadioButtons/demo.stories.tsx +1 -7
  103. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MySearchbox/demo.stories.tsx +2 -8
  104. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MySearchbox/index.tsx +11 -0
  105. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MySearchbox/utils.ts +3 -0
  106. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyText/demo.stories.tsx +0 -3
  107. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyText/index.tsx +94 -4
  108. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTextInput/demo.stories.tsx +1 -5
  109. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTextInput/mock.ts +1 -0
  110. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTimeOfDay/demo.stories.tsx +5 -15
  111. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/DetailsRender.tsx +58 -0
  112. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/HighlightRender.tsx +50 -0
  113. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/demo.stories.tsx +5 -5
  114. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnDetails/index.tsx +42 -20
  115. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/DetailsRender.tsx +58 -0
  116. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/demo.stories.tsx +4 -2
  117. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyTwoColumnForm/index.tsx +22 -3
  118. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyURL/demo.stories.tsx +1 -5
  119. package/tests/assets/components/createAll/Launchpad/Pega_DXIL_MyURL/mock.ts +1 -0
@@ -31,6 +31,9 @@ window.PCore.getEnvironmentInfo = () => {
31
31
 
32
32
  export const BasePegaDxilMyDate: Story = args => {
33
33
  const props = {
34
+ value: configProps.value,
35
+ additionalProps: configProps.additionalProps,
36
+ hasSuggestions: configProps.hasSuggestions,
34
37
  getPConnect: () => {
35
38
  return {
36
39
  getActionsApi: () => {
@@ -54,25 +57,7 @@ export const BasePegaDxilMyDate: Story = args => {
54
57
  acceptSuggestion: () => {/* nothing */},
55
58
  clearErrorMessages: () => {/* nothing */}
56
59
  };
57
- },
58
- value: configProps.value,
59
- validatemessage: configProps.validatemessage,
60
- label: configProps.label,
61
- hideLabel: configProps.hideLabel,
62
- helperText: configProps.helperText,
63
- nextYearRange: configProps.nextYearRange,
64
- previousYearRange: configProps.previousYearRange,
65
- showWeekNumber: configProps.showWeekNumber,
66
- testId: configProps.testId,
67
- showAsFormattedText: configProps.showAsFormattedText,
68
- additionalProps: configProps.additionalProps,
69
- displayMode: configProps.displayMode,
70
- variant: configProps.variant,
71
- hasSuggestions: configProps.hasSuggestions,
72
- validatemessage: '',
73
- disabled: configProps.disabled,
74
- readOnly: configProps.readOnly,
75
- required: configProps.required
60
+ }
76
61
  };
77
62
 
78
63
  return (
@@ -92,6 +77,10 @@ BasePegaDxilMyDate.args = {
92
77
  required: configProps.required,
93
78
  status: configProps.status,
94
79
  hideLabel: configProps.hideLabel,
80
+ nextYearRange: configProps.nextYearRange,
81
+ previousYearRange: configProps.previousYearRange,
82
+ showAsFormattedText: configProps.showAsFormattedText,
95
83
  displayMode: configProps.displayMode,
84
+ variant: configProps.variant,
96
85
  validatemessage: configProps.validatemessage
97
86
  };
@@ -31,6 +31,9 @@ window.PCore.getEnvironmentInfo = () => {
31
31
 
32
32
  export const BasePegaDxilMyDateTime: Story = args => {
33
33
  const props = {
34
+ value: configProps.value,
35
+ additionalProps: configProps.additionalProps,
36
+ hasSuggestions: configProps.hasSuggestions,
34
37
  getPConnect: () => {
35
38
  return {
36
39
  getActionsApi: () => {
@@ -54,24 +57,7 @@ export const BasePegaDxilMyDateTime: Story = args => {
54
57
  acceptSuggestion: () => {/* nothing */},
55
58
  clearErrorMessages: () => {/* nothing */}
56
59
  };
57
- },
58
- value: configProps.value,
59
- validatemessage: configProps.validatemessage,
60
- label: configProps.label,
61
- hideLabel: configProps.hideLabel,
62
- helperText: configProps.helperText,
63
- withSeconds: configProps.withSeconds,
64
- nextYearRange: configProps.nextYearRange,
65
- previousYearRange: configProps.previousYearRange,
66
- showWeekNumber: configProps.showWeekNumber,
67
- testId: configProps.testId,
68
- additionalProps: configProps.additionalProps,
69
- displayMode: configProps.displayMode,
70
- variant: configProps.variant,
71
- hasSuggestions: configProps.hasSuggestions,
72
- disabled: configProps.disabled,
73
- readOnly: configProps.readOnly,
74
- required: configProps.required
60
+ }
75
61
  };
76
62
 
77
63
  return (
@@ -92,6 +78,9 @@ BasePegaDxilMyDateTime.args = {
92
78
  required: configProps.required,
93
79
  status: configProps.status,
94
80
  hideLabel: configProps.hideLabel,
81
+ nextYearRange: configProps.nextYearRange,
82
+ previousYearRange: configProps.previousYearRange,
95
83
  displayMode: configProps.displayMode,
84
+ variant: configProps.variant,
96
85
  validatemessage: configProps.validatemessage
97
86
  };
@@ -2,6 +2,7 @@
2
2
  // @ts-nocheck
3
3
  export const configProps = {
4
4
  value: '2023-01-24T16:45:00.000Z',
5
+ placeholder: 'DateTime Placeholder',
5
6
  validatemessage: '',
6
7
  label: 'DateTime Label',
7
8
  hideLabel: false,
@@ -20,14 +20,7 @@ export const BasePegaDxilMyDecimal: Story = args => {
20
20
 
21
21
  const props = {
22
22
  value: configProps.value,
23
- placeholder: configProps.placeholder,
24
- label: configProps.label,
25
- helperText: configProps.helperText,
26
- showGroupSeparators: configProps.showGroupSeparators,
27
- hasSuggestions: configProps.hasSuggestions,
28
- testId: configProps.testId,
29
23
  fieldMetadata,
30
- validatemessage: '',
31
24
  getPConnect: () => {
32
25
  return {
33
26
  getStateProps: () => {
@@ -66,5 +59,6 @@ BasePegaDxilMyDecimal.args = {
66
59
  status: configProps.status,
67
60
  hideLabel: configProps.hideLabel,
68
61
  displayMode: configProps.displayMode,
62
+ variant: configProps.variant,
69
63
  validatemessage: configProps.validatemessage
70
64
  };
@@ -9,6 +9,7 @@ export const configProps = {
9
9
  testId: 'decimal-12345678',
10
10
  hasSuggestions: false,
11
11
  displayMode: '',
12
+ variant: '',
12
13
  hideLabel: false,
13
14
  readOnly: false,
14
15
  required: false,
@@ -0,0 +1,58 @@
1
+ import { Fragment, ReactElement } from 'react';
2
+ import { FieldValueList } from '@pega/cosmos-react-core';
3
+
4
+ interface DetailsRenderProps {
5
+ children?: never;
6
+ child: NonNullable<ReactElement>;
7
+ }
8
+
9
+ const DetailsRender = (props: DetailsRenderProps) => {
10
+ const { child } = props;
11
+
12
+ const kids = child.props.getPConnect().getChildren();
13
+
14
+ const displayCompArr: ReactElement[] = [];
15
+
16
+ Object.values(kids).forEach((value: any) => {
17
+ const { type } = value.getPConnect().getRawMetadata();
18
+ const { hideLabel, variant, testId, label } = value
19
+ .getPConnect()
20
+ .resolveConfigProps(value.getPConnect().getConfigProps());
21
+
22
+ let displayComp;
23
+ const key = JSON.stringify(value.getPConnect());
24
+
25
+ if (type === 'reference') {
26
+ const refElement = value.getPConnect().getComponent();
27
+
28
+ displayCompArr.push(refElement);
29
+ } else {
30
+ const element = value.getPConnect().getComponent();
31
+ const displayEl = <Fragment key={key}>{element}</Fragment>;
32
+
33
+ const fvlStyle = {
34
+ myColGap: {
35
+ columnGap: '0'
36
+ }
37
+ };
38
+
39
+ // const myEl = <div>boo</div>;
40
+ displayComp = (
41
+ <Fragment key={key}>
42
+ <FieldValueList
43
+ style={fvlStyle.myColGap}
44
+ variant={hideLabel ? 'stacked' : variant}
45
+ data-testid={testId}
46
+ fields={[{ id: '1', name: hideLabel ? '' : label, value: displayEl }]}
47
+ />
48
+ </Fragment>
49
+ );
50
+
51
+ displayCompArr.push(displayComp);
52
+ }
53
+ });
54
+
55
+ return <>{displayCompArr}</>;
56
+ };
57
+
58
+ export default DetailsRender;
@@ -0,0 +1,50 @@
1
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
2
+ import React from 'react';
3
+ import { FieldValueList, Text } from '@pega/cosmos-react-core';
4
+
5
+ const HighlightRender = (data: any) => {
6
+ const { getPConnect } = data.props;
7
+ const { field } = data;
8
+
9
+ field.config['displayMode'] = 'DISPLAY_ONLY';
10
+
11
+ // Mark as status display when using pyStatusWork
12
+ if (field.config?.value === '@P .pyStatusWork') {
13
+ field.type = 'TextInput';
14
+ field.config.displayAsStatus = true;
15
+ }
16
+
17
+ const configProps = getPConnect().resolveConfigProps(field.config);
18
+
19
+ // field.config = configProps;
20
+
21
+ const reactField = getPConnect().createComponent(field);
22
+ // const reactField = field.getPConnect().getComponent();
23
+
24
+ const styles = {
25
+ myWidth: {
26
+ width: 'auto'
27
+ }
28
+ };
29
+
30
+ return (
31
+ <FieldValueList
32
+ style={styles.myWidth}
33
+ variant='stacked'
34
+ data-testid={field.testId}
35
+ fields={[
36
+ {
37
+ id: '2',
38
+ name: configProps.hideLabel ? '' : configProps.label,
39
+ value: (
40
+ <Text variant='h1' as='span'>
41
+ {reactField}
42
+ </Text>
43
+ )
44
+ }
45
+ ]}
46
+ />
47
+ );
48
+ };
49
+
50
+ export default HighlightRender;
@@ -88,10 +88,6 @@ const renderField = resolvedProps => {
88
88
 
89
89
  export const BasePegaDxilMyDetails: Story = args => {
90
90
  const props = {
91
- template: 'MyCo_MyComponents_NewDetailsTemplate',
92
- showHighlightedData: true,
93
- label: 'Test Details',
94
- showLabel: true,
95
91
  getPConnect: () => {
96
92
  return {
97
93
  getChildren: () => {
@@ -146,4 +142,8 @@ export const BasePegaDxilMyDetails: Story = args => {
146
142
  );
147
143
  };
148
144
 
149
- BasePegaDxilMyDetails.args = {};
145
+ BasePegaDxilMyDetails.args = {
146
+ showLabel: true,
147
+ label: 'Details template',
148
+ showHighlightedData: true
149
+ };
@@ -1,13 +1,14 @@
1
1
  import { Fragment } from 'react';
2
2
  import { Grid, Flex, FieldGroup, withConfiguration } from '@pega/cosmos-react-core';
3
3
  import type { PConnFieldProps } from './PConnProps';
4
+ import DetailsRender from './DetailsRender';
5
+ import HighlightRender from './HighlightRender';
4
6
 
5
7
  import StyledPegaDxilMyDetailsWrapper from './styles';
6
8
 
7
9
  // includes in bundle
8
10
  import { getAllFields } from './utils';
9
11
 
10
-
11
12
  // interface for props
12
13
  interface PegaDxilMyDetailsProps extends PConnFieldProps {
13
14
  // If any, enter additional props that only exist on TextInput here
@@ -16,8 +17,6 @@ interface PegaDxilMyDetailsProps extends PConnFieldProps {
16
17
  children: any;
17
18
  }
18
19
 
19
- // Duplicated runtime code from Constellation Design System Component
20
-
21
20
  // props passed in combination of props from property panel (config.json) and run time props from Constellation
22
21
  // any default values in config.pros should be set in defaultProps at bottom of this file
23
22
  function PegaDxilMyDetails(props: PegaDxilMyDetailsProps) {
@@ -25,9 +24,17 @@ function PegaDxilMyDetails(props: PegaDxilMyDetailsProps) {
25
24
  const { getPConnect, children, label, showLabel = true, showHighlightedData = false } = props;
26
25
  const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
27
26
 
27
+ // update children with readonly
28
+ // eslint-disable-next-line guard-for-in
29
+ for (const index in children) {
30
+ const kid = children[index];
31
+ kid.props.getPConnect().setInheritedProp('readOnly', true);
32
+ kid.props.getPConnect().setInheritedProp('displayMode', 'DISPLAY_ONLY');
33
+ }
34
+
28
35
  const numRegions = getAllFields(getPConnect)?.length;
29
36
  const gridRepeat = "repeat(".concat(numRegions).concat(", 1fr)");
30
- const gridContainer = { "colGap": 1};
37
+ const gridContainer = { "colGap": 0};
31
38
  // @ts-ignore
32
39
  gridContainer.cols = gridRepeat;
33
40
  // @ts-ignore
@@ -37,7 +44,7 @@ function PegaDxilMyDetails(props: PegaDxilMyDetailsProps) {
37
44
  // @ts-ignore
38
45
  gridHighlightContainer.cols = gridRepeat;
39
46
  // @ts-ignore
40
- gridHighlightContainer.alignItems = 'start';
47
+ gridHighlightContainer.alignItems = 'flex-start';
41
48
  // @ts-ignore
42
49
  gridHighlightContainer.pad = [0, 0, 2, 0];
43
50
 
@@ -48,33 +55,40 @@ function PegaDxilMyDetails(props: PegaDxilMyDetailsProps) {
48
55
  const { highlightedData = [] } = getPConnect().getRawMetadata().config;
49
56
  // @ts-ignore
50
57
  highlightedDataArr = highlightedData.map((field) => {
51
- field.config.displayMode = 'STACKED_LARGE_VAL';
52
58
 
53
- // Mark as status display when using pyStatusWork
54
- if (field.config.value === '@P .pyStatusWork') {
55
- field.type = 'TextInput';
56
- field.config.displayAsStatus = true;
57
- }
58
- // @ts-ignore
59
- return getPConnect().createComponent(field);
59
+ return <HighlightRender field={field} props={props} />;
60
60
  });
61
61
  }
62
62
 
63
+ const hrStyle = {
64
+ line: {
65
+ margin: '0.75rem 0',
66
+ opacity: '50%'
67
+ }
68
+ };
69
+
63
70
  return (
64
71
  <StyledPegaDxilMyDetailsWrapper>
65
72
  <FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
66
73
  {showHighlightedData && highlightedDataArr.length > 0 && (
67
- <Grid container={gridHighlightContainer}
68
- data-testid={`highlighted-column-count-${numRegions}`}>
69
- {highlightedDataArr.map((child: any, i: number) => (
70
- <Fragment key={`hf-${i + 1}`}>{child}</Fragment>
71
- ))}
72
- </Grid>
74
+ <>
75
+ <Flex
76
+ // @ts-ignore
77
+ container={{ direction: 'row', alignItems: 'normal', colGap: 10 }}
78
+ data-testid={`highlighted-column-count-${numRegions}`}
79
+ >
80
+ {highlightedDataArr.map((child: any, i: number) => (
81
+ <Fragment key={`hf-${i + 1}`}>{child}</Fragment>
82
+ ))}
83
+ </Flex>
84
+ <hr style={hrStyle.line} />
85
+ </>
73
86
  )}
74
87
  <Grid container={gridContainer} data-testid={`column-count-${numRegions}`} >
75
88
  {children.map((child: any, i: number) => (
76
- <Flex container={{ direction: 'column'}} key={`r-${i + 1}`}>
77
- {child}
89
+ // @ts-ignore
90
+ <Flex container={{ direction: 'column', alignItems: 'normal', colGap: 0, rowGap: 1.5 }} key={`r-${i + 1}`}>
91
+ <DetailsRender child={child} />
78
92
  </Flex>
79
93
  ))}
80
94
  </Grid>
@@ -20,13 +20,8 @@ export const BasePegaDxilMyEmail: Story = args => {
20
20
 
21
21
  const props = {
22
22
  value: configProps.value,
23
- label: configProps.label,
24
- placeholder: configProps.placeholder,
25
- helperText: configProps.helperText,
26
- testId: configProps.testId,
27
23
  hasSuggestions: configProps.hasSuggestions,
28
24
  fieldMetadata,
29
- validatemessage: '',
30
25
  getPConnect: () => {
31
26
  return {
32
27
  getStateProps: () => {
@@ -64,5 +59,6 @@ BasePegaDxilMyEmail.args = {
64
59
  status: configProps.status,
65
60
  hideLabel: configProps.hideLabel,
66
61
  displayMode: configProps.displayMode,
62
+ variant: configProps.variant,
67
63
  validatemessage: configProps.validatemessage
68
64
  };
@@ -0,0 +1,58 @@
1
+ import { Fragment, ReactElement } from 'react';
2
+ import { FieldValueList } from '@pega/cosmos-react-core';
3
+
4
+ interface DetailsRenderProps {
5
+ children?: never;
6
+ child: NonNullable<ReactElement>;
7
+ }
8
+
9
+ const DetailsRender = (props: DetailsRenderProps) => {
10
+ const { child } = props;
11
+
12
+ const kids = child.props.getPConnect().getChildren();
13
+
14
+ const displayCompArr: ReactElement[] = [];
15
+
16
+ Object.values(kids).forEach((value: any) => {
17
+ const { type } = value.getPConnect().getRawMetadata();
18
+ const { hideLabel, variant, testId, label } = value
19
+ .getPConnect()
20
+ .resolveConfigProps(value.getPConnect().getConfigProps());
21
+
22
+ let displayComp;
23
+ const key = JSON.stringify(value.getPConnect());
24
+
25
+ if (type === 'reference') {
26
+ const refElement = value.getPConnect().getComponent();
27
+
28
+ displayCompArr.push(refElement);
29
+ } else {
30
+ const element = value.getPConnect().getComponent();
31
+ const displayEl = <Fragment key={key}>{element}</Fragment>;
32
+
33
+ const fvlStyle = {
34
+ myColGap: {
35
+ columnGap: '0'
36
+ }
37
+ };
38
+
39
+ // const myEl = <div>boo</div>;
40
+ displayComp = (
41
+ <Fragment key={key}>
42
+ <FieldValueList
43
+ style={fvlStyle.myColGap}
44
+ variant={hideLabel ? 'stacked' : variant}
45
+ data-testid={testId}
46
+ fields={[{ id: '1', name: hideLabel ? '' : label, value: displayEl }]}
47
+ />
48
+ </Fragment>
49
+ );
50
+
51
+ displayCompArr.push(displayComp);
52
+ }
53
+ });
54
+
55
+ return <>{displayCompArr}</>;
56
+ };
57
+
58
+ export default DetailsRender;
@@ -139,8 +139,6 @@ const renderField = resolvedProps => {
139
139
 
140
140
  export const BasePegaDxilMyForm: Story = args => {
141
141
  const props = {
142
- NumCols: 1,
143
- template: 'DefaultForm',
144
142
  getPConnect: () => {
145
143
  return {
146
144
  getChildren: () => {
@@ -181,4 +179,8 @@ export const BasePegaDxilMyForm: Story = args => {
181
179
  );
182
180
  };
183
181
 
184
- BasePegaDxilMyForm.args = {};
182
+ BasePegaDxilMyForm.args = {
183
+ showLabel: true,
184
+ label: 'Form template',
185
+ NumCols: 1,
186
+ };
@@ -1,7 +1,8 @@
1
- import { Grid, FieldGroup, withConfiguration } from '@pega/cosmos-react-core';
1
+ import { Grid, Flex, FieldGroup, withConfiguration } from '@pega/cosmos-react-core';
2
2
 
3
3
 
4
4
  import type { PConnFieldProps } from './PConnProps';
5
+ import DetailsRender from './DetailsRender';
5
6
 
6
7
  import StyledPegaDxilMyFormWrapper from './styles';
7
8
 
@@ -13,19 +14,41 @@ interface PegaDxilMyFormProps extends PConnFieldProps {
13
14
  children: any;
14
15
  }
15
16
 
16
- // Duplicated runtime code from Constellation Design System Component
17
-
18
17
  // props passed in combination of props from property panel (config.json) and run time props from Constellation
19
18
  // any default values in config.pros should be set in defaultProps at bottom of this file
20
19
  function PegaDxilMyForm(props: PegaDxilMyFormProps) {
21
20
 
22
- const { children = [], NumCols = '1', label, showLabel, getPConnect } = props;
21
+ const { children = [], NumCols = '1', label, showLabel, getPConnect, readOnly, displayMode } = props;
23
22
  const propsToUse = { label, showLabel, ...getPConnect().getInheritedProps() };
24
23
 
25
24
  const nCols = parseInt(NumCols, 10);
26
25
 
27
- // console.log(`Rendering ${getPConnect()?.getComponentName()} with ${template} with ${children?.length} Region(s)`);
28
26
 
27
+ if (readOnly && readOnly === true && displayMode && displayMode === 'DISPLAY_ONLY') {
28
+ const numRegions = '1';
29
+ const gridRepeat = 'repeat('.concat(numRegions).concat(', 1fr)');
30
+ const gridContainer = { colGap: 0 };
31
+ // @ts-ignore
32
+ gridContainer.cols = gridRepeat;
33
+
34
+ return (
35
+ <StyledPegaDxilMyFormWrapper>
36
+ <FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
37
+ <Grid container={gridContainer} data-testid={`column-count-${numRegions}`}>
38
+ {children.map((child: any, i: number) => (
39
+ <Flex
40
+ // @ts-ignore
41
+ container={{ direction: 'column', alignItems: 'normal', colGap: 0, rowGap: 1.5 }}
42
+ key={`r-${i + 1}`}
43
+ >
44
+ <DetailsRender child={child} />
45
+ </Flex>
46
+ ))}
47
+ </Grid>
48
+ </FieldGroup>
49
+ </StyledPegaDxilMyFormWrapper>
50
+ );
51
+ }
29
52
  return (
30
53
  <StyledPegaDxilMyFormWrapper>
31
54
  <FieldGroup name={propsToUse.showLabel ? propsToUse.label : ''}>
@@ -19,14 +19,8 @@ export const BasePegaDxilMyInteger: Story = args => {
19
19
 
20
20
  const props = {
21
21
  value: configProps.value,
22
- placeholder: configProps.placeholder,
23
- label: configProps.label,
24
- helperText: configProps.helperText,
25
- showGroupSeparators: configProps.showGroupSeparators,
26
22
  hasSuggestions: configProps.hasSuggestions,
27
- testId: configProps.testId,
28
23
  fieldMetadata,
29
- validatemessage: '',
30
24
  getPConnect: () => {
31
25
  return {
32
26
  getStateProps: () => {
@@ -56,6 +50,7 @@ export const BasePegaDxilMyInteger: Story = args => {
56
50
  BasePegaDxilMyInteger.args = {
57
51
  label: configProps.label,
58
52
  helperText: configProps.helperText,
53
+ placeholder: configProps.placeholder,
59
54
  showGroupSeparators: configProps.showGroupSeparators,
60
55
  testId: configProps.testId,
61
56
  readOnly: configProps.readOnly,
@@ -64,5 +59,6 @@ BasePegaDxilMyInteger.args = {
64
59
  status: configProps.status,
65
60
  hideLabel: configProps.hideLabel,
66
61
  displayMode: configProps.displayMode,
62
+ variant: configProps.variant,
67
63
  validatemessage: configProps.validatemessage
68
64
  };
@@ -18,6 +18,7 @@ export default function GetNextWork(props: PegaDxilMyPageWorkProps) {
18
18
  const toasterCtx = useToaster();
19
19
 
20
20
  const localizedVal = PCore.getLocaleUtils().getLocaleValue;
21
+ const localeCategory = 'Case';
21
22
 
22
23
  const getNextWork = () => {
23
24
 
@@ -30,7 +31,7 @@ export default function GetNextWork(props: PegaDxilMyPageWorkProps) {
30
31
  console.log(err);
31
32
  if (err[0].status === 404) {
32
33
  toasterCtx.push({
33
- content: localizedVal('No task currently available')
34
+ content: localizedVal('No task currently available', localeCategory)
34
35
  });
35
36
  }
36
37
  });
@@ -35,9 +35,7 @@ export const BasePegaDxilMyPage: Story = args => {
35
35
 
36
36
  const props = {
37
37
  useConfigurableLayout: false,
38
- enableGetNextWork: pyHome1Raw.config.enableGetNextWork,
39
38
  icon: pyHome1Raw.config.icon,
40
- title: 'Page Template',
41
39
 
42
40
  getPConnect: () => {
43
41
  return {
@@ -108,4 +106,7 @@ export const BasePegaDxilMyPage: Story = args => {
108
106
  );
109
107
  };
110
108
 
111
- BasePegaDxilMyPage.args = {};
109
+ BasePegaDxilMyPage.args = {
110
+ title: 'Page Template',
111
+ enableGetNextWork: pyHome1Raw.config.enableGetNextWork,
112
+ };
@@ -41,13 +41,10 @@ export const BasePegaDxilMyPageCaseWidget: Story = args => {
41
41
 
42
42
  const props = {
43
43
  label: configProps.label,
44
- createLabel: configProps.createLabel,
45
- updateLabel: configProps.updateLabel,
46
44
  createOperator: configProps.createOperator,
47
45
  updateOperator: configProps.updateOperator,
48
46
  createDateTime: configProps.createDateTime,
49
47
  updateDateTime: configProps.updateDateTime,
50
- hideLabel: configProps.hideLabel,
51
48
 
52
49
  getPConnect: () => {
53
50
  return {
@@ -72,4 +69,8 @@ return (
72
69
  );
73
70
  };
74
71
 
75
- BasePegaDxilMyPageCaseWidget.args = {};
72
+ BasePegaDxilMyPageCaseWidget.args = {
73
+ createLabel: configProps.createLabel,
74
+ updateLabel: configProps.updateLabel,
75
+ hideLabel: configProps.hideLabel
76
+ };
@@ -20,13 +20,8 @@ type Story = StoryObj<typeof PegaDxilMyPageWidget>;
20
20
  export const BasePegaDxilMyPageWidget: Story = args => {
21
21
 
22
22
  const props = {
23
- label: configProps.label,
24
- header: configProps.header,
25
- description: configProps.description,
26
- image: configProps.image,
27
- datasource: configProps.datasource,
28
- whatsnewlink: configProps.whatsnewlink
29
- };
23
+ image: configProps.image
24
+ };
30
25
 
31
26
  return (
32
27
  <>
@@ -37,5 +32,7 @@ return (
37
32
 
38
33
  BasePegaDxilMyPageWidget.args = {
39
34
  header: configProps.header,
40
- description: configProps.description
35
+ description: configProps.description,
36
+ whatsnewlink: configProps.whatsnewlink,
37
+ datasource: configProps.datasource,
41
38
  };
@@ -20,13 +20,8 @@ export const BasePegaDxilMyParagraph: Story = args => {
20
20
 
21
21
  const props = {
22
22
  value: configProps.value,
23
- placeholder: configProps.placeholder,
24
- label: configProps.label,
25
- helperText: configProps.helperText,
26
- testId: configProps.testId,
27
23
  hasSuggestions: configProps.hasSuggestions,
28
24
  fieldMetadata,
29
- validatemessage: '',
30
25
  getPConnect: () => {
31
26
  return {
32
27
  getStateProps: () => {
@@ -64,5 +59,6 @@ BasePegaDxilMyParagraph.args = {
64
59
  status: configProps.status,
65
60
  hideLabel: configProps.hideLabel,
66
61
  displayMode: configProps.displayMode,
62
+ variant: configProps.variant,
67
63
  validatemessage: configProps.validatemessage
68
64
  };
@@ -8,6 +8,7 @@ export const configProps = {
8
8
  testId: 'paragraph-12345678',
9
9
  hasSuggestions: false,
10
10
  displayMode: '',
11
+ variant: '',
11
12
  hideLabel: false,
12
13
  readOnly: false,
13
14
  required: false,