@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
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Template component skill: DynamicTabs
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: DynamicTabs
|
|
7
2
|
|
|
8
3
|
Data-driven tab template. Renders tabs dynamically from a `referenceList` data source — one tab per row in the list, with tab labels derived from a configurable property.
|
|
@@ -23,10 +18,77 @@ Unlike `SubTabs` or `DetailsSubTabs` where tabs are defined statically in metada
|
|
|
23
18
|
|
|
24
19
|
## Props
|
|
25
20
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
28
|
-
| `referenceList` | `string`
|
|
29
|
-
| `getPConnect`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| --------------- | ---------- | -------- | --------------------------------------------------------- |
|
|
23
|
+
| `referenceList` | `string` | Yes | Property path to the reference list (e.g. `'.pxResults'`) |
|
|
24
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
25
|
+
|
|
26
|
+
## Component Skeleton
|
|
27
|
+
|
|
28
|
+
```typescript
|
|
29
|
+
import React, { Children, useMemo, useState } from 'react';
|
|
30
|
+
import { buildView } from '../../../helpers/field-group-utils';
|
|
31
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
32
|
+
|
|
33
|
+
interface DynamicTabsProps extends PConnProps {
|
|
34
|
+
showLabel: boolean;
|
|
35
|
+
label: string;
|
|
36
|
+
referenceList?: any[];
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default function DynamicTabs(props: DynamicTabsProps) {
|
|
40
|
+
const { referenceList, showLabel, label, getPConnect } = props;
|
|
41
|
+
const pConnect = getPConnect();
|
|
42
|
+
const propsToUse = { label, showLabel, ...pConnect.getInheritedProps() };
|
|
43
|
+
|
|
44
|
+
// 1. Resolve tab label property from annotation
|
|
45
|
+
const { tablabel } = pConnect.getComponentConfig();
|
|
46
|
+
const tablabelProp = PCore.getAnnotationUtils().getPropertyName(tablabel);
|
|
47
|
+
|
|
48
|
+
// 2. Get reference list data
|
|
49
|
+
const referenceListData: any = pConnect.getValue(`${referenceList}.pxResults`, '');
|
|
50
|
+
|
|
51
|
+
// 3. Memoized tab views — set display-only mode, build views
|
|
52
|
+
const memoisedTabViews = useMemo(() => {
|
|
53
|
+
pConnect.setInheritedProp('displayMode', 'DISPLAY_ONLY');
|
|
54
|
+
pConnect.setInheritedProp('readOnly', true);
|
|
55
|
+
return referenceListData && Children.toArray(
|
|
56
|
+
referenceListData.map((item, index) => (
|
|
57
|
+
<React.Fragment key={item[tablabelProp]}>
|
|
58
|
+
{buildView(pConnect, index, '')}
|
|
59
|
+
</React.Fragment>
|
|
60
|
+
))
|
|
61
|
+
);
|
|
62
|
+
}, [referenceListData]);
|
|
63
|
+
|
|
64
|
+
// 4. Tab state
|
|
65
|
+
const [panelShown, changePanel] = useState(0);
|
|
66
|
+
const handleTabClick = (e, id) => changePanel(parseInt(id, 10));
|
|
67
|
+
|
|
68
|
+
// 5. Build tab items from reference list data
|
|
69
|
+
const tabItems = referenceListData?.map((item, i) => ({
|
|
70
|
+
name: item[tablabelProp] || PCore.getLocaleUtils().getLocaleValue('No label specified in config', 'Generic'),
|
|
71
|
+
id: i,
|
|
72
|
+
})) || [];
|
|
73
|
+
|
|
74
|
+
// 6. Render: optional heading + TabContext + scrollable Tabs + TabPanels
|
|
75
|
+
return (
|
|
76
|
+
<>
|
|
77
|
+
{propsToUse.label && <h3>{propsToUse.label}</h3>}
|
|
78
|
+
<TabContext value={panelShown.toString()}>
|
|
79
|
+
<TabBar onChange={handleTabClick} value={panelShown} variant="scrollable" scrollButtons="auto">
|
|
80
|
+
{tabItems.map(tab => <Tab key={tab.id} label={tab.name} value={tab.id} />)}
|
|
81
|
+
</TabBar>
|
|
82
|
+
{tabItems.map(tab => (
|
|
83
|
+
<TabPanel key={tab.id} value={tab.id.toString()} tabIndex={+tab.id}>
|
|
84
|
+
{memoisedTabViews?.[tab.id] || 'No content exists'}
|
|
85
|
+
</TabPanel>
|
|
86
|
+
))}
|
|
87
|
+
</TabContext>
|
|
88
|
+
</>
|
|
89
|
+
);
|
|
90
|
+
}
|
|
91
|
+
```
|
|
30
92
|
|
|
31
93
|
## Behavioral Contract
|
|
32
94
|
|
|
@@ -42,14 +104,17 @@ Unlike `SubTabs` or `DetailsSubTabs` where tabs are defined statically in metada
|
|
|
42
104
|
```
|
|
43
105
|
referenceListData = pConnect.getValue(referenceList + '.pxResults')
|
|
44
106
|
```
|
|
107
|
+
|
|
45
108
|
Returns an array of row objects.
|
|
46
109
|
|
|
47
110
|
### Tab Views
|
|
48
111
|
|
|
49
112
|
For each row index `i`:
|
|
113
|
+
|
|
50
114
|
```
|
|
51
115
|
tabView = buildView(pConnect, i, '')
|
|
52
116
|
```
|
|
117
|
+
|
|
53
118
|
Memoized — recalculate only when `referenceListData` changes.
|
|
54
119
|
|
|
55
120
|
### State
|
|
@@ -68,6 +133,7 @@ Memoized — recalculate only when `referenceListData` changes.
|
|
|
68
133
|
Identical tab bar appearance to `SubTabs`.
|
|
69
134
|
|
|
70
135
|
**CSS-only implementation notes:**
|
|
136
|
+
|
|
71
137
|
- Same tab bar and panel styles as `SubTabs.md`.
|
|
72
138
|
- Tab count is dynamic — do not hard-code tab widths.
|
|
73
139
|
|
|
@@ -92,15 +158,16 @@ Identical tab bar appearance to `SubTabs`.
|
|
|
92
158
|
|
|
93
159
|
Listed design systems are examples only.
|
|
94
160
|
|
|
95
|
-
| Design System
|
|
96
|
-
|
|
161
|
+
| Design System | Recommended Component |
|
|
162
|
+
| ------------------ | ------------------------------------------------ |
|
|
97
163
|
| Default (CSS only) | Custom tab bar, dynamically generated from array |
|
|
98
|
-
| MUI
|
|
99
|
-
| Ant Design
|
|
100
|
-
| Chakra UI
|
|
101
|
-
| Shadcn/ui
|
|
164
|
+
| MUI | `<TabContext>` + `<Tabs>` + `<TabPanel>` |
|
|
165
|
+
| Ant Design | `<Tabs items={dynamicItems}>` |
|
|
166
|
+
| Chakra UI | `<Tabs>` with dynamic `<TabList>/<TabPanels>` |
|
|
167
|
+
| Shadcn/ui | `<Tabs>` with mapped triggers and content |
|
|
102
168
|
|
|
103
169
|
When implementing in a specific design system:
|
|
170
|
+
|
|
104
171
|
- `tablabelProp` resolution via `PCore.getAnnotationUtils().getPropertyName()` is required — do not hardcode the label field
|
|
105
172
|
- `buildView(pConnect, rowIndex, '')` generates the content for each tab — the empty string third arg means no specific child config lookup
|
|
106
173
|
- Tab count is entirely data-driven — handle 0, 1, and many tab cases
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
# Skill: FieldGroupTemplate
|
|
2
|
+
|
|
3
|
+
Repeating field group template. Renders a list of field group rows from a reference list, supporting add/delete row actions and a read-only display mode.
|
|
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 template manages a repeating list of field groups with add/delete actions. It MUST NOT be reduced to a simple delegation to `FieldGroup` or `FieldGroupList`. The following are MANDATORY:
|
|
12
|
+
>
|
|
13
|
+
> 1. `getReferenceList(pConn)` from `../../helpers/field-group-utils` — resolves the reference list path
|
|
14
|
+
> 2. `buildView(pConn, index, lookForChildInConfig)` from `../../helpers/field-group-utils` — builds each row's view
|
|
15
|
+
> 3. `pConn.setReferenceList(resolvedList)` — sets the reference list on PConnect
|
|
16
|
+
> 4. `pConn.getListActions().initDefaultPageInstructions(resolvedList)` — initializes list instructions
|
|
17
|
+
> 5. `useLayoutEffect` for list initialization (not useEffect)
|
|
18
|
+
> 6. Add/delete record handlers using `pConn.getListActions().insert()` and `.deleteEntry()`
|
|
19
|
+
> 7. `useMemo` for `MemoisedChildren` built from `referenceList.map(...)` + `buildView`
|
|
20
|
+
> 8. `allowActions` handling (allowAdd, allowDelete)
|
|
21
|
+
> 9. `isReadonlyMode` check switching between FieldGroupList (edit) and FieldGroup (read-only)
|
|
22
|
+
>
|
|
23
|
+
> **Minimum Implementation Checklist:**
|
|
24
|
+
>
|
|
25
|
+
> - [ ] `getReferenceList` and `buildView` imported from `../../helpers/field-group-utils`
|
|
26
|
+
> - [ ] `pConn.getListActions()` used for insert/delete
|
|
27
|
+
> - [ ] `useLayoutEffect` for `initDefaultPageInstructions`
|
|
28
|
+
> - [ ] `addRecord` and `deleteFieldGroupItem` handlers
|
|
29
|
+
> - [ ] Edit mode → `<FieldGroupList items={...} onAdd={...} onDelete={...} />`
|
|
30
|
+
> - [ ] Read-only mode → `<FieldGroup>` with `buildView` children
|
|
31
|
+
> - [ ] `allowActions` / `allowTableEdit` props respected
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Component Purpose
|
|
36
|
+
|
|
37
|
+
Renders a repeating list of field group rows sourced from a PConnect reference list. In edit mode, rows can be added and deleted via list actions. In read-only mode (DISPLAY_ONLY), delegates to a read-only `FieldGroup` renderer. Each row is built via `buildView`.
|
|
38
|
+
|
|
39
|
+
## Pega Metadata
|
|
40
|
+
|
|
41
|
+
- **Registration key:** `FieldGroupTemplate` (in `component-map.ts`)
|
|
42
|
+
- **Category:** Form template — repeating
|
|
43
|
+
- **Extends:** `PConnProps`
|
|
44
|
+
|
|
45
|
+
## Props
|
|
46
|
+
|
|
47
|
+
| Prop | Type | Required | Description |
|
|
48
|
+
| ---------------- | ---------- | -------- | ---------------------------------------------------------------- |
|
|
49
|
+
| `label` | `string` | Yes | Section heading |
|
|
50
|
+
| `showLabel` | `boolean` | No | Whether to show the heading. Default `true` |
|
|
51
|
+
| `fieldHeader` | `string` | No | Property ref for the dynamic row heading. E.g. `'.pyStatusWork'` |
|
|
52
|
+
| `allowTableEdit` | `boolean` | No | Whether to show add/delete row controls. Default `true` |
|
|
53
|
+
| `displayMode` | `string` | No | `'DISPLAY_ONLY'` triggers read-only rendering |
|
|
54
|
+
| `readOnly` | `boolean` | No | Alternative read-only flag |
|
|
55
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
56
|
+
|
|
57
|
+
## Component Skeleton
|
|
58
|
+
|
|
59
|
+
```typescript
|
|
60
|
+
import { useLayoutEffect, useMemo } from 'react';
|
|
61
|
+
import { getReferenceList, buildView } from '../../helpers/field-group-utils';
|
|
62
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
63
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
64
|
+
|
|
65
|
+
interface FieldGroupTemplateProps extends PConnProps {
|
|
66
|
+
referenceList?: any[];
|
|
67
|
+
contextClass: string;
|
|
68
|
+
renderMode?: string;
|
|
69
|
+
heading?: string;
|
|
70
|
+
lookForChildInConfig?: boolean;
|
|
71
|
+
displayMode?: string;
|
|
72
|
+
fieldHeader?: string;
|
|
73
|
+
allowTableEdit: boolean;
|
|
74
|
+
allowActions?: any;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
export default function FieldGroupTemplate(props: FieldGroupTemplateProps) {
|
|
78
|
+
const FieldGroup = getComponentFromRegistry('FieldGroup');
|
|
79
|
+
const FieldGroupList = getComponentFromRegistry('FieldGroupList');
|
|
80
|
+
|
|
81
|
+
const {
|
|
82
|
+
referenceList = [], renderMode, contextClass, getPConnect,
|
|
83
|
+
lookForChildInConfig, heading = '', displayMode, fieldHeader,
|
|
84
|
+
allowActions, allowTableEdit: allowAddEdit,
|
|
85
|
+
} = props;
|
|
86
|
+
const pConn = getPConnect();
|
|
87
|
+
const resolvedList = getReferenceList(pConn);
|
|
88
|
+
pConn.setReferenceList(resolvedList);
|
|
89
|
+
const pageReference = `${pConn.getPageReference()}${resolvedList}`;
|
|
90
|
+
const isReadonlyMode = renderMode === 'ReadOnly' || displayMode === 'DISPLAY_ONLY';
|
|
91
|
+
const HEADING = heading ?? 'Row';
|
|
92
|
+
|
|
93
|
+
// 1. Resolve allowAdd/allowDelete from allowActions or allowTableEdit
|
|
94
|
+
const hasAllowActions = Object.keys(allowActions ?? {}).length > 0;
|
|
95
|
+
const { allowAdd: actionAdd, allowDelete: actionDelete } = allowActions ?? {};
|
|
96
|
+
const allowAdd = hasAllowActions ? (actionAdd ?? true) : (allowAddEdit ?? true);
|
|
97
|
+
const allowDelete = hasAllowActions ? (actionDelete ?? true) : (allowAddEdit ?? true);
|
|
98
|
+
|
|
99
|
+
// 2. Init page instructions on mount (edit mode only)
|
|
100
|
+
useLayoutEffect(() => {
|
|
101
|
+
if (!isReadonlyMode) {
|
|
102
|
+
pConn.getListActions().initDefaultPageInstructions(resolvedList);
|
|
103
|
+
}
|
|
104
|
+
}, [referenceList?.length]);
|
|
105
|
+
|
|
106
|
+
// 3. Dynamic header per row
|
|
107
|
+
const getDynamicHeaderProp = (item, index) => {
|
|
108
|
+
if (fieldHeader === 'propertyRef' && heading && item[heading.substring(1)])
|
|
109
|
+
return item[heading.substring(1)];
|
|
110
|
+
return `Row ${index + 1}`;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// 4. Add/delete handlers
|
|
114
|
+
const addRecord = () => {
|
|
115
|
+
if (PCore.getPCoreVersion()?.includes('8.7'))
|
|
116
|
+
pConn.getListActions().insert({ classID: contextClass }, referenceList.length, pageReference);
|
|
117
|
+
else pConn.getListActions().insert({}, referenceList.length);
|
|
118
|
+
};
|
|
119
|
+
const deleteRecord = (index) => {
|
|
120
|
+
if (PCore.getPCoreVersion()?.includes('8.7'))
|
|
121
|
+
pConn.getListActions().deleteEntry(index, pageReference);
|
|
122
|
+
else pConn.getListActions().deleteEntry(index);
|
|
123
|
+
};
|
|
124
|
+
|
|
125
|
+
// 5. Edit mode: auto-add first row if empty, render FieldGroupList
|
|
126
|
+
if (!isReadonlyMode) {
|
|
127
|
+
if (referenceList.length === 0 && allowAdd) addRecord();
|
|
128
|
+
const items = useMemo(() => referenceList.map((item, index) => ({
|
|
129
|
+
id: index,
|
|
130
|
+
name: fieldHeader === 'propertyRef' ? getDynamicHeaderProp(item, index) : `${HEADING} ${index + 1}`,
|
|
131
|
+
children: buildView(pConn, index, lookForChildInConfig),
|
|
132
|
+
})), [referenceList?.length]);
|
|
133
|
+
return <FieldGroupList items={items}
|
|
134
|
+
onAdd={allowAdd ? addRecord : undefined}
|
|
135
|
+
onDelete={allowDelete ? deleteRecord : undefined} />;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// 6. Read-only mode: FieldGroup per row
|
|
139
|
+
pConn.setInheritedProp('displayMode', 'DISPLAY_ONLY');
|
|
140
|
+
const readOnlyList = useMemo(() => referenceList.map((item, index) => (
|
|
141
|
+
<FieldGroup key={item[heading] || `field-group-row-${index}`}
|
|
142
|
+
name={fieldHeader === 'propertyRef' ? getDynamicHeaderProp(item, index) : `${HEADING} ${index + 1}`}>
|
|
143
|
+
{buildView(pConn, index, lookForChildInConfig)}
|
|
144
|
+
</FieldGroup>
|
|
145
|
+
)), []);
|
|
146
|
+
return <div>{readOnlyList}</div>;
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Behavioral Contract
|
|
151
|
+
|
|
152
|
+
### Read-Only Mode
|
|
153
|
+
|
|
154
|
+
If `displayMode === 'DISPLAY_ONLY'` or `readOnly === true`:
|
|
155
|
+
|
|
156
|
+
1. Set `setInheritedProp('DISPLAY_ONLY', true)` on the pConn.
|
|
157
|
+
2. Render `<FieldGroup>` — the DSE component that shows data in a read-only layout.
|
|
158
|
+
|
|
159
|
+
### Edit Mode
|
|
160
|
+
|
|
161
|
+
1. **Get reference list:** `resolvedList = getReferenceList(pConn)` — extracts the array of row data objects.
|
|
162
|
+
2. **Set reference list:** `pConn.setReferenceList(resolvedList)` — ensures the pConn has the resolved list.
|
|
163
|
+
3. **Build row views:** For each row index `i`, call `buildView(pConn, i, true)` to get the PConnect view for that row.
|
|
164
|
+
4. **Render `<FieldGroupList>`** — the DSE component for edit mode, receiving:
|
|
165
|
+
- `resolvedList` for row count
|
|
166
|
+
- Row views as children
|
|
167
|
+
- `onAdd`: calls `pConn.getListActions().insert({})`
|
|
168
|
+
- `onDelete(index)`: calls `pConn.getListActions().deleteEntry(index)`
|
|
169
|
+
- `fieldHeader`: evaluated property ref for dynamic row heading
|
|
170
|
+
- `allowActions`: from `allowTableEdit` prop (controls visibility of add/delete buttons)
|
|
171
|
+
|
|
172
|
+
### `allowActions` Override
|
|
173
|
+
|
|
174
|
+
If the field group is inside a read-only context (parent has set `readOnly` or `DISPLAY_ONLY`), `allowActions` is forced to `false` regardless of `allowTableEdit`.
|
|
175
|
+
|
|
176
|
+
## Visual Specifications
|
|
177
|
+
|
|
178
|
+
### Edit Mode
|
|
179
|
+
|
|
180
|
+
- Section heading (`label`) at top (if `showLabel`).
|
|
181
|
+
- List of row sections, each with:
|
|
182
|
+
- Dynamic heading from `fieldHeader` property value (e.g. `"Active"`, `"Pending"`).
|
|
183
|
+
- Row fields in a grid layout.
|
|
184
|
+
- Delete button (trash icon) per row.
|
|
185
|
+
- Add row button at the bottom (e.g. `"+ Add row"`).
|
|
186
|
+
|
|
187
|
+
### Read-Only Mode
|
|
188
|
+
|
|
189
|
+
- Section heading at top (if `showLabel`).
|
|
190
|
+
- Flat list of rows — no add/delete controls.
|
|
191
|
+
|
|
192
|
+
**CSS-only implementation notes:**
|
|
193
|
+
|
|
194
|
+
- Row section: `border: 1px solid var(--border-color); border-radius: 4px; padding: 1rem; margin-bottom: 0.5rem`.
|
|
195
|
+
- Add button: text button, below the last row.
|
|
196
|
+
- Delete button: icon button, top-right of each row section.
|
|
197
|
+
|
|
198
|
+
## Edge Cases & Special Logic
|
|
199
|
+
|
|
200
|
+
- `getReferenceList(pConn)` returns `undefined` if the reference list is not yet loaded — guard and render empty list.
|
|
201
|
+
- `buildView(pConn, index, true)` — third argument `lookForChildInConfig=true` — required for embedded field groups.
|
|
202
|
+
- Row index must be passed to `deleteEntry` as a number (not string).
|
|
203
|
+
- `fieldHeader` is a property ref like `'.pyStatusWork'` — evaluate it per-row via `pConn.getValue(fieldHeader, index)` to get the display label for each row heading.
|
|
204
|
+
- `FieldGroupList` and `FieldGroup` are DSE (design system extension) components registered in the component registry.
|
|
205
|
+
|
|
206
|
+
## Dependencies
|
|
207
|
+
|
|
208
|
+
- `getReferenceList`, `buildView` from `../../helpers/field-group-utils`
|
|
209
|
+
- `getComponentFromRegistry('FieldGroupList')` — edit mode renderer
|
|
210
|
+
- `getComponentFromRegistry('FieldGroup')` — read-only renderer
|
|
211
|
+
- `PConnectComponent` from `@pega/sdk-react` — used inside `buildView`
|
|
212
|
+
|
|
213
|
+
## Design System Mapping
|
|
214
|
+
|
|
215
|
+
**UI control type:** Repeating list of grouped form sections with add/delete row management.
|
|
216
|
+
|
|
217
|
+
Listed design systems are examples only.
|
|
218
|
+
|
|
219
|
+
| Design System | Recommended Component |
|
|
220
|
+
| ------------------ | ------------------------------------------------------------------ |
|
|
221
|
+
| Default (CSS only) | Custom row card list with add/delete buttons |
|
|
222
|
+
| MUI | `<Paper>` per row + `<IconButton>` for delete + `<Button>` for add |
|
|
223
|
+
| Ant Design | `<Form.List>` with `<Card>` per row |
|
|
224
|
+
| Chakra UI | Custom repeating section with `<Box>` rows |
|
|
225
|
+
| Shadcn/ui | Custom list with `<Card>` per row + `<Button variant='ghost'>` |
|
|
226
|
+
|
|
227
|
+
When implementing in a specific design system:
|
|
228
|
+
|
|
229
|
+
- The add/delete controls must be hidden when `allowActions` is false
|
|
230
|
+
- Row heading is dynamic — evaluate `fieldHeader` property ref per row
|
|
231
|
+
- `buildView` generates child PConnect views — render them inside each row section
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Template component skill: HierarchicalForm
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: HierarchicalForm
|
|
7
2
|
|
|
8
3
|
Multi-step tabbed form template. Renders form sections as horizontal tabs with per-tab validation error badges and persisted active tab navigation.
|
|
@@ -23,17 +18,63 @@ Renders a multi-step form where each section is a tab. Tabs display error badges
|
|
|
23
18
|
|
|
24
19
|
## Props
|
|
25
20
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
28
|
-
| `children`
|
|
29
|
-
| `instructions` | `string`
|
|
30
|
-
| `getPConnect`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| -------------- | ------------- | -------- | --------------------------------------------- |
|
|
23
|
+
| `children` | `ReactNode[]` | Yes | One child per tab section |
|
|
24
|
+
| `instructions` | `string` | No | HTML instruction text shown above the tab bar |
|
|
25
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
26
|
+
|
|
27
|
+
## Component Skeleton
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { type PropsWithChildren } from 'react';
|
|
31
|
+
import { useHierarchicalForm, type HierarchicalFormProps } from './hooks';
|
|
32
|
+
|
|
33
|
+
export default function HierarchicalForm(props: PropsWithChildren<HierarchicalFormProps>) {
|
|
34
|
+
// 1. Custom hook handles: active tab, tab click, error counts, instructions, processed tabs
|
|
35
|
+
const { currentTabId, handleTabClick, processedTabs, instructions } = useHierarchicalForm(props);
|
|
36
|
+
|
|
37
|
+
// 2. Guard: no visible tabs
|
|
38
|
+
if (!currentTabId) return null;
|
|
39
|
+
|
|
40
|
+
// 3. Render: instructions + TabContext + Tabs (with error badges) + TabPanels
|
|
41
|
+
return (
|
|
42
|
+
<FlexColumn>
|
|
43
|
+
{instructions && <div dangerouslySetInnerHTML={{ __html: instructions }} />}
|
|
44
|
+
<TabContext value={currentTabId.toString()}>
|
|
45
|
+
<TabBar onChange={handleTabClick} value={currentTabId.toString()} variant="scrollable">
|
|
46
|
+
{processedTabs.map(tab => {
|
|
47
|
+
const tabLabel = tab.name || tab.label;
|
|
48
|
+
return (
|
|
49
|
+
<Tab key={tab.id} value={tab.id?.toString()} label={
|
|
50
|
+
tab.errors
|
|
51
|
+
? <Tooltip title={`${tabLabel} has errors`}>
|
|
52
|
+
<span>{tabLabel} <Badge badgeContent={tab.errors} color="error" /></span>
|
|
53
|
+
</Tooltip>
|
|
54
|
+
: tabLabel
|
|
55
|
+
} />
|
|
56
|
+
);
|
|
57
|
+
})}
|
|
58
|
+
</TabBar>
|
|
59
|
+
{processedTabs.map(tab => (
|
|
60
|
+
<TabPanel key={tab.id} value={tab.id?.toString()} tabIndex={+tab.id} keepMounted>
|
|
61
|
+
{tab.content || 'No content exists'}
|
|
62
|
+
</TabPanel>
|
|
63
|
+
))}
|
|
64
|
+
</TabContext>
|
|
65
|
+
</FlexColumn>
|
|
66
|
+
);
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
> **Key implementation note:** All tab logic (active tab persistence, error counting, tab filtering) is encapsulated in the `useHierarchicalForm` hook. Implement that hook separately — it uses `PCore.getNavigationUtils()` for tab persistence and `useGetTabsCount` for error tracking.
|
|
31
71
|
|
|
32
72
|
## Behavioral Contract
|
|
33
73
|
|
|
34
74
|
### Hook: `useHierarchicalForm`
|
|
35
75
|
|
|
36
76
|
`useHierarchicalForm(getPConnect, numTabs)` returns:
|
|
77
|
+
|
|
37
78
|
- `activeTabId`: currently selected tab index (string, e.g. `'0'`)
|
|
38
79
|
- `setActiveTabId`: setter for `activeTabId`
|
|
39
80
|
- `tabErrorCounts`: `Record<string, number>` — error count per tab index key
|
|
@@ -73,12 +114,13 @@ Internally it calls `useGetTabsCount(getPConnect)` to compute `tabErrorCounts`.
|
|
|
73
114
|
|
|
74
115
|
### Tab Bar
|
|
75
116
|
|
|
76
|
-
| Property
|
|
77
|
-
|
|
78
|
-
| Orientation | Horizontal
|
|
117
|
+
| Property | Value |
|
|
118
|
+
| ----------- | ------------------------------------------------------ |
|
|
119
|
+
| Orientation | Horizontal |
|
|
79
120
|
| Error badge | Red MUI Badge with tooltip showing error count message |
|
|
80
121
|
|
|
81
122
|
**CSS-only implementation notes:**
|
|
123
|
+
|
|
82
124
|
- Tab bar: same as `DetailsSubTabs` — `display: flex; border-bottom: 2px solid var(--divider)`.
|
|
83
125
|
- Error badge: red circle badge overlaid top-right of the tab label text.
|
|
84
126
|
- Instruction text: `padding: 0.5rem 0; margin-bottom: 0.5rem; font-size: 0.875rem`.
|
|
@@ -104,15 +146,16 @@ Internally it calls `useGetTabsCount(getPConnect)` to compute `tabErrorCounts`.
|
|
|
104
146
|
|
|
105
147
|
Listed design systems are examples only.
|
|
106
148
|
|
|
107
|
-
| Design System
|
|
108
|
-
|
|
109
|
-
| Default (CSS only) | Custom tab bar + CSS badge (red circle via pseudo-element)
|
|
110
|
-
| MUI
|
|
111
|
-
| Ant Design
|
|
112
|
-
| Chakra UI
|
|
113
|
-
| Shadcn/ui
|
|
149
|
+
| Design System | Recommended Component |
|
|
150
|
+
| ------------------ | -------------------------------------------------------------- |
|
|
151
|
+
| Default (CSS only) | Custom tab bar + CSS badge (red circle via pseudo-element) |
|
|
152
|
+
| MUI | `<Tabs>` + `<Badge>` + `<Tooltip>` + `<TabContext>/<TabPanel>` |
|
|
153
|
+
| Ant Design | `<Tabs>` with custom `tabBarExtraContent` for error badges |
|
|
154
|
+
| Chakra UI | `<Tabs>` + `<Badge colorScheme='red'>` inside tab label |
|
|
155
|
+
| Shadcn/ui | `<Tabs>` + custom badge overlay on tab trigger |
|
|
114
156
|
|
|
115
157
|
When implementing in a specific design system:
|
|
158
|
+
|
|
116
159
|
- Error badge is mandatory — always show error counts when `tabErrorCounts[id] > 0`
|
|
117
160
|
- Active tab must be persisted via `PCore.getNavigationUtils()` for correct navigation behavior
|
|
118
161
|
- Instructions HTML renders above the entire tab bar, not per-tab
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Template component skill: InlineDashboard
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: InlineDashboard
|
|
7
2
|
|
|
8
3
|
Inline dashboard template. Renders a dashboard with a title, a main content area, and an optional filter panel whose position is configurable.
|
|
@@ -23,12 +18,53 @@ Renders an inline dashboard layout consisting of a title heading, a main content
|
|
|
23
18
|
|
|
24
19
|
## Props
|
|
25
20
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
28
|
-
| `title`
|
|
29
|
-
| `filterPosition` | `string`
|
|
30
|
-
| `children`
|
|
31
|
-
| `getPConnect`
|
|
21
|
+
| Prop | Type | Required | Description |
|
|
22
|
+
| ---------------- | ------------- | -------- | ----------------------------------------------------------------------------- |
|
|
23
|
+
| `title` | `string` | No | Dashboard title displayed above the content area |
|
|
24
|
+
| `filterPosition` | `string` | No | Filter panel position: `'block-start'` (above) or other (side). Default: side |
|
|
25
|
+
| `children` | `ReactNode[]` | Yes | `children[0]` = main content, `children[1]` = filter panel |
|
|
26
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
27
|
+
|
|
28
|
+
## Component Skeleton
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
import type { PropsWithChildren, ReactElement } from 'react';
|
|
32
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
33
|
+
|
|
34
|
+
interface InlineDashboardProps extends PConnProps {
|
|
35
|
+
title: string;
|
|
36
|
+
filterPosition?: string;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export default function InlineDashboard(props: PropsWithChildren<InlineDashboardProps>) {
|
|
40
|
+
const { children, title, filterPosition } = props;
|
|
41
|
+
const childrenToRender = children as ReactElement[];
|
|
42
|
+
|
|
43
|
+
// 1. Direction for side layout
|
|
44
|
+
const direction = filterPosition === 'inline-start' ? 'row-reverse' : 'row';
|
|
45
|
+
|
|
46
|
+
// 2. Render: title + layout based on filterPosition
|
|
47
|
+
return (
|
|
48
|
+
<>
|
|
49
|
+
<Heading variant="h4">{title}</Heading>
|
|
50
|
+
|
|
51
|
+
{filterPosition === 'block-start' ? (
|
|
52
|
+
// Stacked: filter above content (column-reverse so filter renders visually above)
|
|
53
|
+
<GridContainer direction="column-reverse">
|
|
54
|
+
<GridItem xs={12}>{childrenToRender[0]}</GridItem>
|
|
55
|
+
<GridItem id="filters" xs={12}>{childrenToRender[1]}</GridItem>
|
|
56
|
+
</GridContainer>
|
|
57
|
+
) : (
|
|
58
|
+
// Side: content left, filters right (or reversed if inline-start)
|
|
59
|
+
<GridContainer direction={direction}>
|
|
60
|
+
<GridItem xs={9}>{childrenToRender[0]}</GridItem>
|
|
61
|
+
<GridItem id="filters" xs={3}>{childrenToRender[1]}</GridItem>
|
|
62
|
+
</GridContainer>
|
|
63
|
+
)}
|
|
64
|
+
</>
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
```
|
|
32
68
|
|
|
33
69
|
## Behavioral Contract
|
|
34
70
|
|
|
@@ -39,6 +75,7 @@ Renders an inline dashboard layout consisting of a title heading, a main content
|
|
|
39
75
|
### Filter Position: `'block-start'`
|
|
40
76
|
|
|
41
77
|
Stacked layout — filter panel above main content:
|
|
78
|
+
|
|
42
79
|
- `<Grid container direction='column-reverse'>` (reverse so filter renders visually above content).
|
|
43
80
|
- Filter panel: `<Grid id='filters' size={{ xs: 12 }}>`.
|
|
44
81
|
- Main content: `<Grid size={{ xs: 12 }}>`.
|
|
@@ -46,6 +83,7 @@ Stacked layout — filter panel above main content:
|
|
|
46
83
|
### Filter Position: Other (side)
|
|
47
84
|
|
|
48
85
|
Side-by-side layout — main content left, filters right:
|
|
86
|
+
|
|
49
87
|
- `<Grid container direction={...}>` (optionally `row-reverse` based on position value).
|
|
50
88
|
- Main content: `<Grid size={{ xs: 9 }}>`.
|
|
51
89
|
- Filter panel: `<Grid id='filters' size={{ xs: 3 }}>`.
|
|
@@ -71,6 +109,7 @@ Side-by-side layout — main content left, filters right:
|
|
|
71
109
|
```
|
|
72
110
|
|
|
73
111
|
**CSS-only implementation notes:**
|
|
112
|
+
|
|
74
113
|
- Title: `font-size: 1.5rem; font-weight: 600; margin-bottom: 1rem`.
|
|
75
114
|
- Block-start: `display: flex; flex-direction: column; gap: 1rem` (filter div first in DOM but ordered last visually with `order: -1`).
|
|
76
115
|
- Side: `display: grid; grid-template-columns: 3fr 1fr; gap: 1rem`.
|
|
@@ -95,15 +134,16 @@ Side-by-side layout — main content left, filters right:
|
|
|
95
134
|
|
|
96
135
|
Listed design systems are examples only.
|
|
97
136
|
|
|
98
|
-
| Design System
|
|
99
|
-
|
|
100
|
-
| Default (CSS only) | `<h2>`
|
|
101
|
-
| MUI
|
|
102
|
-
| Ant Design
|
|
103
|
-
| Chakra UI
|
|
104
|
-
| Shadcn/ui
|
|
137
|
+
| Design System | Title | Content/Filter Grid |
|
|
138
|
+
| ------------------ | ------------------------------ | ---------------------- |
|
|
139
|
+
| Default (CSS only) | `<h2>` | CSS grid or flexbox |
|
|
140
|
+
| MUI | `<Typography variant='h4'>` | `<Grid container>` |
|
|
141
|
+
| Ant Design | `<Typography.Title level={2}>` | `<Row>/<Col>` |
|
|
142
|
+
| Chakra UI | `<Heading>` | `<Grid>` or `<HStack>` |
|
|
143
|
+
| Shadcn/ui | `<h2>` | Tailwind grid |
|
|
105
144
|
|
|
106
145
|
When implementing in a specific design system:
|
|
146
|
+
|
|
107
147
|
- `filterPosition === 'block-start'` requires stacked layout (12/12) — not side layout (9/3)
|
|
108
148
|
- Filter panel must always have `id='filters'`
|
|
109
149
|
- Title heading (`h4` level) is optional — only render when `title` is provided
|