@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: Field component skill: Group
|
|
3
|
-
alwaysApply: false
|
|
4
|
-
---
|
|
5
|
-
|
|
6
1
|
# Skill: Group
|
|
7
2
|
|
|
8
3
|
Field group container that wraps child fields in a collapsible section with an optional heading and instructions.
|
|
@@ -23,17 +18,68 @@ A layout/structural component (not a form input). Wraps a set of child field com
|
|
|
23
18
|
|
|
24
19
|
## Props (component-specific)
|
|
25
20
|
|
|
26
|
-
| Prop
|
|
27
|
-
|
|
28
|
-
| `children`
|
|
29
|
-
| `heading`
|
|
30
|
-
| `showHeading`
|
|
31
|
-
| `instructions` | `string` (optional) | Instructional text shown below the heading
|
|
32
|
-
| `collapsible`
|
|
33
|
-
| `type`
|
|
21
|
+
| Prop | Type | Description |
|
|
22
|
+
| -------------- | ------------------- | ------------------------------------------------- |
|
|
23
|
+
| `children` | `ReactElement[]` | Child field components to render inside the group |
|
|
24
|
+
| `heading` | `string` | The group heading/title |
|
|
25
|
+
| `showHeading` | `boolean` | Whether to display the heading |
|
|
26
|
+
| `instructions` | `string` (optional) | Instructional text shown below the heading |
|
|
27
|
+
| `collapsible` | `boolean` | Whether the group can be collapsed |
|
|
28
|
+
| `type` | `string` | Group type (used for layout context) |
|
|
34
29
|
|
|
35
30
|
`displayMode` is also consumed from `PConnFieldProps`.
|
|
36
31
|
|
|
32
|
+
## Component Skeleton
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import { type ReactElement, useMemo } from 'react';
|
|
36
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
37
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
38
|
+
|
|
39
|
+
interface GroupProps extends PConnFieldProps {
|
|
40
|
+
children: ReactElement[];
|
|
41
|
+
heading: string;
|
|
42
|
+
showHeading: boolean;
|
|
43
|
+
instructions?: string;
|
|
44
|
+
collapsible: boolean;
|
|
45
|
+
type: string;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export default function Group(props: GroupProps) {
|
|
49
|
+
// 1. Registry lookup
|
|
50
|
+
const FieldGroup = getComponentFromRegistry('FieldGroup');
|
|
51
|
+
|
|
52
|
+
// 2. Destructure props
|
|
53
|
+
const { children, heading, showHeading, instructions, collapsible, displayMode, type } = props;
|
|
54
|
+
|
|
55
|
+
// 3. Derived flag
|
|
56
|
+
const isReadOnly = displayMode === 'DISPLAY_ONLY';
|
|
57
|
+
|
|
58
|
+
// 4. Memoized content grid — deps: [children, type, isReadOnly]
|
|
59
|
+
const content = useMemo(() => (
|
|
60
|
+
<GridContainer spacing={2}>
|
|
61
|
+
{children?.map(child => (
|
|
62
|
+
<GridItem fullWidth key={child.key}>{child}</GridItem>
|
|
63
|
+
))}
|
|
64
|
+
</GridContainer>
|
|
65
|
+
), [children, type, isReadOnly]);
|
|
66
|
+
|
|
67
|
+
// 5. Null guard
|
|
68
|
+
if (!children) return null;
|
|
69
|
+
|
|
70
|
+
// 6. Return FieldGroup wrapper
|
|
71
|
+
return (
|
|
72
|
+
<FieldGroup
|
|
73
|
+
name={showHeading ? heading : undefined}
|
|
74
|
+
collapsible={collapsible}
|
|
75
|
+
instructions={instructions}
|
|
76
|
+
>
|
|
77
|
+
{content}
|
|
78
|
+
</FieldGroup>
|
|
79
|
+
);
|
|
80
|
+
}
|
|
81
|
+
```
|
|
82
|
+
|
|
37
83
|
## Behavioral Contract
|
|
38
84
|
|
|
39
85
|
1. **No state, no event handling** — purely structural/layout.
|
|
@@ -59,11 +105,17 @@ Grid container (spacing=2):
|
|
|
59
105
|
```
|
|
60
106
|
|
|
61
107
|
**CSS-only grid layout:**
|
|
108
|
+
|
|
62
109
|
```css
|
|
63
|
-
.field-group-children {
|
|
110
|
+
.field-group-children {
|
|
111
|
+
display: grid;
|
|
112
|
+
grid-template-columns: 1fr;
|
|
113
|
+
gap: 16px;
|
|
114
|
+
}
|
|
64
115
|
```
|
|
65
116
|
|
|
66
117
|
The `FieldGroup` component itself provides:
|
|
118
|
+
|
|
67
119
|
- Optional heading/title above the children
|
|
68
120
|
- Optional collapse/expand control
|
|
69
121
|
- Optional instructions text
|
|
@@ -87,9 +139,9 @@ The `FieldGroup` component itself provides:
|
|
|
87
139
|
|
|
88
140
|
Listed design systems are examples only.
|
|
89
141
|
|
|
90
|
-
| Design System
|
|
91
|
-
|
|
92
|
-
| Default (CSS only) | `<fieldset>` or `<details>/<summary>` for collapsible
|
|
93
|
-
| MUI
|
|
94
|
-
| Ant Design
|
|
95
|
-
| Chakra UI
|
|
142
|
+
| Design System | Recommended Component |
|
|
143
|
+
| ------------------ | ------------------------------------------------------------------------ |
|
|
144
|
+
| Default (CSS only) | `<fieldset>` or `<details>/<summary>` for collapsible |
|
|
145
|
+
| MUI | `<Grid container spacing={2}>` with `<Grid size={{ xs: 12 }}>` per child |
|
|
146
|
+
| Ant Design | `<Collapse>` panel or `<Card>` |
|
|
147
|
+
| Chakra UI | `<Box>` or `<Accordion>` |
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
# Skill: Integer
|
|
2
|
+
|
|
3
|
+
Integer-only text input that filters out decimal separators, binds to a Pega case property.
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, props interface, display modes, event handling, and registration patterns common to ALL field components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a single-line text input restricted to integer values. Actively filters out decimal (`.`) and thousands separator (`,`) characters as the user types, mimicking Pega's native integer field behavior. Delegates read-only rendering to `TextInput`.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `Integer`
|
|
16
|
+
- **Type / Subtype:** `Field` / `Integer`
|
|
17
|
+
- **Registration key:** `Integer` (in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
No props beyond `PConnFieldProps`. Import type as:
|
|
22
|
+
|
|
23
|
+
```typescript
|
|
24
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Component Skeleton
|
|
28
|
+
|
|
29
|
+
Follow this exact structure. The key differentiator from TextInput is the character filtering in `onChange`.
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
import { useEffect, useState } from 'react';
|
|
33
|
+
import handleEvent from '../../helpers/event-utils';
|
|
34
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
35
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
36
|
+
|
|
37
|
+
interface IntegerProps extends PConnFieldProps {}
|
|
38
|
+
|
|
39
|
+
export default function Integer(props: IntegerProps) {
|
|
40
|
+
// 1. Registry lookups
|
|
41
|
+
const TextInput = getComponentFromRegistry('TextInput');
|
|
42
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
43
|
+
|
|
44
|
+
// 2. Destructure props
|
|
45
|
+
const {
|
|
46
|
+
getPConnect, label, required, disabled, value = '',
|
|
47
|
+
validatemessage, status, readOnly, testId,
|
|
48
|
+
helperText, displayMode, hideLabel, placeholder,
|
|
49
|
+
} = props;
|
|
50
|
+
|
|
51
|
+
// 3. PConnect setup
|
|
52
|
+
const pConn = getPConnect();
|
|
53
|
+
const actions = pConn.getActionsApi();
|
|
54
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
55
|
+
const helperTextToDisplay = validatemessage || helperText;
|
|
56
|
+
|
|
57
|
+
// 4. State
|
|
58
|
+
const [inputValue, setInputValue] = useState('');
|
|
59
|
+
|
|
60
|
+
// 5. useEffect: sync from store — deps: [value]
|
|
61
|
+
useEffect(() => { setInputValue(value); }, [value]);
|
|
62
|
+
|
|
63
|
+
// 6. Display mode returns
|
|
64
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
65
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} />;
|
|
66
|
+
}
|
|
67
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
68
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} variant="stacked" />;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
// 7. Read-only return
|
|
72
|
+
if (readOnly) {
|
|
73
|
+
return <TextInput {...props} />;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
// 8. Test ID
|
|
77
|
+
const testProps: any = { 'data-test-id': testId };
|
|
78
|
+
|
|
79
|
+
// 9. onChange with character filtering
|
|
80
|
+
function intOnChange(event) {
|
|
81
|
+
const disallowedChars = ['.', ','];
|
|
82
|
+
const theAttemptedValue = event.target.value;
|
|
83
|
+
const lastChar = theAttemptedValue.slice(-1);
|
|
84
|
+
if (disallowedChars.includes(lastChar)) {
|
|
85
|
+
event.target.value = theAttemptedValue.slice(0, -1);
|
|
86
|
+
}
|
|
87
|
+
setInputValue(event.target.value);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// 10. onBlur — commit to store
|
|
91
|
+
function handleBlur() {
|
|
92
|
+
handleEvent(actions, 'changeNblur', propName, inputValue);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
// 11. Main render — text input (type='text', NOT 'number')
|
|
96
|
+
// Key props:
|
|
97
|
+
// - fullWidth, variant: 'outlined', size: 'small'
|
|
98
|
+
// - type: 'text' (NOT 'number')
|
|
99
|
+
// - value: inputValue, onChange: intOnChange
|
|
100
|
+
// - onBlur: !readOnly ? handleBlur : undefined
|
|
101
|
+
// - label, helperText: helperTextToDisplay, placeholder: placeholder ?? ''
|
|
102
|
+
// - required, disabled, error: status === 'error'
|
|
103
|
+
// - htmlInput: { inputMode: 'numeric', pattern: '[0-9]*', ...testProps }
|
|
104
|
+
return <TextFieldWidget ... />;
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Behavioral Contract
|
|
109
|
+
|
|
110
|
+
1. **Local state:** Maintain `inputValue` (string). Initialize from `value` prop (`''` default).
|
|
111
|
+
2. **Sync from store:** `useEffect` watching `value` → `setInputValue(value)`.
|
|
112
|
+
3. **On change (character filtering):** Before updating local state, inspect the last character typed:
|
|
113
|
+
- If the last character is `.` or `,`, strip it from the value: `event.target.value = theAttemptedValue.slice(0, -1)`.
|
|
114
|
+
- Then update local state with the sanitized value.
|
|
115
|
+
- This "eating" of separator characters replicates Pega's native integer field behavior.
|
|
116
|
+
4. **Input mode:** Set `inputMode='numeric'` and `pattern='[0-9]*'` on the input element for mobile keyboards.
|
|
117
|
+
5. **Input type:** Use `type='text'` (NOT `type='number'`) — this avoids browser-specific number input quirks.
|
|
118
|
+
6. **On blur:** Commit via `handleEvent(actions, 'changeNblur', propName, inputValue)`.
|
|
119
|
+
7. **Read-only:** Delegate to `TextInput`: `return <TextInput {...props} />`.
|
|
120
|
+
|
|
121
|
+
## Display Mode Rendering
|
|
122
|
+
|
|
123
|
+
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={value} />`.
|
|
124
|
+
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />`.
|
|
125
|
+
|
|
126
|
+
## Read-Only Rendering
|
|
127
|
+
|
|
128
|
+
Delegate to `TextInput`: `return <TextInput {...props} />`.
|
|
129
|
+
|
|
130
|
+
## Visual Specifications
|
|
131
|
+
|
|
132
|
+
Identical to `TextInput` visually:
|
|
133
|
+
|
|
134
|
+
| Property | Value |
|
|
135
|
+
| ------------- | -------------------------------------------- |
|
|
136
|
+
| Width | 100% |
|
|
137
|
+
| Size | Small (~40px height) |
|
|
138
|
+
| Variant | Outlined |
|
|
139
|
+
| Border | 1px solid |
|
|
140
|
+
| Border radius | 4px |
|
|
141
|
+
| Error state | Red border + red helper text |
|
|
142
|
+
| Input mode | `numeric` (shows numeric keyboard on mobile) |
|
|
143
|
+
| Pattern | `[0-9]*` |
|
|
144
|
+
|
|
145
|
+
## Edge Cases & Special Logic
|
|
146
|
+
|
|
147
|
+
- **Character filtering is inline** — do NOT use `type='number'` as it introduces inconsistent behavior across browsers (e.g., accepts `e`, `+`, `-` by default).
|
|
148
|
+
- The disallowed characters array is `['.', ',']` — both decimal point and thousands separator are rejected.
|
|
149
|
+
- Strip only the LAST character if it is disallowed — do not strip from anywhere else in the string (user may paste a valid integer that is then validated by blur).
|
|
150
|
+
- `onBlur` is omitted when `readOnly`.
|
|
151
|
+
|
|
152
|
+
## Dependencies
|
|
153
|
+
|
|
154
|
+
- `handleEvent` from `../../helpers/event-utils`
|
|
155
|
+
- `getComponentFromRegistry('TextInput')` — for read-only delegation
|
|
156
|
+
- `getComponentFromRegistry('FieldValueList')` — for display modes
|
|
157
|
+
|
|
158
|
+
## Design System Mapping
|
|
159
|
+
|
|
160
|
+
**UI control type:** Numeric text input (integer-only) — use `<input type="text" inputmode="numeric" pattern="[0-9]*">`.
|
|
161
|
+
|
|
162
|
+
Listed design systems are examples only.
|
|
163
|
+
|
|
164
|
+
| Design System | Recommended Component |
|
|
165
|
+
| ------------------ | -------------------------------------------------------------------------------------------------- |
|
|
166
|
+
| Default (CSS only) | `<input type="text" inputMode="numeric" pattern="[0-9]*">` |
|
|
167
|
+
| MUI | `<TextField type='text' slotProps={{ htmlInput: { inputMode: 'numeric', pattern: '[0-9]*' } }} />` |
|
|
168
|
+
| Ant Design | `<InputNumber precision={0} />` or `<Input />` with custom `onChange` filter |
|
|
169
|
+
| Chakra UI | `<NumberInput allowMouseWheel={false} />` or plain `<Input>` with filter |
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# Skill: Location
|
|
2
|
+
|
|
3
|
+
Location input with Google Maps Places autocomplete, interactive map display, and optional geolocation (current location).
|
|
4
|
+
|
|
5
|
+
> **Prerequisite skill:** [`field-components.md`](../field-components.md) — covers architecture, props interface, display modes, event handling, and registration patterns common to ALL field components.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Component Purpose
|
|
10
|
+
|
|
11
|
+
Renders a text input that integrates with Google Maps Places API for address/location autocomplete. Optionally shows an interactive map with a marker. Supports an `onlyCoordinates` mode that stores `"lat, lng"` instead of address text. Includes a "get current location" button using the browser geolocation API.
|
|
12
|
+
|
|
13
|
+
## Pega Metadata
|
|
14
|
+
|
|
15
|
+
- **Pega Name:** `Location`
|
|
16
|
+
- **Type / Subtype:** `Field` / `Text-Location`
|
|
17
|
+
- **Registration key:** `Location` (in `component-map.ts`)
|
|
18
|
+
|
|
19
|
+
## Props (component-specific)
|
|
20
|
+
|
|
21
|
+
| Prop | Type | Default | Description |
|
|
22
|
+
| ----------------- | -------------------- | ------- | ------------------------------------------------------------------------ |
|
|
23
|
+
| `coordinates` | `string` (optional) | `''` | Comma-separated lat/lng string (e.g., `'18.5204, 73.8567'`) |
|
|
24
|
+
| `onlyCoordinates` | `boolean` (optional) | `false` | If `true`, store and display lat/lng coordinates instead of address text |
|
|
25
|
+
| `showMap` | `boolean` (optional) | — | Show the interactive map in editable mode |
|
|
26
|
+
| `showMapReadOnly` | `boolean` (optional) | — | Show the map in read-only mode |
|
|
27
|
+
|
|
28
|
+
## Component Skeleton
|
|
29
|
+
|
|
30
|
+
Follow this exact structure. This component is complex — integrates Google Maps API for places autocomplete, geolocation, and optional map display.
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
import { useEffect, useState, useCallback, useRef } from 'react';
|
|
34
|
+
import { getComponentFromRegistry } from '@pega/sdk-react';
|
|
35
|
+
import type { PConnFieldProps } from '@pega/sdk-react';
|
|
36
|
+
import handleEvent from '../../helpers/event-utils';
|
|
37
|
+
import './Location.css';
|
|
38
|
+
|
|
39
|
+
interface LocationProps extends PConnFieldProps {
|
|
40
|
+
coordinates?: string;
|
|
41
|
+
onlyCoordinates?: boolean;
|
|
42
|
+
showMap?: boolean;
|
|
43
|
+
showMapReadOnly?: boolean;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
const mapContainerStyle = { width: '100%', height: '300px', marginTop: '0px' };
|
|
47
|
+
const defaultCenter = { lat: 18.5204, lng: 73.8567 };
|
|
48
|
+
const disabledMapOptions = {
|
|
49
|
+
gestureHandling: 'none', keyboardShortcuts: false,
|
|
50
|
+
disableDefaultUI: true, clickableIcons: false,
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export default function Location(props: LocationProps) {
|
|
54
|
+
// 1. Registry lookups
|
|
55
|
+
const TextInput = getComponentFromRegistry('TextInput');
|
|
56
|
+
const FieldValueList = getComponentFromRegistry('FieldValueList');
|
|
57
|
+
|
|
58
|
+
// 2. Destructure props
|
|
59
|
+
const {
|
|
60
|
+
getPConnect, label, required = false, disabled = false, value = '',
|
|
61
|
+
validatemessage, status, readOnly = false, testId, displayMode,
|
|
62
|
+
hideLabel = false, placeholder, helperText,
|
|
63
|
+
coordinates = '', onlyCoordinates = false, showMap, showMapReadOnly,
|
|
64
|
+
} = props;
|
|
65
|
+
|
|
66
|
+
// 3. PConnect setup — note TWO property names
|
|
67
|
+
const pConn = getPConnect();
|
|
68
|
+
const actions = pConn.getActionsApi();
|
|
69
|
+
const propName = (pConn.getStateProps() as any).value;
|
|
70
|
+
const coordPropName = (pConn.getStateProps() as any).coordinates;
|
|
71
|
+
|
|
72
|
+
// 4. State
|
|
73
|
+
const [inputValue, setInputValue] = useState<string>(value ?? '');
|
|
74
|
+
const [mapCenter, setMapCenter] = useState(defaultCenter);
|
|
75
|
+
const [markerPosition, setMarkerPosition] = useState<{lat:number,lng:number} | null>(null);
|
|
76
|
+
|
|
77
|
+
// 5. Refs
|
|
78
|
+
const inputRef = useRef<HTMLInputElement | null>(null);
|
|
79
|
+
const autocompleteRef = useRef<google.maps.places.Autocomplete | null>(null);
|
|
80
|
+
|
|
81
|
+
// 6. Load Google Maps API
|
|
82
|
+
const { isLoaded } = useLoadScript({
|
|
83
|
+
googleMapsApiKey: pConn.getGoogleMapsAPIKey?.() || '',
|
|
84
|
+
libraries: ['places', 'geocoding'],
|
|
85
|
+
});
|
|
86
|
+
|
|
87
|
+
// 7. Error flag
|
|
88
|
+
const hasError = status === 'error' && !!validatemessage && !disabled;
|
|
89
|
+
|
|
90
|
+
// 8. useEffect: sync value + coordinates — deps: [value, coordinates, onlyCoordinates]
|
|
91
|
+
// → see Behavioral Contract #3
|
|
92
|
+
|
|
93
|
+
// 9. handleChange (manual text input) — useCallback
|
|
94
|
+
// Commits immediately, clears coordinates if input emptied
|
|
95
|
+
|
|
96
|
+
// 10. handlePlaceChanged — useCallback
|
|
97
|
+
// Reads place from autocompleteRef, extracts lat/lng,
|
|
98
|
+
// stores address or coordinates based on onlyCoordinates flag
|
|
99
|
+
|
|
100
|
+
// 11. useEffect: init Places Autocomplete — deps: [isLoaded, handlePlaceChanged]
|
|
101
|
+
// Guard: isLoaded && inputRef.current && !autocompleteRef.current
|
|
102
|
+
|
|
103
|
+
// 12. handleGetCurrentLocation — useCallback
|
|
104
|
+
// Uses navigator.geolocation.getCurrentPosition
|
|
105
|
+
// If onlyCoordinates: store coords directly
|
|
106
|
+
// Else: reverse geocode via google.maps.Geocoder
|
|
107
|
+
|
|
108
|
+
// 13. Display mode returns
|
|
109
|
+
if (displayMode === 'DISPLAY_ONLY') {
|
|
110
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} />;
|
|
111
|
+
}
|
|
112
|
+
if (displayMode === 'STACKED_LARGE_VAL') {
|
|
113
|
+
return <FieldValueList name={hideLabel ? '' : label} value={value} variant="stacked" />;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
// 14. Map element (shared between readOnly and editable)
|
|
117
|
+
// opacity: disabled ? 0.7 : 1, options: disabled ? disabledMapOptions : undefined
|
|
118
|
+
|
|
119
|
+
// 15. Read-only return
|
|
120
|
+
if (readOnly) {
|
|
121
|
+
return <div><TextInput {...props} />{isLoaded && showMapReadOnly && map}</div>;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// 16. Main render
|
|
125
|
+
// - Error alert ABOVE input if hasError
|
|
126
|
+
// - Guard: only render TextField when isLoaded
|
|
127
|
+
// - TextField with inputRef, endAdornment location icon button
|
|
128
|
+
// - Map below if isLoaded && showMap
|
|
129
|
+
return <div>...</div>;
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Behavioral Contract
|
|
134
|
+
|
|
135
|
+
1. **APIs required:**
|
|
136
|
+
- Google Maps JavaScript API with `places` and `geocoding` libraries
|
|
137
|
+
- API key obtained from `pConn.getGoogleMapsAPIKey?.() || ''`
|
|
138
|
+
2. **Local state:**
|
|
139
|
+
- `inputValue` (string): shown in the text input
|
|
140
|
+
- `mapCenter` (`{lat, lng}`): default `{ lat: 18.5204, lng: 73.8567 }` (Pune, India)
|
|
141
|
+
- `markerPosition` (`{lat, lng} | null`)
|
|
142
|
+
3. **Value sync:** `useEffect` watching `value`, `coordinates`, `onlyCoordinates`:
|
|
143
|
+
- If `onlyCoordinates && coordinates`: `setInputValue(coordinates)`
|
|
144
|
+
- Else: `setInputValue(value ?? '')`
|
|
145
|
+
- If `coordinates` exists: parse `lat, lng`, update `mapCenter` and `markerPosition`
|
|
146
|
+
4. **Places Autocomplete (init):** `useEffect` watching `isLoaded` — once Maps API loads and `inputRef.current` is set, attach `new google.maps.places.Autocomplete(inputRef.current)` and add `place_changed` listener.
|
|
147
|
+
5. **On place changed:**
|
|
148
|
+
- Get `place.geometry.location` → extract `lat`, `lng`
|
|
149
|
+
- If `onlyCoordinates`: `inputValue = "${lat}, ${lng}"`, commit this as the value AND update `coordinates` property
|
|
150
|
+
- Else: `inputValue = place.formatted_address`, commit address as value, update `coordinates` property separately: `actions.updateFieldValue(coordPropName, coordinateString)`
|
|
151
|
+
- Update `mapCenter` and `markerPosition`
|
|
152
|
+
6. **On text change (manual):**
|
|
153
|
+
- Update `inputValue` and commit immediately via `handleEvent(actions, 'changeNblur', propName, newValue)`
|
|
154
|
+
- If input cleared and `coordPropName` exists: `actions.updateFieldValue(coordPropName, '')`; `setMarkerPosition(null)`
|
|
155
|
+
7. **Get current location button:**
|
|
156
|
+
- Use `navigator.geolocation.getCurrentPosition()`
|
|
157
|
+
- If `onlyCoordinates`: store `"lat, lng"` as value and coordinates
|
|
158
|
+
- Else: reverse-geocode using `google.maps.Geocoder`, store address as value, `"lat, lng"` as coordinates
|
|
159
|
+
8. **Coordinate property name:** `coordPropName = (pConn.getStateProps() as any).coordinates` — separate from the main `propName`
|
|
160
|
+
9. **Error display:** If `status === 'error' && !!validatemessage && !disabled`, show an error alert ABOVE the input.
|
|
161
|
+
10. **Read-only:** Delegate text to `TextInput`, optionally show map if `showMapReadOnly`.
|
|
162
|
+
|
|
163
|
+
### Map configuration (disabled state)
|
|
164
|
+
|
|
165
|
+
When `disabled`, map options disable all interactions:
|
|
166
|
+
|
|
167
|
+
- `gestureHandling: 'none'`, `keyboardShortcuts: false`, `disableDefaultUI: true`, `clickableIcons: false`
|
|
168
|
+
- Map opacity: `0.7` when disabled
|
|
169
|
+
|
|
170
|
+
### CSS for Google Maps autocomplete dropdown z-index:
|
|
171
|
+
|
|
172
|
+
```css
|
|
173
|
+
/* Location.css */
|
|
174
|
+
.pac-container {
|
|
175
|
+
z-index: 2147483647;
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
## Display Mode Rendering
|
|
180
|
+
|
|
181
|
+
- **`DISPLAY_ONLY`:** `<FieldValueList name={hideLabel ? '' : label} value={value} />` — raw address/coordinates string.
|
|
182
|
+
- **`STACKED_LARGE_VAL`:** `<FieldValueList name={hideLabel ? '' : label} value={value} variant='stacked' />`.
|
|
183
|
+
|
|
184
|
+
## Read-Only Rendering
|
|
185
|
+
|
|
186
|
+
```
|
|
187
|
+
<div>
|
|
188
|
+
<TextInput {...props} />
|
|
189
|
+
{isLoaded && showMapReadOnly && <GoogleMap ... />}
|
|
190
|
+
</div>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Visual Specifications
|
|
194
|
+
|
|
195
|
+
| Property | Value |
|
|
196
|
+
| -------------------- | -------------------------------------------------- |
|
|
197
|
+
| Width | 100% |
|
|
198
|
+
| Input variant | Default (outlined, from `TextField`) |
|
|
199
|
+
| Trailing icon | Location pin icon button (for current location) |
|
|
200
|
+
| Error alert | Alert banner ABOVE the input field when `hasError` |
|
|
201
|
+
| Map container | `width: 100%`, `height: 300px`, `marginTop: 0px` |
|
|
202
|
+
| Map render | Only shown when `isLoaded && (showMap | | showMapReadOnly)` |
|
|
203
|
+
| Disabled map opacity | `0.7` |
|
|
204
|
+
|
|
205
|
+
**CSS companion file required:** `Location.css` with:
|
|
206
|
+
|
|
207
|
+
```css
|
|
208
|
+
.pac-container {
|
|
209
|
+
z-index: 2147483647;
|
|
210
|
+
}
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
This ensures the Google Maps autocomplete dropdown appears above modal/dialog overlays.
|
|
214
|
+
|
|
215
|
+
**CSS-only implementation notes:**
|
|
216
|
+
|
|
217
|
+
- Location pin button: `<button>` with `position: absolute; right: 8px; top: 50%; transform: translateY(-50%);`
|
|
218
|
+
|
|
219
|
+
## Edge Cases & Special Logic
|
|
220
|
+
|
|
221
|
+
- **`isLoaded` guard:** Only render the `TextField` and map after Google Maps API is fully loaded.
|
|
222
|
+
- **`onlyCoordinates` mode:** The stored `value` is `"lat, lng"` format; coordinates and address are the same.
|
|
223
|
+
- **Dual property:** The component writes to TWO properties — `propName` (address or coordinates) and `coordPropName` (coordinates). `coordPropName` may be undefined if the Pega config doesn't include a coordinates property.
|
|
224
|
+
- **Autocomplete ref lifecycle:** `autocompleteRef` is only initialized once (when `!autocompleteRef.current`). The `handlePlaceChanged` callback must be stable (`useCallback` with deps).
|
|
225
|
+
- **Map default center:** Pune, India — `{ lat: 18.5204, lng: 73.8567 }`.
|
|
226
|
+
- Google Maps Geocoder is only called in non-`onlyCoordinates` geolocation mode for reverse geocoding.
|
|
227
|
+
|
|
228
|
+
## Dependencies
|
|
229
|
+
|
|
230
|
+
- Google Maps JavaScript API (loaded dynamically via `@react-google-maps/api` or equivalent loader).
|
|
231
|
+
- `@react-google-maps/api` — `GoogleMap`, `Marker`, `useLoadScript`.
|
|
232
|
+
- `handleEvent` from `../../helpers/event-utils`.
|
|
233
|
+
- `getComponentFromRegistry('TextInput')` for read-only.
|
|
234
|
+
- `getComponentFromRegistry('FieldValueList')` for display modes.
|
|
235
|
+
- A location pin icon.
|
|
236
|
+
|
|
237
|
+
**CSS companion:** `Location.css` — must be imported to fix autocomplete z-index.
|
|
238
|
+
|
|
239
|
+
## Design System Mapping
|
|
240
|
+
|
|
241
|
+
**UI control type:** Text input with location autocomplete dropdown + optional map.
|
|
242
|
+
|
|
243
|
+
Listed design systems are examples only.
|
|
244
|
+
|
|
245
|
+
| Design System | Recommended Component |
|
|
246
|
+
| ------------------ | ----------------------------------------------------------------------- |
|
|
247
|
+
| Default (CSS only) | `<input type="text">` + Google Maps Autocomplete API + Google Map embed |
|
|
248
|
+
| MUI | `<TextField>` + `InputAdornment` for icon + `@react-google-maps/api` |
|
|
249
|
+
| Ant Design | `<Input suffix={<LocationIcon />}>` + Google Maps |
|
|
250
|
+
| Chakra UI | `<InputGroup>` + `<InputRightElement>` + Google Maps |
|