@pega/sdk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +183 -183
- package/README.md +6 -6
- package/SECURITY.md +2 -1
- package/dist/index.js +299 -56
- package/package.json +7 -6
- package/templates/angular-sdk-reference/package.json +15 -15
- package/templates/angular-sdk-reference/tsconfig.json +2 -2
- package/templates/react-native-sdk-reference/App.tsx +2 -4
- package/templates/react-native-sdk-reference/expo-env.d.ts +3 -0
- package/templates/react-native-sdk-reference/package.json +6 -6
- package/templates/react-native-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/.ai-common/agents/implementation-expert.md +132 -0
- package/templates/react-sdk-reference/{.github/copilot-instructions.md → .ai-common/global/ai-agent-instructions.md} +7 -7
- package/templates/react-sdk-reference/{.github/instructions/component-map.instructions.md → .ai-common/instructions/component-map.md} +9 -2
- package/templates/react-sdk-reference/{.github/instructions/dse-component.instructions.md → .ai-common/instructions/dse-component.md} +1 -1
- package/templates/react-sdk-reference/{.cursor/rules/field-component.mdrules → .ai-common/instructions/field-component.md} +6 -2
- package/templates/react-sdk-reference/{.github/instructions/template-component.instructions.md → .ai-common/instructions/template-component.md} +3 -2
- package/templates/react-sdk-reference/{.github/instructions/widget-component.instructions.md → .ai-common/instructions/widget-component.md} +2 -1
- package/templates/react-sdk-reference/.ai-common/prompts/add-component.md +219 -0
- package/templates/react-sdk-reference/.ai-common/prompts/component-manifest.json +199 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-all-components.md +528 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-dse-components.md +216 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-field-components.md +239 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-template-components.md +283 -0
- package/templates/react-sdk-reference/.ai-common/prompts/generate-widget-components.md +222 -0
- package/templates/react-sdk-reference/.ai-common/prompts/identify-components.md +109 -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/.ai-common/skills/design-system-extension-skills/AlertBanner.md +187 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/Banner.md +196 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/CaseSummaryFields.md +213 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/DetailsFields.mdrules → .ai-common/skills/design-system-extension-skills/DetailsFields.md} +81 -33
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/FieldGroup.mdrules → .ai-common/skills/design-system-extension-skills/FieldGroup.md} +82 -40
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/FieldGroupList.mdrules → .ai-common/skills/design-system-extension-skills/FieldGroupList.md} +68 -28
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/FieldValueList.mdrules → .ai-common/skills/design-system-extension-skills/FieldValueList.md} +75 -31
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/Operator.mdrules → .ai-common/skills/design-system-extension-skills/Operator.md} +99 -31
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension-skills/Pulse.mdrules → .ai-common/skills/design-system-extension-skills/Pulse.md} +37 -20
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/RichTextEditor.md +290 -0
- package/templates/react-sdk-reference/.ai-common/skills/design-system-extension-skills/WssQuickCreate.md +168 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/design-system-extension.mdrules → .ai-common/skills/design-system-extension.md} +14 -17
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-components.mdrules → .ai-common/skills/field-components.md} +27 -14
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/AutoComplete.md +298 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/CancelAlert.md +340 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Checkbox.md +358 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Currency.md +230 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Date.md +221 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/DateTime.md +213 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Decimal.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Dropdown.md +260 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Email.md +177 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/Group.mdrules → .ai-common/skills/field-skills/Group.md} +72 -20
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Integer.md +169 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Location.md +250 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Multiselect.md +258 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/ObjectReference.mdrules → .ai-common/skills/field-skills/ObjectReference.md} +101 -23
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Percentage.md +177 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Phone.md +210 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/RadioButtons.md +260 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/RichText.mdrules → .ai-common/skills/field-skills/RichText.md} +108 -17
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/ScalarList.md +188 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/SelectableCard.md +286 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/SemanticLink.mdrules → .ai-common/skills/field-skills/SemanticLink.md} +98 -32
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextArea.md +164 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/field-skills/TextContent.mdrules → .ai-common/skills/field-skills/TextContent.md} +66 -27
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/TextInput.md +174 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/Time.md +156 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/URL.md +145 -0
- package/templates/react-sdk-reference/.ai-common/skills/field-skills/UserReference.md +293 -0
- package/templates/react-sdk-reference/.ai-common/skills/run-and-verify.md +70 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-components.mdrules → .ai-common/skills/template-components.md} +89 -64
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AdvancedSearch.md +227 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/AppShell.md +273 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/BannerPage.mdrules → .ai-common/skills/template-skills/BannerPage.md} +58 -21
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseSummary.md +185 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseView.md +399 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/CaseViewActionsMenu.md +282 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/Confirmation.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DataReference.md +174 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultForm.md +221 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/DefaultPage.md +161 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/Details.mdrules → .ai-common/skills/template-skills/Details.md} +78 -22
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DetailsSubTabs.mdrules → .ai-common/skills/template-skills/DetailsSubTabs.md} +82 -25
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DetailsThreeColumn.mdrules → .ai-common/skills/template-skills/DetailsThreeColumn.md} +31 -22
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DetailsTwoColumn.mdrules → .ai-common/skills/template-skills/DetailsTwoColumn.md} +31 -22
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/DynamicTabs.mdrules → .ai-common/skills/template-skills/DynamicTabs.md} +82 -15
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/FieldGroupTemplate.md +231 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/HierarchicalForm.mdrules → .ai-common/skills/template-skills/HierarchicalForm.md} +63 -20
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/InlineDashboard.mdrules → .ai-common/skills/template-skills/InlineDashboard.md} +58 -18
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/InlineDashboardPage.mdrules → .ai-common/skills/template-skills/InlineDashboardPage.md} +66 -18
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/ListPage.mdrules → .ai-common/skills/template-skills/ListPage.md} +27 -12
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/ListView.md +419 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/MultiReferenceReadOnly.mdrules → .ai-common/skills/template-skills/MultiReferenceReadOnly.md} +53 -16
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/NarrowWide.md +209 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/OneColumn.mdrules → .ai-common/skills/template-skills/OneColumn.md} +59 -25
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/PromotedFilters.md +222 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SelfServiceCaseView.md +198 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SimpleTable.md +190 -0
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/SingleReferenceReadOnly.md +160 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/SubTabs.mdrules → .ai-common/skills/template-skills/SubTabs.md} +61 -16
- package/templates/react-sdk-reference/{.cursor/rules/skills/template-skills/TwoColumn.mdrules → .ai-common/skills/template-skills/TwoColumn.md} +83 -37
- package/templates/react-sdk-reference/{.claude → .ai-common}/skills/template-skills/WideNarrow.md +48 -46
- package/templates/react-sdk-reference/.ai-common/skills/template-skills/WssNavBar.md +210 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-components.mdrules → .ai-common/skills/widget-components.md} +12 -28
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/AppAnnouncement.md +121 -0
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/Attachment.md +209 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/CaseHistory.mdrules → .ai-common/skills/widget-skills/CaseHistory.md} +81 -20
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/FileUtility.md +273 -0
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/Followers.mdrules → .ai-common/skills/widget-skills/Followers.md} +43 -24
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/QuickCreate.mdrules → .ai-common/skills/widget-skills/QuickCreate.md} +68 -21
- package/templates/react-sdk-reference/{.cursor/rules/skills/widget-skills/SummaryItem.mdrules → .ai-common/skills/widget-skills/SummaryItem.md} +92 -29
- package/templates/react-sdk-reference/.ai-common/skills/widget-skills/ToDo.md +492 -0
- package/templates/react-sdk-reference/index.html +1 -4
- package/templates/react-sdk-reference/package.json +15 -15
- package/templates/react-sdk-reference/package.minimal.json +29 -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/AppSelector.tsx +6 -6
- package/templates/react-sdk-reference/src/FallbackComponent.tsx +2 -6
- package/templates/react-sdk-reference/src/MashupApp.styles.ts +269 -41
- package/templates/react-sdk-reference/src/MashupApp.tsx +194 -104
- package/templates/react-sdk-reference/src/PortalApp.tsx +15 -50
- package/templates/react-sdk-reference/src/components/component-map.ts +2 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/AlertBanner/AlertBanner.tsx +7 -28
- package/templates/react-sdk-reference/src/components/designSystemExtension/Banner/Banner.tsx +12 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/CaseSummaryFields/CaseSummaryFields.tsx +35 -33
- package/templates/react-sdk-reference/src/components/designSystemExtension/DetailsFields/DetailsFields.tsx +6 -27
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroup/FieldGroup.tsx +15 -11
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldGroupList/FieldGroupList.tsx +7 -7
- package/templates/react-sdk-reference/src/components/designSystemExtension/FieldValueList/FieldValueList.tsx +18 -12
- package/templates/react-sdk-reference/src/components/designSystemExtension/Operator/Operator.tsx +27 -25
- package/templates/react-sdk-reference/src/components/designSystemExtension/Pulse/Pulse.tsx +4 -4
- package/templates/react-sdk-reference/src/components/designSystemExtension/RichTextEditor/RichTextEditor.tsx +8 -40
- package/templates/react-sdk-reference/src/components/designSystemExtension/WssQuickCreate/WssQuickCreate.tsx +9 -9
- package/templates/react-sdk-reference/src/components/field/AutoComplete/AutoComplete.tsx +26 -20
- package/templates/react-sdk-reference/src/components/field/CancelAlert/CancelAlert.tsx +35 -17
- package/templates/react-sdk-reference/src/components/field/Checkbox/Checkbox.tsx +27 -25
- package/templates/react-sdk-reference/src/components/field/Currency/Currency.tsx +10 -6
- package/templates/react-sdk-reference/src/components/field/Currency/currency-utils.ts +1 -1
- package/templates/react-sdk-reference/src/components/field/Date/Date.tsx +20 -7
- package/templates/react-sdk-reference/src/components/field/DateTime/DateTime.tsx +23 -8
- package/templates/react-sdk-reference/src/components/field/Decimal/Decimal.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/Dropdown/Dropdown.tsx +45 -25
- package/templates/react-sdk-reference/src/components/field/Email/Email.tsx +8 -8
- package/templates/react-sdk-reference/src/components/field/Group/Group.tsx +1 -1
- package/templates/react-sdk-reference/src/components/field/Integer/Integer.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/Location/Location.tsx +21 -16
- package/templates/react-sdk-reference/src/components/field/Multiselect/Multiselect.tsx +42 -27
- package/templates/react-sdk-reference/src/components/field/Multiselect/utils.ts +43 -29
- package/templates/react-sdk-reference/src/components/field/ObjectReference/ObjectReference.tsx +53 -30
- package/templates/react-sdk-reference/src/components/field/ObjectReference/utils.ts +12 -11
- package/templates/react-sdk-reference/src/components/field/Percentage/Percentage.tsx +6 -6
- package/templates/react-sdk-reference/src/components/field/Phone/Phone.tsx +12 -12
- package/templates/react-sdk-reference/src/components/field/RadioButtons/RadioButtons.tsx +38 -16
- package/templates/react-sdk-reference/src/components/field/RichText/RichText.tsx +17 -4
- package/templates/react-sdk-reference/src/components/field/ScalarList/ScalarList.tsx +5 -5
- package/templates/react-sdk-reference/src/components/field/SelectableCard/SelectableCard.tsx +31 -18
- package/templates/react-sdk-reference/src/components/field/SelectableCard/utils.tsx +28 -20
- package/templates/react-sdk-reference/src/components/field/SemanticLink/SemanticLink.tsx +28 -19
- package/templates/react-sdk-reference/src/components/field/SemanticLink/utils.ts +3 -1
- package/templates/react-sdk-reference/src/components/field/TextArea/TextArea.tsx +4 -4
- package/templates/react-sdk-reference/src/components/field/TextInput/TextInput.tsx +4 -4
- package/templates/react-sdk-reference/src/components/field/Time/Time.tsx +20 -7
- package/templates/react-sdk-reference/src/components/field/URL/URL.tsx +7 -7
- package/templates/react-sdk-reference/src/components/field/UserReference/UserReference.tsx +14 -14
- package/templates/react-sdk-reference/src/components/field/UserReference/UserReferenceUtils.ts +2 -2
- package/templates/react-sdk-reference/src/components/helpers/case-utils.tsx +5 -5
- package/templates/react-sdk-reference/src/components/helpers/data_page.ts +3 -3
- package/templates/react-sdk-reference/src/components/helpers/date-format-utils.ts +5 -5
- package/templates/react-sdk-reference/src/components/helpers/field-group-utils.ts +2 -7
- package/templates/react-sdk-reference/src/components/helpers/formatters/Boolean.ts +9 -3
- package/templates/react-sdk-reference/src/components/helpers/formatters/Currency.ts +18 -6
- package/templates/react-sdk-reference/src/components/helpers/formatters/CurrencyMap.ts +168 -168
- package/templates/react-sdk-reference/src/components/helpers/formatters/Date.ts +5 -5
- package/templates/react-sdk-reference/src/components/helpers/formatters/index.ts +8 -5
- package/templates/react-sdk-reference/src/components/helpers/instructions-utils.ts +2 -2
- package/templates/react-sdk-reference/src/components/helpers/simpleTableHelpers.ts +54 -30
- package/templates/react-sdk-reference/src/components/helpers/state-utils.tsx +5 -2
- package/templates/react-sdk-reference/src/components/helpers/template-utils.ts +5 -4
- package/templates/react-sdk-reference/src/components/helpers/utils.ts +3 -3
- package/templates/react-sdk-reference/src/components/helpers/versionHelpers.ts +3 -1
- package/templates/react-sdk-reference/src/components/index.ts +1 -4
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/AdvancedSearch.tsx +18 -10
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroup/persistUtils.ts +3 -3
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/SearchGroups.tsx +26 -90
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/hooks.ts +8 -5
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/SearchGroups/utils.ts +8 -4
- package/templates/react-sdk-reference/src/components/template/AdvancedSearch/TemplateContext.ts +1 -1
- package/templates/react-sdk-reference/src/components/template/AppShell/AppShell.tsx +28 -19
- package/templates/react-sdk-reference/src/components/template/BannerPage/BannerPage.tsx +2 -2
- package/templates/react-sdk-reference/src/components/template/CaseSummary/CaseSummary.tsx +5 -5
- package/templates/react-sdk-reference/src/components/template/CaseView/CaseView.tsx +35 -16
- package/templates/react-sdk-reference/src/components/template/CaseViewActionsMenu/CaseViewActionsMenu.tsx +10 -10
- package/templates/react-sdk-reference/src/components/template/Confirmation/Confirmation.tsx +12 -26
- package/templates/react-sdk-reference/src/components/template/DataReference/DataReference.tsx +41 -124
- package/templates/react-sdk-reference/src/components/template/DataReference/DataReferenceAdvancedSearchContext.ts +2 -2
- package/templates/react-sdk-reference/src/components/template/DataReference/SearchForm.tsx +18 -78
- package/templates/react-sdk-reference/src/components/template/DataReference/utils.ts +18 -12
- package/templates/react-sdk-reference/src/components/template/DefaultForm/DefaultForm.tsx +4 -12
- package/templates/react-sdk-reference/src/components/template/DefaultForm/utils/index.ts +3 -3
- package/templates/react-sdk-reference/src/components/template/DefaultPage/DefaultPage.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/Details/Details/Details.tsx +6 -8
- package/templates/react-sdk-reference/src/components/template/Details/DetailsThreeColumn/DetailsThreeColumn.tsx +7 -14
- package/templates/react-sdk-reference/src/components/template/Details/DetailsTwoColumn/DetailsTwoColumn.tsx +7 -14
- package/templates/react-sdk-reference/src/components/template/Details/DynamicTabs/DynamicTabs.tsx +16 -8
- package/templates/react-sdk-reference/src/components/template/FieldGroupTemplate/FieldGroupTemplate.tsx +7 -4
- package/templates/react-sdk-reference/src/components/template/HierarchicalForm/HierarchicalForm.tsx +20 -5
- package/templates/react-sdk-reference/src/components/template/HierarchicalForm/hooks.ts +35 -77
- package/templates/react-sdk-reference/src/components/template/InlineDashboard/InlineDashboard.tsx +10 -10
- package/templates/react-sdk-reference/src/components/template/ListView/DefaultViewMeta.ts +31 -31
- package/templates/react-sdk-reference/src/components/template/ListView/ListView.tsx +173 -133
- package/templates/react-sdk-reference/src/components/template/ListView/hooks.ts +17 -10
- package/templates/react-sdk-reference/src/components/template/ListView/utils.ts +64 -51
- package/templates/react-sdk-reference/src/components/template/MultiReferenceReadOnly/MultiReferenceReadOnly.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWide/NarrowWide.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideDetails/NarrowWideDetails.tsx +8 -18
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWideForm/NarrowWideForm.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/NarrowWide/NarrowWidePage/NarrowWidePage.tsx +7 -1
- package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumn/OneColumn.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/OneColumn/OneColumnTab/OneColumnTab.tsx +1 -1
- package/templates/react-sdk-reference/src/components/template/PromotedFilters/PromotedFilters.tsx +13 -40
- package/templates/react-sdk-reference/src/components/template/SelfServiceCaseView/SelfServiceCaseView.tsx +19 -16
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTable/SimpleTable.tsx +8 -7
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableManual/SimpleTableManual.tsx +84 -203
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelect/SimpleTableSelect.tsx +15 -5
- package/templates/react-sdk-reference/src/components/template/SimpleTable/SimpleTableSelectReadonly/SimpleTableSelectReadonly.tsx +15 -29
- package/templates/react-sdk-reference/src/components/template/SingleReferenceReadOnly/SingleReferenceReadOnly.tsx +7 -7
- package/templates/react-sdk-reference/src/components/template/SubTabs/SubTabs.tsx +1 -1
- package/templates/react-sdk-reference/src/components/template/SubTabs/tabUtils.ts +13 -11
- package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumn/TwoColumn.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/TwoColumn/TwoColumnTab/TwoColumnTab.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrow/WideNarrow.tsx +6 -6
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowDetails/WideNarrowDetails.tsx +13 -24
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowForm/WideNarrowForm.tsx +3 -3
- package/templates/react-sdk-reference/src/components/template/WideNarrow/WideNarrowPage/WideNarrowPage.tsx +7 -1
- package/templates/react-sdk-reference/src/components/template/WssNavBar/WssNavBar.tsx +25 -25
- package/templates/react-sdk-reference/src/components/template/utils.tsx +6 -6
- package/templates/react-sdk-reference/src/components/widget/AppAnnouncement/AppAnnouncement.tsx +9 -9
- package/templates/react-sdk-reference/src/components/widget/Attachment/Attachment.tsx +125 -79
- package/templates/react-sdk-reference/src/components/widget/Attachment/AttachmentUtils.ts +58 -33
- package/templates/react-sdk-reference/src/components/widget/CaseHistory/CaseHistory.tsx +14 -12
- package/templates/react-sdk-reference/src/components/widget/FileUtility/ActionButtonsForFileUtil/ActionButtonsForFileUtil.tsx +19 -7
- package/templates/react-sdk-reference/src/components/widget/FileUtility/FileUtility/FileUtility.tsx +137 -107
- package/templates/react-sdk-reference/src/components/widget/Followers/Followers.tsx +4 -4
- package/templates/react-sdk-reference/src/components/widget/QuickCreate/QuickCreate.tsx +15 -11
- package/templates/react-sdk-reference/src/components/widget/SummaryItem/SummaryItem.tsx +25 -18
- package/templates/react-sdk-reference/src/components/widget/SummaryList/SummaryList.tsx +7 -2
- package/templates/react-sdk-reference/src/components/widget/ToDo/ToDo.tsx +30 -116
- package/templates/react-sdk-reference/src/main.tsx +1 -1
- package/templates/react-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/vite.config.ts +51 -26
- package/templates/wc-sdk-reference/package.json +3 -3
- package/templates/wc-sdk-reference/src/index.ts +10 -10
- package/templates/wc-sdk-reference/tsconfig.json +1 -0
- 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 -71
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +0 -92
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +0 -87
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +0 -144
- package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +0 -111
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +0 -149
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +0 -126
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +0 -139
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +0 -151
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +0 -124
- package/templates/react-sdk-reference/.claude/prompts/identify-components.md +0 -105
- 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 -135
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +0 -154
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +0 -144
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +0 -111
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +0 -115
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Operator.md +0 -149
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +0 -83
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +0 -206
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +0 -289
- package/templates/react-sdk-reference/.claude/skills/field-components.md +0 -294
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +0 -112
- package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +0 -203
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +0 -158
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +0 -106
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +0 -99
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +0 -103
- package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +0 -98
- package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +0 -90
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +0 -87
- package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +0 -136
- package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +0 -164
- package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +0 -164
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +0 -92
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +0 -110
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +0 -146
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +0 -138
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +0 -216
- package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +0 -148
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +0 -96
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +0 -104
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/field-skills/UserReference.md +0 -180
- package/templates/react-sdk-reference/.claude/skills/run-and-verify.md +0 -68
- package/templates/react-sdk-reference/.claude/skills/template-components.md +0 -322
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +0 -144
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +0 -122
- package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +0 -83
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +0 -100
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +0 -126
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/template-skills/DataReference.md +0 -120
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +0 -102
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +0 -110
- package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +0 -88
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +0 -95
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +0 -78
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +0 -78
- package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +0 -101
- package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +0 -113
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +0 -104
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +0 -85
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +0 -68
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +0 -139
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +0 -80
- package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +0 -141
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +0 -109
- package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +0 -124
- package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +0 -127
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +0 -103
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +0 -79
- package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +0 -131
- package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +0 -135
- package/templates/react-sdk-reference/.claude/skills/widget-components.md +0 -271
- package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +0 -82
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +0 -146
- package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +0 -107
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +0 -200
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Followers.md +0 -99
- package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +0 -114
- package/templates/react-sdk-reference/.claude/skills/widget-skills/SummaryItem.md +0 -167
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +0 -190
- 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/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 -111
- 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/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/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/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/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/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/TextArea.mdrules +0 -101
- 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-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/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/FieldGroupTemplate.mdrules +0 -114
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/ListView.mdrules +0 -144
- package/templates/react-sdk-reference/.cursor/rules/skills/template-skills/NarrowWide.mdrules +0 -146
- 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/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-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/FileUtility.mdrules +0 -205
- 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/instructions/field-component.instructions.md +0 -73
- package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +0 -149
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +0 -111
- package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +0 -154
- package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +0 -131
- package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +0 -144
- package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +0 -156
- package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +0 -129
- 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/AlertBanner.md +0 -135
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +0 -149
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +0 -154
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +0 -144
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +0 -131
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +0 -111
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +0 -115
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +0 -149
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +0 -83
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +0 -206
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +0 -135
- package/templates/react-sdk-reference/.github/skills/design-system-extension.md +0 -289
- package/templates/react-sdk-reference/.github/skills/field-components.md +0 -294
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +0 -112
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +0 -203
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +0 -158
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +0 -106
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +0 -99
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +0 -103
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +0 -98
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +0 -114
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +0 -107
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +0 -90
- package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +0 -87
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +0 -136
- package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +0 -164
- package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +0 -164
- package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +0 -92
- package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +0 -110
- package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +0 -146
- package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +0 -138
- package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +0 -124
- package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +0 -216
- package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +0 -148
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +0 -96
- package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +0 -101
- package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +0 -104
- package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +0 -88
- package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +0 -85
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +0 -180
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +0 -68
- package/templates/react-sdk-reference/.github/skills/template-components.md +0 -322
- package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +0 -144
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +0 -122
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +0 -83
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +0 -100
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +0 -126
- package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +0 -107
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +0 -120
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +0 -102
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +0 -110
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +0 -88
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +0 -95
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +0 -78
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +0 -78
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +0 -101
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +0 -109
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +0 -113
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +0 -104
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +0 -85
- package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +0 -68
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +0 -139
- package/templates/react-sdk-reference/.github/skills/template-skills/MultiReferenceReadOnly.md +0 -80
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +0 -141
- package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +0 -109
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +0 -124
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +0 -135
- package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +0 -127
- package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +0 -103
- package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +0 -79
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +0 -131
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +0 -150
- package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +0 -135
- package/templates/react-sdk-reference/.github/skills/widget-components.md +0 -271
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +0 -82
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +0 -146
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +0 -107
- package/templates/react-sdk-reference/.github/skills/widget-skills/FileUtility.md +0 -200
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +0 -99
- package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +0 -114
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +0 -167
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +0 -190
- package/templates/react-sdk-reference/AGENTS.md +0 -247
|
@@ -0,0 +1,340 @@
|
|
|
1
|
+
# Skill: CancelAlert
|
|
2
|
+
|
|
3
|
+
Cancel confirmation dialog that offers the user a choice between going back or discarding/deleting the current case/action.
|
|
4
|
+
|
|
5
|
+
> **Note:** This component extends `PConnFieldProps` for registry compatibility but does **not** use standard field patterns (no `displayMode`, no `handleEvent`, no value binding). It is an internal modal dialog.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a full-screen modal overlay with a confirmation dialog. Presents two actions: "Go back" (continue working) and "Discard" (cancel/delete). Handles different cancellation scenarios: standard case creation stage, local action, bulk action, data object, and reverse coexistence. Shows a snackbar notification on delete failure.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `CancelAlert`
|
|
16
|
+
- **Type / Subtype:** Internal modal/alert
|
|
17
|
+
- **Registration key:** `CancelAlert` (in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Description |
|
|
22
|
+
| ------------------------ | ---------- | ---------------------------------------------------------------------------------------- |
|
|
23
|
+
| `heading` | `string` | Modal dialog heading text |
|
|
24
|
+
| `content` | `string` | Modal dialog body/description text |
|
|
25
|
+
| `itemKey` | `string` | The container item ID for the case being cancelled (aliased as `containerItemID`) |
|
|
26
|
+
| `hideDelete` | `boolean` | Whether to hide/disable the delete option |
|
|
27
|
+
| `isDataObject` | `boolean` | Whether this is cancelling a data object (not a work item) |
|
|
28
|
+
| `skipReleaseLockRequest` | `any` | Whether to skip lock release when removing container item |
|
|
29
|
+
| `dismiss` | `Function` | Callback to close/dismiss this dialog (called with `true` to indicate confirmed dismiss) |
|
|
30
|
+
|
|
31
|
+
## Component Skeleton
|
|
32
|
+
|
|
33
|
+
Follow this exact structure when implementing. Replace modal/button/snackbar components with equivalents from your chosen design system.
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
import { useState } from 'react';
|
|
37
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
38
|
+
import './CancelAlert.css';
|
|
39
|
+
|
|
40
|
+
// ── Props interface ──────────────────────────────────────────
|
|
41
|
+
interface CancelAlertProps extends PConnFieldProps {
|
|
42
|
+
heading: string;
|
|
43
|
+
content: string;
|
|
44
|
+
itemKey: string;
|
|
45
|
+
hideDelete: boolean;
|
|
46
|
+
isDataObject: boolean;
|
|
47
|
+
skipReleaseLockRequest: any;
|
|
48
|
+
dismiss: Function;
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// ── Component ────────────────────────────────────────────────
|
|
52
|
+
export default function CancelAlert(props: CancelAlertProps) {
|
|
53
|
+
// 1. Destructure props (note: itemKey aliased to containerItemID)
|
|
54
|
+
const {
|
|
55
|
+
heading, content, getPConnect,
|
|
56
|
+
itemKey: containerItemID,
|
|
57
|
+
hideDelete, isDataObject, skipReleaseLockRequest, dismiss,
|
|
58
|
+
} = props;
|
|
59
|
+
|
|
60
|
+
// 2. PConnect APIs
|
|
61
|
+
const actionsAPI = getPConnect().getActionsApi();
|
|
62
|
+
const containerManagerAPI = getPConnect().getContainerManager();
|
|
63
|
+
const isLocalAction = getPConnect().getValue(
|
|
64
|
+
PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION
|
|
65
|
+
);
|
|
66
|
+
// @ts-ignore - Property 'options' is private
|
|
67
|
+
const isBulkAction = getPConnect()?.options?.isBulkAction;
|
|
68
|
+
|
|
69
|
+
// 3. Localization setup
|
|
70
|
+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
71
|
+
const localeCategory = 'ModalContainer';
|
|
72
|
+
|
|
73
|
+
// 4. Coexistence setup
|
|
74
|
+
const broadCastUtils: any = PCore.getCoexistenceManager().getBroadcastUtils();
|
|
75
|
+
const isReverseCoexistence = broadCastUtils.isReverseCoexistenceCaseLoaded();
|
|
76
|
+
|
|
77
|
+
// 5. Button ID constants
|
|
78
|
+
const btnIds = {
|
|
79
|
+
SAVE_AND_CLOSE: 'saveAndClose',
|
|
80
|
+
CONTINUE_WORKING: 'continueWorking',
|
|
81
|
+
DELETE: 'delete',
|
|
82
|
+
};
|
|
83
|
+
|
|
84
|
+
// 6. State
|
|
85
|
+
const [buttonsState, setButtonsState] = useState({
|
|
86
|
+
[btnIds.SAVE_AND_CLOSE]: false,
|
|
87
|
+
[btnIds.DELETE]: false,
|
|
88
|
+
});
|
|
89
|
+
const [showSnackbar, setShowSnackbar] = useState(false);
|
|
90
|
+
const [snackbarMessage, setSnackbarMessage] = useState('');
|
|
91
|
+
|
|
92
|
+
// 7. Button enable/disable helpers
|
|
93
|
+
function disableButton(id) {
|
|
94
|
+
setButtonsState(prev => ({ ...prev, [id]: true }));
|
|
95
|
+
}
|
|
96
|
+
function enableButton(id) {
|
|
97
|
+
setButtonsState(prev => ({ ...prev, [id]: false }));
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// 8. cancelHandler — see Behavioral Contract "Discard" section
|
|
101
|
+
function cancelHandler() { /* decision tree */ }
|
|
102
|
+
|
|
103
|
+
// 9. handleSnackbarClose — see Behavioral Contract
|
|
104
|
+
function handleSnackbarClose(event, reason?) {
|
|
105
|
+
if (reason === 'clickaway') return;
|
|
106
|
+
setShowSnackbar(false);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
// 10. Build leftButton ("Go back") and rightButton ("Discard") JSX
|
|
110
|
+
// leftButton: onClick → dismiss(), plus reverse coexistence cleanup
|
|
111
|
+
// rightButton: onClick → cancelHandler(), disabled={buttonsState[btnIds.DELETE]}
|
|
112
|
+
// All button text wrapped in localizedVal(text, localeCategory)
|
|
113
|
+
|
|
114
|
+
// 11. Return: overlay div + dialog box + snackbar
|
|
115
|
+
// See Visual Specifications for layout and CSS classes
|
|
116
|
+
return (
|
|
117
|
+
<>
|
|
118
|
+
<div className="cancel-alert-background">
|
|
119
|
+
<div className="cancel-alert-top">
|
|
120
|
+
<h3>{localizedVal(heading, localeCategory)}</h3>
|
|
121
|
+
<div><p>{localizedVal(content, localeCategory)}</p></div>
|
|
122
|
+
<div className="action-controls">
|
|
123
|
+
{/* Two buttons: Go back (secondary) | Discard (primary) */}
|
|
124
|
+
</div>
|
|
125
|
+
</div>
|
|
126
|
+
</div>
|
|
127
|
+
{/* Snackbar: open={showSnackbar}, autoHideDuration=3000, message={snackbarMessage} */}
|
|
128
|
+
</>
|
|
129
|
+
);
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Behavioral Contract
|
|
134
|
+
|
|
135
|
+
### Setup
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
// PConnect APIs
|
|
139
|
+
const actionsAPI = getPConnect().getActionsApi();
|
|
140
|
+
const containerManagerAPI = getPConnect().getContainerManager();
|
|
141
|
+
const isLocalAction = getPConnect().getValue(PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION);
|
|
142
|
+
// @ts-ignore - Property 'options' is private and only accessible within class 'C11nEnv'
|
|
143
|
+
const isBulkAction = getPConnect()?.options?.isBulkAction;
|
|
144
|
+
|
|
145
|
+
// Localization
|
|
146
|
+
const localizedVal = PCore.getLocaleUtils().getLocaleValue;
|
|
147
|
+
const localeCategory = 'ModalContainer';
|
|
148
|
+
|
|
149
|
+
// Coexistence (store broadCastUtils — reused in Go back handler)
|
|
150
|
+
const broadCastUtils: any = PCore.getCoexistenceManager().getBroadcastUtils();
|
|
151
|
+
const isReverseCoexistence = broadCastUtils.isReverseCoexistenceCaseLoaded();
|
|
152
|
+
|
|
153
|
+
// Button IDs (used as keys in buttonsState)
|
|
154
|
+
const btnIds = {
|
|
155
|
+
SAVE_AND_CLOSE: 'saveAndClose',
|
|
156
|
+
CONTINUE_WORKING: 'continueWorking',
|
|
157
|
+
DELETE: 'delete',
|
|
158
|
+
};
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### State
|
|
162
|
+
|
|
163
|
+
- `buttonsState`: tracks disabled state per button: `{ [btnIds.SAVE_AND_CLOSE]: false, [btnIds.DELETE]: false }`
|
|
164
|
+
- `showSnackbar`: boolean — whether to show the failure snackbar
|
|
165
|
+
- `snackbarMessage`: string — error message text
|
|
166
|
+
|
|
167
|
+
### Helper Functions
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
function disableButton(id) {
|
|
171
|
+
setButtonsState((prev) => ({ ...prev, [id]: true }));
|
|
172
|
+
}
|
|
173
|
+
function enableButton(id) {
|
|
174
|
+
setButtonsState((prev) => ({ ...prev, [id]: false }));
|
|
175
|
+
}
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### "Go back" button (`leftButton`)
|
|
179
|
+
|
|
180
|
+
Always calls `dismiss()` (no argument = don't confirm). If `isReverseCoexistence`:
|
|
181
|
+
|
|
182
|
+
```
|
|
183
|
+
broadCastUtils.setCallBackFunction(null)
|
|
184
|
+
broadCastUtils.setIsDirtyDialogActive(false)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
### "Discard" button (`rightButton`) — `cancelHandler()`
|
|
188
|
+
|
|
189
|
+
Decision tree (evaluated in order):
|
|
190
|
+
|
|
191
|
+
1. **Reverse coexistence:**
|
|
192
|
+
|
|
193
|
+
```
|
|
194
|
+
dismiss(true)
|
|
195
|
+
PCore.getPubSubUtils().publish(REVERSE_COEXISTENCE_EVENTS.HANDLE_DISCARD)
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
2. **Standard case in create stage** (`!isDataObject && !isLocalAction && !isBulkAction`):
|
|
199
|
+
- Disable delete button
|
|
200
|
+
- Call `actionsAPI.deleteCaseInCreateStage(containerItemID, hideDelete)`
|
|
201
|
+
- `.then()`: publish `EVENT_CANCEL`
|
|
202
|
+
- `.catch()`: show snackbar with `'Delete failed.'`
|
|
203
|
+
- `.finally()`: re-enable delete button, call `dismiss(true)`
|
|
204
|
+
|
|
205
|
+
3. **Local action** (`isLocalAction`):
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
dismiss(true)
|
|
209
|
+
actionsAPI.cancelAssignment(containerItemID, false)
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
4. **Bulk action** (`isBulkAction`):
|
|
213
|
+
|
|
214
|
+
```
|
|
215
|
+
dismiss(true)
|
|
216
|
+
actionsAPI.cancelBulkAction(containerItemID)
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
5. **Data object or other** (default):
|
|
220
|
+
```
|
|
221
|
+
dismiss(true)
|
|
222
|
+
containerManagerAPI.removeContainerItem({ containerItemID, skipReleaseLockRequest })
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Snackbar dismissal
|
|
226
|
+
|
|
227
|
+
`handleSnackbarClose`: if `reason === 'clickaway'`, return (do not close). Otherwise `setShowSnackbar(false)`.
|
|
228
|
+
|
|
229
|
+
### Localization
|
|
230
|
+
|
|
231
|
+
All visible text is localized via `PCore.getLocaleUtils().getLocaleValue(key, 'ModalContainer')`:
|
|
232
|
+
|
|
233
|
+
- `'Go back'`
|
|
234
|
+
- `'Discard'`
|
|
235
|
+
- `heading` prop value
|
|
236
|
+
- `content` prop value
|
|
237
|
+
- `'Delete failed.'`
|
|
238
|
+
|
|
239
|
+
## Visual Specifications
|
|
240
|
+
|
|
241
|
+
Derived from `CancelAlert.css`:
|
|
242
|
+
|
|
243
|
+
### Full-screen overlay (`.cancel-alert-background`)
|
|
244
|
+
|
|
245
|
+
```css
|
|
246
|
+
.cancel-alert-background {
|
|
247
|
+
display: flex;
|
|
248
|
+
flex-direction: column;
|
|
249
|
+
justify-content: center;
|
|
250
|
+
align-items: center;
|
|
251
|
+
height: 100%;
|
|
252
|
+
width: 100%;
|
|
253
|
+
background-color: var(--modal-background-color);
|
|
254
|
+
position: fixed;
|
|
255
|
+
z-index: 9999;
|
|
256
|
+
top: 0;
|
|
257
|
+
left: 0;
|
|
258
|
+
}
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Dialog box (`.cancel-alert-top`)
|
|
262
|
+
|
|
263
|
+
```css
|
|
264
|
+
.cancel-alert-top {
|
|
265
|
+
display: table;
|
|
266
|
+
margin: auto;
|
|
267
|
+
min-width: 550px;
|
|
268
|
+
background-color: var(--modal-top-color);
|
|
269
|
+
border: 1px solid var(--modal-border-color);
|
|
270
|
+
border-radius: 10px;
|
|
271
|
+
padding: 20px;
|
|
272
|
+
box-shadow: 0 0 10px 3px var(--modal-box-shadow-color);
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
### Content layout
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
.cancel-alert-top
|
|
280
|
+
<h3>{heading}</h3>
|
|
281
|
+
<div>
|
|
282
|
+
<p>{content}</p>
|
|
283
|
+
</div>
|
|
284
|
+
<div class="action-controls">
|
|
285
|
+
Grid container spacing=4, justifyContent='space-between'
|
|
286
|
+
Grid → leftButton ("Go back", secondary/outlined)
|
|
287
|
+
Grid → rightButton ("Discard", primary/contained, can be disabled)
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
### Button styles
|
|
291
|
+
|
|
292
|
+
| Button | Style | Color |
|
|
293
|
+
| ------- | --------- | --------- |
|
|
294
|
+
| Go back | Contained | Secondary |
|
|
295
|
+
| Discard | Contained | Primary |
|
|
296
|
+
|
|
297
|
+
### Snackbar
|
|
298
|
+
|
|
299
|
+
- `autoHideDuration: 3000ms`
|
|
300
|
+
- Shows `snackbarMessage` (e.g., `'Delete failed.'`)
|
|
301
|
+
- Close icon button to dismiss manually
|
|
302
|
+
|
|
303
|
+
**CSS variables used:**
|
|
304
|
+
|
|
305
|
+
- `--modal-background-color`: semi-transparent overlay (e.g., `rgba(0,0,0,0.5)`)
|
|
306
|
+
- `--modal-top-color`: dialog background (e.g., white or app background)
|
|
307
|
+
- `--modal-border-color`: dialog border
|
|
308
|
+
- `--modal-box-shadow-color`: dialog shadow color
|
|
309
|
+
|
|
310
|
+
**CSS companion file required:** Import `./CancelAlert.css`.
|
|
311
|
+
|
|
312
|
+
## Edge Cases & Special Logic
|
|
313
|
+
|
|
314
|
+
- **`buttonsState`** tracks loading state to prevent double-clicks during async delete.
|
|
315
|
+
- `dismiss(true)` vs `dismiss()`: passing `true` signals confirmed cancellation; no arg means the user chose to continue.
|
|
316
|
+
- `isBulkAction` is accessed via `getPConnect()?.options?.isBulkAction` — a private property, marked with `@ts-ignore`.
|
|
317
|
+
- All action handling is async — the UI must show loading/disabled state during `deleteCaseInCreateStage`.
|
|
318
|
+
|
|
319
|
+
## Dependencies
|
|
320
|
+
|
|
321
|
+
- `PCore.getLocaleUtils().getLocaleValue()` — for text localization.
|
|
322
|
+
- `PCore.getConstants().CASE_INFO.IS_LOCAL_ACTION`, `PUB_SUB_EVENTS.EVENT_CANCEL`, etc.
|
|
323
|
+
- `PCore.getPubSubUtils().publish()` — for pub/sub events.
|
|
324
|
+
- `PCore.getCoexistenceManager().getBroadcastUtils()` — for reverse coexistence handling.
|
|
325
|
+
- Button, Grid, IconButton, Snackbar components.
|
|
326
|
+
- Close icon.
|
|
327
|
+
- `./CancelAlert.css` — must be imported.
|
|
328
|
+
|
|
329
|
+
## Design System Mapping
|
|
330
|
+
|
|
331
|
+
**UI control type:** Full-screen modal confirmation dialog.
|
|
332
|
+
|
|
333
|
+
Listed design systems are examples only.
|
|
334
|
+
|
|
335
|
+
| Design System | Recommended Component |
|
|
336
|
+
| ------------------ | ------------------------------------------------------------------------------------------- |
|
|
337
|
+
| Default (CSS only) | `<div class="cancel-alert-background">` + `<div class="cancel-alert-top">` + CSS from above |
|
|
338
|
+
| MUI | `<Button>`, `<Grid>`, `<Snackbar>`, `<IconButton>`, fixed overlay `<div>` |
|
|
339
|
+
| Ant Design | `<Modal>` or custom overlay |
|
|
340
|
+
| Chakra UI | `<Modal>` or `<AlertDialog>` |
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
# Skill: Checkbox
|
|
2
|
+
|
|
3
|
+
Checkbox field supporting single boolean toggle, multi-selection mode, and optional card-style variant.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, props interface, display modes, event handling, and registration patterns common to ALL field components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders one or more checkboxes. Supports three usage modes: (1) a single boolean checkbox, (2) a multi-select list of checkboxes bound to a reference list, and (3) a card-style selectable grid. Display mode shows the true/false label rather than the raw boolean.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `Checkbox`
|
|
16
|
+
- **Type / Subtype:** `Field` / `Boolean`
|
|
17
|
+
- **Registration key:** `Checkbox` (mapped to `CheckboxComponent` import in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
> Note: `Checkbox` uses `Omit<PConnFieldProps, 'value'>` with its own `value?: boolean`. Import type as:
|
|
22
|
+
>
|
|
23
|
+
> ```typescript
|
|
24
|
+
> import type { PConnFieldProps } from '@pega/sdk-react';
|
|
25
|
+
> ```
|
|
26
|
+
|
|
27
|
+
| Prop | Type | Description |
|
|
28
|
+
| ---------------------- | -------------------- | -------------------------------------------------------------------- |
|
|
29
|
+
| `value` | `boolean` (optional) | Checked state for single-mode checkbox |
|
|
30
|
+
| `caption` | `string` (optional) | Label shown next to the single checkbox (not the group label) |
|
|
31
|
+
| `trueLabel` | `string` (optional) | Display text when `value` is `true` (used in display modes) |
|
|
32
|
+
| `falseLabel` | `string` (optional) | Display text when `value` is `false` (used in display modes) |
|
|
33
|
+
| `selectionMode` | `string` (optional) | `'multi'` — enables multi-selection mode from a datasource list |
|
|
34
|
+
| `datasource` | `any` (optional) | Options source for multi/card modes |
|
|
35
|
+
| `selectionKey` | `string` (optional) | The property path used as the key in selection list |
|
|
36
|
+
| `selectionList` | `any` (optional) | Property path for the reference list (multi mode) |
|
|
37
|
+
| `primaryField` | `string` | Primary display field for multi/card mode |
|
|
38
|
+
| `readonlyContextList` | `any` | Array of currently selected items (for multi/card read-only display) |
|
|
39
|
+
| `referenceList` | `string` | Reference list property path |
|
|
40
|
+
| `variant` | `string` (optional) | `'card'` — renders options as selectable card grid |
|
|
41
|
+
| `hideFieldLabels` | `boolean` | Hide field labels inside card variant |
|
|
42
|
+
| `additionalProps` | `any` | Extra props passed to card or checkbox |
|
|
43
|
+
| `imagePosition` | `string` | Card image position |
|
|
44
|
+
| `imageSize` | `string` | Card image size |
|
|
45
|
+
| `showImageDescription` | `string` | Whether to show image description |
|
|
46
|
+
| `renderMode` | `string` | `'ReadOnly'` — sets read-only mode alongside `readOnly` prop |
|
|
47
|
+
| `image` | `string` | Image field path for card variant |
|
|
48
|
+
|
|
49
|
+
## Component Skeleton
|
|
50
|
+
|
|
51
|
+
Follow this exact structure. The export name is **`CheckboxComponent`** (not `Checkbox`) to avoid collision with the design system's Checkbox widget.
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
import { useState, useEffect } from 'react';
|
|
55
|
+
import handleEvent from '../../helpers/event-utils';
|
|
56
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
57
|
+
import {
|
|
58
|
+
insertInstruction,
|
|
59
|
+
deleteInstruction,
|
|
60
|
+
updateNewInstuctions,
|
|
61
|
+
} from '../../helpers/instructions-utils';
|
|
62
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
63
|
+
|
|
64
|
+
// ── Props interface ──────────────────────────────────────────
|
|
65
|
+
// Note: Omit 'value' from PConnFieldProps — Checkbox uses boolean, not string
|
|
66
|
+
interface CheckboxProps extends Omit<PConnFieldProps, 'value'> {
|
|
67
|
+
value?: boolean;
|
|
68
|
+
caption?: string;
|
|
69
|
+
trueLabel?: string;
|
|
70
|
+
falseLabel?: string;
|
|
71
|
+
selectionMode?: string;
|
|
72
|
+
datasource?: any;
|
|
73
|
+
selectionKey?: string;
|
|
74
|
+
selectionList?: any;
|
|
75
|
+
primaryField: string;
|
|
76
|
+
readonlyContextList: any;
|
|
77
|
+
referenceList: string;
|
|
78
|
+
variant?: string;
|
|
79
|
+
hideFieldLabels: boolean;
|
|
80
|
+
additionalProps: any;
|
|
81
|
+
imagePosition: string;
|
|
82
|
+
imageSize: string;
|
|
83
|
+
showImageDescription: string;
|
|
84
|
+
renderMode: string;
|
|
85
|
+
image: string;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// ── Styles (design-system agnostic) ──────────────────────────
|
|
89
|
+
// .checkbox-column → display: flex, flexDirection: column
|
|
90
|
+
// .selectable-card-grid → display: grid, gridTemplateColumns: repeat(auto-fit, minmax(min(100%, 40ch), 1fr)),
|
|
91
|
+
// gridAutoRows: 1fr, gap: 0.5rem
|
|
92
|
+
|
|
93
|
+
// ── Component ────────────────────────────────────────────────
|
|
94
|
+
export default function CheckboxComponent(props: CheckboxProps) {
|
|
95
|
+
// 1. Registry lookups
|
|
96
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
97
|
+
const SelectableCard = getComponentFromRegistry('SelectableCard');
|
|
98
|
+
|
|
99
|
+
// 2. Destructure props — note alias: readonlyContextList → selectedvalues
|
|
100
|
+
const {
|
|
101
|
+
getPConnect, label, caption, value, readOnly, testId,
|
|
102
|
+
required, disabled, status, helperText, validatemessage,
|
|
103
|
+
displayMode, hideLabel, trueLabel, falseLabel,
|
|
104
|
+
selectionMode, datasource, selectionKey, selectionList,
|
|
105
|
+
primaryField, referenceList,
|
|
106
|
+
readonlyContextList: selectedvalues,
|
|
107
|
+
variant, hideFieldLabels, additionalProps,
|
|
108
|
+
imagePosition, imageSize, showImageDescription, renderMode, image,
|
|
109
|
+
} = props;
|
|
110
|
+
|
|
111
|
+
// 3. Derived flags
|
|
112
|
+
const readOnlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY' || readOnly;
|
|
113
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
114
|
+
|
|
115
|
+
// 4. PConnect setup
|
|
116
|
+
const thePConn = getPConnect();
|
|
117
|
+
const actionsApi = thePConn.getActionsApi();
|
|
118
|
+
const propName = (thePConn.getStateProps() as any).value;
|
|
119
|
+
|
|
120
|
+
// 5. State
|
|
121
|
+
const [checked, setChecked] = useState<any>(false);
|
|
122
|
+
|
|
123
|
+
// 6. useEffect: sync checked state from value prop — deps: [value]
|
|
124
|
+
useEffect(() => { setChecked(value); }, [value]);
|
|
125
|
+
|
|
126
|
+
// 7. useEffect: init reference list on mount — deps: [thePConn]
|
|
127
|
+
// Guard: referenceList?.length > 0 && !readOnlyMode
|
|
128
|
+
// Calls: thePConn.setReferenceList(selectionList)
|
|
129
|
+
// updateNewInstuctions(thePConn, selectionList)
|
|
130
|
+
|
|
131
|
+
// 8. Display mode returns (uses caption, not label!)
|
|
132
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
133
|
+
return <FieldValueList name={hideLabel ? '' : caption} value={value ? trueLabel : falseLabel} />;
|
|
134
|
+
}
|
|
135
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
136
|
+
return <FieldValueList name={hideLabel ? '' : caption} value={value ? trueLabel : falseLabel} variant="stacked" />;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
// 9. Event handlers — see Behavioral Contract for each variant
|
|
140
|
+
|
|
141
|
+
// 10. Branch: card variant (variant === 'card')
|
|
142
|
+
// → see Behavioral Contract "Card" section
|
|
143
|
+
// Return early with heading + grid + SelectableCard
|
|
144
|
+
|
|
145
|
+
// 11. Branch: multi-select (selectionMode === 'multi')
|
|
146
|
+
// → see Behavioral Contract "Multi-select" section
|
|
147
|
+
// Build list of checkbox controls from datasource.source
|
|
148
|
+
|
|
149
|
+
// 12. Branch: single checkbox (default)
|
|
150
|
+
// → see Behavioral Contract "Single checkbox" section
|
|
151
|
+
// Single FormControlLabel with checked={checked}
|
|
152
|
+
|
|
153
|
+
// 13. Main return: wrapper with group label + checkbox(es) + helper text
|
|
154
|
+
// Error state: status === 'error'
|
|
155
|
+
// Group label: {label}, hidden if hideLabel
|
|
156
|
+
// Helper text: helperTextToDisplay
|
|
157
|
+
return (
|
|
158
|
+
<FormWrapper required={required} error={status === 'error'}>
|
|
159
|
+
{!hideLabel && <GroupLabel>{label}</GroupLabel>}
|
|
160
|
+
<CheckboxGroup>{/* theCheckbox from step 11 or 12 */}</CheckboxGroup>
|
|
161
|
+
<HelperText>{helperTextToDisplay}</HelperText>
|
|
162
|
+
</FormWrapper>
|
|
163
|
+
);
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Behavioral Contract
|
|
168
|
+
|
|
169
|
+
### Common
|
|
170
|
+
|
|
171
|
+
1. **Read-only determination:** `readOnlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY' || readOnly`.
|
|
172
|
+
2. **Helper text:** `helperTextToDisplay = validatemessage || helperText`.
|
|
173
|
+
3. **Local state:** Maintain `checked` (boolean) initialized to `false`. `useEffect` watching `[value]` → `setChecked(value)`.
|
|
174
|
+
4. **Reference list init:** `useEffect` watching `[thePConn]` — if `referenceList?.length > 0 && !readOnlyMode`, call `thePConn.setReferenceList(selectionList)` and `updateNewInstuctions(thePConn, selectionList)`.
|
|
175
|
+
5. **`handleCheckboxChange(event, item)`** — shared by card and internally:
|
|
176
|
+
```
|
|
177
|
+
if (event.target.checked) {
|
|
178
|
+
insertInstruction(thePConn, selectionList, selectionKey, primaryField, item);
|
|
179
|
+
} else {
|
|
180
|
+
deleteInstruction(thePConn, selectionList, selectionKey, item);
|
|
181
|
+
}
|
|
182
|
+
thePConn.clearErrorMessages({ property: selectionList });
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Variant: Single checkbox (default)
|
|
186
|
+
|
|
187
|
+
Render a single checkbox with:
|
|
188
|
+
|
|
189
|
+
- `checked={checked}`
|
|
190
|
+
- `onChange={!readOnly ? handleChange : undefined}`
|
|
191
|
+
- `onBlur={!readOnly ? handleBlur : undefined}`
|
|
192
|
+
- Label = `caption` (next to checkbox)
|
|
193
|
+
- Group label = `label` (above, hidden if `hideLabel`)
|
|
194
|
+
- **On change:** `handleEvent(actionsApi, 'changeNblur', propName, event.target.checked)` — passes boolean.
|
|
195
|
+
- **On blur:** `pConn.getValidationApi().validate(event.target.checked)`.
|
|
196
|
+
|
|
197
|
+
### Variant: Multi-select (`selectionMode === 'multi'`)
|
|
198
|
+
|
|
199
|
+
Render a list of checkboxes from `datasource.source`:
|
|
200
|
+
|
|
201
|
+
- Extract `dataField`: `selectionKey?.split?.('.')[1]`.
|
|
202
|
+
- For each `element` in `datasource.source`:
|
|
203
|
+
- `checked`: `selectedvalues?.some?.(data => data[dataField] === element.key)`
|
|
204
|
+
- Label: `element.text ?? element.value`
|
|
205
|
+
- **On change:** `handleChangeMultiMode(event, element)`:
|
|
206
|
+
```
|
|
207
|
+
if (event.target.checked) {
|
|
208
|
+
insertInstruction(thePConn, selectionList, selectionKey, primaryField, {
|
|
209
|
+
id: element.key,
|
|
210
|
+
primary: element.text ?? element.value,
|
|
211
|
+
});
|
|
212
|
+
} else {
|
|
213
|
+
deleteInstruction(thePConn, selectionList, selectionKey, {
|
|
214
|
+
id: element.key,
|
|
215
|
+
primary: element.text ?? element.value,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
thePConn.clearErrorMessages({ property: selectionList, category: '', context: '' });
|
|
219
|
+
```
|
|
220
|
+
- **On blur:** `thePConn.getValidationApi().validate(selectedvalues, selectionList)`
|
|
221
|
+
- `data-testid`: `${testId}:${element.value}`
|
|
222
|
+
- Layout: vertical column (`display: flex, flexDirection: column`).
|
|
223
|
+
|
|
224
|
+
### Variant: Card (`variant === 'card'`)
|
|
225
|
+
|
|
226
|
+
Return early (before multi/single logic) with heading + CSS Grid + `SelectableCard`:
|
|
227
|
+
|
|
228
|
+
- Build `commonProps`:
|
|
229
|
+
```
|
|
230
|
+
const actions = thePConn.getActionsApi();
|
|
231
|
+
const commonProps = {
|
|
232
|
+
...additionalProps,
|
|
233
|
+
className: 'standard',
|
|
234
|
+
disabled,
|
|
235
|
+
readOnly,
|
|
236
|
+
onClick: (actions as any).onClick,
|
|
237
|
+
};
|
|
238
|
+
```
|
|
239
|
+
- Grid: `repeat(auto-fit, minmax(min(100%, 40ch), 1fr))`, `gridAutoRows: '1fr'`, `gap: '0.5rem'`.
|
|
240
|
+
- `SelectableCard` props:
|
|
241
|
+
- `{...commonProps}`, `testId`, `displayMode`, `getPConnect`
|
|
242
|
+
- `type='checkbox'`
|
|
243
|
+
- `dataSource={datasource}`
|
|
244
|
+
- `readOnly={renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY' || readOnly}`
|
|
245
|
+
- `recordKey={selectionKey?.split('.').pop()}`
|
|
246
|
+
- `cardLabel={primaryField.split('.').pop()}`
|
|
247
|
+
- `readOnlyList={selectedvalues}`
|
|
248
|
+
- `hideFieldLabels={hideFieldLabels}`
|
|
249
|
+
- `showNoValue={(readOnlyMode) && selectedvalues.length === 0}`
|
|
250
|
+
- `image` config object:
|
|
251
|
+
```
|
|
252
|
+
image={{
|
|
253
|
+
imagePosition,
|
|
254
|
+
imageSize,
|
|
255
|
+
showImageDescription,
|
|
256
|
+
imageField: image?.split('.').pop(),
|
|
257
|
+
imageDescription: (thePConn?.getRawMetadata()?.config as any)
|
|
258
|
+
.imageDescription?.split('.').pop(),
|
|
259
|
+
}}
|
|
260
|
+
```
|
|
261
|
+
- `onChange`: stop propagation, find item from `datasource.source` by matching `item[recordKey] === e.target.id`, call `handleCheckboxChange`:
|
|
262
|
+
```
|
|
263
|
+
onChange={(e) => {
|
|
264
|
+
e.stopPropagation();
|
|
265
|
+
const recordKey = selectionKey?.split('.').pop();
|
|
266
|
+
const selectedItem = datasource?.source?.find(
|
|
267
|
+
item => item[recordKey] === e.target.id
|
|
268
|
+
) ?? {};
|
|
269
|
+
handleCheckboxChange(e, {
|
|
270
|
+
id: selectedItem[recordKey],
|
|
271
|
+
primary: selectedItem[recordKey],
|
|
272
|
+
});
|
|
273
|
+
}}
|
|
274
|
+
```
|
|
275
|
+
- `onBlur`: `() => thePConn.getValidationApi().validate(selectedvalues, selectionList)`
|
|
276
|
+
|
|
277
|
+
## Display Mode Rendering
|
|
278
|
+
|
|
279
|
+
Display mode uses `caption` (not `label`) and shows true/false label:
|
|
280
|
+
|
|
281
|
+
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : caption} value={value ? trueLabel : falseLabel} />`
|
|
282
|
+
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : caption} value={value ? trueLabel : falseLabel} variant='stacked' />`
|
|
283
|
+
|
|
284
|
+
## Read-Only Rendering
|
|
285
|
+
|
|
286
|
+
Single mode: Set `readOnly` on checkbox element; disable `onChange`/`onBlur`.
|
|
287
|
+
Multi/Card mode: `readOnlyMode` flag prevents `insertInstruction`/`deleteInstruction`; cards show `readOnlyList`.
|
|
288
|
+
|
|
289
|
+
## Visual Specifications
|
|
290
|
+
|
|
291
|
+
### Standard / Multi-select
|
|
292
|
+
|
|
293
|
+
| Property | Value |
|
|
294
|
+
| ----------------- | --------------------------------------------- |
|
|
295
|
+
| Checkbox size | Default (24px) |
|
|
296
|
+
| Label placement | End (right of checkbox) |
|
|
297
|
+
| Group label | `<legend>` above group, hidden if `hideLabel` |
|
|
298
|
+
| Layout | Single: single row. Multi: vertical column |
|
|
299
|
+
| Helper text | Below group |
|
|
300
|
+
| Error state | Red text/border on helper |
|
|
301
|
+
| Disabled/readOnly | Greyed out, pointer-events none |
|
|
302
|
+
|
|
303
|
+
**CSS-only:**
|
|
304
|
+
|
|
305
|
+
```css
|
|
306
|
+
.checkbox-group {
|
|
307
|
+
display: flex;
|
|
308
|
+
flex-direction: column;
|
|
309
|
+
gap: 4px;
|
|
310
|
+
}
|
|
311
|
+
.checkbox-label {
|
|
312
|
+
display: flex;
|
|
313
|
+
align-items: center;
|
|
314
|
+
gap: 8px;
|
|
315
|
+
cursor: pointer;
|
|
316
|
+
}
|
|
317
|
+
input[type='checkbox']:disabled {
|
|
318
|
+
opacity: 0.38;
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Card Variant
|
|
323
|
+
|
|
324
|
+
| Property | Value |
|
|
325
|
+
| -------- | ------------------------------------------------------------------------------------------------- |
|
|
326
|
+
| Layout | CSS Grid `repeat(auto-fit, minmax(min(100%, 40ch), 1fr))`, row height equal (`1fr`), gap `0.5rem` |
|
|
327
|
+
| Heading | `<h4>` with `marginTop: 0, marginBottom: 0` |
|
|
328
|
+
|
|
329
|
+
## Edge Cases & Special Logic
|
|
330
|
+
|
|
331
|
+
- **Export name is `CheckboxComponent`** (not `Checkbox`) to avoid collision with the design system's checkbox widget import.
|
|
332
|
+
- **Display mode uses `caption`** (not `label`) for the field name. This is unique to Checkbox.
|
|
333
|
+
- **`readonlyContextList`** is destructured with alias `selectedvalues` — use `selectedvalues` everywhere in the component body.
|
|
334
|
+
- **`handleCheckboxChange`** (card mode): Calls `e.stopPropagation()` before processing. Finds the selected item from `datasource.source` by matching `item[recordKey] === e.target.id`.
|
|
335
|
+
- `updateNewInstuctions` is called on mount to sync reference list state.
|
|
336
|
+
- `clearErrorMessages` is called after every multi-select change.
|
|
337
|
+
- Card variant returns early (before multi/single branch logic).
|
|
338
|
+
- Multi-select `onBlur` validates with both `selectedvalues` and `selectionList` as arguments.
|
|
339
|
+
|
|
340
|
+
## Dependencies
|
|
341
|
+
|
|
342
|
+
- `insertInstruction`, `deleteInstruction`, `updateNewInstuctions` from `../../helpers/instructions-utils` — for multi-selection reference list management.
|
|
343
|
+
- `handleEvent` from `../../helpers/event-utils`.
|
|
344
|
+
- `getComponentFromRegistry('FieldValueList')` for display modes.
|
|
345
|
+
- `getComponentFromRegistry('SelectableCard')` for card variant.
|
|
346
|
+
|
|
347
|
+
## Design System Mapping
|
|
348
|
+
|
|
349
|
+
**UI control type:** Single or multi-select checkbox (boolean or list).
|
|
350
|
+
|
|
351
|
+
Listed design systems are examples only.
|
|
352
|
+
|
|
353
|
+
| Design System | Recommended Component |
|
|
354
|
+
| ------------------ | --------------------------------------------------- |
|
|
355
|
+
| Default (CSS only) | `<input type="checkbox">` with `<label>` |
|
|
356
|
+
| MUI | `<Checkbox>` in `<FormControlLabel>`, `<FormGroup>` |
|
|
357
|
+
| Ant Design | `<Checkbox>` / `<Checkbox.Group>` |
|
|
358
|
+
| Chakra UI | `<Checkbox>` / `<CheckboxGroup>` |
|