@pega/sdk 0.0.3 → 0.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +183 -183
- package/README.md +6 -6
- package/SECURITY.md +2 -1
- package/dist/index.js +12 -55
- package/package.json +7 -6
- package/templates/angular-sdk-reference/package.json +15 -15
- package/templates/angular-sdk-reference/tsconfig.json +2 -2
- package/templates/react-native-sdk-reference/App.tsx +2 -4
- package/templates/react-native-sdk-reference/package.json +6 -6
- package/templates/react-native-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/.claude/instructions/component-map.md +1 -1
- package/templates/react-sdk-reference/.claude/instructions/field-component.md +4 -0
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +2 -1
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +1 -0
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +18 -10
- package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +165 -83
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +26 -17
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +27 -13
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +42 -28
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +48 -34
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +25 -11
- package/templates/react-sdk-reference/.claude/prompts/identify-components.md +65 -65
- package/templates/react-sdk-reference/.claude/skills/component-contracts.md +99 -99
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +40 -38
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +54 -51
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +51 -46
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +32 -28
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +38 -35
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +25 -23
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +29 -26
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Operator.md +32 -26
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +17 -15
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +85 -59
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +49 -47
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +13 -11
- package/templates/react-sdk-reference/.claude/skills/field-components.md +9 -8
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +27 -26
- package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +30 -22
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +60 -43
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +23 -20
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +18 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +22 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +50 -30
- package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +20 -18
- package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +21 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +17 -16
- package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +30 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +66 -42
- package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +27 -18
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +22 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +36 -17
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +56 -35
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +23 -12
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +41 -31
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +70 -55
- package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +34 -27
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +24 -22
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +38 -22
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +24 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +16 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +16 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/UserReference.md +57 -34
- package/templates/react-sdk-reference/.claude/skills/run-and-verify.md +10 -8
- package/templates/react-sdk-reference/.claude/skills/template-components.md +7 -8
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +27 -21
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +17 -15
- package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +19 -16
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +19 -13
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +23 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +34 -29
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +18 -16
- package/templates/react-sdk-reference/.claude/skills/template-skills/DataReference.md +36 -32
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +23 -21
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +31 -29
- package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +22 -20
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +15 -10
- package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +19 -16
- package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +18 -15
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +17 -13
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +10 -13
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +9 -7
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +33 -30
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +13 -11
- package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +42 -40
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +25 -20
- package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +25 -19
- package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +36 -29
- package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +31 -27
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +29 -24
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +14 -11
- package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +34 -32
- package/templates/react-sdk-reference/.claude/skills/template-skills/WideNarrow.md +48 -46
- package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +23 -19
- package/templates/react-sdk-reference/.claude/skills/widget-components.md +11 -22
- package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +22 -20
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +33 -28
- package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +18 -15
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +43 -37
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Followers.md +23 -19
- package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +20 -16
- package/templates/react-sdk-reference/.claude/skills/widget-skills/SummaryItem.md +26 -24
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +43 -35
- package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +165 -83
- package/templates/react-sdk-reference/.github/agents/implementation-expert.agent.md +135 -0
- package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +2 -2
- package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +1 -1
- package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +5 -1
- package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +3 -2
- package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +2 -1
- package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +58 -15
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +165 -83
- package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +322 -65
- package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +124 -50
- package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +145 -66
- package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +146 -73
- package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +128 -49
- package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +65 -65
- package/templates/react-sdk-reference/.github/skills/component-contracts.md +99 -99
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/AlertBanner.md +40 -38
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +54 -51
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +51 -46
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +32 -28
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +38 -35
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +25 -23
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +29 -26
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +32 -26
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +17 -15
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +85 -59
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +49 -47
- package/templates/react-sdk-reference/.github/skills/design-system-extension.md +13 -11
- package/templates/react-sdk-reference/.github/skills/field-components.md +9 -8
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +27 -26
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +30 -22
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +60 -43
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +23 -20
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +19 -17
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +18 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +22 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +50 -30
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +20 -18
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +21 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +17 -16
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +30 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +66 -42
- package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +27 -18
- package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +22 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +36 -17
- package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +56 -35
- package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +23 -12
- package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +41 -31
- package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +70 -55
- package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +34 -27
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +24 -22
- package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +38 -22
- package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +24 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +16 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +16 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +57 -34
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +10 -8
- package/templates/react-sdk-reference/.github/skills/template-components.md +7 -8
- package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +27 -21
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +17 -15
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +19 -16
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +19 -13
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +23 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +34 -29
- package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +18 -16
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +36 -32
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +23 -21
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +31 -29
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +19 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +22 -20
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +19 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +19 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +15 -10
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +19 -16
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +18 -15
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +17 -13
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +10 -13
- package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +9 -7
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +33 -30
- package/templates/react-sdk-reference/.github/skills/template-skills/MultiReferenceReadOnly.md +13 -11
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +42 -40
- package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +25 -20
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +25 -19
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +36 -29
- package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +31 -27
- package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +29 -24
- package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +14 -11
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +34 -32
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +48 -46
- package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +23 -19
- package/templates/react-sdk-reference/.github/skills/widget-components.md +11 -22
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +22 -20
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +33 -28
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +18 -15
- package/templates/react-sdk-reference/.github/skills/widget-skills/FileUtility.md +43 -37
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +23 -19
- package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +20 -16
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +26 -24
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +43 -35
- package/templates/react-sdk-reference/AGENTS.md +0 -1
- package/templates/react-sdk-reference/index.html +1 -4
- package/templates/react-sdk-reference/package.json +15 -15
- package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
- package/templates/react-sdk-reference/src/AppSelector.tsx +6 -6
- package/templates/react-sdk-reference/src/FallbackComponent.tsx +2 -6
- package/templates/react-sdk-reference/src/MashupApp.styles.ts +269 -41
- package/templates/react-sdk-reference/src/MashupApp.tsx +186 -85
- package/templates/react-sdk-reference/src/PortalApp.tsx +10 -34
- package/templates/react-sdk-reference/src/components/component-map.ts +2 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/AlertBanner.tsx +7 -28
- package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/Banner.tsx +12 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +35 -33
- package/templates/react-sdk-reference/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx +6 -27
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroup/FieldGroup.tsx +15 -11
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx +7 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldValueList/FieldValueList.tsx +18 -12
- package/templates/react-sdk-reference/src/components/designSystemExtension/Operator/Operator.tsx +27 -25
- package/templates/react-sdk-reference/src/components/designSystemExtension/Pulse/Pulse.tsx +4 -4
- package/templates/react-sdk-reference/src/components/designSystemExtension/RichTextEditor/RichTextEditor.tsx +8 -40
- package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +9 -9
- package/templates/react-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +26 -20
- package/templates/react-sdk-reference/src/components/field/CancelAlert/CancelAlert.tsx +35 -17
- package/templates/react-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +27 -25
- package/templates/react-sdk-reference/src/components/field/Currency/Currency.tsx +10 -6
- package/templates/react-sdk-reference/src/components/field/Currency/currency-utils.ts +1 -1
- package/templates/react-sdk-reference/src/components/field/Date/Date.tsx +20 -7
- package/templates/react-sdk-reference/src/components/field/DateTime/DateTime.tsx +23 -8
- package/templates/react-sdk-reference/src/components/field/Decimal/Decimal.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +45 -25
- package/templates/react-sdk-reference/src/components/field/Email/Email.tsx +8 -8
- package/templates/react-sdk-reference/src/components/field/Group/Group.tsx +1 -1
- package/templates/react-sdk-reference/src/components/field/Integer/Integer.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/Location/Location.tsx +21 -16
- package/templates/react-sdk-reference/src/components/field/Multiselect/Multiselect.tsx +42 -27
- package/templates/react-sdk-reference/src/components/field/Multiselect/utils.ts +43 -29
- package/templates/react-sdk-reference/src/components/field/ObjectReference/ObjectReference.tsx +53 -30
- package/templates/react-sdk-reference/src/components/field/ObjectReference/utils.ts +12 -11
- package/templates/react-sdk-reference/src/components/field/Percentage/Percentage.tsx +6 -6
- package/templates/react-sdk-reference/src/components/field/Phone/Phone.tsx +12 -12
- package/templates/react-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +38 -16
- package/templates/react-sdk-reference/src/components/field/RichText/RichText.tsx +17 -4
- package/templates/react-sdk-reference/src/components/field/ScalarList/ScalarList.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/SelectableCard/SelectableCard.tsx +31 -18
- package/templates/react-sdk-reference/src/components/field/SelectableCard/utils.tsx +28 -20
- package/templates/react-sdk-reference/src/components/field/SemanticLink/SemanticLink.tsx +28 -19
- package/templates/react-sdk-reference/src/components/field/SemanticLink/utils.ts +3 -1
- package/templates/react-sdk-reference/src/components/field/TextArea/TextArea.tsx +4 -4
- package/templates/react-sdk-reference/src/components/field/TextInput/TextInput.tsx +4 -4
- package/templates/react-sdk-reference/src/components/field/Time/Time.tsx +20 -7
- package/templates/react-sdk-reference/src/components/field/URL/URL.tsx +7 -7
- package/templates/react-sdk-reference/src/components/field/UserReference/UserReference.tsx +14 -14
- package/templates/react-sdk-reference/src/components/field/UserReference/UserReferenceUtils.ts +2 -2
- package/templates/react-sdk-reference/src/components/helpers/case-utils.tsx +5 -5
- package/templates/react-sdk-reference/src/components/helpers/data_page.ts +3 -3
- package/templates/react-sdk-reference/src/components/helpers/date-format-utils.ts +5 -5
- package/templates/react-sdk-reference/src/components/helpers/field-group-utils.ts +2 -7
- package/templates/react-sdk-reference/src/components/helpers/formatters/Boolean.ts +9 -3
- package/templates/react-sdk-reference/src/components/helpers/formatters/Currency.ts +18 -6
- package/templates/react-sdk-reference/src/components/helpers/formatters/CurrencyMap.ts +168 -168
- package/templates/react-sdk-reference/src/components/helpers/formatters/Date.ts +5 -5
- package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +8 -5
- package/templates/react-sdk-reference/src/components/helpers/instructions-utils.ts +2 -2
- package/templates/react-sdk-reference/src/components/helpers/simpleTableHelpers.ts +54 -30
- package/templates/react-sdk-reference/src/components/helpers/state-utils.tsx +5 -2
- package/templates/react-sdk-reference/src/components/helpers/template-utils.ts +5 -4
- package/templates/react-sdk-reference/src/components/helpers/utils.ts +3 -3
- package/templates/react-sdk-reference/src/components/helpers/versionHelpers.ts +3 -1
- package/templates/react-sdk-reference/src/components/index.ts +1 -4
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/AdvancedSearch.tsx +18 -10
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroup/persistUtils.ts +3 -3
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +26 -90
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/hooks.ts +8 -5
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/utils.ts +8 -4
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/TemplateContext.ts +1 -1
- package/templates/react-sdk-reference/src/components/template/AppShell/AppShell.tsx +28 -19
- package/templates/react-sdk-reference/src/components/template/BannerPage/BannerPage.tsx +2 -2
- package/templates/react-sdk-reference/src/components/template/CaseSummary/CaseSummary.tsx +5 -5
- package/templates/react-sdk-reference/src/components/template/CaseView/CaseView.tsx +35 -16
- package/templates/react-sdk-reference/src/components/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +10 -10
- package/templates/react-sdk-reference/src/components/template/Confirmation/Confirmation.tsx +12 -26
- package/templates/react-sdk-reference/src/components/template/DataReference/DataReference.tsx +41 -124
- package/templates/react-sdk-reference/src/components/template/DataReference/DataReferenceAdvancedSearchContext.ts +2 -2
- package/templates/react-sdk-reference/src/components/template/DataReference/SearchForm.tsx +18 -78
- package/templates/react-sdk-reference/src/components/template/DataReference/utils.ts +18 -12
- package/templates/react-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +4 -12
- package/templates/react-sdk-reference/src/components/template/DefaultForm/utils/index.ts +3 -3
- package/templates/react-sdk-reference/src/components/template/DefaultPage/DefaultPage.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/Details/Details/Details.tsx +6 -8
- package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +7 -14
- package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +7 -14
- package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/DynamicTabs.tsx +16 -8
- package/templates/react-sdk-reference/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +7 -4
- package/templates/react-sdk-reference/src/components/template/HierarchicalForm/HierarchicalForm.tsx +20 -5
- package/templates/react-sdk-reference/src/components/template/HierarchicalForm/hooks.ts +35 -77
- package/templates/react-sdk-reference/src/components/template/InlineDashboard/InlineDashboard.tsx +10 -10
- package/templates/react-sdk-reference/src/components/template/ListView/DefaultViewMeta.ts +31 -31
- package/templates/react-sdk-reference/src/components/template/ListView/ListView.tsx +173 -133
- package/templates/react-sdk-reference/src/components/template/ListView/hooks.ts +17 -10
- package/templates/react-sdk-reference/src/components/template/ListView/utils.ts +64 -51
- package/templates/react-sdk-reference/src/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/NarrowWide.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +8 -18
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +7 -1
- package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/OneColumn.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/OneColumnTab.tsx +1 -1
- package/templates/react-sdk-reference/src/components/template/PromotedFilters/PromotedFilters.tsx +13 -40
- package/templates/react-sdk-reference/src/components/template/SelfServiceCaseView/SelfServiceCaseView.tsx +19 -16
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/SimpleTable.tsx +8 -7
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +84 -203
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +15 -5
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.tsx +15 -29
- package/templates/react-sdk-reference/src/components/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +7 -7
- package/templates/react-sdk-reference/src/components/template/SubTabs/SubTabs.tsx +1 -1
- package/templates/react-sdk-reference/src/components/template/SubTabs/tabUtils.ts +13 -11
- package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/TwoColumn.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/WideNarrow.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +13 -24
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +7 -1
- package/templates/react-sdk-reference/src/components/template/WssNavBar/WssNavBar.tsx +25 -25
- package/templates/react-sdk-reference/src/components/template/utils.tsx +6 -6
- package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/AppAnnouncement.tsx +9 -9
- package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.tsx +125 -79
- package/templates/react-sdk-reference/src/components/widget/Attachment/AttachmentUtils.ts +58 -33
- package/templates/react-sdk-reference/src/components/widget/CaseHistory/CaseHistory.tsx +14 -12
- package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +19 -7
- package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/FileUtility.tsx +137 -107
- package/templates/react-sdk-reference/src/components/widget/Followers/Followers.tsx +4 -4
- package/templates/react-sdk-reference/src/components/widget/QuickCreate/QuickCreate.tsx +15 -11
- package/templates/react-sdk-reference/src/components/widget/SummaryItem/SummaryItem.tsx +25 -18
- package/templates/react-sdk-reference/src/components/widget/SummaryList/SummaryList.tsx +7 -2
- package/templates/react-sdk-reference/src/components/widget/ToDo/ToDo.tsx +30 -116
- package/templates/react-sdk-reference/src/main.tsx +1 -1
- package/templates/react-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/vite.config.ts +51 -26
- package/templates/wc-sdk-reference/package.json +3 -3
- package/templates/wc-sdk-reference/src/index.ts +10 -10
- package/templates/wc-sdk-reference/tsconfig.json +1 -0
|
@@ -18,13 +18,13 @@ Provides the top navigation bar for WSS (Web Self-Service) portals. Responsive:
|
|
|
18
18
|
|
|
19
19
|
## Props
|
|
20
20
|
|
|
21
|
-
| Prop
|
|
22
|
-
|
|
23
|
-
| `links`
|
|
24
|
-
| `navDisplayOptions` | `object`
|
|
25
|
-
| `portalLogoUrl`
|
|
26
|
-
| `operatorInfo`
|
|
27
|
-
| `getPConnect`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ------------------- | ---------- | -------- | ----------------------------------------------------- |
|
|
23
|
+
| `links` | `array` | Yes | Array of `{ label, url, id }` navigation link objects |
|
|
24
|
+
| `navDisplayOptions` | `object` | No | `{ alignment: 'left' | 'right' | 'center', position: 'inline' | 'below' }` |
|
|
25
|
+
| `portalLogoUrl` | `string` | No | URL for the portal logo image |
|
|
26
|
+
| `operatorInfo` | `object` | No | `{ displayName: string }` — for avatar initials |
|
|
27
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
28
28
|
|
|
29
29
|
## Behavioral Contract
|
|
30
30
|
|
|
@@ -38,12 +38,14 @@ Provides the top navigation bar for WSS (Web Self-Service) portals. Responsive:
|
|
|
38
38
|
### Navigation Position
|
|
39
39
|
|
|
40
40
|
From `navDisplayOptions.position`:
|
|
41
|
+
|
|
41
42
|
- `'inline'` — nav links appear in the same row as the logo.
|
|
42
43
|
- `'below'` — nav links appear in a second row below the logo/title row.
|
|
43
44
|
|
|
44
45
|
### Navigation Alignment
|
|
45
46
|
|
|
46
47
|
From `navDisplayOptions.alignment`:
|
|
48
|
+
|
|
47
49
|
- `'left'` — links flush left.
|
|
48
50
|
- `'right'` — links pushed to the right (flex with `ml: 'auto'`).
|
|
49
51
|
- `'center'` — links centered.
|
|
@@ -87,14 +89,15 @@ From `navDisplayOptions.alignment`:
|
|
|
87
89
|
|
|
88
90
|
## Visual Specifications
|
|
89
91
|
|
|
90
|
-
| Element
|
|
91
|
-
|
|
92
|
-
| Logo
|
|
92
|
+
| Element | Mobile | Desktop |
|
|
93
|
+
| --------- | ----------------------- | --------------------- |
|
|
94
|
+
| Logo | Shown | Shown |
|
|
93
95
|
| Nav links | Hidden (hamburger menu) | Shown inline or below |
|
|
94
|
-
| Avatar
|
|
95
|
-
| Hamburger | Shown
|
|
96
|
+
| Avatar | Shown | Shown |
|
|
97
|
+
| Hamburger | Shown | Hidden |
|
|
96
98
|
|
|
97
99
|
**CSS-only implementation notes:**
|
|
100
|
+
|
|
98
101
|
- App bar: `background: var(--app-primary-color); color: white`.
|
|
99
102
|
- Toolbar: `display: flex; align-items: center; gap: 1rem; padding: 0 1rem`.
|
|
100
103
|
- Hamburger: `display: none`. At mobile breakpoint: `display: flex`.
|
|
@@ -121,15 +124,16 @@ From `navDisplayOptions.alignment`:
|
|
|
121
124
|
|
|
122
125
|
Listed design systems are examples only.
|
|
123
126
|
|
|
124
|
-
| Design System
|
|
125
|
-
|
|
126
|
-
| Default (CSS only) | `<header>` + CSS
|
|
127
|
-
| MUI
|
|
128
|
-
| Ant Design
|
|
129
|
-
| Chakra UI
|
|
130
|
-
| Shadcn/ui
|
|
127
|
+
| Design System | App Bar | Avatar | Mobile Menu |
|
|
128
|
+
| ------------------ | ------------------------ | ---------------------- | ------------------------ |
|
|
129
|
+
| Default (CSS only) | `<header>` + CSS | `<div class='avatar'>` | CSS hamburger + dropdown |
|
|
130
|
+
| MUI | `<AppBar>` + `<Toolbar>` | `<Avatar>` | `<Drawer>` or `<Menu>` |
|
|
131
|
+
| Ant Design | `<Layout.Header>` | `<Avatar>` | `<Drawer>` |
|
|
132
|
+
| Chakra UI | `<Box as='header'>` | `<Avatar>` | `<Drawer>` |
|
|
133
|
+
| Shadcn/ui | Custom `<header>` | Custom initials avatar | `<Sheet>` (drawer) |
|
|
131
134
|
|
|
132
135
|
When implementing in a specific design system:
|
|
136
|
+
|
|
133
137
|
- `logout` from `@pega/auth/lib/sdk-auth-manager` is mandatory — always call the SDK logout, not a custom one
|
|
134
138
|
- Responsive breakpoints for hamburger/nav visibility must be implemented
|
|
135
139
|
- `navDisplayOptions.alignment` and `.position` must be respected
|
|
@@ -123,6 +123,7 @@ The PCore data-fetching logic (all `PCore.*` calls) is always identical regardle
|
|
|
123
123
|
**2. If the chosen design system is not listed** — use the component purpose description to identify the appropriate DS primitives (card, list, table, button, badge, etc.).
|
|
124
124
|
|
|
125
125
|
**3. Discover the API from installed packages** — confirm component names and props from `.d.ts` before writing JSX:
|
|
126
|
+
|
|
126
127
|
```bash
|
|
127
128
|
find node_modules/<ds-package> -name "*.d.ts" | xargs grep -l "Card\|List\|Table" | head -5
|
|
128
129
|
grep -A 30 "interface.*Props" <path-to-file>
|
|
@@ -130,14 +131,14 @@ grep -A 30 "interface.*Props" <path-to-file>
|
|
|
130
131
|
|
|
131
132
|
**4. Common widget UI primitive mapping:**
|
|
132
133
|
|
|
133
|
-
| Widget pattern
|
|
134
|
-
|
|
135
|
-
| Container with title | `Card` + header/title prop, or `Panel`, `Box`
|
|
136
|
-
| Item list
|
|
137
|
-
| Loading indicator
|
|
138
|
-
| Action button
|
|
139
|
-
| Status badge
|
|
140
|
-
| Empty state
|
|
134
|
+
| Widget pattern | Typical DS equivalent |
|
|
135
|
+
| -------------------- | ----------------------------------------------- |
|
|
136
|
+
| Container with title | `Card` + header/title prop, or `Panel`, `Box` |
|
|
137
|
+
| Item list | `List`, `UnorderedList`, or `Table` rows |
|
|
138
|
+
| Loading indicator | `Spinner`, `Skeleton`, `Loading` |
|
|
139
|
+
| Action button | `Button` with `onClick` |
|
|
140
|
+
| Status badge | `Badge`, `Tag`, `Chip` |
|
|
141
|
+
| Empty state | DS empty/placeholder component or plain `<div>` |
|
|
141
142
|
|
|
142
143
|
**5. Icons** — if the DS has a companion icon package, read its exports before using any icon name. Never guess icon names.
|
|
143
144
|
|
|
@@ -167,14 +168,7 @@ function createCase(caseType) {
|
|
|
167
168
|
|
|
168
169
|
```typescript
|
|
169
170
|
// Fetch list data
|
|
170
|
-
PCore.getDataPageUtils().getDataAsync(
|
|
171
|
-
dataPageName,
|
|
172
|
-
context,
|
|
173
|
-
params,
|
|
174
|
-
paging,
|
|
175
|
-
query,
|
|
176
|
-
options,
|
|
177
|
-
);
|
|
171
|
+
PCore.getDataPageUtils().getDataAsync(dataPageName, context, params, paging, query, options);
|
|
178
172
|
|
|
179
173
|
// Get page data (single record)
|
|
180
174
|
PCore.getDataPageUtils().getPageDataAsync(dataPageName, context, params);
|
|
@@ -193,12 +187,7 @@ const caseName = pConn.getCaseInfo().getName();
|
|
|
193
187
|
|
|
194
188
|
```typescript
|
|
195
189
|
PCore.getAttachmentUtils().prepareAttachmentData(value);
|
|
196
|
-
PCore.getAttachmentUtils().uploadAttachment(
|
|
197
|
-
file,
|
|
198
|
-
onProgress,
|
|
199
|
-
errorHandler,
|
|
200
|
-
context,
|
|
201
|
-
);
|
|
190
|
+
PCore.getAttachmentUtils().uploadAttachment(file, onProgress, errorHandler, context);
|
|
202
191
|
PCore.getAttachmentUtils().downloadAttachment(attachmentID, context);
|
|
203
192
|
```
|
|
204
193
|
|
|
@@ -18,13 +18,13 @@ Renders an announcement card with a heading, description text, optional bullet l
|
|
|
18
18
|
|
|
19
19
|
## Props
|
|
20
20
|
|
|
21
|
-
| Prop
|
|
22
|
-
|
|
23
|
-
| `header`
|
|
24
|
-
| `description`
|
|
25
|
-
| `datasource`
|
|
26
|
-
| `whatsnewlink` | `string`
|
|
27
|
-
| `getPConnect`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| -------------- | ---------- | -------- | ---------------------------------------------------------------------- |
|
|
23
|
+
| `header` | `string` | No | Announcement card title |
|
|
24
|
+
| `description` | `string` | No | Announcement body text |
|
|
25
|
+
| `datasource` | `object` | No | Data source object — `datasource.source` is an array of item objects |
|
|
26
|
+
| `whatsnewlink` | `string` | No | URL for the "See what's new" button; if absent, button is not rendered |
|
|
27
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
28
28
|
|
|
29
29
|
## Behavioral Contract
|
|
30
30
|
|
|
@@ -37,14 +37,15 @@ Renders an announcement card with a heading, description text, optional bullet l
|
|
|
37
37
|
|
|
38
38
|
### Card Layout
|
|
39
39
|
|
|
40
|
-
| Element
|
|
41
|
-
|
|
42
|
-
| Left accent border
|
|
43
|
-
| Card header
|
|
44
|
-
| Card content
|
|
45
|
-
| "See what's new" button | Below description / bullet list
|
|
40
|
+
| Element | Position |
|
|
41
|
+
| ----------------------- | --------------------------------------- |
|
|
42
|
+
| Left accent border | 6px solid, primary light color |
|
|
43
|
+
| Card header | `header` prop as title |
|
|
44
|
+
| Card content | Description text + optional bullet list |
|
|
45
|
+
| "See what's new" button | Below description / bullet list |
|
|
46
46
|
|
|
47
47
|
**CSS-only implementation notes:**
|
|
48
|
+
|
|
48
49
|
- Card: `border-left: 6px solid var(--app-primary-light-color); border-radius: 4px; box-shadow: 0 1px 4px rgba(0,0,0,0.12)`.
|
|
49
50
|
- Card header: `padding: 12px 16px; font-weight: 600`.
|
|
50
51
|
- Card content: `padding: 0 16px 16px`.
|
|
@@ -68,15 +69,16 @@ Renders an announcement card with a heading, description text, optional bullet l
|
|
|
68
69
|
|
|
69
70
|
Listed design systems are examples only.
|
|
70
71
|
|
|
71
|
-
| Design System
|
|
72
|
-
|
|
73
|
-
| Default (CSS only) | `<div>` with left border + box-shadow
|
|
74
|
-
| MUI
|
|
75
|
-
| Ant Design
|
|
76
|
-
| Chakra UI
|
|
77
|
-
| Shadcn/ui
|
|
72
|
+
| Design System | Card | Bullet List | Button |
|
|
73
|
+
| ------------------ | ------------------------------------------- | ----------------------------- | -------------------------- |
|
|
74
|
+
| Default (CSS only) | `<div>` with left border + box-shadow | `<ul>/<li>` | `<button>` opening new tab |
|
|
75
|
+
| MUI | `<Card>` + `<CardHeader>` + `<CardContent>` | `<List>/<ListItem>` or `<ul>` | `<Button>` |
|
|
76
|
+
| Ant Design | `<Card>` with `title` prop | `<ul>/<li>` | `<Button>` |
|
|
77
|
+
| Chakra UI | `<Card>` + `<CardHeader>` + `<CardBody>` | `<UnorderedList>/<ListItem>` | `<Button>` |
|
|
78
|
+
| Shadcn/ui | `<Card>` + `<CardHeader>` + `<CardContent>` | `<ul>/<li>` | `<Button>` |
|
|
78
79
|
|
|
79
80
|
When implementing in a specific design system:
|
|
81
|
+
|
|
80
82
|
- Left accent border is a key visual identifier — implement it via CSS or the design system's border utilities
|
|
81
83
|
- "See what's new" must open in a new tab (`target='_blank'` + `rel='noopener noreferrer'`)
|
|
82
84
|
- The widget is entirely prop-driven — no data fetching needed
|
|
@@ -18,20 +18,20 @@ Renders a file attachment control within a Pega form. Users can upload one or mu
|
|
|
18
18
|
|
|
19
19
|
## Props
|
|
20
20
|
|
|
21
|
-
| Prop
|
|
22
|
-
|
|
23
|
-
| `value`
|
|
24
|
-
| `allowMultiple`
|
|
25
|
-
| `extensions`
|
|
26
|
-
| `editMode`
|
|
27
|
-
| `isTableFormatter` | `boolean`
|
|
28
|
-
| `label`
|
|
29
|
-
| `required`
|
|
30
|
-
| `disabled`
|
|
31
|
-
| `displayMode`
|
|
32
|
-
| `validatemessage`
|
|
33
|
-
| `helperText`
|
|
34
|
-
| `getPConnect`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ------------------ | ------------------- | -------------------------- | ---------------------------------------------------------------------------- |
|
|
23
|
+
| `value` | `any` | Yes | Attachment list or single attachment object (from Pega property) |
|
|
24
|
+
| `allowMultiple` | `boolean \| string` | No | Whether multiple files can be attached. Default `false` |
|
|
25
|
+
| `extensions` | `string` | No | Comma-separated list of allowed file extensions (e.g., `".pdf,.doc,.jpg"`) |
|
|
26
|
+
| `editMode` | `string` | No | `"tableRows"` for inline table edit mode (special multi-attachment handling) |
|
|
27
|
+
| `isTableFormatter` | `boolean` | No | Whether this widget is used inside a table formatter |
|
|
28
|
+
| `label` | `string` | Yes (from PConnFieldProps) | Field label |
|
|
29
|
+
| `required` | `boolean` | No | Whether a file is required |
|
|
30
|
+
| `disabled` | `boolean` | No | Whether the control is disabled |
|
|
31
|
+
| `displayMode` | `string` | No | `"DISPLAY_ONLY"` for read-only rendering |
|
|
32
|
+
| `validatemessage` | `string` | No | Validation error message to display |
|
|
33
|
+
| `helperText` | `string` | No | Helper text shown below the control |
|
|
34
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
35
35
|
|
|
36
36
|
## Behavioral Contract
|
|
37
37
|
|
|
@@ -40,11 +40,13 @@ Renders a file attachment control within a Pega form. Users can upload one or mu
|
|
|
40
40
|
Pega has two attachment data formats — detect which one is in use:
|
|
41
41
|
|
|
42
42
|
**Old format (annotation-based):**
|
|
43
|
+
|
|
43
44
|
```typescript
|
|
44
45
|
value = { pxResults: [...], pyAttachCount: N }
|
|
45
46
|
```
|
|
46
47
|
|
|
47
48
|
**New standard format:**
|
|
49
|
+
|
|
48
50
|
```typescript
|
|
49
51
|
value = [{ ID, name, mimeType, category, ... }] // array
|
|
50
52
|
```
|
|
@@ -54,6 +56,7 @@ Call `PCore.getAttachmentUtils().prepareAttachmentData(value)` to normalize both
|
|
|
54
56
|
### File Validation
|
|
55
57
|
|
|
56
58
|
On file selection (via `<input type='file'>`):
|
|
59
|
+
|
|
57
60
|
1. **Extension check:** Compare selected file's extension against `extensions` prop (split by comma). If not allowed, add an error to the file and do not upload.
|
|
58
61
|
2. **Size check:** Compare file size against `PCore.getEnvironmentInfo().getMaxAttachmentSize()` (in bytes). If too large, add a size error.
|
|
59
62
|
3. Valid files proceed to upload.
|
|
@@ -89,15 +92,16 @@ Compressed display for use inside a table cell. Show attachment count and a smal
|
|
|
89
92
|
|
|
90
93
|
## Visual Specifications
|
|
91
94
|
|
|
92
|
-
| Element
|
|
93
|
-
|
|
94
|
-
| Label
|
|
95
|
-
| Drop zone / Upload button | Clickable area to select files; optionally supports drag-and-drop
|
|
96
|
-
| File list
|
|
97
|
-
| Error state
|
|
98
|
-
| Helper text
|
|
95
|
+
| Element | Description |
|
|
96
|
+
| ------------------------- | ------------------------------------------------------------------------------------- |
|
|
97
|
+
| Label | Standard field label above the control |
|
|
98
|
+
| Drop zone / Upload button | Clickable area to select files; optionally supports drag-and-drop |
|
|
99
|
+
| File list | Each uploaded file: icon + name + size + progress bar (during upload) + delete button |
|
|
100
|
+
| Error state | Red error text below the control for invalid files or upload failures |
|
|
101
|
+
| Helper text | Secondary text below the control |
|
|
99
102
|
|
|
100
103
|
**CSS-only implementation notes:**
|
|
104
|
+
|
|
101
105
|
- Drop zone: `border: 2px dashed var(--border-color); border-radius: 4px; padding: 1rem; text-align: center; cursor: pointer`.
|
|
102
106
|
- Drop zone hover: `border-color: var(--app-primary-color); background: var(--hover-bg)`.
|
|
103
107
|
- File row: `display: flex; align-items: center; gap: 0.5rem; padding: 4px 0`.
|
|
@@ -131,15 +135,16 @@ Compressed display for use inside a table cell. Show attachment count and a smal
|
|
|
131
135
|
|
|
132
136
|
Listed design systems are examples only.
|
|
133
137
|
|
|
134
|
-
| Design System
|
|
135
|
-
|
|
136
|
-
| Default (CSS only) | `<input type='file'>` + custom styled drop zone
|
|
137
|
-
| MUI
|
|
138
|
-
| Ant Design
|
|
139
|
-
| Chakra UI
|
|
140
|
-
| Shadcn/ui
|
|
138
|
+
| Design System | File Input | Progress | File List |
|
|
139
|
+
| ------------------ | -------------------------------------------------- | ------------------------------- | ------------------------- |
|
|
140
|
+
| Default (CSS only) | `<input type='file'>` + custom styled drop zone | `<progress>` element or CSS bar | `<ul>/<li>` rows |
|
|
141
|
+
| MUI | Custom styled `<Box>` drop zone + hidden `<input>` | `<LinearProgress>` | `<List>/<ListItem>` |
|
|
142
|
+
| Ant Design | `<Upload dragger>` | `<Progress>` | Built-in upload file list |
|
|
143
|
+
| Chakra UI | Custom `<Box>` with `useDropzone` | `<Progress>` | `<VStack>` rows |
|
|
144
|
+
| Shadcn/ui | Custom drop zone | Custom CSS progress bar | `<ul>/<li>` rows |
|
|
141
145
|
|
|
142
146
|
When implementing in a specific design system:
|
|
147
|
+
|
|
143
148
|
- Action sequencer blocking (`addAction`/`removeAction`) is mandatory — do not skip it; form submission must be blocked during uploads
|
|
144
149
|
- Detect and normalize both old and new attachment formats via `prepareAttachmentData`
|
|
145
150
|
- `allowMultiple` coercion (string vs boolean) is required
|
|
@@ -18,9 +18,9 @@ Renders a table of case events sourced from the `D_pyWorkHistory` data page. Sho
|
|
|
18
18
|
|
|
19
19
|
## Props
|
|
20
20
|
|
|
21
|
-
| Prop
|
|
22
|
-
|
|
23
|
-
| `getPConnect` | `function` | Yes
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ------------- | ---------- | -------- | ----------------------------------------------------- |
|
|
23
|
+
| `getPConnect` | `function` | Yes | PConnect getter — used to resolve case ID and context |
|
|
24
24
|
|
|
25
25
|
No additional custom props. All data is fetched internally.
|
|
26
26
|
|
|
@@ -50,6 +50,7 @@ Use `fast-deep-equal/react` to compare new `historyData` with previous value —
|
|
|
50
50
|
### Data Transformation
|
|
51
51
|
|
|
52
52
|
For each history row, map:
|
|
53
|
+
|
|
53
54
|
- **Date column:** Format `pyUpdatedDateTime` using the SDK date formatter (e.g., `formatDateTime(row.pyUpdatedDateTime)`) or display as-is.
|
|
54
55
|
- **Description column:** `row.pyMessageKey` — the localized event description string.
|
|
55
56
|
- **Performer column:** `row.pyPerformer` — the operator who performed the action.
|
|
@@ -59,13 +60,14 @@ For each history row, map:
|
|
|
59
60
|
|
|
60
61
|
### Table Layout
|
|
61
62
|
|
|
62
|
-
| Column
|
|
63
|
-
|
|
64
|
-
| Date
|
|
65
|
-
| Description | `pyMessageKey`
|
|
66
|
-
| Performer
|
|
63
|
+
| Column | Field | Width |
|
|
64
|
+
| ----------- | ------------------------------- | ----- |
|
|
65
|
+
| Date | `pyUpdatedDateTime` (formatted) | ~25% |
|
|
66
|
+
| Description | `pyMessageKey` | ~50% |
|
|
67
|
+
| Performer | `pyPerformer` | ~25% |
|
|
67
68
|
|
|
68
69
|
**CSS-only implementation notes:**
|
|
70
|
+
|
|
69
71
|
- Table container: `width: 100%; overflow-x: auto`.
|
|
70
72
|
- Table: `border-collapse: collapse; width: 100%`.
|
|
71
73
|
- Header cells: `background: var(--table-header-bg); font-weight: 600; padding: 8px 12px; border-bottom: 2px solid var(--divider-color)`.
|
|
@@ -93,15 +95,16 @@ For each history row, map:
|
|
|
93
95
|
|
|
94
96
|
Listed design systems are examples only.
|
|
95
97
|
|
|
96
|
-
| Design System
|
|
97
|
-
|
|
98
|
-
| Default (CSS only) | `<table>/<thead>/<tbody>/<tr>/<td>`
|
|
99
|
-
| MUI
|
|
100
|
-
| Ant Design
|
|
101
|
-
| Chakra UI
|
|
102
|
-
| Shadcn/ui
|
|
98
|
+
| Design System | Table |
|
|
99
|
+
| ------------------ | --------------------------------------------------------------------------------- |
|
|
100
|
+
| Default (CSS only) | `<table>/<thead>/<tbody>/<tr>/<td>` |
|
|
101
|
+
| MUI | `<TableContainer>` + `<Table>` + `<TableHead>/<TableBody>/<TableRow>/<TableCell>` |
|
|
102
|
+
| Ant Design | `<Table dataSource={historyData} columns={...}>` |
|
|
103
|
+
| Chakra UI | `<Table>` + `<Thead>/<Tbody>/<Tr>/<Th>/<Td>` |
|
|
104
|
+
| Shadcn/ui | `<Table>` + `<TableHeader>/<TableBody>/<TableRow>/<TableHead>/<TableCell>` |
|
|
103
105
|
|
|
104
106
|
When implementing in a specific design system:
|
|
107
|
+
|
|
105
108
|
- `fast-deep-equal` comparison is a performance optimization — include it to avoid redundant renders on re-subscription
|
|
106
109
|
- Data page name `D_pyWorkHistory` is fixed — do not make it configurable
|
|
107
110
|
- Missing field fallback `"---"` should be consistent across all three columns
|
|
@@ -18,19 +18,21 @@ The primary attachments management panel in the case utilities column. Shows up
|
|
|
18
18
|
|
|
19
19
|
## Props
|
|
20
20
|
|
|
21
|
-
| Prop
|
|
22
|
-
|
|
23
|
-
| `caseId`
|
|
24
|
-
| `getPConnect` | `function` | Yes
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ------------- | ---------- | -------- | --------------------------------------------------------------------------------- |
|
|
23
|
+
| `caseId` | `string` | No | Optional case ID override. If absent, resolved from `pConn.getCaseInfo().getID()` |
|
|
24
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
25
25
|
|
|
26
26
|
## Behavioral Contract
|
|
27
27
|
|
|
28
28
|
### Attachment Fetch
|
|
29
29
|
|
|
30
30
|
On mount and on attachment change events:
|
|
31
|
+
|
|
31
32
|
```
|
|
32
33
|
PCore.getAttachmentUtils().getCaseAttachments(caseKey, context)
|
|
33
34
|
```
|
|
35
|
+
|
|
34
36
|
Returns array of attachment/link objects. Store in `attachments` state.
|
|
35
37
|
|
|
36
38
|
Debounced auto-refresh: on `CASE_ATTACHMENTS_UPDATED` pub-sub event, wait 1000ms (debounced) then re-fetch. This prevents rapid re-fetches when multiple files are uploaded simultaneously.
|
|
@@ -42,6 +44,7 @@ Show only the first 3 items from `attachments`. If `attachments.length > 3`, sho
|
|
|
42
44
|
### SummaryList Integration
|
|
43
45
|
|
|
44
46
|
Map each attachment/link to a `SummaryItem`-compatible object:
|
|
47
|
+
|
|
45
48
|
```typescript
|
|
46
49
|
{
|
|
47
50
|
id: attachment.ID,
|
|
@@ -89,6 +92,7 @@ Call `PCore.getAttachmentUtils().deleteAttachment(attachmentID, context)`. Refre
|
|
|
89
92
|
### Actions Menu
|
|
90
93
|
|
|
91
94
|
Render a `<MoreVertIcon>` `<IconButton>` that opens a `<Menu>` with:
|
|
95
|
+
|
|
92
96
|
- `"Add file"` — opens add-file modal
|
|
93
97
|
- `"Add link"` — opens add-link modal
|
|
94
98
|
|
|
@@ -96,39 +100,40 @@ Render a `<MoreVertIcon>` `<IconButton>` that opens a `<Menu>` with:
|
|
|
96
100
|
|
|
97
101
|
### Main Card
|
|
98
102
|
|
|
99
|
-
| Element
|
|
100
|
-
|
|
101
|
-
| Card header
|
|
102
|
-
| Actions icon
|
|
103
|
-
| Attachment rows
|
|
104
|
-
| "View all" button | Text button, shown when > 3 attachments
|
|
103
|
+
| Element | Description |
|
|
104
|
+
| ----------------- | -------------------------------------------- |
|
|
105
|
+
| Card header | `"Attachments"` (or localized) + count badge |
|
|
106
|
+
| Actions icon | `<MoreVertIcon>` button top-right |
|
|
107
|
+
| Attachment rows | Up to 3 `SummaryItem` cards |
|
|
108
|
+
| "View all" button | Text button, shown when > 3 attachments |
|
|
105
109
|
|
|
106
110
|
### "View all" Modal
|
|
107
111
|
|
|
108
|
-
| Element
|
|
109
|
-
|
|
110
|
-
| Modal header
|
|
112
|
+
| Element | Description |
|
|
113
|
+
| --------------- | -------------------------- |
|
|
114
|
+
| Modal header | `"All attachments (N)"` |
|
|
111
115
|
| Attachment rows | All items in `SummaryList` |
|
|
112
|
-
| Close button
|
|
116
|
+
| Close button | `X` in modal header |
|
|
113
117
|
|
|
114
118
|
### Add File Modal
|
|
115
119
|
|
|
116
|
-
| Element
|
|
117
|
-
|
|
118
|
-
| File picker
|
|
119
|
-
| Progress bar
|
|
120
|
+
| Element | Description |
|
|
121
|
+
| -------------- | -------------------------------------------- |
|
|
122
|
+
| File picker | `<input type='file'>` |
|
|
123
|
+
| Progress bar | Per-file upload progress |
|
|
120
124
|
| Action buttons | `ActionButtonsForFileUtil` (Cancel + Attach) |
|
|
121
125
|
|
|
122
126
|
### Add Link Modal
|
|
123
127
|
|
|
124
|
-
| Element
|
|
125
|
-
|
|
126
|
-
| Title field
|
|
127
|
-
| URL field
|
|
128
|
-
| Attach button
|
|
128
|
+
| Element | Description |
|
|
129
|
+
| -------------- | -------------------------------------------- |
|
|
130
|
+
| Title field | `<TextField label='Title'>` — required |
|
|
131
|
+
| URL field | `<TextField label='URL'>` — required |
|
|
132
|
+
| Attach button | Enabled only when both fields are filled |
|
|
129
133
|
| Action buttons | `ActionButtonsForFileUtil` (Cancel + Attach) |
|
|
130
134
|
|
|
131
135
|
**CSS-only implementation notes:**
|
|
136
|
+
|
|
132
137
|
- Main card: standard card styles.
|
|
133
138
|
- Modal: `position: fixed; top: 50%; left: 50%; transform: translate(-50%, -50%); background: white; border-radius: 8px; box-shadow: 0 4px 24px rgba(0,0,0,0.2); min-width: 480px; padding: 1.5rem`.
|
|
134
139
|
- "View all" button: text style, `color: var(--app-primary-color); cursor: pointer`.
|
|
@@ -142,13 +147,13 @@ A simple button row component used inside the FileUtility modals to render Cance
|
|
|
142
147
|
|
|
143
148
|
### Props
|
|
144
149
|
|
|
145
|
-
| Prop
|
|
146
|
-
|
|
147
|
-
| `arMainButtons`
|
|
148
|
-
| `arSecondaryButtons` | `any[]`
|
|
149
|
-
| `primaryAction`
|
|
150
|
-
| `secondaryAction`
|
|
151
|
-
| `getPConnect`
|
|
150
|
+
| Prop | Type | Required | Description |
|
|
151
|
+
| -------------------- | ---------- | -------- | ------------------------------------------------------------ |
|
|
152
|
+
| `arMainButtons` | `any[]` | Yes | Primary button definitions `[{ actionID, name }]` |
|
|
153
|
+
| `arSecondaryButtons` | `any[]` | Yes | Secondary (cancel) button definitions `[{ actionID, name }]` |
|
|
154
|
+
| `primaryAction` | `function` | Yes | Callback invoked when the primary button is clicked |
|
|
155
|
+
| `secondaryAction` | `function` | Yes | Callback invoked when the secondary/cancel button is clicked |
|
|
156
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
152
157
|
|
|
153
158
|
### Layout
|
|
154
159
|
|
|
@@ -186,15 +191,16 @@ A simple button row component used inside the FileUtility modals to render Cance
|
|
|
186
191
|
|
|
187
192
|
Listed design systems are examples only.
|
|
188
193
|
|
|
189
|
-
| Design System
|
|
190
|
-
|
|
191
|
-
| Default (CSS only) | `<div>` card | `<button>` + custom dropdown
|
|
192
|
-
| MUI
|
|
193
|
-
| Ant Design
|
|
194
|
-
| Chakra UI
|
|
195
|
-
| Shadcn/ui
|
|
194
|
+
| Design System | Card | Action Menu | Modal | Progress |
|
|
195
|
+
| ------------------ | ------------ | ------------------------------------ | ---------- | ------------------------------------------ |
|
|
196
|
+
| Default (CSS only) | `<div>` card | `<button>` + custom dropdown | `<dialog>` | CSS progress bar |
|
|
197
|
+
| MUI | `<Card>` | `<IconButton>` + `<Menu>/<MenuItem>` | `<Dialog>` | `<CircularProgress>` or `<LinearProgress>` |
|
|
198
|
+
| Ant Design | `<Card>` | `<Dropdown menu={{ items }}>` | `<Modal>` | `<Progress>` |
|
|
199
|
+
| Chakra UI | `<Card>` | `<Menu>/<MenuButton>/<MenuList>` | `<Modal>` | `<Progress>` |
|
|
200
|
+
| Shadcn/ui | `<Card>` | `<DropdownMenu>` | `<Dialog>` | Custom progress bar |
|
|
196
201
|
|
|
197
202
|
When implementing in a specific design system:
|
|
203
|
+
|
|
198
204
|
- Debounced refresh (1000ms) after pub-sub attachment events is required — prevents excessive API calls
|
|
199
205
|
- `linkAttachmentsToCase` must be called after upload — uploading alone does not attach to the case
|
|
200
206
|
- `ActionButtonsForFileUtil` receives button definition arrays — render them generically from `arMainButtons`/`arSecondaryButtons`
|
|
@@ -18,11 +18,12 @@ Intended to display the list of operators following a case, allowing users to fo
|
|
|
18
18
|
|
|
19
19
|
## Props
|
|
20
20
|
|
|
21
|
-
| Prop
|
|
22
|
-
|
|
23
|
-
| `getPConnect` | `function` | Yes
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ------------- | ---------- | -------- | --------------- |
|
|
23
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
24
24
|
|
|
25
25
|
No additional custom props in the current stub implementation. A full implementation would likely include:
|
|
26
|
+
|
|
26
27
|
- `datasource` — data page name for follower list
|
|
27
28
|
- `headerText` — widget title (e.g., `"Followers"`)
|
|
28
29
|
|
|
@@ -47,24 +48,26 @@ No additional custom props in the current stub implementation. A full implementa
|
|
|
47
48
|
|
|
48
49
|
### Stub Rendering
|
|
49
50
|
|
|
50
|
-
| Element
|
|
51
|
-
|
|
52
|
-
| Card title | `"Followers"`
|
|
53
|
-
| Card body
|
|
51
|
+
| Element | Value |
|
|
52
|
+
| ---------- | -------------------------------------- |
|
|
53
|
+
| Card title | `"Followers"` |
|
|
54
|
+
| Card body | `"Followers - unsupported"` plain text |
|
|
54
55
|
|
|
55
56
|
### Expected Full Rendering
|
|
56
57
|
|
|
57
|
-
| Element
|
|
58
|
-
|
|
59
|
-
| Card header
|
|
60
|
-
| Follower avatars | Row of avatar initials circles
|
|
61
|
-
| Follow button
|
|
58
|
+
| Element | Description |
|
|
59
|
+
| ---------------- | --------------------------------------- |
|
|
60
|
+
| Card header | `"Followers"` + count badge |
|
|
61
|
+
| Follower avatars | Row of avatar initials circles |
|
|
62
|
+
| Follow button | Toggle button `"Follow"` / `"Unfollow"` |
|
|
62
63
|
|
|
63
64
|
**CSS-only implementation notes (stub):**
|
|
65
|
+
|
|
64
66
|
- Card: standard card layout — `border-radius: 4px; box-shadow: 0 1px 4px rgba(0,0,0,0.12); padding: 1rem`.
|
|
65
67
|
- Unsupported message: `color: var(--secondary-text-color); font-size: 0.875rem`.
|
|
66
68
|
|
|
67
69
|
**CSS-only implementation notes (full):**
|
|
70
|
+
|
|
68
71
|
- Avatar row: `display: flex; flex-wrap: wrap; gap: 4px`.
|
|
69
72
|
- Avatar circle: `width: 32px; height: 32px; border-radius: 50%; background: var(--avatar-bg); display: flex; align-items: center; justify-content: center; font-size: 0.75rem; font-weight: 600`.
|
|
70
73
|
|
|
@@ -85,15 +88,16 @@ No additional custom props in the current stub implementation. A full implementa
|
|
|
85
88
|
|
|
86
89
|
Listed design systems are examples only.
|
|
87
90
|
|
|
88
|
-
| Design System
|
|
89
|
-
|
|
90
|
-
| Default (CSS only) | `<div>` with border
|
|
91
|
-
| MUI
|
|
92
|
-
| Ant Design
|
|
93
|
-
| Chakra UI
|
|
94
|
-
| Shadcn/ui
|
|
91
|
+
| Design System | Card | Avatar | Toggle Button |
|
|
92
|
+
| ------------------ | --------------------- | ------------------------ | ------------------------- |
|
|
93
|
+
| Default (CSS only) | `<div>` with border | CSS circle with initials | `<button>` |
|
|
94
|
+
| MUI | `<Card>` + `<Avatar>` | `<Avatar>` | `<Button>` variant toggle |
|
|
95
|
+
| Ant Design | `<Card>` | `<Avatar>` | `<Button>` |
|
|
96
|
+
| Chakra UI | `<Card>` | `<Avatar>` | `<Button>` |
|
|
97
|
+
| Shadcn/ui | `<Card>` | Custom avatar | `<Button>` |
|
|
95
98
|
|
|
96
99
|
When implementing in a specific design system:
|
|
100
|
+
|
|
97
101
|
- The current stub only needs a card with a message — implement the full behavior once the Pega backend supports it
|
|
98
102
|
- Follow/unfollow must be scoped to the current case (`caseKey` from `pConn.getCaseInfo().getKey()`)
|
|
99
103
|
- Follower count badge in the card header improves scannability
|