@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: InlineDashboardPage
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: InlineDashboardPage
|
|
7
2
|
|
|
8
3
|
Inline dashboard page template. Builds filter components from promoted filters metadata and delegates rendering to `InlineDashboard`.
|
|
@@ -11,6 +6,26 @@ Inline dashboard page template. Builds filter components from promoted filters m
|
|
|
11
6
|
|
|
12
7
|
---
|
|
13
8
|
|
|
9
|
+
> ⚠️ **CRITICAL — Must use `buildFilterComponents` from `@pega/sdk-react`**
|
|
10
|
+
>
|
|
11
|
+
> This component MUST use `buildFilterComponents(getPConnect, allFilters)` imported from `@pega/sdk-react` to generate proper filter UI components. Without this, dashboard filters will not render correctly.
|
|
12
|
+
>
|
|
13
|
+
> **Mandatory implementation details:**
|
|
14
|
+
>
|
|
15
|
+
> 1. `import { buildFilterComponents } from '@pega/sdk-react'` — filter component builder
|
|
16
|
+
> 2. `getPConnect().getRawMetadata().children[1]` — extract filter metadata
|
|
17
|
+
> 3. `useEffect` + `useState` for `filterComponents` — build filters on mount
|
|
18
|
+
> 4. Assemble `inlineProps.children[1] = filterComponents` for InlineDashboard
|
|
19
|
+
>
|
|
20
|
+
> **Minimum Implementation Checklist:**
|
|
21
|
+
>
|
|
22
|
+
> - [ ] `buildFilterComponents` imported from `@pega/sdk-react`
|
|
23
|
+
> - [ ] `filterComponents` state populated via `useEffect`
|
|
24
|
+
> - [ ] Filter metadata extracted from `getRawMetadata().children[1]`
|
|
25
|
+
> - [ ] InlineDashboard receives filter components as children
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
14
29
|
## Component Purpose
|
|
15
30
|
|
|
16
31
|
Page-level wrapper for the inline dashboard. Extracts promoted filter definitions from the PConnect metadata, builds React filter components from them, and passes them to `InlineDashboard` as the second child (filter panel). The first child (main content) is passed through unchanged.
|
|
@@ -25,12 +40,48 @@ Page-level wrapper for the inline dashboard. Extracts promoted filter definition
|
|
|
25
40
|
|
|
26
41
|
## Props
|
|
27
42
|
|
|
28
|
-
| Prop
|
|
29
|
-
|
|
30
|
-
| `children`
|
|
31
|
-
| `title`
|
|
32
|
-
| `filterPosition` | `string`
|
|
33
|
-
| `getPConnect`
|
|
43
|
+
| Prop | Type | Required | Description |
|
|
44
|
+
| ---------------- | ------------- | -------- | ----------------------------------------------- |
|
|
45
|
+
| `children` | `ReactNode[]` | Yes | Main content children passed to InlineDashboard |
|
|
46
|
+
| `title` | `string` | No | Dashboard title |
|
|
47
|
+
| `filterPosition` | `string` | No | Filter position: `'block-start'` or side |
|
|
48
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
49
|
+
|
|
50
|
+
## Component Skeleton
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
import { useMemo, Children, useEffect, useState, type PropsWithChildren } from 'react';
|
|
54
|
+
import { buildFilterComponents, getComponentFromRegistry } from '@pega/sdk-react';
|
|
55
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
56
|
+
|
|
57
|
+
interface InlineDashboardPageProps extends PConnProps {
|
|
58
|
+
title: string;
|
|
59
|
+
icon?: string;
|
|
60
|
+
filterPosition?: string;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export default function InlineDashboardPage(props: PropsWithChildren<InlineDashboardPageProps>) {
|
|
64
|
+
const InlineDashboard = getComponentFromRegistry('InlineDashboard');
|
|
65
|
+
const { children, getPConnect, filterPosition = 'block-start' } = props;
|
|
66
|
+
const [filterComponents, setFilterComponents] = useState([]);
|
|
67
|
+
const childArray = useMemo(() => Children.toArray(children), [children]);
|
|
68
|
+
|
|
69
|
+
// 1. Build filter components from metadata on mount
|
|
70
|
+
const allFilters = (getPConnect().getRawMetadata() as any).children[1];
|
|
71
|
+
useEffect(() => {
|
|
72
|
+
setFilterComponents(buildFilterComponents(getPConnect, allFilters));
|
|
73
|
+
}, []);
|
|
74
|
+
|
|
75
|
+
// 2. Assemble props for InlineDashboard
|
|
76
|
+
const inlineProps = { ...props };
|
|
77
|
+
inlineProps.children = [];
|
|
78
|
+
inlineProps.children[0] = childArray[0]; // main content
|
|
79
|
+
inlineProps.children[1] = filterComponents; // built filters
|
|
80
|
+
|
|
81
|
+
// 3. Delegate to InlineDashboard
|
|
82
|
+
return <InlineDashboard {...inlineProps} />;
|
|
83
|
+
}
|
|
84
|
+
```
|
|
34
85
|
|
|
35
86
|
## Behavioral Contract
|
|
36
87
|
|
|
@@ -47,13 +98,9 @@ In `useEffect([])` (on mount):
|
|
|
47
98
|
### Render
|
|
48
99
|
|
|
49
100
|
```tsx
|
|
50
|
-
<InlineDashboard
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
getPConnect={getPConnect}
|
|
54
|
-
>
|
|
55
|
-
{children[0]} {/* main content */}
|
|
56
|
-
{filterComponents} {/* built filter components */}
|
|
101
|
+
<InlineDashboard title={title} filterPosition={filterPosition} getPConnect={getPConnect}>
|
|
102
|
+
{children[0]} {/* main content */}
|
|
103
|
+
{filterComponents} {/* built filter components */}
|
|
57
104
|
</InlineDashboard>
|
|
58
105
|
```
|
|
59
106
|
|
|
@@ -85,6 +132,7 @@ Listed design systems are examples only.
|
|
|
85
132
|
This component is a thin orchestration layer. All visual implementation is in `InlineDashboard`. The only implementation detail is `buildFilterComponents` — which creates filter field components from metadata definitions.
|
|
86
133
|
|
|
87
134
|
When implementing in a specific design system:
|
|
135
|
+
|
|
88
136
|
- `buildFilterComponents` must create proper PConnect-backed filter field components
|
|
89
137
|
- If `promotedFilters` is empty, skip the filter panel entirely
|
|
90
138
|
- All layout and styling is delegated to `InlineDashboard`
|
|
@@ -1,8 +1,3 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Template component skill: ListPage
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: ListPage
|
|
7
2
|
|
|
8
3
|
List page template. Thin wrapper that renders `ListView` in standalone page mode (`bInForm: false`).
|
|
@@ -27,13 +22,31 @@ Renders a full-page list view by forwarding all props to `ListView` with `bInFor
|
|
|
27
22
|
|
|
28
23
|
All props are forwarded to `ListView`. Key props:
|
|
29
24
|
|
|
30
|
-
| Prop
|
|
31
|
-
|
|
32
|
-
| `dataPageName` | `string`
|
|
33
|
-
| `columns`
|
|
34
|
-
| `isSearchable` | `boolean`
|
|
35
|
-
| `payload`
|
|
36
|
-
| `getPConnect`
|
|
25
|
+
| Prop | Type | Required | Description |
|
|
26
|
+
| -------------- | ---------- | -------- | ------------------------------ |
|
|
27
|
+
| `dataPageName` | `string` | Yes | Data page to load records from |
|
|
28
|
+
| `columns` | `array` | No | Column definitions |
|
|
29
|
+
| `isSearchable` | `boolean` | No | Whether global search is shown |
|
|
30
|
+
| `payload` | `object` | No | Query payload |
|
|
31
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
32
|
+
|
|
33
|
+
## Component Skeleton
|
|
34
|
+
|
|
35
|
+
Simplest possible template — pure pass-through to `ListView` with one prop override.
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
39
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
40
|
+
|
|
41
|
+
interface ListPageProps extends PConnProps {
|
|
42
|
+
parameters: object;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
export default function ListPage(props: ListPageProps) {
|
|
46
|
+
const ListView = getComponentFromRegistry('ListView');
|
|
47
|
+
return <ListView {...props} bInForm={false} />;
|
|
48
|
+
}
|
|
49
|
+
```
|
|
37
50
|
|
|
38
51
|
## Behavioral Contract
|
|
39
52
|
|
|
@@ -46,6 +59,7 @@ That is the complete implementation. `bInForm: false` ensures ListView renders w
|
|
|
46
59
|
## Visual Specifications
|
|
47
60
|
|
|
48
61
|
Identical to `ListView` with `bInForm: false`:
|
|
62
|
+
|
|
49
63
|
- Full outer padding applied.
|
|
50
64
|
- Toolbar occupies full width.
|
|
51
65
|
- Table stretches to fill page width.
|
|
@@ -69,5 +83,6 @@ Listed design systems are examples only.
|
|
|
69
83
|
Implement identically to `ListView` — `ListPage` adds no new UI. The distinction is purely in the `bInForm` prop which controls spacing/chrome.
|
|
70
84
|
|
|
71
85
|
When implementing in a specific design system:
|
|
86
|
+
|
|
72
87
|
- `bInForm: false` signals that the list should have page-level layout (more padding, full-width toolbar)
|
|
73
88
|
- No additional logic beyond `ListView` is required
|
|
@@ -0,0 +1,419 @@
|
|
|
1
|
+
# Skill: ListView
|
|
2
|
+
|
|
3
|
+
Full-featured list view template. Renders a data table with sorting, pagination, global search, single/multi selection, column menu, and filter dialog.
|
|
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 — `referenceList` is a STRING, not an array**
|
|
10
|
+
>
|
|
11
|
+
> The `referenceList` prop is a **data page reference string** (e.g., `".D_pyMyWorkList.pxResults"`) — NOT an array of data rows. You MUST:
|
|
12
|
+
>
|
|
13
|
+
> 1. Check `typeof referenceList === 'string'` before using it
|
|
14
|
+
> 2. Call `PCore.getDataApiUtils().getData(referenceList, payload)` to fetch actual row data
|
|
15
|
+
> 3. Initialize row state as empty array: `useState<any[]>([])`
|
|
16
|
+
> 4. NEVER put `referenceList` directly into state or call `.filter()` on it
|
|
17
|
+
>
|
|
18
|
+
> ```typescript
|
|
19
|
+
> // ❌ WRONG — will crash with "rows.filter is not a function"
|
|
20
|
+
> const [rows, setRows] = useState(referenceList);
|
|
21
|
+
>
|
|
22
|
+
> // ✅ CORRECT — fetch data from the reference string
|
|
23
|
+
> const [rows, setRows] = useState<any[]>([]);
|
|
24
|
+
> useEffect(() => {
|
|
25
|
+
> if (Array.isArray(referenceList)) {
|
|
26
|
+
> setRows(referenceList);
|
|
27
|
+
> return;
|
|
28
|
+
> }
|
|
29
|
+
> const dataRef = typeof referenceList === 'string' ? referenceList : dataPageName;
|
|
30
|
+
> if (dataRef) {
|
|
31
|
+
> PCore.getDataApiUtils()
|
|
32
|
+
> .getData(dataRef, payload ?? {})
|
|
33
|
+
> .then((response) => setRows(response?.data?.data ?? response?.data?.pxResults ?? []))
|
|
34
|
+
> .catch(() => setRows([]));
|
|
35
|
+
> }
|
|
36
|
+
> }, [referenceList]);
|
|
37
|
+
> ```
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
> ⚠️ **CRITICAL — Column definitions MUST come from PConnect presets metadata**
|
|
42
|
+
>
|
|
43
|
+
> The table must render ONLY the columns configured in the Pega view metadata — NOT all fields from the raw data response. Raw responses contain 20+ internal fields (`pzInsKey`, `pxRefObjectClass`, `pyAssignmentStatus`, etc.) that should never be shown.
|
|
44
|
+
>
|
|
45
|
+
> **How to extract configured columns:**
|
|
46
|
+
>
|
|
47
|
+
> 1. Get column fields from presets: `getPConnect().getComponentConfig().presets[0].children[0].children`
|
|
48
|
+
> 2. Get field definitions (labels, types) from metadata: `PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, false)`
|
|
49
|
+
> 3. Map each preset column to its field definition to build `{id, label, type, displayAsLink}` headers
|
|
50
|
+
>
|
|
51
|
+
> ```typescript
|
|
52
|
+
> // ❌ WRONG — shows ALL raw data keys as columns (pzInsKey, pxRefObjectClass, etc.)
|
|
53
|
+
> const fields = Object.keys(rows[0]).map((key) => ({ id: key, label: key }));
|
|
54
|
+
>
|
|
55
|
+
> // ✅ CORRECT — extract configured columns from PConnect presets + metadata
|
|
56
|
+
> const componentConfig = getPConnect().getComponentConfig();
|
|
57
|
+
> const columnFields = componentConfig.presets[0].children[0].children;
|
|
58
|
+
> const metaResponse = await PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, false);
|
|
59
|
+
> const fieldDefs = metaResponse?.data?.fields ?? [];
|
|
60
|
+
>
|
|
61
|
+
> const columns = columnFields.map((field, index) => {
|
|
62
|
+
> let fieldId = field.config.value.substring(field.config.value.indexOf(' ') + 1);
|
|
63
|
+
> if (fieldId.startsWith('.')) fieldId = fieldId.substring(1);
|
|
64
|
+
> const { additionalDetails = {} } = field.config;
|
|
65
|
+
> const displayAsLink =
|
|
66
|
+
> additionalDetails.type === 'DISPLAY_LINK' || ('displayAsLink' in field.config && field.config.displayAsLink);
|
|
67
|
+
> return {
|
|
68
|
+
> id: fieldId,
|
|
69
|
+
> label: fieldDefs[index]?.label ?? field.config.label ?? fieldId,
|
|
70
|
+
> type: field.type,
|
|
71
|
+
> displayAsLink,
|
|
72
|
+
> classID: fieldDefs.find((f) => f.name === fieldId)?.classID,
|
|
73
|
+
> };
|
|
74
|
+
> });
|
|
75
|
+
> ```
|
|
76
|
+
>
|
|
77
|
+
> **Key points:**
|
|
78
|
+
>
|
|
79
|
+
> - `field.config.value` has format `"@P .pyID"` — strip annotation prefix to get field name
|
|
80
|
+
> - `fieldDefs[index].label` provides the localized display label
|
|
81
|
+
> - `displayAsLink` determines if the cell renders as a clickable navigation link
|
|
82
|
+
> - If `presets` is unavailable (fallback), use first ~6 fields from `fieldDefs` — NEVER use raw data keys
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
> ⚠️ **CRITICAL — Data fetching differs by `bInForm`**
|
|
87
|
+
>
|
|
88
|
+
> The data API to call depends on whether the ListView is inside a form or on a standalone page:
|
|
89
|
+
>
|
|
90
|
+
> ```typescript
|
|
91
|
+
> // Page-level (bInForm = false) — e.g., worklist landing page
|
|
92
|
+
> const result = await PCore.getDataApiUtils().getData(referenceList, payload ?? {});
|
|
93
|
+
> const rows = result?.data?.data ?? [];
|
|
94
|
+
>
|
|
95
|
+
> // Form-level (bInForm = true) — e.g., embedded list in a case form
|
|
96
|
+
> const context = getPConnect().getContextName();
|
|
97
|
+
> const result = await PCore.getDataPageUtils().getDataAsync(referenceList, context, parameters, null, query);
|
|
98
|
+
> const rows = result?.data ?? [];
|
|
99
|
+
> ```
|
|
100
|
+
>
|
|
101
|
+
> Using the wrong API will return empty data or fail silently.
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## Component Purpose
|
|
106
|
+
|
|
107
|
+
The primary data table component. Renders a sortable, paginated, filterable, and selectable table from a PConnect data source. Supports both standalone page use (`bInForm: false`) and embedded form use (`bInForm: true`). Columns are configurable, and the table supports row-level selection with callback.
|
|
108
|
+
|
|
109
|
+
## Pega Metadata
|
|
110
|
+
|
|
111
|
+
- **Registration key:** `ListView` (in `component-map.ts`)
|
|
112
|
+
- **Category:** Data display template
|
|
113
|
+
- **Extends:** `PConnProps`
|
|
114
|
+
|
|
115
|
+
## Props
|
|
116
|
+
|
|
117
|
+
| Prop | Type | Required | Description |
|
|
118
|
+
| ----------------------- | ---------- | -------- | ----------------------------------------------------------------------------- |
|
|
119
|
+
| `bInForm` | `boolean` | No | Whether rendered inside a form (affects toolbar and padding). Default `false` |
|
|
120
|
+
| `selectionMode` | `string` | No | `'single'` (radio) or `'multi'` (checkbox) or absent (no selection) |
|
|
121
|
+
| `dataPageName` | `string` | No | Name of data page to fetch records from |
|
|
122
|
+
| `referenceList` | `array` | No | In-memory data array (used when data is already available) |
|
|
123
|
+
| `compositeKeys` | `object` | No | Key fields for unique row identification |
|
|
124
|
+
| `columns` | `array` | No | Column definition objects `{ fieldName, label, sortable, filterable }` |
|
|
125
|
+
| `additionalTableConfig` | `object` | No | Extra config merged with column/sort/filter settings |
|
|
126
|
+
| `isSearchable` | `boolean` | No | Whether global search input is shown |
|
|
127
|
+
| `payload` | `object` | No | Query payload for data page requests |
|
|
128
|
+
| `getPConnect` | `function` | Yes | PConnect getter |
|
|
129
|
+
|
|
130
|
+
## Component Skeleton
|
|
131
|
+
|
|
132
|
+
> ⚠️ **CRITICAL — USE THE PROJECT'S DESIGN SYSTEM FOR TABLE RENDERING**
|
|
133
|
+
>
|
|
134
|
+
> This component MUST use the **installed design system's table components** — NOT plain HTML `<table>/<thead>/<tbody>`.
|
|
135
|
+
> Check `package.json` for the installed design system and use its table primitives:
|
|
136
|
+
>
|
|
137
|
+
> | If installed DS is... | Import from... | Table components |
|
|
138
|
+
> | --------------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------- |
|
|
139
|
+
> | `@carbon/react` | `@carbon/react` | `Table, TableHead, TableRow, TableHeader, TableBody, TableCell, TableContainer, TableToolbar, TableToolbarSearch, Pagination, Link` |
|
|
140
|
+
> | `@mui/material` | `@mui/material` | `Table, TableHead, TableRow, TableCell, TableBody, TableContainer, TablePagination, TableSortLabel, Link` |
|
|
141
|
+
> | `antd` | `antd` | `Table` (with `columns` + `dataSource` props, built-in pagination) |
|
|
142
|
+
> | `@chakra-ui/react` | `@chakra-ui/react` | `Table, Thead, Tbody, Tr, Th, Td, Link` + custom pagination |
|
|
143
|
+
> | None / CSS-only | N/A | Plain `<table>/<thead>/<tbody>` with CSS classes |
|
|
144
|
+
>
|
|
145
|
+
> **The table MUST look like a proper data grid** with:
|
|
146
|
+
>
|
|
147
|
+
> - Column headers with field labels (from PConnect presets metadata)
|
|
148
|
+
> - Paginated rows (not all rows at once)
|
|
149
|
+
> - Clickable link cells for navigation
|
|
150
|
+
> - Search toolbar (when `globalSearch !== false`)
|
|
151
|
+
>
|
|
152
|
+
> ❌ **NEVER** render raw `Object.values(row)` or dump all data keys as columns.
|
|
153
|
+
> ❌ **NEVER** use plain HTML when a design system is installed.
|
|
154
|
+
|
|
155
|
+
This is the largest template component. The implementation MUST include these critical sections:
|
|
156
|
+
|
|
157
|
+
```typescript
|
|
158
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
159
|
+
import type { PConnProps } from '@pega/sdk-react';
|
|
160
|
+
|
|
161
|
+
const AssignDashObjects = ['Assign-Worklist', 'Assign-WorkBasket'];
|
|
162
|
+
|
|
163
|
+
interface ListViewProps extends PConnProps {
|
|
164
|
+
bInForm?: boolean;
|
|
165
|
+
globalSearch?: boolean;
|
|
166
|
+
referenceList?: any;
|
|
167
|
+
selectionMode?: string;
|
|
168
|
+
referenceType?: string;
|
|
169
|
+
payload?: any;
|
|
170
|
+
parameters?: any;
|
|
171
|
+
compositeKeys?: any;
|
|
172
|
+
localeReference?: string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export default function ListView(props: ListViewProps) {
|
|
176
|
+
const { getPConnect, bInForm = true, globalSearch, referenceList, payload, parameters, localeReference } = props;
|
|
177
|
+
|
|
178
|
+
const [arRows, setRows] = useState<any[]>([]);
|
|
179
|
+
const [arColumns, setColumns] = useState<any[]>([]);
|
|
180
|
+
const [page, setPage] = useState(1);
|
|
181
|
+
const [pageSize, setPageSize] = useState(10);
|
|
182
|
+
const [searchValue, setSearchValue] = useState('');
|
|
183
|
+
const [title, setTitle] = useState('');
|
|
184
|
+
|
|
185
|
+
const thePConn = getPConnect();
|
|
186
|
+
const componentConfig = thePConn.getComponentConfig();
|
|
187
|
+
const resolvedConfigProps: any = thePConn.getConfigProps();
|
|
188
|
+
|
|
189
|
+
// ═══════════════════════════════════════════════════════════════
|
|
190
|
+
// CRITICAL: Extract column definitions from PConnect presets
|
|
191
|
+
// ═══════════════════════════════════════════════════════════════
|
|
192
|
+
const getHeaderCells = useCallback((columnFields: any[], fieldDefs: any[]) => {
|
|
193
|
+
return columnFields.map((field: any, index: number) => {
|
|
194
|
+
let theField = field.config.value.substring(field.config.value.indexOf(' ') + 1);
|
|
195
|
+
if (theField.startsWith('.')) theField = theField.substring(1);
|
|
196
|
+
const colIndex = fieldDefs.findIndex((ele) => ele.name === theField);
|
|
197
|
+
const { additionalDetails = {} } = field.config;
|
|
198
|
+
let displayAsLink = additionalDetails.type === 'DISPLAY_LINK';
|
|
199
|
+
if (!displayAsLink) displayAsLink = 'displayAsLink' in field.config && field.config.displayAsLink;
|
|
200
|
+
return {
|
|
201
|
+
id: theField,
|
|
202
|
+
type: field.type,
|
|
203
|
+
displayAsLink,
|
|
204
|
+
label: fieldDefs[index]?.label ?? field.config.label ?? theField,
|
|
205
|
+
classID: colIndex > -1 ? fieldDefs[colIndex].classID : undefined,
|
|
206
|
+
isAssignmentLink: displayAsLink && AssignDashObjects.includes(fieldDefs[colIndex]?.classID),
|
|
207
|
+
};
|
|
208
|
+
});
|
|
209
|
+
}, []);
|
|
210
|
+
|
|
211
|
+
// ═══════════════════════════════════════════════════════════════
|
|
212
|
+
// CRITICAL: Fetch metadata + data in useEffect
|
|
213
|
+
// ═══════════════════════════════════════════════════════════════
|
|
214
|
+
useEffect(() => {
|
|
215
|
+
let isActive = true;
|
|
216
|
+
async function fetchData() {
|
|
217
|
+
// Step 1: Get field definitions from metadata API
|
|
218
|
+
const metaResponse: any = await PCore.getAnalyticsUtils().getDataViewMetadata(referenceList, false);
|
|
219
|
+
const fieldDefs = metaResponse?.data?.fields ?? [];
|
|
220
|
+
|
|
221
|
+
// Step 2: Get configured columns from presets
|
|
222
|
+
const columnFields = componentConfig?.presets?.[0]?.children?.[0]?.children ?? [];
|
|
223
|
+
if (columnFields.length) {
|
|
224
|
+
const myColumns = getHeaderCells(columnFields, fieldDefs);
|
|
225
|
+
myColumns.forEach((col) => {
|
|
226
|
+
if (localeReference) col.label = PCore.getLocaleUtils().getLocaleValue(col.label, localeReference);
|
|
227
|
+
});
|
|
228
|
+
if (isActive) setColumns(myColumns);
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
// Step 3: Fetch data — API differs by bInForm
|
|
232
|
+
let dataResult: any;
|
|
233
|
+
if (!bInForm) {
|
|
234
|
+
dataResult = await PCore.getDataApiUtils().getData(referenceList, payload ?? {});
|
|
235
|
+
} else {
|
|
236
|
+
const context = thePConn.getContextName();
|
|
237
|
+
dataResult = await (PCore.getDataPageUtils() as any).getDataAsync(
|
|
238
|
+
referenceList,
|
|
239
|
+
context,
|
|
240
|
+
parameters,
|
|
241
|
+
null,
|
|
242
|
+
null,
|
|
243
|
+
);
|
|
244
|
+
}
|
|
245
|
+
const tableData = !bInForm ? (dataResult?.data?.data ?? []) : (dataResult?.data ?? []);
|
|
246
|
+
if (isActive) setRows(Array.isArray(tableData) ? tableData : []);
|
|
247
|
+
}
|
|
248
|
+
fetchData();
|
|
249
|
+
return () => {
|
|
250
|
+
isActive = false;
|
|
251
|
+
};
|
|
252
|
+
}, [referenceList, bInForm, payload, parameters]);
|
|
253
|
+
|
|
254
|
+
// ═══════════════════════════════════════════════════════════════
|
|
255
|
+
// CRITICAL: Link click handlers for navigation
|
|
256
|
+
// ═══════════════════════════════════════════════════════════════
|
|
257
|
+
function handleLinkClick(row: any, column: any) {
|
|
258
|
+
if (column.isAssignmentLink) {
|
|
259
|
+
const { pxRefObjectClass, pzInsKey } = row;
|
|
260
|
+
thePConn.getActionsApi().openAssignment(pzInsKey, pxRefObjectClass, {
|
|
261
|
+
containerName: thePConn.getContainerName(),
|
|
262
|
+
channelName: '',
|
|
263
|
+
});
|
|
264
|
+
} else {
|
|
265
|
+
const pxRefObjectKey = row.pxRefObjectKey ?? row.pzInsKey;
|
|
266
|
+
const pxRefObjectClass = row.pxRefObjectClass ?? row.pxObjClass;
|
|
267
|
+
if (pxRefObjectClass && pxRefObjectKey) {
|
|
268
|
+
thePConn.getActionsApi().openWorkByHandle(pxRefObjectKey, pxRefObjectClass);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
// Search, pagination, sort, selection, render...
|
|
274
|
+
}
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
> **Note:** This skeleton shows the MANDATORY patterns. Full implementations will also include sorting, selection, filter dialog, column menus, and PubSub subscriptions for dashboard filters. But the three critical sections above (column extraction, data fetching, link handling) MUST be present for the table to render correctly.
|
|
278
|
+
|
|
279
|
+
## Behavioral Contract
|
|
280
|
+
|
|
281
|
+
### Initialization
|
|
282
|
+
|
|
283
|
+
`useInit(getPConnect, columns, dataPageName, payload)` hook:
|
|
284
|
+
|
|
285
|
+
1. Calls `initializeColumns(getPConnect, columns)` to build `configFields`.
|
|
286
|
+
2. Calls `buildFieldsForTable(configFields)` to produce display column definitions.
|
|
287
|
+
3. Calls `getConfigFields(configFields)` for sort/filter metadata.
|
|
288
|
+
4. Fetches initial data via `PCore.getDataApiUtils().getDataAsync(dataPageName, payload)`.
|
|
289
|
+
5. Returns `{ tableDataRows, configFields, totalCount }`.
|
|
290
|
+
|
|
291
|
+
### Sorting
|
|
292
|
+
|
|
293
|
+
- `<TableSortLabel>` in each sortable column header.
|
|
294
|
+
- On click: call `PCore.getDataApiUtils().getDataAsync(dataPageName, { ...payload, sortBy, sortOrder })`.
|
|
295
|
+
- `sortBy` = column field name, `sortOrder` = `'ASC'` or `'DESC'`.
|
|
296
|
+
|
|
297
|
+
### Pagination
|
|
298
|
+
|
|
299
|
+
- `<TablePagination>` component below the table.
|
|
300
|
+
- `rowsPerPageOptions`: `[5, 10, 25]`.
|
|
301
|
+
- On page/rows change: re-fetch with `startIndex` and `maxResults` params.
|
|
302
|
+
|
|
303
|
+
### Global Search
|
|
304
|
+
|
|
305
|
+
- Shown when `isSearchable === true`.
|
|
306
|
+
- `<TextField>` input above the table (toolbar area).
|
|
307
|
+
- On submit/debounce: re-fetch with `searchText` param.
|
|
308
|
+
|
|
309
|
+
### Selection
|
|
310
|
+
|
|
311
|
+
| `selectionMode` | Control per row | Callback |
|
|
312
|
+
| --------------- | --------------- | ---------------------------- |
|
|
313
|
+
| `'single'` | `<Radio>` | `onRowSelect(rowData)` |
|
|
314
|
+
| `'multi'` | `<Checkbox>` | `onRowsSelect(selectedRows)` |
|
|
315
|
+
| absent | None | None |
|
|
316
|
+
|
|
317
|
+
- Select-all checkbox in the header for multi-selection.
|
|
318
|
+
- Selected rows highlighted with `selected` row class.
|
|
319
|
+
|
|
320
|
+
### Column Menu
|
|
321
|
+
|
|
322
|
+
- `<MoreVertIcon>` button in each column header.
|
|
323
|
+
- Opens `<Menu>` with options: Show/Hide column, Pin column.
|
|
324
|
+
- Column visibility stored in local state `columnVisibility`.
|
|
325
|
+
|
|
326
|
+
### Filter Dialog
|
|
327
|
+
|
|
328
|
+
- Filter icon in toolbar or column header.
|
|
329
|
+
- Opens `<Dialog>` with filter form fields for each filterable column.
|
|
330
|
+
- On apply: re-fetch with filter params.
|
|
331
|
+
- `filterData(filters, configFields)` formats filter objects for the API.
|
|
332
|
+
|
|
333
|
+
### Link Rendering (Navigation)
|
|
334
|
+
|
|
335
|
+
Columns configured with `displayAsLink: true` (or `additionalDetails.type === 'DISPLAY_LINK'`) render as clickable links that navigate to assignments or work items.
|
|
336
|
+
|
|
337
|
+
**Detection logic:**
|
|
338
|
+
|
|
339
|
+
```typescript
|
|
340
|
+
const AssignDashObjects = ['Assign-Worklist', 'Assign-WorkBasket'];
|
|
341
|
+
|
|
342
|
+
// A column is a link if:
|
|
343
|
+
const isLink = column.displayAsLink;
|
|
344
|
+
|
|
345
|
+
// It's an assignment link if its classID is a worklist/workbasket class:
|
|
346
|
+
const isAssignmentLink = AssignDashObjects.includes(column.classID);
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
**Click handling:**
|
|
350
|
+
|
|
351
|
+
| Link type | API call | Parameters |
|
|
352
|
+
| --------------- | --------------------------------------------------------------------- | ---------------------------------------------- |
|
|
353
|
+
| Assignment link | `getActionsApi().openAssignment(pzInsKey, pxRefObjectClass, options)` | `options = { containerName, channelName: '' }` |
|
|
354
|
+
| Work item link | `getActionsApi().openWorkByHandle(pxRefObjectKey, pxRefObjectClass)` | — |
|
|
355
|
+
|
|
356
|
+
**Legacy column IDs** that also render as links (even without `displayAsLink`):
|
|
357
|
+
|
|
358
|
+
- `pxTaskLabel` → opens assignment (if `pxRefObjectClass` + `pzInsKey` exist on the row)
|
|
359
|
+
- `pxRefObjectInsName` → opens work item (if `pxRefObjectClass` + `pxRefObjectKey` exist)
|
|
360
|
+
|
|
361
|
+
### Snackbar Toast
|
|
362
|
+
|
|
363
|
+
- Shown on fetch errors or action feedback.
|
|
364
|
+
- Auto-hides after 3000ms.
|
|
365
|
+
|
|
366
|
+
## Visual Specifications
|
|
367
|
+
|
|
368
|
+
| Element | Description |
|
|
369
|
+
| -------------- | -------------------------------------------------------- |
|
|
370
|
+
| Toolbar | Search input + filter button + (optional) action buttons |
|
|
371
|
+
| Table head | Sticky header with sort labels and column menu |
|
|
372
|
+
| Table body | Striped rows, hover state, selected state |
|
|
373
|
+
| Pagination bar | Below table, page size selector + page nav |
|
|
374
|
+
|
|
375
|
+
**CSS-only implementation notes:**
|
|
376
|
+
|
|
377
|
+
- Table container: `overflow-x: auto`.
|
|
378
|
+
- Header row: `background: var(--table-header-bg); font-weight: 600`.
|
|
379
|
+
- Selected row: `background: var(--selection-highlight-bg)`.
|
|
380
|
+
- Hover row: `background: var(--hover-bg)`.
|
|
381
|
+
- Sticky header: `position: sticky; top: 0; z-index: 1`.
|
|
382
|
+
|
|
383
|
+
## Edge Cases & Special Logic
|
|
384
|
+
|
|
385
|
+
- `bInForm: true` — remove outer padding, hide some toolbar elements.
|
|
386
|
+
- Empty result set — show empty state message `"No records found"`.
|
|
387
|
+
- `compositeKeys` — used for unique row key generation when no single ID field exists.
|
|
388
|
+
- Column visibility changes are local state only — not persisted by default.
|
|
389
|
+
- Large datasets — pagination is mandatory; do not load all rows at once.
|
|
390
|
+
|
|
391
|
+
## Dependencies
|
|
392
|
+
|
|
393
|
+
- `useInit`, `filterData`, `buildFieldsForTable`, `getConfigFields`, `initializeColumns` from `./utils`
|
|
394
|
+
- `PCore.getDataApiUtils().getDataAsync()` — data fetching
|
|
395
|
+
- MUI: `<Table>`, `<TableHead>`, `<TableBody>`, `<TableRow>`, `<TableCell>`, `<TableSortLabel>`, `<TablePagination>`, `<Checkbox>`, `<Radio>`, `<Dialog>`, `<TextField>`, `<Menu>`, `<MenuItem>`, `<Snackbar>`
|
|
396
|
+
|
|
397
|
+
## Design System Mapping
|
|
398
|
+
|
|
399
|
+
**UI control type:** Full-featured data table with sorting, pagination, search, selection, and filtering.
|
|
400
|
+
|
|
401
|
+
Listed design systems are examples only.
|
|
402
|
+
|
|
403
|
+
| Design System | Table | Pagination | Dialog | Search | Link |
|
|
404
|
+
| ------------------ | -------------------------------------------------------------------------------------- | -------------------------- | ------------------ | ---------------- | ------------------- |
|
|
405
|
+
| Default (CSS only) | `<table>/<thead>/<tbody>` | Custom pagination controls | `<dialog>` element | `<input>` | `<a>` |
|
|
406
|
+
| MUI | `<Table>` + sub-components | `<TablePagination>` | `<Dialog>` | `<TextField>` | `<Link>` |
|
|
407
|
+
| Carbon | `<DataTable>` + `<Table>/<TableHead>/<TableBody>/<TableRow>/<TableCell>/<TableHeader>` | `<Pagination>` | `<Modal>` | `<Search>` | `<Link>` |
|
|
408
|
+
| Ant Design | `<Table>` | Built-in pagination prop | `<Modal>` | `<Input.Search>` | `<Typography.Link>` |
|
|
409
|
+
| Chakra UI | `<Table>` | Custom or `react-table` | `<Modal>` | `<Input>` | `<Link>` |
|
|
410
|
+
| Shadcn/ui | `<Table>` + TanStack Table | Custom pagination | `<Dialog>` | `<Input>` | `<a>` |
|
|
411
|
+
|
|
412
|
+
When implementing in a specific design system:
|
|
413
|
+
|
|
414
|
+
- **ALWAYS check `package.json`** to identify the installed design system BEFORE writing any render code
|
|
415
|
+
- Import and use the DS's table/pagination/search/link components — do NOT fall back to plain HTML
|
|
416
|
+
- If the DS provides a `DataTable` wrapper (e.g., Carbon), use it for built-in toolbar/search integration
|
|
417
|
+
- `bInForm` prop affects layout — tighten spacing and remove outer chrome when `true`
|
|
418
|
+
- Sorting, pagination, and search all trigger data re-fetches — do not filter client-side for server-paged data
|
|
419
|
+
- Selection mode (`single`/`multi`) requires different controls and callbacks
|