@pega/sdk 0.0.4 → 0.0.6
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/README.md +10 -3
- package/dist/index.js +977 -92
- package/package.json +1 -1
- package/templates/angular-sdk-reference/package.json +12 -12
- package/templates/angular-sdk-reference/tsconfig.json +1 -1
- package/templates/react-native-sdk-reference/.claude/settings.json +5 -0
- package/templates/react-native-sdk-reference/.prettierignore +17 -0
- package/templates/react-native-sdk-reference/.vscode/extensions.json +1 -0
- package/templates/react-native-sdk-reference/.vscode/settings.json +7 -0
- package/templates/react-native-sdk-reference/AGENTS.md +3 -0
- package/templates/react-native-sdk-reference/CLAUDE.md +1 -0
- package/templates/react-native-sdk-reference/README.md +56 -0
- package/templates/react-native-sdk-reference/app.json +40 -5
- package/templates/react-native-sdk-reference/assets/expo.icon/Assets/expo-symbol 2.svg +3 -0
- package/templates/react-native-sdk-reference/assets/expo.icon/Assets/grid.png +0 -0
- package/templates/react-native-sdk-reference/assets/expo.icon/icon.json +35 -0
- package/templates/react-native-sdk-reference/assets/icons/bell.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/clock.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/cross.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/donut.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/gear.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/globe.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/internet.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/music.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/right-arrow.png +0 -0
- package/templates/react-native-sdk-reference/assets/icons/speed.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/MediaCo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/adaptive-icon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/android-icon-background.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/android-icon-foreground.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/android-icon-monochrome.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/expo-badge-white.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/expo-badge.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/expo-logo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/favicon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/icon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/logo-glow.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/partial-react-logo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/react-logo.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/react-logo@2x.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/react-logo@3x.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/splash-icon.png +0 -0
- package/templates/react-native-sdk-reference/assets/images/tutorial-web.png +0 -0
- package/templates/react-native-sdk-reference/eslint.config.mjs +68 -0
- package/templates/react-native-sdk-reference/package.json +59 -14
- package/templates/react-native-sdk-reference/pega-constellationjs-0.26.3.tgz +0 -0
- package/templates/react-native-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
- package/templates/react-native-sdk-reference/pega-sdk-types-0.1.0.tgz +0 -0
- package/templates/react-native-sdk-reference/sdk-config.json +31 -9
- package/templates/react-native-sdk-reference/src/app/_layout.tsx +38 -0
- package/templates/react-native-sdk-reference/src/app/home/_layout.tsx +39 -0
- package/templates/react-native-sdk-reference/src/app/home/contact.tsx +11 -0
- package/templates/react-native-sdk-reference/src/app/home/index.tsx +36 -0
- package/templates/react-native-sdk-reference/src/app/home/shop.tsx +11 -0
- package/templates/react-native-sdk-reference/src/app/home/your-services.tsx +11 -0
- package/templates/react-native-sdk-reference/src/app/index.tsx +72 -0
- package/templates/react-native-sdk-reference/src/app/workarea.tsx +135 -0
- package/templates/react-native-sdk-reference/src/bridge/Context/StoreContext.ts +4 -0
- package/templates/react-native-sdk-reference/src/bridge/RootComponent.tsx +12 -0
- package/templates/react-native-sdk-reference/src/bridge/react_pconnect.jsx +334 -0
- package/templates/react-native-sdk-reference/src/components/common/DisplayField.tsx +29 -0
- package/templates/react-native-sdk-reference/src/components/common/FormFieldWrapper.tsx +5 -0
- package/templates/react-native-sdk-reference/src/components/common/HelperText.tsx +11 -0
- package/templates/react-native-sdk-reference/src/components/common/LabelText.tsx +22 -0
- package/templates/react-native-sdk-reference/src/components/common/inputTheme.ts +17 -0
- package/templates/react-native-sdk-reference/src/components/design-system/AutoComplete.tsx +126 -0
- package/templates/react-native-sdk-reference/src/components/design-system/FieldGroup.tsx +72 -0
- package/templates/react-native-sdk-reference/src/components/design-system/Radio.tsx +61 -0
- package/templates/react-native-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +196 -0
- package/templates/react-native-sdk-reference/src/components/field/AutoComplete/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +89 -0
- package/templates/react-native-sdk-reference/src/components/field/Checkbox/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Currency/Currency.tsx +84 -0
- package/templates/react-native-sdk-reference/src/components/field/Currency/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Date/Date.tsx +94 -0
- package/templates/react-native-sdk-reference/src/components/field/Date/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +211 -0
- package/templates/react-native-sdk-reference/src/components/field/Dropdown/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Email/Email.tsx +81 -0
- package/templates/react-native-sdk-reference/src/components/field/Email/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Group/Group.tsx +47 -0
- package/templates/react-native-sdk-reference/src/components/field/Group/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Integer/Integer.tsx +84 -0
- package/templates/react-native-sdk-reference/src/components/field/Integer/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/Phone/Phone.tsx +85 -0
- package/templates/react-native-sdk-reference/src/components/field/Phone/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +118 -0
- package/templates/react-native-sdk-reference/src/components/field/RadioButtons/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/field/TextArea/TextArea.tsx +86 -0
- package/templates/react-native-sdk-reference/src/components/field/TextArea/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/TextInput/TextInput.tsx +84 -0
- package/templates/react-native-sdk-reference/src/components/field/TextInput/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/field/URL/URL.tsx +86 -0
- package/templates/react-native-sdk-reference/src/components/field/URL/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/helpers/data_page.ts +20 -0
- package/templates/react-native-sdk-reference/src/components/helpers/event-utils.ts +20 -0
- package/templates/react-native-sdk-reference/src/components/helpers/instructions-utils.ts +57 -0
- package/templates/react-native-sdk-reference/src/components/helpers/state-utils.tsx +46 -0
- package/templates/react-native-sdk-reference/src/components/helpers/template-utils.ts +75 -0
- package/templates/react-native-sdk-reference/src/components/helpers/utils.ts +339 -0
- package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/ActionButtons.tsx +63 -0
- package/templates/react-native-sdk-reference/src/components/infra/ActionButtons/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Assignment/Assignment.tsx +348 -0
- package/templates/react-native-sdk-reference/src/components/infra/Assignment/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/AssignmentCard.tsx +56 -0
- package/templates/react-native-sdk-reference/src/components/infra/AssignmentCard/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/FlowContainer.tsx +57 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/helpers.ts +137 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/FlowContainer/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/RootContainer.tsx +52 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/RootContainer/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/helper.ts +128 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/SimpleView/index.tsx +59 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/ViewContainer.tsx +31 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/helper.ts +39 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/ViewContainer/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Containers/helper.ts +9 -0
- package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/ErrorBoundary.tsx +53 -0
- package/templates/react-native-sdk-reference/src/components/infra/ErrorBoundary/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/MultiStep/MultiStep.tsx +24 -0
- package/templates/react-native-sdk-reference/src/components/infra/MultiStep/index.ts +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Reference/Reference.tsx +68 -0
- package/templates/react-native-sdk-reference/src/components/infra/Reference/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/Reference/utils.ts +16 -0
- package/templates/react-native-sdk-reference/src/components/infra/Region/Region.tsx +10 -0
- package/templates/react-native-sdk-reference/src/components/infra/Region/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/infra/View/View.tsx +49 -0
- package/templates/react-native-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +38 -0
- package/templates/react-native-sdk-reference/src/components/template/DefaultForm/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/template/DefaultForm/utils/index.ts +28 -0
- package/templates/react-native-sdk-reference/src/components/template/Details/Details.tsx +82 -0
- package/templates/react-native-sdk-reference/src/components/template/Details/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/components/template/OneColumn/OneColumn.tsx +29 -0
- package/templates/react-native-sdk-reference/src/components/template/OneColumn/index.tsx +1 -0
- package/templates/react-native-sdk-reference/src/context/LoaderContext.tsx +42 -0
- package/templates/react-native-sdk-reference/src/mediaco/AdvBanner.tsx +62 -0
- package/templates/react-native-sdk-reference/src/mediaco/Header.tsx +60 -0
- package/templates/react-native-sdk-reference/src/mediaco/HomeScreen.tsx +78 -0
- package/templates/react-native-sdk-reference/src/mediaco/QuickActions.tsx +68 -0
- package/templates/react-native-sdk-reference/src/mediaco/ResolutionScreen.tsx +48 -0
- package/templates/react-native-sdk-reference/src/mediaco/SafeArea.tsx +11 -0
- package/templates/react-native-sdk-reference/src/mediaco/TabBar.tsx +102 -0
- package/templates/react-native-sdk-reference/src/mediaco/YourServices.tsx +90 -0
- package/templates/react-native-sdk-reference/src/sdk-pega-component-map.ts +64 -0
- package/templates/react-native-sdk-reference/src/types/PConnProps.d.ts +41 -0
- package/templates/react-native-sdk-reference/src/utils/auth.ts +62 -0
- package/templates/react-native-sdk-reference/src/utils/init-pcore.ts +37 -0
- package/templates/react-native-sdk-reference/src/utils/pcore-polyfills.ts +66 -0
- package/templates/react-native-sdk-reference/tsconfig.json +9 -8
- package/templates/react-sdk-reference/.ai-common/agents/embedded-flow-expert.md +171 -0
- package/templates/react-sdk-reference/{.github/agents/implementation-expert.agent.md → .ai-common/agents/implementation-expert.md} +44 -48
- package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions-embedded.md +119 -0
- package/templates/react-sdk-reference/.ai-common/global/ai-agent-instructions.md +192 -0
- package/templates/react-sdk-reference/.ai-common/instructions/component-map.md +35 -0
- package/templates/react-sdk-reference/.ai-common/instructions/dse-component.md +47 -0
- package/templates/react-sdk-reference/.ai-common/instructions/embedded-component.md +134 -0
- package/templates/react-sdk-reference/.ai-common/instructions/field-component.md +50 -0
- package/templates/react-sdk-reference/.ai-common/instructions/template-component.md +43 -0
- package/templates/react-sdk-reference/.ai-common/instructions/widget-component.md +45 -0
- package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +193 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/component-manifest.json +106 -2
- package/templates/react-sdk-reference/.ai-common/prompts/embedded-component-manifest.md +155 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +358 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +165 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-embedded-components.md +315 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +190 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +227 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +172 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/prompts/identify-components.md +4 -0
- package/templates/react-sdk-reference/{.cursor/rules/prompts/replace-design-system.mdrules → .ai-common/prompts/replace-design-system.md} +2 -3
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/design-system-extension-skills/AlertBanner.md +61 -25
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +176 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +180 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/DetailsFields.md +180 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroup.md +153 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldGroupList.md +136 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/FieldValueList.md +140 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/Operator.md +85 -41
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Pulse.md +97 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +226 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/design-system-extension-skills/WssQuickCreate.md +35 -20
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension.md +169 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/analyze-customer-repo.md +130 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/authenticate.md +311 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/run-and-verify-integration.md +156 -0
- package/templates/react-sdk-reference/.ai-common/skills/embedded-flow/wire-integration.md +476 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-components.md +190 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +157 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +178 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +189 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +136 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +126 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +115 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +119 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +136 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +99 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Group.md +88 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +102 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +142 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/Multiselect.md +42 -53
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/ObjectReference.md +36 -60
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +113 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +100 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +153 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RichText.md +117 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +95 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +155 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/SemanticLink.md +35 -57
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +109 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/field-skills/TextContent.md +27 -52
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +112 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +102 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +96 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/field-skills/UserReference.md +41 -78
- package/templates/react-sdk-reference/.ai-common/skills/infra-components.md +165 -0
- package/templates/react-sdk-reference/.ai-common/skills/infra-skills/ActionButtons.md +122 -0
- package/templates/react-sdk-reference/.ai-common/skills/infra-skills/MultiStep.md +178 -0
- package/templates/react-sdk-reference/.ai-common/skills/infra-skills/Stages.md +140 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-components.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +126 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +160 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/BannerPage.md +90 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +129 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +196 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +157 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +149 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/DataReference.md +46 -31
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +141 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/DefaultPage.md +40 -34
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Details.md +96 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsSubTabs.md +103 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsThreeColumn.md +85 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DetailsTwoColumn.md +77 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DynamicTabs.md +103 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +130 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/HierarchicalForm.md +200 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboard.md +110 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/InlineDashboardPage.md +105 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/ListPage.md +21 -16
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +234 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/MultiReferenceReadOnly.md +18 -23
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +161 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/OneColumn.md +114 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +132 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +173 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/SimpleTable.md +44 -24
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +103 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SubTabs.md +89 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/TwoColumn.md +133 -0
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +36 -43
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/template-skills/WssNavBar.md +26 -45
- package/templates/react-sdk-reference/.ai-common/skills/widget-components.md +124 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +94 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +163 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/CaseHistory.md +90 -0
- package/templates/react-sdk-reference/{.github → .ai-common}/skills/widget-skills/FileUtility.md +68 -62
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/Followers.md +24 -19
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/QuickCreate.md +27 -44
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/widget-skills/SummaryItem.md +35 -61
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +261 -0
- package/templates/react-sdk-reference/package.json +1 -1
- package/templates/react-sdk-reference/package.minimal.json +29 -0
- package/templates/react-sdk-reference/pega-auth-0.2.44.tgz +0 -0
- package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -0
- package/templates/react-sdk-reference/src/AppProviders.tsx +17 -0
- package/templates/react-sdk-reference/src/MashupApp.tsx +8 -19
- package/templates/react-sdk-reference/src/PortalApp.tsx +6 -17
- package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +13 -3
- package/templates/react-native-sdk-reference/.github/AGENTS.md +0 -23
- package/templates/react-native-sdk-reference/.github/copilot-instructions.md +0 -40
- package/templates/react-native-sdk-reference/.github/skills/pega-sdk-component.md +0 -48
- package/templates/react-native-sdk-reference/App.tsx +0 -49
- package/templates/react-sdk-reference/.claude/instructions/component-map.md +0 -38
- package/templates/react-sdk-reference/.claude/instructions/dse-component.md +0 -75
- package/templates/react-sdk-reference/.claude/instructions/field-component.md +0 -75
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -93
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -88
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -152
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -158
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -140
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -153
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -165
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -138
- package/templates/react-sdk-reference/.claude/prompts/replace-design-system.md +0 -519
- package/templates/react-sdk-reference/.claude/skills/component-contracts.md +0 -140
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +0 -137
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +0 -152
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +0 -148
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -118
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -232
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -291
- package/templates/react-sdk-reference/.claude/skills/field-components.md +0 -295
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +0 -211
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -175
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +0 -99
- package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +0 -96
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +0 -145
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -93
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -129
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -167
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -134
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -231
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +0 -98
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +0 -117
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -89
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -86
- package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -321
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -150
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +0 -86
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -137
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +0 -104
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +0 -112
- package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +0 -90
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -97
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +0 -112
- package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +0 -116
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +0 -108
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -142
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +0 -143
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +0 -130
- package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +0 -142
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -108
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +0 -133
- package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +0 -139
- package/templates/react-sdk-reference/.claude/skills/widget-components.md +0 -260
- package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +0 -84
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +0 -151
- package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +0 -110
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -206
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -198
- package/templates/react-sdk-reference/.cursor/rules/component-map.mdrules +0 -41
- package/templates/react-sdk-reference/.cursor/rules/dse-component.mdrules +0 -78
- package/templates/react-sdk-reference/.cursor/rules/field-component.mdrules +0 -74
- package/templates/react-sdk-reference/.cursor/rules/pega-sdk.mdrules +0 -247
- package/templates/react-sdk-reference/.cursor/rules/prompts/add-component.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +0 -193
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-all-components.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-dse-components.mdrules +0 -131
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-field-components.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-template-components.mdrules +0 -156
- package/templates/react-sdk-reference/.cursor/rules/prompts/generate-widget-components.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/prompts/identify-components.mdrules +0 -110
- package/templates/react-sdk-reference/.cursor/rules/skills/component-contracts.mdrules +0 -145
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/AlertBanner.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Banner.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/CaseSummaryFields.mdrules +0 -159
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules +0 -116
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules +0 -120
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Operator.mdrules +0 -154
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules +0 -88
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/RichTextEditor.mdrules +0 -211
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension-skills/WssQuickCreate.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/design-system-extension.mdrules +0 -294
- package/templates/react-sdk-reference/.cursor/rules/skills/field-components.mdrules +0 -299
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/AutoComplete.mdrules +0 -117
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/CancelAlert.mdrules +0 -208
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Checkbox.mdrules +0 -163
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Currency.mdrules +0 -111
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Date.mdrules +0 -104
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/DateTime.mdrules +0 -108
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Decimal.mdrules +0 -103
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Dropdown.mdrules +0 -119
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Email.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Group.mdrules +0 -95
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Integer.mdrules +0 -92
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Location.mdrules +0 -141
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Multiselect.mdrules +0 -169
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ObjectReference.mdrules +0 -169
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Percentage.mdrules +0 -97
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Phone.mdrules +0 -115
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RadioButtons.mdrules +0 -151
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/RichText.mdrules +0 -143
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/ScalarList.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SelectableCard.mdrules +0 -221
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/SemanticLink.mdrules +0 -153
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextArea.mdrules +0 -101
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextContent.mdrules +0 -106
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/TextInput.mdrules +0 -109
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/Time.mdrules +0 -93
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/URL.mdrules +0 -90
- package/templates/react-sdk-reference/.cursor/rules/skills/field-skills/UserReference.mdrules +0 -185
- package/templates/react-sdk-reference/.cursor/rules/skills/run-and-verify.mdrules +0 -73
- package/templates/react-sdk-reference/.cursor/rules/skills/template-components.mdrules +0 -327
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AdvancedSearch.mdrules +0 -149
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/AppShell.mdrules +0 -127
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/BannerPage.mdrules +0 -88
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseSummary.mdrules +0 -105
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseView.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/CaseViewActionsMenu.mdrules +0 -131
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Confirmation.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DataReference.mdrules +0 -125
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultForm.mdrules +0 -107
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DefaultPage.mdrules +0 -115
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/Details.mdrules +0 -93
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules +0 -100
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules +0 -83
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules +0 -83
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/DynamicTabs.mdrules +0 -106
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/FieldGroupTemplate.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/HierarchicalForm.mdrules +0 -118
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboard.mdrules +0 -109
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules +0 -90
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListPage.mdrules +0 -73
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules +0 -85
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/OneColumn.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/PromotedFilters.mdrules +0 -129
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SelfServiceCaseView.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SimpleTable.mdrules +0 -132
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SingleReferenceReadOnly.mdrules +0 -108
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/SubTabs.mdrules +0 -84
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/TwoColumn.mdrules +0 -136
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WideNarrow.mdrules +0 -155
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/WssNavBar.mdrules +0 -140
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-components.mdrules +0 -276
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/AppAnnouncement.mdrules +0 -87
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Attachment.mdrules +0 -151
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/CaseHistory.mdrules +0 -112
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/FileUtility.mdrules +0 -205
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/Followers.mdrules +0 -104
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/QuickCreate.mdrules +0 -119
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/SummaryItem.mdrules +0 -172
- package/templates/react-sdk-reference/.cursor/rules/skills/widget-skills/ToDo.mdrules +0 -195
- package/templates/react-sdk-reference/.cursor/rules/template-component.mdrules +0 -95
- package/templates/react-sdk-reference/.cursor/rules/widget-component.mdrules +0 -90
- package/templates/react-sdk-reference/.github/copilot-instructions.md +0 -243
- package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +0 -40
- package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +0 -77
- package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +0 -77
- package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +0 -95
- package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +0 -90
- package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +0 -192
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -193
- package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +0 -411
- package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +0 -205
- package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +0 -223
- package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +0 -229
- package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +0 -208
- package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +0 -110
- package/templates/react-sdk-reference/.github/prompts/replace-design-system.prompt.md +0 -524
- package/templates/react-sdk-reference/.github/skills/component-contracts.md +0 -140
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -152
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -159
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -148
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +0 -134
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -113
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +0 -118
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -155
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +0 -85
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +0 -232
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +0 -137
- package/templates/react-sdk-reference/.github/skills/design-system-extension.md +0 -291
- package/templates/react-sdk-reference/.github/skills/field-components.md +0 -295
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -113
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -211
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -175
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -109
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -101
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -106
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -99
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -134
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -109
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -96
- package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +0 -88
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -145
- package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +0 -188
- package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +0 -173
- package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +0 -93
- package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +0 -129
- package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +0 -167
- package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +0 -149
- package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +0 -134
- package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +0 -231
- package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +0 -155
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -98
- package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +0 -107
- package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +0 -89
- package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +0 -86
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -203
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -70
- package/templates/react-sdk-reference/.github/skills/template-components.md +0 -321
- package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +0 -150
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -86
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +0 -106
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -137
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +0 -109
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -104
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -90
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +0 -97
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -106
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -112
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -116
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -108
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -82
- package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +0 -70
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -142
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -143
- package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +0 -114
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -130
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -142
- package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +0 -108
- package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +0 -82
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -133
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -152
- package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -260
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -84
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -151
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -110
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -103
- package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +0 -118
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -169
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -198
- package/templates/react-sdk-reference/AGENTS.md +0 -246
- package/templates/react-sdk-reference/pega-auth-0.2.42.tgz +0 -0
- /package/templates/react-sdk-reference/{.claude → .ai-common}/skills/run-and-verify.md +0 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# Skill: CaseSummary
|
|
2
|
+
|
|
3
|
+
Case summary template. Renders a summary panel with primary and secondary case fields, derived from either inputs or child region extraction.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
> ⚠️ **CRITICAL — Children-based field resolution is MANDATORY**
|
|
10
|
+
>
|
|
11
|
+
> The `arPrimaryFields` and `arSecondaryFields` inputs are almost always EMPTY at runtime. The Pega engine passes field data as region children, not as pre-computed array inputs.
|
|
12
|
+
>
|
|
13
|
+
> You MUST include children-based field extraction: when both `arPrimaryFields` and `arSecondaryFields` are empty, iterate the `children` and for each child, access its PConnect instance via the child element's **passed properties** (the `getPConnect` function is available on the child's properties, not directly on the child element itself). Then call `resolveConfigProps(getRawMetadata())` on that PConnect instance to resolve `@P` property references and `@L` label references into actual values. Check the resolved `name` (case-insensitive) to identify "primary fields" and "secondary fields" regions, and assign their resolved `children` arrays.
|
|
14
|
+
>
|
|
15
|
+
> **Key:** Access `getPConnect` from the child element's **passed properties** (NOT directly on the child). Children passed to page templates are rendered elements — `getPConnect` is available on their properties, not as a top-level method.
|
|
16
|
+
>
|
|
17
|
+
> **DO NOT** use `filterSummaryFields()`, `getSDKCaseUtils()`, or any other shortcut API to obtain summary fields. These APIs return raw unresolved metadata containing `@L` and `@P` tokens that will render as literal text. Only the children-based extraction with `resolveConfigProps(getRawMetadata())` resolves these tokens into actual values.
|
|
18
|
+
>
|
|
19
|
+
> Without this extraction, the summary will render completely empty or show unresolved `@P`/`@L` references.
|
|
20
|
+
|
|
21
|
+
## Component Purpose
|
|
22
|
+
|
|
23
|
+
Displays a case's key summary data in a structured summary panel. Primary fields are shown prominently; secondary fields are shown with labels. Data is sourced either directly from inputs or by extracting child regions. All field values are localized before display.
|
|
24
|
+
|
|
25
|
+
## Pega Metadata
|
|
26
|
+
|
|
27
|
+
- **Registration key:** `CaseSummary` (in the project's component map)
|
|
28
|
+
- **Category:** Page template — summary
|
|
29
|
+
- **Extends:** the project's base component interface
|
|
30
|
+
|
|
31
|
+
## Inputs
|
|
32
|
+
|
|
33
|
+
| Input | Type | Required | Description |
|
|
34
|
+
| ------------------- | ------------------ | -------- | ------------------------------------------------------- |
|
|
35
|
+
| `children` | renderable content | No | Region children when fields come from PConnect metadata |
|
|
36
|
+
| `arPrimaryFields` | `array` | No | Array of primary field objects (direct input) |
|
|
37
|
+
| `arSecondaryFields` | `array` | No | Array of secondary field objects (direct input) |
|
|
38
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
39
|
+
|
|
40
|
+
## Implementation Structure
|
|
41
|
+
|
|
42
|
+
**Module Setup:** Obtain the project's base component interface for typing. Obtain the project's component registry for resolving child components at runtime.
|
|
43
|
+
|
|
44
|
+
**Main Component Logic** — steps in order:
|
|
45
|
+
|
|
46
|
+
1. Retrieve `CaseSummaryFields` from the project's component registry.
|
|
47
|
+
2. Receive inputs: extract `children`, and `arPrimaryFields`/`arSecondaryFields` (both defaulting to empty arrays) as mutable bindings.
|
|
48
|
+
3. Set up localization: `localizedVal = PCore.getLocaleUtils().getLocaleValue` and `localeCategory = 'ModalContainer'`.
|
|
49
|
+
4. Define a helper `prepareComponentInCaseSummary(pConnectMeta, getPConnect)` that creates a component from metadata and returns `{ value: createdComponent }`.
|
|
50
|
+
5. Define a helper `prepareCaseSummaryData(summaryFieldChildren)` that converts children into a summary data array.
|
|
51
|
+
6. If both `arPrimaryFields` and `arSecondaryFields` are empty, iterate the `children`: for each child element, access its PConnect instance via the child's **passed properties** (the `getPConnect` function lives on the element's properties, not directly on the element). Call `resolveConfigProps(getRawMetadata())` on that PConnect instance — this resolves `@P` property references and `@L` label references into actual values. Check the resolved object's `name` (case-insensitive): when it equals `'primary fields'`, assign its `children` array to `arPrimaryFields` and localize each field's string `config.value`; when it equals `'secondary fields'`, assign its `children` array to `arSecondaryFields` and localize each field's string `config.value`.
|
|
52
|
+
7. Render a container element with id `CaseSummary` containing two `CaseSummaryFields` instances — one with `theFields` set to `arPrimaryFields`, the other with `theFields` set to `arSecondaryFields`.
|
|
53
|
+
|
|
54
|
+
## Behavioral Contract
|
|
55
|
+
|
|
56
|
+
### Field Sourcing
|
|
57
|
+
|
|
58
|
+
Two modes — prefer direct inputs if provided:
|
|
59
|
+
|
|
60
|
+
**Mode A — Direct inputs:**
|
|
61
|
+
|
|
62
|
+
- `arPrimaryFields` and `arSecondaryFields` are passed directly.
|
|
63
|
+
- Call `prepareCaseSummaryData(primaryFields, secondaryFields, getPConnect)` to localize values.
|
|
64
|
+
|
|
65
|
+
**Mode B — Children-based extraction:**
|
|
66
|
+
|
|
67
|
+
- Iterate the `children` content-projected elements.
|
|
68
|
+
- For each child, access its PConnect via the child element's **passed properties** (NOT directly on the child element).
|
|
69
|
+
- Call `resolveConfigProps(getRawMetadata())` on the PConnect instance — this resolves `@P` property references and `@L` label references into actual runtime values.
|
|
70
|
+
- Check the resolved `name` (case-insensitive) to identify "primary fields" and "secondary fields" regions.
|
|
71
|
+
- Assign the resolved region's `children` array to the appropriate field list.
|
|
72
|
+
- Localize each field's string `config.value` via `PCore.getLocaleUtils().getLocaleValue(value, localeCategory)`.
|
|
73
|
+
|
|
74
|
+
### `prepareCaseSummaryData(primaryFields, secondaryFields, getPConnect)`
|
|
75
|
+
|
|
76
|
+
Helper that:
|
|
77
|
+
|
|
78
|
+
1. Iterates each field in both arrays.
|
|
79
|
+
2. Localizes the field value via `PCore.getLocaleUtils().getLocaleValue(value, classID, value)`.
|
|
80
|
+
3. Returns `{ arPrimaryFields: localizedPrimary, arSecondaryFields: localizedSecondary }`.
|
|
81
|
+
|
|
82
|
+
### Render
|
|
83
|
+
|
|
84
|
+
Delegates entirely to `CaseSummaryFields` (a DSE component resolved from the project's component registry), passing:
|
|
85
|
+
|
|
86
|
+
- `arPrimaryFields` — array of `{ name, value }` objects for primary display
|
|
87
|
+
- `arSecondaryFields` — array of `{ name, value, displayLabel }` objects for secondary display
|
|
88
|
+
|
|
89
|
+
## Visual Specifications
|
|
90
|
+
|
|
91
|
+
- `CaseSummaryFields` handles all rendering — see the DSE component skill for details.
|
|
92
|
+
- Primary fields: large text, no label.
|
|
93
|
+
- Secondary fields: label + value pairs.
|
|
94
|
+
|
|
95
|
+
**CSS-only implementation notes (for `CaseSummaryFields` wrapper):**
|
|
96
|
+
|
|
97
|
+
- Container: `display: flex; flex-direction: column; gap: 8px`.
|
|
98
|
+
- Primary field value: `font-size: 1rem; font-weight: 600`.
|
|
99
|
+
- Secondary field row: `display: flex; gap: 4px; font-size: 0.875rem`.
|
|
100
|
+
- Secondary label: `color: var(--secondary-text-color)`.
|
|
101
|
+
|
|
102
|
+
## Edge Cases & Special Logic
|
|
103
|
+
|
|
104
|
+
- If both `arPrimaryFields` input and children are present, the direct input takes priority.
|
|
105
|
+
- `prepareCaseSummaryData` — guard against undefined/null field values before passing to `getLocaleValue`.
|
|
106
|
+
- `displayLabel` on secondary fields controls whether the field label is shown alongside the value.
|
|
107
|
+
- If `arSecondaryFields` is empty, the secondary section is not rendered.
|
|
108
|
+
|
|
109
|
+
## Dependencies
|
|
110
|
+
|
|
111
|
+
- `prepareCaseSummaryData` — local helper within this component
|
|
112
|
+
- `CaseSummaryFields` — DSE component resolved from the project's component registry
|
|
113
|
+
- `PCore.getLocaleUtils().getLocaleValue()` — value localization
|
|
114
|
+
|
|
115
|
+
## Design System Mapping
|
|
116
|
+
|
|
117
|
+
**UI control type:** Read-only case summary panel with primary and secondary field groups.
|
|
118
|
+
|
|
119
|
+
When implementing in a specific design system, map the following:
|
|
120
|
+
|
|
121
|
+
- **Primary fields:** Use a prominent text element (e.g., a heading or bold typography variant) to display values without labels.
|
|
122
|
+
- **Secondary fields:** Use label + value pairs in a description-list style layout (e.g., a vertical list of term/definition pairs, or a compact grid of label-value rows).
|
|
123
|
+
- **Container:** A vertical stack or flexbox column with consistent spacing between field groups.
|
|
124
|
+
|
|
125
|
+
Regardless of design system:
|
|
126
|
+
|
|
127
|
+
- Always localize field values before display — use `PCore.getLocaleUtils().getLocaleValue()`
|
|
128
|
+
- `CaseSummaryFields` is a DSE component — implement it separately and call it from here
|
|
129
|
+
- Primary fields have no labels; secondary fields have labels
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# Skill: CaseView
|
|
2
|
+
|
|
3
|
+
Case view template. Renders the full case workspace: summary sidebar, stages, to-do region, main content tabs, and utilities column. Also covers `ObjectPage` (which is a re-export of `CaseView`).
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
> ⚠️ **CRITICAL — DO NOT SIMPLIFY THIS COMPONENT**
|
|
10
|
+
>
|
|
11
|
+
> This is the most complex Page template (~260 lines in the reference). It MUST NOT be collapsed into a single-line return. The following are MANDATORY in the generated output:
|
|
12
|
+
>
|
|
13
|
+
> 1. `getChildRegionByName` from `PCore.getSDKUtils().getSDKCaseUtils()` — extract regions by metadata name, NOT by array index, NOT by a custom helper calling `child.getPConnect()`
|
|
14
|
+
> 2. Resolve `VerticalTabs` from the project's component registry — for tab navigation in the sidebar
|
|
15
|
+
> 3. Resolve `DeferLoad` from the project's component registry — for lazy-loading tab content
|
|
16
|
+
> 4. Resolve `CaseViewActionsMenu` from the project's component registry — for case actions
|
|
17
|
+
> 5. Lifecycle effect for `VerticalTabClick` event listener (add + remove on teardown)
|
|
18
|
+
> 6. Lifecycle effect for `hasNewAttachments` → publish `CASE_ATTACHMENTS_UPDATED`
|
|
19
|
+
> 7. `displayOnlyFA` check from the application store context — renders only todo region in focused action mode
|
|
20
|
+
> 8. `activeVertTab` local state for tracking which tab is selected
|
|
21
|
+
> 9. `vertTabInfo` + `deferLoadInfo` obtained from `extractTabsInfo(theTabsRegion)` SDK utility — **`vertTabInfo` MUST be `{ name: string; id: number }[]`, NOT a renderable element**
|
|
22
|
+
> 10. 3-column grid layout: sidebar (3) + main content (6) + utilities (3)
|
|
23
|
+
>
|
|
24
|
+
> **Minimum Implementation Checklist:**
|
|
25
|
+
>
|
|
26
|
+
> - [ ] `getChildRegionByName` and `extractTabsInfo` obtained from `PCore.getSDKUtils().getSDKCaseUtils()`
|
|
27
|
+
> - [ ] All 5 named regions extracted: summary, stages, todo, utilities, tabs
|
|
28
|
+
> - [ ] Regions rendered DIRECTLY in the template — NOT passed through the PConnect bridge component
|
|
29
|
+
> - [ ] **Case header card** rendered at top of sidebar with: title (`header` input), subheader (case ID), action buttons from `availableActions`, CaseViewActionsMenu
|
|
30
|
+
> - [ ] Action buttons rendered **dynamically from `caseInfo.availableActions`** — labels localized via `PCore.getLocaleUtils().getLocaleValue()`
|
|
31
|
+
> - [ ] VerticalTabs component rendered with tab config array
|
|
32
|
+
> - [ ] DeferLoad component rendered with `name={deferLoadInfo[activeTab].config.name}` — **NOT the display label**
|
|
33
|
+
> - [ ] **`vertTabInfo` and `deferLoadInfo` are SEPARATE arrays** — never merged into one
|
|
34
|
+
> - [ ] CaseViewActionsMenu rendered **inside the case header card** (NOT standalone)
|
|
35
|
+
> - [ ] displayOnlyFA check returning only todo region
|
|
36
|
+
> - [ ] Lifecycle effect for VerticalTabClick event
|
|
37
|
+
> - [ ] Lifecycle effect for hasNewAttachments pub/sub
|
|
38
|
+
> - [ ] **Stages region in CENTER column** (main), NOT in sidebar
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Component Purpose
|
|
43
|
+
|
|
44
|
+
The primary case workspace template. Extracts named regions from PConnect children by metadata type and name, arranges them in a 3-column responsive grid (3/6/3), handles deferred tab loading, and supports a `displayOnlyFA` mode that shows only the to-do region. Edit actions are triggered via the utilities column.
|
|
45
|
+
|
|
46
|
+
> **Note:** `ObjectPage` is a direct re-export of `CaseView` — the ObjectPage module simply re-exports CaseView's default export. Do not create a separate `ObjectPage` component; register both keys pointing to the same implementation.
|
|
47
|
+
|
|
48
|
+
## Pega Metadata
|
|
49
|
+
|
|
50
|
+
- **Registration key:** `CaseView` and `ObjectPage` (both point to the same component)
|
|
51
|
+
- **Category:** Page template — case workspace
|
|
52
|
+
- **Extends:** the project's base component interface
|
|
53
|
+
|
|
54
|
+
## Inputs
|
|
55
|
+
|
|
56
|
+
| Input | Type | Required | Description |
|
|
57
|
+
| -------------------- | ------------------ | -------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
58
|
+
| `children` | renderable content | Yes | Named region children (summary, stages, todo, utilities, tabs) |
|
|
59
|
+
| `displayOnlyFA` | `boolean` | No | If true, renders only the to-do region (focused action mode) |
|
|
60
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
61
|
+
| `icon` | `string` | No | Icon identifier for case type |
|
|
62
|
+
| `subheader` | `string` | No | Case ID displayed below the header |
|
|
63
|
+
| `header` | `string` | Yes | Case name/title |
|
|
64
|
+
| `showIconInHeader` | `boolean` | No | Whether to show the case type icon in the header card |
|
|
65
|
+
| `caseInfo` | `object` | Yes | Case metadata (availableActions, availableProcesses, hasNewAttachments, caseTypeID, caseTypeName, caseTypeIcon, ID) |
|
|
66
|
+
| `lastUpdateCaseTime` | `any` | No | Last case update timestamp; defaults to `getPConnect().getValue('caseInfo.lastUpdateTime')` |
|
|
67
|
+
|
|
68
|
+
## Implementation Structure
|
|
69
|
+
|
|
70
|
+
**Module Setup:** Obtain the project's base component interface for typing. Obtain the project's component registry for resolving child components at runtime. Obtain the application store context for reading `displayOnlyFA`. Obtain a static-content URL utility for resolving icon paths.
|
|
71
|
+
|
|
72
|
+
**Main Component Logic** — steps in order:
|
|
73
|
+
|
|
74
|
+
1. Retrieve `CaseViewActionsMenu`, `VerticalTabs`, and `DeferLoad` from the project's component registry.
|
|
75
|
+
2. Receive inputs: extract `getPConnect`, `icon` (default `''`), `header`, `subheader`, `children` (default `[]`), and the nested `caseInfo` fields `availableActions` (default `[]`), `availableProcesses` (default `[]`), `hasNewAttachments`, `caseTypeID` (default `''`), `caseTypeName` (default `''`), and `caseTypeIcon`. Default `lastUpdateCaseTime` to `getPConnect().getValue('caseInfo.lastUpdateTime')` when not supplied. Read `currentCaseID` from `caseInfo.ID`; read `displayOnlyFA` from the application store context; call `getPConnect()` once into `thePConn`.
|
|
76
|
+
3. **Extract named regions using SDK utilities:** Obtain `getChildRegionByName`, `extractTabsInfo`, and `openCaseEditAction` from `PCore.getSDKUtils().getSDKCaseUtils()`. Normalize `children` into an array (`childArr`). Use `getChildRegionByName(childArr, 'summary')` etc. to extract `theSummaryRegion`, `theStagesRegion`, `theTodoRegion`, `theUtilitiesRegion`, and `theTabsRegion`. **Do NOT implement a custom `getChildRegionByName` helper** — the SDK utility handles the internal child format correctly (children passed to page templates are rendered elements that do not expose `.getPConnect()` as a direct method).
|
|
77
|
+
4. **Build tab info using SDK utility:** Call `extractTabsInfo(theTabsRegion)` to get `{ vertTabInfo, deferLoadInfo }`. Destructure with defaults: `const { vertTabInfo = [], deferLoadInfo = [] } = extractTabsInfo(theTabsRegion) ?? {}`. `vertTabInfo` is a plain array of `{ name: string; id: number }` objects (display labels for `VerticalTabs`). `deferLoadInfo` is a separate array of `{ type: 'DeferLoad', config }` objects (the full config for each tab). `DeferLoad`'s `name` input must always come from `deferLoadInfo[activeTab].config.name` (e.g., `"pyDetailsTabContent"`) — never the display label. **Do NOT manually iterate tab children to build these arrays** — the SDK utility handles the extraction correctly.
|
|
78
|
+
5. Declare local state `activeVertTab` (number, default `0`). Determine `editAction` by finding the entry in `availableActions` whose `ID === 'pyUpdateCaseDetails'` — this action is data-driven from the network response; the ID is a common Pega convention but may differ per case type, and its label must always be localized rather than hardcoded.
|
|
79
|
+
6. **`VerticalTabClick` listener:** in a lifecycle effect that runs once on initialization, add a `document` listener for the custom `VerticalTabClick` DOM event (not PubSub) that parses `event?.detail?.additionalData?.itemClicked` (or the event itself) as an integer and updates `activeVertTab` when valid; remove the listener on teardown. Track a mounted flag to avoid updating local state after teardown.
|
|
80
|
+
7. **Attachment updates:** in a lifecycle effect keyed on `hasNewAttachments`, when it's true, publish `PCore.getPubSubUtils().publish(PCore.getEvents().getCaseEvent().CASE_ATTACHMENTS_UPDATED_FROM_CASEVIEW, true)`.
|
|
81
|
+
8. Define `_editClick()`: call `openCaseEditAction(thePConn, editAction)` — this SDK utility handles the local action invocation correctly.
|
|
82
|
+
9. **Render:** when `displayOnlyFA` is true, render only a wrapping container holding `theTodoRegion` directly (NOT through the PConnect bridge component) and stop there. Otherwise, bind `localizedVal = PCore.getLocaleUtils().getLocaleValue` and render a `psdk-case-view` container with three sections. **Regions returned by `getChildRegionByName` are rendered directly in the template** — do NOT pass them through the PConnect bridge component because they are already renderable elements:
|
|
83
|
+
- **Sidebar (column width 3/12):** a hidden element holding `currentCaseID`; a case header card (`psdk-case-view-header`) with a themed background, containing the title (`header`) and subheader/case-ID (`subheader`, when present) in a `psdk-case-view-header-content` block, followed by a `psdk-case-view-header-actions` block holding: an Edit button (rendered with the project's installed design system button component, NOT a plain button element, labeled via `localizedVal('Edit', 'CaseView')`, shown only when `editAction` exists, wired to `_editClick`); and the `CaseViewActionsMenu` (passed `getPConnect`, `availableActions`, `availableProcesses`, `caseTypeID`, `caseTypeName`) rendered inside this header card, not standalone. After the header card, render `theSummaryRegion`, then `VerticalTabs` (with `tabconfig` set to `vertTabInfo`) when there's more than one tab.
|
|
84
|
+
- **Main (column width 6/12):** `theStagesRegion` MUST appear here in the center column (never in the sidebar), followed by `theTodoRegion`, followed by `DeferLoad` (passed `getPConnect`, `name` set to `deferLoadInfo[activeVertTab].config.name`, `isTab`, `lastUpdateCaseTime`) when `deferLoadInfo` has an entry for the active tab.
|
|
85
|
+
- **Utilities (column width 3/12):** `theUtilitiesRegion`.
|
|
86
|
+
|
|
87
|
+
For the Edit button and header card styling, use the project's installed design system: e.g. a ghost/small button for a Carbon-based system, a text-variant button for a Material-based system, a link-type button for an Ant-based system, or a styled plain button when CSS-only; the header background should use a matching light accent token or color for each.
|
|
88
|
+
|
|
89
|
+
> **Note:** `ObjectPage` is a re-export: its module simply re-exports CaseView's default export. Register both keys to the same component.
|
|
90
|
+
|
|
91
|
+
## Behavioral Contract
|
|
92
|
+
|
|
93
|
+
### Region Extraction
|
|
94
|
+
|
|
95
|
+
> ⚠️ **CRITICAL:** Use `PCore.getSDKUtils().getSDKCaseUtils().getChildRegionByName(childArr, name)` to extract regions. Do NOT implement a custom helper that calls `child.getPConnect()` — children passed to page templates are rendered elements and do not expose `getPConnect` as a direct method. The SDK utility handles the internal format correctly.
|
|
96
|
+
|
|
97
|
+
Extract the following named regions:
|
|
98
|
+
|
|
99
|
+
- **Summary region:** `getChildRegionByName(childArr, 'summary')`
|
|
100
|
+
- **Stages region:** `getChildRegionByName(childArr, 'stages')`
|
|
101
|
+
- **ToDo region:** `getChildRegionByName(childArr, 'todo')`
|
|
102
|
+
- **Utilities region:** `getChildRegionByName(childArr, 'utilities')`
|
|
103
|
+
- **Tabs region:** `getChildRegionByName(childArr, 'tabs')`
|
|
104
|
+
|
|
105
|
+
Render each extracted region directly in the template — they are already renderable elements.
|
|
106
|
+
|
|
107
|
+
### Tabs Region — Deferred Load
|
|
108
|
+
|
|
109
|
+
- Call `extractTabsInfo(theTabsRegion)` from `PCore.getSDKUtils().getSDKCaseUtils()` to build `vertTabInfo` (vertical tab definitions) and `deferLoadInfo` (deferred loading metadata).
|
|
110
|
+
- Do NOT manually iterate tab children — the SDK utility handles this correctly.
|
|
111
|
+
- Pass `vertTabInfo` to `VerticalTabs` component as its `tabconfig` prop.
|
|
112
|
+
- Pass `deferLoadInfo[activeVertTab].config.name` to `DeferLoad` as its `name` prop.
|
|
113
|
+
|
|
114
|
+
### displayOnlyFA Mode
|
|
115
|
+
|
|
116
|
+
If `displayOnlyFA === true`:
|
|
117
|
+
|
|
118
|
+
- Render only the ToDo region, centered.
|
|
119
|
+
- Skip summary, stages, tabs, utilities rendering.
|
|
120
|
+
|
|
121
|
+
### Attachments Subscription
|
|
122
|
+
|
|
123
|
+
- Subscribe to `PCore.getPubSubUtils().subscribe(CASE_ATTACHMENTS_UPDATED, handleAttachmentUpdate, 'CaseView')`.
|
|
124
|
+
- Track `hasNewAttachments` boolean state — passed to utilities region.
|
|
125
|
+
- Unsubscribe on unmount.
|
|
126
|
+
|
|
127
|
+
### Edit Action
|
|
128
|
+
|
|
129
|
+
- The utilities region may include an edit action button.
|
|
130
|
+
- On click: call `getPConnect().getActionsApi().openLocalAction(editActionId, { ... })`.
|
|
131
|
+
|
|
132
|
+
## Visual Specifications
|
|
133
|
+
|
|
134
|
+
### 3-Column Grid Layout
|
|
135
|
+
|
|
136
|
+
> ⚠️ **CRITICAL LAYOUT RULE:** Stages MUST be in the CENTER column, NOT the sidebar.
|
|
137
|
+
> The sidebar contains: case header card → summary → vertical tabs.
|
|
138
|
+
> The center contains: stages → todo → deferred tab content.
|
|
139
|
+
|
|
140
|
+
Three columns share the row: a 3/12-width sidebar column holding the case header card (title + ID), the Edit and Actions buttons, the summary region, and the vertical tabs; a 6/12-width main column holding the stages region, the to-do/assignment region, and the deferred tab content; and a 3/12-width utilities column holding the utilities region (attachments, etc.).
|
|
141
|
+
|
|
142
|
+
| Column | Width | Contents |
|
|
143
|
+
| ------ | ----- | ----------------------------------------------------------- |
|
|
144
|
+
| Left | 3/12 | Case header card, Summary, VerticalTabs |
|
|
145
|
+
| Center | 6/12 | **Stages**, ToDo/assignment, DeferLoad (active tab content) |
|
|
146
|
+
| Right | 3/12 | Utilities region (attachments, etc.) |
|
|
147
|
+
|
|
148
|
+
**CSS-only implementation notes:**
|
|
149
|
+
|
|
150
|
+
- Outer grid: `display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 6fr) minmax(0, 3fr); gap: 1rem; width: 100%`.
|
|
151
|
+
- Left column: `display: flex; flex-direction: column; gap: 0.5rem`.
|
|
152
|
+
- Center column: `overflow: hidden`.
|
|
153
|
+
- Responsive: on mobile (`max-width: 672px`), stack to single column.
|
|
154
|
+
|
|
155
|
+
**Case header card CSS (MUST be included in companion styles):** the `.psdk-case-view` container is a CSS grid with columns `minmax(0, 3fr) minmax(0, 6fr) minmax(0, 3fr)`, a `1rem` gap, and full width; its direct children get `min-width: 0`; at `max-width: 672px` it collapses to a single column. The `.psdk-case-view-header` card has a light blue background (`#e3f2fd`), `4px` border radius, `1rem` padding, and `1rem` bottom margin; `.psdk-case-view-header-content` has `0.5rem` bottom margin; `.psdk-case-view-header-title` has no margin, `1.25rem` font size, medium weight, and a blue accent color (`#1565c0`); `.psdk-case-view-header-id` is smaller (`0.875rem`) and gray (`#555`); `.psdk-case-view-header-actions` is a flex row with `0.5rem` gap and centered items; `.psdk-case-view-edit-btn` is an unstyled, borderless, uppercase text button in blue (`#1976d2`, `0.875rem`, medium weight) with a subtle hover background (`rgba(25, 118, 210, 0.04)`).
|
|
156
|
+
|
|
157
|
+
## Edge Cases & Special Logic
|
|
158
|
+
|
|
159
|
+
- `displayOnlyFA === true` — completely different render tree (only ToDo), no grid layout.
|
|
160
|
+
- Missing regions — guard each region before rendering; a region may not exist for all case types.
|
|
161
|
+
- `DeferLoad` handles progressive loading — do not eagerly render all tab content.
|
|
162
|
+
- `hasNewAttachments` is passed down to the utilities region — it affects attachment icon badge display.
|
|
163
|
+
|
|
164
|
+
## Dependencies
|
|
165
|
+
|
|
166
|
+
- `DeferLoad` component — resolved from the project's component registry; handles deferred tab content loading
|
|
167
|
+
- `PCore.getPubSubUtils()` — pub/sub for attachment updates
|
|
168
|
+
- The project's PConnect bridge utility — for rendering region children
|
|
169
|
+
- `CASE_ATTACHMENTS_UPDATED` constant from PCore events API
|
|
170
|
+
|
|
171
|
+
## Sub-Variants
|
|
172
|
+
|
|
173
|
+
### ObjectPage
|
|
174
|
+
|
|
175
|
+
`ObjectPage` is registered as a direct re-export module whose default export simply re-exports `CaseView`'s default export.
|
|
176
|
+
|
|
177
|
+
- No separate implementation needed.
|
|
178
|
+
- In the project's component map, register `ObjectPage` key pointing to the same component as `CaseView`.
|
|
179
|
+
|
|
180
|
+
## Design System Mapping
|
|
181
|
+
|
|
182
|
+
**UI control type:** Full case workspace layout — 3-column grid with sidebar, main content, and utilities.
|
|
183
|
+
|
|
184
|
+
When implementing in a specific design system, map the following:
|
|
185
|
+
|
|
186
|
+
- **Grid layout:** Use the design system's grid component with a 3/6/3 column ratio. For CSS-only, use CSS Grid with `grid-template-columns: minmax(0, 3fr) minmax(0, 6fr) minmax(0, 3fr)`.
|
|
187
|
+
- **Sidebar container:** Use the design system's card or panel component to wrap the case header, summary, and vertical tabs.
|
|
188
|
+
- **Deferred tabs:** Use the design system's tab component for the vertical tab list, paired with the DeferLoad component for lazy content rendering. The VerticalTabs component handles its own rendering — just pass `tabconfig` as the array of `{ name, id }` objects.
|
|
189
|
+
- **Case header card:** A card with a light accent background, containing the case title, case ID, and action buttons.
|
|
190
|
+
- **Action buttons:** Use the design system's button component (text/ghost variant for Edit, menu component for CaseViewActionsMenu).
|
|
191
|
+
|
|
192
|
+
Regardless of design system:
|
|
193
|
+
|
|
194
|
+
- `displayOnlyFA` must completely bypass the grid — render only ToDo region
|
|
195
|
+
- Region extraction by metadata name is required — do not assume positional ordering
|
|
196
|
+
- Deferred loading is mandatory for performance — tab content must not all load at once
|
package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md
ADDED
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Skill: CaseViewActionsMenu
|
|
2
|
+
|
|
3
|
+
Case actions dropdown menu. Renders an "Actions" button that opens a menu of local actions and process actions for the current case.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a button that opens a dropdown menu containing all available case actions. Distinguishes between local actions (UI flow) and process actions (server-side), invoking the appropriate API for each. Shows a toast notification on process action error.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Registration key:** `CaseViewActionsMenu` (in the project's component map)
|
|
16
|
+
- **Category:** Page template — action menu
|
|
17
|
+
- **Extends:** the project's base component interface
|
|
18
|
+
|
|
19
|
+
## Inputs
|
|
20
|
+
|
|
21
|
+
| Name | Type | Required | Description |
|
|
22
|
+
| -------------------- | ---------- | -------- | ---------------------------------------------- |
|
|
23
|
+
| `availableActions` | `array` | No | Array of `{ ID, name }` local action objects |
|
|
24
|
+
| `availableProcesses` | `array` | No | Array of `{ ID, name }` process action objects |
|
|
25
|
+
| `caseTypeID` | `string` | Yes | Case type identifier for label localization |
|
|
26
|
+
| `caseTypeName` | `string` | Yes | Case type display name for label localization |
|
|
27
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
28
|
+
|
|
29
|
+
## Implementation Structure
|
|
30
|
+
|
|
31
|
+
> ⚠️ **CRITICAL — USE THE PROJECT'S DESIGN SYSTEM for the trigger button and menu items.**
|
|
32
|
+
>
|
|
33
|
+
> Check `package.json` for the installed design system. Use its button component (ghost/text variant) for the "Actions…" trigger. Use its menu/dropdown if available, otherwise use a positioned list with CSS.
|
|
34
|
+
>
|
|
35
|
+
> When implementing in a specific design system, map the following: the trigger button should use a text or ghost variant button from the installed library; the menu should use the library's dropdown/menu component if available; the toast notification should use the library's snackbar or toast primitive. When no design system is installed, use plain styled elements with a positioned list dropdown.
|
|
36
|
+
>
|
|
37
|
+
> ❌ **NEVER** use unstyled HTML elements when a design system is installed.
|
|
38
|
+
>
|
|
39
|
+
> The dropdown MUST include click-outside-to-close behavior via an instance reference on the container plus a `mousedown` document listener.
|
|
40
|
+
|
|
41
|
+
**Module Setup:** The component needs local state (for menu open/closed and toast visibility), an instance reference (for click-outside detection), a lifecycle effect (for registering/cleaning up the outside-click listener), the project's base component interface, the installed design system's button component, and companion styles.
|
|
42
|
+
|
|
43
|
+
**Main Component Logic** — steps in order:
|
|
44
|
+
|
|
45
|
+
1. Receive inputs: `getPConnect`, `availableActions` (default `[]`), `availableProcesses` (default `[]`), `caseTypeID` (default `''`), and `caseTypeName` (default `''`); call `getPConnect()` once into `thePConn`. Declare local state `open` (boolean, default `false`) and an instance reference for the menu container element.
|
|
46
|
+
2. **Click-outside-to-close (mandatory):** in a lifecycle effect keyed on `open`, register a `mousedown` document listener while `open` is true that closes the menu when the click target falls outside the container reference; clean up the listener on unmount or when `open` changes.
|
|
47
|
+
3. Define `handleActionClick(action)`: call `thePConn.getActionsApi().openLocalAction(action.ID, { ...action, containerName: 'modal', type: 'express' })`, then close the menu.
|
|
48
|
+
4. Define `handleProcessClick(process)`: call `thePConn.getActionsApi().openProcessAction(process.ID, { ...process })` as a promise; on rejection show a toast with `"${process.name} Submit failed!"`; then close the menu.
|
|
49
|
+
5. Compute `hasItems = availableActions.length > 0 || availableProcesses.length > 0`; render nothing when there are no items.
|
|
50
|
+
6. Render a `psdk-actions-menu` container (attached to the instance reference) containing: the installed design system's button (ghost/text variant) labeled "Actions…", with `aria-haspopup="true"`, `aria-expanded` bound to `open`, and an `onClick` that toggles `open`; and, when `open` is true, a `psdk-actions-menu-dropdown` list (`role="menu"`) listing each `availableActions` entry as a `psdk-actions-menu-item` item (`role="menuitem"`, keyed by `action.ID`, showing the localized `action.name`, wired to `handleActionClick` on click and Enter keydown, with `tabIndex={0}`), followed by a `psdk-actions-menu-divider` separator when both action groups are non-empty, followed by each `availableProcesses` entry rendered the same way but wired to `handleProcessClick`.
|
|
51
|
+
|
|
52
|
+
### Required companion styles (`CaseViewActionsMenu.css`)
|
|
53
|
+
|
|
54
|
+
Create this file alongside the component with the following rules: `.psdk-actions-menu` is `position: relative; display: inline-block` (no trigger-button CSS needed since the DS button handles its own styling); `.psdk-actions-menu-dropdown` is absolutely positioned below the trigger (`top: 100%; left: 0`), with `z-index: 1000`, `min-width: 160px`, white background, `4px` border radius, a two-layer drop shadow, `0.25rem 0` padding, no margin, and no list bullets; `.psdk-actions-menu-item` has `0.5rem 1rem` padding, `0.875rem` font size, dark text color, and a pointer cursor, with a light-gray hover background and a visible focus outline (`2px solid`, `-2px` offset) on `:focus-visible`; `.psdk-actions-menu-divider` is a thin top border with `0.25rem 0` margin.
|
|
55
|
+
|
|
56
|
+
## Behavioral Contract
|
|
57
|
+
|
|
58
|
+
### Button Label
|
|
59
|
+
|
|
60
|
+
- Localized via `PCore.getLocaleUtils().getLocaleValue('Actions...', 'CaseView')`.
|
|
61
|
+
- Rendered as an outlined/secondary button with a dropdown indicator icon.
|
|
62
|
+
|
|
63
|
+
### Menu Items
|
|
64
|
+
|
|
65
|
+
The menu combines:
|
|
66
|
+
|
|
67
|
+
1. **Local actions** — each item triggers `getPConnect().getActionsApi().openLocalAction(action.ID, { ...action, containerName: 'modal', type: 'express' })`.
|
|
68
|
+
2. **Process actions** — each item triggers `getPConnect().getActionsApi().openProcessAction(process.ID, { ...process })`.
|
|
69
|
+
|
|
70
|
+
If both groups exist, render a divider between them.
|
|
71
|
+
|
|
72
|
+
### Localized Action Labels
|
|
73
|
+
|
|
74
|
+
For localized case type context, build a `localeKey` string as `${caseTypeID}!CASE!${caseTypeName}`.toUpperCase().
|
|
75
|
+
|
|
76
|
+
Action name localization: `PCore.getLocaleUtils().getLocaleValue(action.name, '', localeKey)`.
|
|
77
|
+
|
|
78
|
+
### Process Action Error Handling
|
|
79
|
+
|
|
80
|
+
1. On process action click, invoke the API as a promise.
|
|
81
|
+
2. On rejection: show a toast notification with `"${process.name} Submit failed!"`.
|
|
82
|
+
3. Toast auto-hides after 3000ms.
|
|
83
|
+
4. Toast should include a close/dismiss button.
|
|
84
|
+
|
|
85
|
+
### Menu State
|
|
86
|
+
|
|
87
|
+
- `open` boolean local state controls menu visibility.
|
|
88
|
+
- An instance reference wraps the entire menu container.
|
|
89
|
+
- On `open === true`, add a `mousedown` document listener to detect clicks outside the container reference and close.
|
|
90
|
+
- Remove the listener on cleanup or when `open` becomes false.
|
|
91
|
+
- **DO NOT** use an anchor-element pattern unless the design system provides a dedicated menu component. For CSS-only, use the `open` boolean + absolute positioning.
|
|
92
|
+
|
|
93
|
+
## Visual Specifications
|
|
94
|
+
|
|
95
|
+
### Button
|
|
96
|
+
|
|
97
|
+
| Property | Value |
|
|
98
|
+
| -------- | ------------------------------- |
|
|
99
|
+
| Label | Localized `"Actions..."` |
|
|
100
|
+
| Variant | Outlined or secondary |
|
|
101
|
+
| Icon | Dropdown chevron or expand_more |
|
|
102
|
+
|
|
103
|
+
### Menu
|
|
104
|
+
|
|
105
|
+
| Property | Value |
|
|
106
|
+
| ----------- | --------------------------------------- |
|
|
107
|
+
| Position | Anchored below the button |
|
|
108
|
+
| Divider | Between local and process action groups |
|
|
109
|
+
| Item height | Standard menu item height |
|
|
110
|
+
|
|
111
|
+
**CSS-only implementation notes:**
|
|
112
|
+
|
|
113
|
+
- Button: `padding: 6px 12px; border: 1px solid var(--app-primary-color); border-radius: 4px; cursor: pointer`.
|
|
114
|
+
- Dropdown menu: `position: absolute; background: white; box-shadow: 0 2px 8px rgba(0,0,0,0.2); border-radius: 4px; min-width: 160px; z-index: 1000`.
|
|
115
|
+
- Menu item: `padding: 8px 16px; cursor: pointer`. Hover: `background: var(--hover-bg)`.
|
|
116
|
+
- Divider: `border-top: 1px solid var(--divider-color); margin: 4px 0`.
|
|
117
|
+
|
|
118
|
+
### Toast Notification
|
|
119
|
+
|
|
120
|
+
| Property | Value |
|
|
121
|
+
| --------- | ----------------------------- |
|
|
122
|
+
| Position | Bottom-center or bottom-right |
|
|
123
|
+
| Auto-hide | 3000ms |
|
|
124
|
+
| Severity | Error (red) |
|
|
125
|
+
| Dismiss | Close button |
|
|
126
|
+
|
|
127
|
+
## Edge Cases & Special Logic
|
|
128
|
+
|
|
129
|
+
- If both `availableActions` and `availableProcesses` are empty, render nothing (return null).
|
|
130
|
+
- `caseTypeName.toUpperCase()` — guard against `undefined`/`null` values.
|
|
131
|
+
- Process action errors may include HTML — sanitize before displaying in the toast message.
|
|
132
|
+
- Menu should close on any item click (both local and process).
|
|
133
|
+
|
|
134
|
+
## Dependencies
|
|
135
|
+
|
|
136
|
+
- `PCore.getLocaleUtils().getLocaleValue()` — label localization
|
|
137
|
+
- `getPConnect().getActionsApi()` — local action and process action invocation
|
|
138
|
+
- The project's base component interface
|
|
139
|
+
- The installed design system's button, menu, and toast components (check `package.json`)
|
|
140
|
+
|
|
141
|
+
## Design System Mapping
|
|
142
|
+
|
|
143
|
+
**UI control type:** Dropdown action menu with button trigger and toast error notification.
|
|
144
|
+
|
|
145
|
+
When implementing in a specific design system, map the following:
|
|
146
|
+
|
|
147
|
+
- **Trigger button:** Use the design system's text or ghost-variant button. The button label is the localized "Actions..." string. It must support `aria-haspopup` and `aria-expanded` attributes.
|
|
148
|
+
- **Menu/Dropdown:** Use the design system's menu or dropdown primitive if available. If none exists, use a positioned list with CSS and manual open/close logic. Items must support click handlers and keyboard activation (Enter key).
|
|
149
|
+
- **Divider:** Use the design system's divider or separator between the local actions group and the process actions group.
|
|
150
|
+
- **Toast notification:** Use the design system's snackbar or toast component to surface process action errors. Must auto-hide after 3000ms and include a dismiss/close button.
|
|
151
|
+
- **Click-outside-to-close:** If the design system's menu handles this natively, rely on that. Otherwise implement manually with an instance reference and a document `mousedown` listener.
|
|
152
|
+
|
|
153
|
+
Key constraints regardless of design system:
|
|
154
|
+
|
|
155
|
+
- Local vs process action distinction must be preserved — they call different APIs
|
|
156
|
+
- Localized labels via `localeKey = ${caseTypeID}!CASE!${caseTypeName}`.toUpperCase()
|
|
157
|
+
- Process action errors must be surfaced via a dismissible toast
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Skill: Confirmation
|
|
2
|
+
|
|
3
|
+
Case confirmation template. Renders the post-submission confirmation view with a Done button, optionally showing ToDo assignments that remain after the case is submitted.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`template-components.md`](../template-components.md) — covers architecture, child rendering patterns, and registration conventions common to ALL template components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
> ⚠️ **CRITICAL — DO NOT SIMPLIFY THIS COMPONENT**
|
|
10
|
+
>
|
|
11
|
+
> The close event MUST use `PCore.getContainerUtils()` to get the proper container info for the pub/sub payload. Without this, the confirmation view won't close properly and the case won't transition correctly.
|
|
12
|
+
>
|
|
13
|
+
> **Mandatory implementation details:**
|
|
14
|
+
>
|
|
15
|
+
> 1. `PCore.getContainerUtils().getActiveContainerItemName(getPConnect().getTarget())` — gets active container item
|
|
16
|
+
> 2. `PCore.getContainerUtils().getContainerItemData(target, activeItemID)` — gets root info for close event
|
|
17
|
+
> 3. `PCore.getPubSubUtils().publish(CONSTS.PUB_SUB_EVENTS.CASE_EVENTS.CLOSE_CONFIRM_VIEW, rootInfo)` — proper close event with payload
|
|
18
|
+
> 4. Look up the `'Details'` component from the project's component registry — for rendering case details in confirmation
|
|
19
|
+
> 5. `getToDoAssignments(getPConnect())` — from `PCore.getSDKUtils().getSDKContainerUtils()`
|
|
20
|
+
> 6. Check `showDetails` before rendering Details component
|
|
21
|
+
>
|
|
22
|
+
> **Minimum Implementation Checklist:**
|
|
23
|
+
>
|
|
24
|
+
> - [ ] `PCore.getContainerUtils()` used for close event (NOT a simple toggle of local state)
|
|
25
|
+
> - [ ] `rootInfo` passed to `CLOSE_CONFIRM_VIEW` pub/sub event
|
|
26
|
+
> - [ ] Details component rendered when `showDetails` is true
|
|
27
|
+
> - [ ] ToDo component rendered with `getToDoAssignments` when `showTasks` is true
|
|
28
|
+
> - [ ] Two render states: confirmation view (with Done button) and post-close (just ToDo if any)
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Component Purpose
|
|
33
|
+
|
|
34
|
+
Displayed after a case or assignment is submitted. Shows the confirmation view (with `Details` region) and a Done button. If outstanding ToDo assignments remain after the user clicks Done, they are displayed. When the user truly finishes, publishes `CLOSE_CONFIRM_VIEW` to close the container.
|
|
35
|
+
|
|
36
|
+
## Pega Metadata
|
|
37
|
+
|
|
38
|
+
- **Registration key:** `Confirmation` (in the project's component map)
|
|
39
|
+
- **Category:** Page template — confirmation
|
|
40
|
+
- **Extends:** the project's base component interface
|
|
41
|
+
|
|
42
|
+
## Inputs
|
|
43
|
+
|
|
44
|
+
| Input | Type | Required | Description |
|
|
45
|
+
| ------------- | ------------------ | -------- | ----------------------------------------------------------------------------- |
|
|
46
|
+
| `children` | child element list | Yes | Region children: `[0]` = ToDo region, `[1]` = Details region (when available) |
|
|
47
|
+
| `getPConnect` | function | Yes | PConnect getter |
|
|
48
|
+
| `datasource` | object | No | Shape `{ source: any }` — what's-next data source |
|
|
49
|
+
| `label` | string | No | Confirmation heading text |
|
|
50
|
+
| `showLabel` | boolean | No | Whether to render the heading label |
|
|
51
|
+
| `showTasks` | boolean | No | Whether to render outstanding ToDo assignments |
|
|
52
|
+
|
|
53
|
+
## Implementation Structure
|
|
54
|
+
|
|
55
|
+
**Module Setup:** This component needs the project's base component interface for typing, the project's component registry for retrieving `ToDo` and `Details` dynamically, and a local state primitive for tracking the confirm-view toggle. Define a companion styles block with padding and margin (1 spacing unit on all sides) applied to the card wrapper.
|
|
56
|
+
|
|
57
|
+
**Main Component Logic** — steps in order:
|
|
58
|
+
|
|
59
|
+
1. Retrieve `ToDo` from the project's component registry using the key `'Todo'` (note the capitalization — not `'ToDo'`), and `Details` similarly using `'Details'`.
|
|
60
|
+
2. Set `CONSTS = PCore.getConstants()`; declare local state `showConfirmView` initialized to `true`; receive inputs `showTasks`, `getPConnect`, `showLabel`, and `label`.
|
|
61
|
+
3. Get the active container and root info: `activeContainerItemID = PCore.getContainerUtils().getActiveContainerItemName(getPConnect().getTarget() || '')`, then `rootInfo = PCore.getContainerUtils().getContainerItemData(getPConnect().getTarget(), activeContainerItemID)`.
|
|
62
|
+
4. Get pending ToDo assignments: destructure `getToDoAssignments` from `PCore.getSDKUtils().getSDKContainerUtils()`, then call `toDoList = getToDoAssignments(getPConnect())`.
|
|
63
|
+
5. Define the Done-button handler `onConfirmViewClose`: set `showConfirmView` to `false`, then publish `PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CLOSE_CONFIRM_VIEW, rootInfo)`.
|
|
64
|
+
6. Compute `showDetails` by checking whether the first child's nested PConnect has children: `children?.[0]` → get its `getPConnect()` → call `getChildren()` → check `length > 0`.
|
|
65
|
+
7. **Render — confirm view:** if `showConfirmView` is true, render a card container (with companion styles) containing: a heading with the label (when `showLabel` is true); the Details component (with `showLabel` set to false) when `showDetails` is true; the ToDo component (with `datasource: { source: toDoList }`, `getPConnect`, `type: CONSTS.TODO`, `headerText: "Open Tasks"`, `isConfirm: true`) when `showTasks` is true and `toDoList` is non-empty; and a primary Done button aligned to the end, wired to `onConfirmViewClose`.
|
|
66
|
+
8. **Render — post-close:** otherwise, if `toDoList` is non-empty, render a card container containing just the ToDo component (same inputs as above but `headerText: "Tasks"`); if `toDoList` is empty, render nothing.
|
|
67
|
+
|
|
68
|
+
## Behavioral Contract
|
|
69
|
+
|
|
70
|
+
### State
|
|
71
|
+
|
|
72
|
+
- `showConfirmView`: boolean local state, initially `true`.
|
|
73
|
+
- `toDoAssignments`: array from `getToDoAssignments(getPConnect())` — pending assignments.
|
|
74
|
+
|
|
75
|
+
### Done Button Click
|
|
76
|
+
|
|
77
|
+
1. Set `showConfirmView` local state to `false`.
|
|
78
|
+
2. Publish `PCore.getPubSubUtils().publish(PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.CLOSE_CONFIRM_VIEW, rootInfo)`.
|
|
79
|
+
3. The `rootInfo` payload is derived from `PCore.getContainerUtils().getContainerItemData(target, activeContainerItemID)` — this is mandatory for correct container closure.
|
|
80
|
+
|
|
81
|
+
### Show Details
|
|
82
|
+
|
|
83
|
+
- `showDetails`: true when the first child region's PConnect has children (i.e., there is content to display in the Details area).
|
|
84
|
+
|
|
85
|
+
### Render: Confirm View (showConfirmView is true)
|
|
86
|
+
|
|
87
|
+
1. Confirmation heading label (when `showLabel` is true).
|
|
88
|
+
2. If `showDetails`: render the Details component retrieved from the project's component registry with `showLabel` set to false, passing the current component's inputs.
|
|
89
|
+
3. If `showTasks` and `toDoList` is non-empty: render the ToDo component with `datasource: { source: toDoList }`, `type: CONSTS.TODO`, `headerText: "Open Tasks"`, `isConfirm: true`.
|
|
90
|
+
4. Done button (primary action) — triggers `onConfirmViewClose`.
|
|
91
|
+
|
|
92
|
+
### Render: Post-Close View (showConfirmView is false)
|
|
93
|
+
|
|
94
|
+
- If `toDoList` is non-empty: render a card with the ToDo component (`headerText: "Tasks"`, same core inputs).
|
|
95
|
+
- If `toDoList` is empty: render nothing.
|
|
96
|
+
|
|
97
|
+
## Visual Specifications
|
|
98
|
+
|
|
99
|
+
### Confirm View
|
|
100
|
+
|
|
101
|
+
| Element | Description |
|
|
102
|
+
| ------------------- | --------------------------------------------- |
|
|
103
|
+
| Confirmation header | Heading text (label) when showLabel is true |
|
|
104
|
+
| Details section | Optional — rendered below confirmation header |
|
|
105
|
+
| Done button | Primary button, aligned to end of the form |
|
|
106
|
+
|
|
107
|
+
**CSS-only implementation notes:**
|
|
108
|
+
|
|
109
|
+
- Card wrapper: padding and margin of 1 spacing unit on all sides.
|
|
110
|
+
- Done button container: `display: flex; justify-content: flex-end`.
|
|
111
|
+
- Confirmation heading: rendered as a level-2 heading element.
|
|
112
|
+
|
|
113
|
+
### ToDo View
|
|
114
|
+
|
|
115
|
+
- Full-width ToDo region rendered in place of confirmation inside a card wrapper.
|
|
116
|
+
- No additional wrapping — render the region directly.
|
|
117
|
+
|
|
118
|
+
## Edge Cases & Special Logic
|
|
119
|
+
|
|
120
|
+
- `getToDoAssignments(getPConnect())` — returns empty array if no assignments remain; when empty in post-close state, renders nothing.
|
|
121
|
+
- The first child region may not have Details content — always check `showDetails` before rendering the Details component.
|
|
122
|
+
- `CLOSE_CONFIRM_VIEW` is a PubSub constant — ensure it matches the consuming container's subscription key.
|
|
123
|
+
- The confirmation view should not be navigable backward — Done is the only exit.
|
|
124
|
+
- The ToDo registry key is `'Todo'` (capital T, lowercase odo) — this is the ConstellationJS Engine convention.
|
|
125
|
+
|
|
126
|
+
## Dependencies
|
|
127
|
+
|
|
128
|
+
- The project's component registry — for retrieving `'Todo'` and `'Details'` components dynamically at runtime
|
|
129
|
+
- `PCore.getSDKUtils().getSDKContainerUtils().getToDoAssignments` — for retrieving pending assignments
|
|
130
|
+
- `PCore.getPubSubUtils().publish()` — for the CLOSE_CONFIRM_VIEW event
|
|
131
|
+
- `PCore.getContainerUtils()` — for container item management (active item name + container item data)
|
|
132
|
+
- `PCore.getConstants()` — for PubSub event keys and TODO type constant
|
|
133
|
+
|
|
134
|
+
## Design System Mapping
|
|
135
|
+
|
|
136
|
+
**UI control type:** Post-submission confirmation page with done action and optional todo view.
|
|
137
|
+
|
|
138
|
+
When implementing in a specific design system, map the following:
|
|
139
|
+
|
|
140
|
+
- **Card wrapper:** Use the design system's card or surface container component with standard padding/margin.
|
|
141
|
+
- **Done button:** Use the design system's primary action button component.
|
|
142
|
+
- **Heading:** Use a level-2 heading or the design system's title typography component.
|
|
143
|
+
- **Layout:** A vertical flex column layout containing heading, optional details, optional todo list, and the done button at the end.
|
|
144
|
+
|
|
145
|
+
Implementation constraints regardless of design system:
|
|
146
|
+
|
|
147
|
+
- Done button must trigger `onConfirmViewClose` which both toggles local state and publishes the `CLOSE_CONFIRM_VIEW` event with `rootInfo`
|
|
148
|
+
- `showDetails` check must guard Details component rendering
|
|
149
|
+
- ToDo component receives `isConfirm: true` to signal it is rendered within a confirmation context
|