@pega/sdk 0.0.3 → 0.0.4
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 +12 -55
- 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/package.json +6 -6
- package/templates/react-native-sdk-reference/tsconfig.json +2 -1
- package/templates/react-sdk-reference/.claude/instructions/component-map.md +1 -1
- package/templates/react-sdk-reference/.claude/instructions/field-component.md +4 -0
- package/templates/react-sdk-reference/.claude/instructions/template-component.md +2 -1
- package/templates/react-sdk-reference/.claude/instructions/widget-component.md +1 -0
- package/templates/react-sdk-reference/.claude/prompts/add-component.md +18 -10
- package/templates/react-sdk-reference/.claude/prompts/component-manifest.json +165 -83
- package/templates/react-sdk-reference/.claude/prompts/generate-all-components.md +26 -17
- package/templates/react-sdk-reference/.claude/prompts/generate-dse-components.md +27 -13
- package/templates/react-sdk-reference/.claude/prompts/generate-field-components.md +42 -28
- package/templates/react-sdk-reference/.claude/prompts/generate-template-components.md +48 -34
- package/templates/react-sdk-reference/.claude/prompts/generate-widget-components.md +25 -11
- package/templates/react-sdk-reference/.claude/prompts/identify-components.md +65 -65
- package/templates/react-sdk-reference/.claude/skills/component-contracts.md +99 -99
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/AlertBanner.md +40 -38
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Banner.md +54 -51
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/CaseSummaryFields.md +51 -46
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/DetailsFields.md +32 -28
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroup.md +38 -35
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldGroupList.md +25 -23
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/FieldValueList.md +29 -26
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Operator.md +32 -26
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/Pulse.md +17 -15
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/RichTextEditor.md +85 -59
- package/templates/react-sdk-reference/.claude/skills/design-system-extension-skills/WssQuickCreate.md +49 -47
- package/templates/react-sdk-reference/.claude/skills/design-system-extension.md +13 -11
- package/templates/react-sdk-reference/.claude/skills/field-components.md +9 -8
- package/templates/react-sdk-reference/.claude/skills/field-skills/AutoComplete.md +27 -26
- package/templates/react-sdk-reference/.claude/skills/field-skills/CancelAlert.md +30 -22
- package/templates/react-sdk-reference/.claude/skills/field-skills/Checkbox.md +60 -43
- package/templates/react-sdk-reference/.claude/skills/field-skills/Currency.md +23 -20
- package/templates/react-sdk-reference/.claude/skills/field-skills/Date.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/field-skills/DateTime.md +18 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/Decimal.md +22 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Dropdown.md +50 -30
- package/templates/react-sdk-reference/.claude/skills/field-skills/Email.md +20 -18
- package/templates/react-sdk-reference/.claude/skills/field-skills/Group.md +21 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/Integer.md +17 -16
- package/templates/react-sdk-reference/.claude/skills/field-skills/Location.md +30 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Multiselect.md +66 -42
- package/templates/react-sdk-reference/.claude/skills/field-skills/ObjectReference.md +27 -18
- package/templates/react-sdk-reference/.claude/skills/field-skills/Percentage.md +22 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Phone.md +36 -17
- package/templates/react-sdk-reference/.claude/skills/field-skills/RadioButtons.md +56 -35
- package/templates/react-sdk-reference/.claude/skills/field-skills/RichText.md +23 -12
- package/templates/react-sdk-reference/.claude/skills/field-skills/ScalarList.md +41 -31
- package/templates/react-sdk-reference/.claude/skills/field-skills/SelectableCard.md +70 -55
- package/templates/react-sdk-reference/.claude/skills/field-skills/SemanticLink.md +34 -27
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextArea.md +24 -22
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextContent.md +38 -22
- package/templates/react-sdk-reference/.claude/skills/field-skills/TextInput.md +24 -21
- package/templates/react-sdk-reference/.claude/skills/field-skills/Time.md +16 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/URL.md +16 -15
- package/templates/react-sdk-reference/.claude/skills/field-skills/UserReference.md +57 -34
- package/templates/react-sdk-reference/.claude/skills/run-and-verify.md +10 -8
- package/templates/react-sdk-reference/.claude/skills/template-components.md +7 -8
- package/templates/react-sdk-reference/.claude/skills/template-skills/AdvancedSearch.md +27 -21
- package/templates/react-sdk-reference/.claude/skills/template-skills/AppShell.md +17 -15
- package/templates/react-sdk-reference/.claude/skills/template-skills/BannerPage.md +19 -16
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseSummary.md +19 -13
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseView.md +23 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/CaseViewActionsMenu.md +34 -29
- package/templates/react-sdk-reference/.claude/skills/template-skills/Confirmation.md +18 -16
- package/templates/react-sdk-reference/.claude/skills/template-skills/DataReference.md +36 -32
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultForm.md +23 -21
- package/templates/react-sdk-reference/.claude/skills/template-skills/DefaultPage.md +31 -29
- package/templates/react-sdk-reference/.claude/skills/template-skills/Details.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsSubTabs.md +22 -20
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsThreeColumn.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/DetailsTwoColumn.md +19 -17
- package/templates/react-sdk-reference/.claude/skills/template-skills/DynamicTabs.md +15 -10
- package/templates/react-sdk-reference/.claude/skills/template-skills/FieldGroupTemplate.md +19 -16
- package/templates/react-sdk-reference/.claude/skills/template-skills/HierarchicalForm.md +18 -15
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboard.md +17 -13
- package/templates/react-sdk-reference/.claude/skills/template-skills/InlineDashboardPage.md +10 -13
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListPage.md +9 -7
- package/templates/react-sdk-reference/.claude/skills/template-skills/ListView.md +33 -30
- package/templates/react-sdk-reference/.claude/skills/template-skills/MultiReferenceReadOnly.md +13 -11
- package/templates/react-sdk-reference/.claude/skills/template-skills/NarrowWide.md +42 -40
- package/templates/react-sdk-reference/.claude/skills/template-skills/OneColumn.md +25 -20
- package/templates/react-sdk-reference/.claude/skills/template-skills/PromotedFilters.md +25 -19
- package/templates/react-sdk-reference/.claude/skills/template-skills/SelfServiceCaseView.md +36 -29
- package/templates/react-sdk-reference/.claude/skills/template-skills/SimpleTable.md +31 -27
- package/templates/react-sdk-reference/.claude/skills/template-skills/SingleReferenceReadOnly.md +29 -24
- package/templates/react-sdk-reference/.claude/skills/template-skills/SubTabs.md +14 -11
- package/templates/react-sdk-reference/.claude/skills/template-skills/TwoColumn.md +34 -32
- package/templates/react-sdk-reference/.claude/skills/template-skills/WideNarrow.md +48 -46
- package/templates/react-sdk-reference/.claude/skills/template-skills/WssNavBar.md +23 -19
- package/templates/react-sdk-reference/.claude/skills/widget-components.md +11 -22
- package/templates/react-sdk-reference/.claude/skills/widget-skills/AppAnnouncement.md +22 -20
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Attachment.md +33 -28
- package/templates/react-sdk-reference/.claude/skills/widget-skills/CaseHistory.md +18 -15
- package/templates/react-sdk-reference/.claude/skills/widget-skills/FileUtility.md +43 -37
- package/templates/react-sdk-reference/.claude/skills/widget-skills/Followers.md +23 -19
- package/templates/react-sdk-reference/.claude/skills/widget-skills/QuickCreate.md +20 -16
- package/templates/react-sdk-reference/.claude/skills/widget-skills/SummaryItem.md +26 -24
- package/templates/react-sdk-reference/.claude/skills/widget-skills/ToDo.md +43 -35
- package/templates/react-sdk-reference/.cursor/rules/prompts/component-manifest.json +165 -83
- package/templates/react-sdk-reference/.github/agents/implementation-expert.agent.md +135 -0
- package/templates/react-sdk-reference/.github/instructions/component-map.instructions.md +2 -2
- package/templates/react-sdk-reference/.github/instructions/dse-component.instructions.md +1 -1
- package/templates/react-sdk-reference/.github/instructions/field-component.instructions.md +5 -1
- package/templates/react-sdk-reference/.github/instructions/template-component.instructions.md +3 -2
- package/templates/react-sdk-reference/.github/instructions/widget-component.instructions.md +2 -1
- package/templates/react-sdk-reference/.github/prompts/add-component.prompt.md +58 -15
- package/templates/react-sdk-reference/.github/prompts/component-manifest.json +165 -83
- package/templates/react-sdk-reference/.github/prompts/generate-all-components.prompt.md +322 -65
- package/templates/react-sdk-reference/.github/prompts/generate-dse-components.prompt.md +124 -50
- package/templates/react-sdk-reference/.github/prompts/generate-field-components.prompt.md +145 -66
- package/templates/react-sdk-reference/.github/prompts/generate-template-components.prompt.md +146 -73
- package/templates/react-sdk-reference/.github/prompts/generate-widget-components.prompt.md +128 -49
- package/templates/react-sdk-reference/.github/prompts/identify-components.prompt.md +65 -65
- package/templates/react-sdk-reference/.github/skills/component-contracts.md +99 -99
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/AlertBanner.md +40 -38
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Banner.md +54 -51
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/CaseSummaryFields.md +51 -46
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/DetailsFields.md +32 -28
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroup.md +38 -35
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldGroupList.md +25 -23
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/FieldValueList.md +29 -26
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Operator.md +32 -26
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/Pulse.md +17 -15
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/RichTextEditor.md +85 -59
- package/templates/react-sdk-reference/.github/skills/design-system-extension-skills/WssQuickCreate.md +49 -47
- package/templates/react-sdk-reference/.github/skills/design-system-extension.md +13 -11
- package/templates/react-sdk-reference/.github/skills/field-components.md +9 -8
- package/templates/react-sdk-reference/.github/skills/field-skills/AutoComplete.md +27 -26
- package/templates/react-sdk-reference/.github/skills/field-skills/CancelAlert.md +30 -22
- package/templates/react-sdk-reference/.github/skills/field-skills/Checkbox.md +60 -43
- package/templates/react-sdk-reference/.github/skills/field-skills/Currency.md +23 -20
- package/templates/react-sdk-reference/.github/skills/field-skills/Date.md +19 -17
- package/templates/react-sdk-reference/.github/skills/field-skills/DateTime.md +18 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/Decimal.md +22 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Dropdown.md +50 -30
- package/templates/react-sdk-reference/.github/skills/field-skills/Email.md +20 -18
- package/templates/react-sdk-reference/.github/skills/field-skills/Group.md +21 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/Integer.md +17 -16
- package/templates/react-sdk-reference/.github/skills/field-skills/Location.md +30 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Multiselect.md +66 -42
- package/templates/react-sdk-reference/.github/skills/field-skills/ObjectReference.md +27 -18
- package/templates/react-sdk-reference/.github/skills/field-skills/Percentage.md +22 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Phone.md +36 -17
- package/templates/react-sdk-reference/.github/skills/field-skills/RadioButtons.md +56 -35
- package/templates/react-sdk-reference/.github/skills/field-skills/RichText.md +23 -12
- package/templates/react-sdk-reference/.github/skills/field-skills/ScalarList.md +41 -31
- package/templates/react-sdk-reference/.github/skills/field-skills/SelectableCard.md +70 -55
- package/templates/react-sdk-reference/.github/skills/field-skills/SemanticLink.md +34 -27
- package/templates/react-sdk-reference/.github/skills/field-skills/TextArea.md +24 -22
- package/templates/react-sdk-reference/.github/skills/field-skills/TextContent.md +38 -22
- package/templates/react-sdk-reference/.github/skills/field-skills/TextInput.md +24 -21
- package/templates/react-sdk-reference/.github/skills/field-skills/Time.md +16 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/URL.md +16 -15
- package/templates/react-sdk-reference/.github/skills/field-skills/UserReference.md +57 -34
- package/templates/react-sdk-reference/.github/skills/run-and-verify.md +10 -8
- package/templates/react-sdk-reference/.github/skills/template-components.md +7 -8
- package/templates/react-sdk-reference/.github/skills/template-skills/AdvancedSearch.md +27 -21
- package/templates/react-sdk-reference/.github/skills/template-skills/AppShell.md +17 -15
- package/templates/react-sdk-reference/.github/skills/template-skills/BannerPage.md +19 -16
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseSummary.md +19 -13
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseView.md +23 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/CaseViewActionsMenu.md +34 -29
- package/templates/react-sdk-reference/.github/skills/template-skills/Confirmation.md +18 -16
- package/templates/react-sdk-reference/.github/skills/template-skills/DataReference.md +36 -32
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultForm.md +23 -21
- package/templates/react-sdk-reference/.github/skills/template-skills/DefaultPage.md +31 -29
- package/templates/react-sdk-reference/.github/skills/template-skills/Details.md +19 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsSubTabs.md +22 -20
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsThreeColumn.md +19 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/DetailsTwoColumn.md +19 -17
- package/templates/react-sdk-reference/.github/skills/template-skills/DynamicTabs.md +15 -10
- package/templates/react-sdk-reference/.github/skills/template-skills/FieldGroupTemplate.md +19 -16
- package/templates/react-sdk-reference/.github/skills/template-skills/HierarchicalForm.md +18 -15
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboard.md +17 -13
- package/templates/react-sdk-reference/.github/skills/template-skills/InlineDashboardPage.md +10 -13
- package/templates/react-sdk-reference/.github/skills/template-skills/ListPage.md +9 -7
- package/templates/react-sdk-reference/.github/skills/template-skills/ListView.md +33 -30
- package/templates/react-sdk-reference/.github/skills/template-skills/MultiReferenceReadOnly.md +13 -11
- package/templates/react-sdk-reference/.github/skills/template-skills/NarrowWide.md +42 -40
- package/templates/react-sdk-reference/.github/skills/template-skills/OneColumn.md +25 -20
- package/templates/react-sdk-reference/.github/skills/template-skills/PromotedFilters.md +25 -19
- package/templates/react-sdk-reference/.github/skills/template-skills/SelfServiceCaseView.md +36 -29
- package/templates/react-sdk-reference/.github/skills/template-skills/SimpleTable.md +31 -27
- package/templates/react-sdk-reference/.github/skills/template-skills/SingleReferenceReadOnly.md +29 -24
- package/templates/react-sdk-reference/.github/skills/template-skills/SubTabs.md +14 -11
- package/templates/react-sdk-reference/.github/skills/template-skills/TwoColumn.md +34 -32
- package/templates/react-sdk-reference/.github/skills/template-skills/WideNarrow.md +48 -46
- package/templates/react-sdk-reference/.github/skills/template-skills/WssNavBar.md +23 -19
- package/templates/react-sdk-reference/.github/skills/widget-components.md +11 -22
- package/templates/react-sdk-reference/.github/skills/widget-skills/AppAnnouncement.md +22 -20
- package/templates/react-sdk-reference/.github/skills/widget-skills/Attachment.md +33 -28
- package/templates/react-sdk-reference/.github/skills/widget-skills/CaseHistory.md +18 -15
- package/templates/react-sdk-reference/.github/skills/widget-skills/FileUtility.md +43 -37
- package/templates/react-sdk-reference/.github/skills/widget-skills/Followers.md +23 -19
- package/templates/react-sdk-reference/.github/skills/widget-skills/QuickCreate.md +20 -16
- package/templates/react-sdk-reference/.github/skills/widget-skills/SummaryItem.md +26 -24
- package/templates/react-sdk-reference/.github/skills/widget-skills/ToDo.md +43 -35
- package/templates/react-sdk-reference/AGENTS.md +0 -1
- package/templates/react-sdk-reference/index.html +1 -4
- package/templates/react-sdk-reference/package.json +15 -15
- package/templates/react-sdk-reference/pega-sdk-react-0.1.0.tgz +0 -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 +186 -85
- package/templates/react-sdk-reference/src/PortalApp.tsx +10 -34
- 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
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
insertAttachments,
|
|
12
12
|
useDeepMemo,
|
|
13
13
|
useFileDownload,
|
|
14
|
-
validateFileExtension
|
|
14
|
+
validateFileExtension,
|
|
15
15
|
} from './AttachmentUtils';
|
|
16
16
|
import { validateMaxSize } from '../../helpers/attachmentShared';
|
|
17
17
|
import type { PageInstructionOptions } from './Attachment.types';
|
|
@@ -29,11 +29,21 @@ interface AttachmentProps extends Omit<PConnFieldProps, 'value'> {
|
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export default function Attachment(props: AttachmentProps) {
|
|
32
|
-
const {
|
|
32
|
+
const {
|
|
33
|
+
value,
|
|
34
|
+
getPConnect,
|
|
35
|
+
label,
|
|
36
|
+
validatemessage,
|
|
37
|
+
extensions,
|
|
38
|
+
displayMode,
|
|
39
|
+
helperText,
|
|
40
|
+
editMode,
|
|
41
|
+
isTableFormatter,
|
|
42
|
+
} = props;
|
|
33
43
|
/* this is a temporary fix because required is supposed to be passed as a boolean and NOT as a string */
|
|
34
44
|
let { required, disabled, allowMultiple } = props;
|
|
35
45
|
[required, disabled, allowMultiple] = [required, disabled, allowMultiple].map(
|
|
36
|
-
prop => prop === true || (typeof prop === 'string' && prop === 'true')
|
|
46
|
+
(prop) => prop === true || (typeof prop === 'string' && prop === 'true'),
|
|
37
47
|
);
|
|
38
48
|
const pConn = getPConnect();
|
|
39
49
|
const localizationService = pConn.getLocalizationService();
|
|
@@ -41,7 +51,9 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
41
51
|
const actionSequencer = useMemo(() => PCore.getActionsSequencer(), []);
|
|
42
52
|
const rawValue = pConn.getComponentConfig().value;
|
|
43
53
|
const isAttachmentAnnotationPresent = typeof rawValue === 'object' ? false : rawValue?.includes('@ATTACHMENT');
|
|
44
|
-
const { attachments, isOldAttachment } = isAttachmentAnnotationPresent
|
|
54
|
+
const { attachments, isOldAttachment } = isAttachmentAnnotationPresent
|
|
55
|
+
? value
|
|
56
|
+
: PCore.getAttachmentUtils().prepareAttachmentData(value);
|
|
45
57
|
|
|
46
58
|
let valueRef = (pConn.getStateProps() as any).value;
|
|
47
59
|
valueRef = valueRef.indexOf('.') === 0 ? valueRef.substring(1) : valueRef;
|
|
@@ -82,7 +94,9 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
82
94
|
}
|
|
83
95
|
|
|
84
96
|
if (filesWithError.current.length > 0) {
|
|
85
|
-
filesWithError.current = filesWithError.current.filter(
|
|
97
|
+
filesWithError.current = filesWithError.current.filter(
|
|
98
|
+
(fileWithError) => fileWithError.props.id !== file.props.id,
|
|
99
|
+
);
|
|
86
100
|
if (filesWithError.current.length === 0) {
|
|
87
101
|
clearFieldErrorMessages(pConn);
|
|
88
102
|
}
|
|
@@ -92,8 +106,8 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
92
106
|
// @ts-ignore - Expected 1 arguments, but got 2.ts(2554)
|
|
93
107
|
PCore.getAttachmentUtils().cancelRequest(file.props.id, contextName);
|
|
94
108
|
actionSequencer.deRegisterBlockingAction(contextName).catch(() => {});
|
|
95
|
-
setFiles(localFiles => {
|
|
96
|
-
return localFiles.filter(localFile => localFile.props.id !== file.props.id);
|
|
109
|
+
setFiles((localFiles) => {
|
|
110
|
+
return localFiles.filter((localFile) => localFile.props.id !== file.props.id);
|
|
97
111
|
});
|
|
98
112
|
} else {
|
|
99
113
|
deleteAttachments([file], pConn, multiAttachmentsInInlineEdit.current, {
|
|
@@ -101,16 +115,18 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
101
115
|
isOldAttachment,
|
|
102
116
|
isMultiAttachmentInInlineEditTable,
|
|
103
117
|
attachmentCount: attachmentCount.current,
|
|
104
|
-
deleteIndex: fileIndex
|
|
118
|
+
deleteIndex: fileIndex,
|
|
105
119
|
} as any);
|
|
106
120
|
// Filter out without deleted file and reset the file indexes
|
|
107
|
-
setFiles(localFiles => {
|
|
121
|
+
setFiles((localFiles) => {
|
|
108
122
|
let tempLocalFiles = [...localFiles];
|
|
109
|
-
tempLocalFiles = tempLocalFiles.filter(localFile => localFile.props.id !== file.props.id);
|
|
110
|
-
tempLocalFiles.forEach(localFile => {
|
|
123
|
+
tempLocalFiles = tempLocalFiles.filter((localFile) => localFile.props.id !== file.props.id);
|
|
124
|
+
tempLocalFiles.forEach((localFile) => {
|
|
111
125
|
if (!localFile.props.error && !file.props.error) {
|
|
112
126
|
const updatedDeleteIndex =
|
|
113
|
-
localFile.responseProps.deleteIndex > fileIndex
|
|
127
|
+
localFile.responseProps.deleteIndex > fileIndex
|
|
128
|
+
? localFile.responseProps.deleteIndex - 1
|
|
129
|
+
: localFile.responseProps.deleteIndex;
|
|
114
130
|
|
|
115
131
|
localFile.props.onDelete = () => deleteFile(localFile, updatedDeleteIndex);
|
|
116
132
|
|
|
@@ -126,53 +142,53 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
126
142
|
|
|
127
143
|
setToggleUploadBegin(false);
|
|
128
144
|
},
|
|
129
|
-
[pConn]
|
|
145
|
+
[pConn],
|
|
130
146
|
);
|
|
131
147
|
|
|
132
148
|
const onUploadProgress = (id, ev) => {
|
|
133
149
|
const progress = Math.floor((ev.loaded / ev.total) * 100);
|
|
134
|
-
setFiles(localFiles => [
|
|
135
|
-
...localFiles.map(localFile => {
|
|
150
|
+
setFiles((localFiles) => [
|
|
151
|
+
...localFiles.map((localFile) => {
|
|
136
152
|
if (localFile.props?.id === id) {
|
|
137
153
|
localFile.inProgress = true;
|
|
138
154
|
localFile.props.progress = progress;
|
|
139
155
|
}
|
|
140
156
|
return localFile;
|
|
141
|
-
})
|
|
157
|
+
}),
|
|
142
158
|
]);
|
|
143
159
|
};
|
|
144
160
|
|
|
145
|
-
const populateErrorAndUpdateRedux = file => {
|
|
161
|
+
const populateErrorAndUpdateRedux = (file) => {
|
|
146
162
|
const fieldName = (pConn.getStateProps() as any).value;
|
|
147
163
|
// set errors to property to block submit even on errors in file upload
|
|
148
164
|
PCore.getMessageManager().addMessages({
|
|
149
165
|
messages: [
|
|
150
166
|
{
|
|
151
167
|
type: 'error',
|
|
152
|
-
message: localizationService.getLocalizedText('Error with one or more files')
|
|
153
|
-
}
|
|
168
|
+
message: localizationService.getLocalizedText('Error with one or more files'),
|
|
169
|
+
},
|
|
154
170
|
],
|
|
155
171
|
property: fieldName,
|
|
156
172
|
pageReference: pConn.getPageReference(),
|
|
157
|
-
context: contextName
|
|
173
|
+
context: contextName,
|
|
158
174
|
});
|
|
159
175
|
insertAttachments([file], pConn, multiAttachmentsInInlineEdit.current, {
|
|
160
176
|
allowMultiple,
|
|
161
177
|
isOldAttachment,
|
|
162
178
|
isMultiAttachmentInInlineEditTable,
|
|
163
|
-
attachmentCount: attachmentCount.current
|
|
179
|
+
attachmentCount: attachmentCount.current,
|
|
164
180
|
} as any);
|
|
165
181
|
};
|
|
166
182
|
|
|
167
183
|
const errorHandler = (isFetchCanceled, file) => {
|
|
168
|
-
return error => {
|
|
184
|
+
return (error) => {
|
|
169
185
|
if (!isFetchCanceled(error)) {
|
|
170
186
|
let uploadFailMsg = localizationService.getLocalizedText('Something went wrong');
|
|
171
187
|
if (error.response && error.response.data && error.response.data.errorDetails) {
|
|
172
188
|
uploadFailMsg = localizationService.getLocalizedText(error.response.data.errorDetails[0].localizedValue);
|
|
173
189
|
}
|
|
174
190
|
|
|
175
|
-
setFiles(current => {
|
|
191
|
+
setFiles((current) => {
|
|
176
192
|
return current.map((localFile, index) => {
|
|
177
193
|
if (localFile.props.id === file.props.id) {
|
|
178
194
|
localFile.props.meta = uploadFailMsg;
|
|
@@ -194,7 +210,7 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
194
210
|
};
|
|
195
211
|
};
|
|
196
212
|
|
|
197
|
-
const onFileAdded = event => {
|
|
213
|
+
const onFileAdded = (event) => {
|
|
198
214
|
let addedFiles = Array.from(event.target.files);
|
|
199
215
|
addedFiles = allowMultiple ? addedFiles : [addedFiles[0]];
|
|
200
216
|
const maxAttachmentSize = PCore.getEnvironmentInfo().getMaxAttachmentSize() || '5';
|
|
@@ -208,16 +224,18 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
208
224
|
format: f.name.split('.').pop(),
|
|
209
225
|
icon: getIconFromFileType(f.type),
|
|
210
226
|
onDelete: () => deleteFile(f, index),
|
|
211
|
-
thumbnail: window.URL.createObjectURL(f)
|
|
227
|
+
thumbnail: window.URL.createObjectURL(f),
|
|
212
228
|
};
|
|
213
229
|
if (!validateMaxSize(f, maxAttachmentSize)) {
|
|
214
230
|
f.props.error = true;
|
|
215
|
-
f.props.meta = localizationService.getLocalizedText(
|
|
231
|
+
f.props.meta = localizationService.getLocalizedText(
|
|
232
|
+
`File is too big. Max allowed size is ${maxAttachmentSize}MB.`,
|
|
233
|
+
);
|
|
216
234
|
} else if (!validateFileExtension(f, extensions)) {
|
|
217
235
|
f.props.error = true;
|
|
218
236
|
f.props.meta = `${localizationService.getLocalizedText('File has invalid extension. Allowed extensions are:')} ${extensions.replaceAll(
|
|
219
237
|
'.',
|
|
220
|
-
''
|
|
238
|
+
'',
|
|
221
239
|
)}`;
|
|
222
240
|
}
|
|
223
241
|
if (f.props.error) {
|
|
@@ -226,19 +244,19 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
226
244
|
messages: [
|
|
227
245
|
{
|
|
228
246
|
type: 'error',
|
|
229
|
-
message: localizationService.getLocalizedText('Error with one or more files')
|
|
230
|
-
}
|
|
247
|
+
message: localizationService.getLocalizedText('Error with one or more files'),
|
|
248
|
+
},
|
|
231
249
|
],
|
|
232
250
|
property: fieldName,
|
|
233
251
|
pageReference: pConn.getPageReference(),
|
|
234
|
-
context: contextName
|
|
252
|
+
context: contextName,
|
|
235
253
|
});
|
|
236
254
|
}
|
|
237
255
|
return f;
|
|
238
|
-
})
|
|
256
|
+
}),
|
|
239
257
|
];
|
|
240
258
|
|
|
241
|
-
const tempFilesWithError = tempFilesToBeUploaded.filter(f => f.props.error);
|
|
259
|
+
const tempFilesWithError = tempFilesToBeUploaded.filter((f) => f.props.error);
|
|
242
260
|
if (tempFilesWithError.length > 0) {
|
|
243
261
|
filesWithError.current = [...filesWithError.current, ...tempFilesWithError];
|
|
244
262
|
|
|
@@ -246,48 +264,50 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
246
264
|
allowMultiple,
|
|
247
265
|
isOldAttachment,
|
|
248
266
|
isMultiAttachmentInInlineEditTable,
|
|
249
|
-
attachmentCount: attachmentCount.current
|
|
267
|
+
attachmentCount: attachmentCount.current,
|
|
250
268
|
} as PageInstructionOptions);
|
|
251
269
|
}
|
|
252
|
-
setFiles(current => (!allowMultiple ? [...tempFilesToBeUploaded] : [...current, ...tempFilesToBeUploaded]));
|
|
270
|
+
setFiles((current) => (!allowMultiple ? [...tempFilesToBeUploaded] : [...current, ...tempFilesToBeUploaded]));
|
|
253
271
|
setToggleUploadBegin(true);
|
|
254
272
|
};
|
|
255
273
|
|
|
256
274
|
const uploadFiles = useCallback(() => {
|
|
257
275
|
const filesToBeUploaded = files
|
|
258
|
-
.filter(e => {
|
|
276
|
+
.filter((e) => {
|
|
259
277
|
const isFileUploaded = e.props && e.props.progress === 100;
|
|
260
278
|
const fileHasError = e.props && e.props.error;
|
|
261
279
|
const isFileUploadedInLastStep = e.responseProps && e.responseProps.ID !== 'temp';
|
|
262
280
|
const isFileUploadInProgress = e.inProgress;
|
|
263
281
|
return !isFileUploadInProgress && !isFileUploaded && !fileHasError && !isFileUploadedInLastStep;
|
|
264
282
|
})
|
|
265
|
-
.map(file =>
|
|
283
|
+
.map((file) =>
|
|
266
284
|
PCore.getAttachmentUtils().uploadAttachment(
|
|
267
285
|
file,
|
|
268
|
-
ev => {
|
|
286
|
+
(ev) => {
|
|
269
287
|
onUploadProgress(file.props.id, ev);
|
|
270
288
|
},
|
|
271
|
-
isFetchCanceled => {
|
|
289
|
+
(isFetchCanceled) => {
|
|
272
290
|
return errorHandler(isFetchCanceled, file);
|
|
273
291
|
},
|
|
274
|
-
contextName
|
|
275
|
-
)
|
|
292
|
+
contextName,
|
|
293
|
+
),
|
|
276
294
|
);
|
|
277
295
|
|
|
278
296
|
// allow new files to be added when other files upload is still in progress
|
|
279
297
|
setToggleUploadBegin(false);
|
|
280
298
|
Promise.allSettled(filesToBeUploaded)
|
|
281
299
|
.then((fileResponses: any) => {
|
|
282
|
-
fileResponses = fileResponses.filter(fr => fr.status !== 'rejected'); // in case of deleting an in progress file, promise gets cancelled but still enters then block
|
|
300
|
+
fileResponses = fileResponses.filter((fr) => fr.status !== 'rejected'); // in case of deleting an in progress file, promise gets cancelled but still enters then block
|
|
283
301
|
if (fileResponses.length > 0) {
|
|
284
|
-
setFiles(localFiles => {
|
|
302
|
+
setFiles((localFiles) => {
|
|
285
303
|
const tempFilesUploaded = [...localFiles];
|
|
286
|
-
tempFilesUploaded.forEach(localFile => {
|
|
304
|
+
tempFilesUploaded.forEach((localFile) => {
|
|
287
305
|
// if attach field has multiple files & in bw any error files are present
|
|
288
306
|
// Example : files = [properFile1, errFile, errFile, properFile2]
|
|
289
307
|
// indexes for delete & preview should be for files [properFile1, properFile2] which is [1,2]
|
|
290
|
-
const index = fileResponses.findIndex(
|
|
308
|
+
const index = fileResponses.findIndex(
|
|
309
|
+
(fileResponse) => fileResponse.value.clientFileID === localFile.props.id,
|
|
310
|
+
);
|
|
291
311
|
if (index >= 0) {
|
|
292
312
|
fileResponses[index].value.thumbnail = localFile.props.thumbnail;
|
|
293
313
|
localFile.inProgress = false;
|
|
@@ -297,7 +317,7 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
297
317
|
localFile.handle = fileResponses[index].value.ID;
|
|
298
318
|
localFile.label = valueRef;
|
|
299
319
|
localFile.responseProps = {
|
|
300
|
-
pzInsKey: 'temp'
|
|
320
|
+
pzInsKey: 'temp',
|
|
301
321
|
};
|
|
302
322
|
}
|
|
303
323
|
});
|
|
@@ -309,7 +329,7 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
309
329
|
isOldAttachment,
|
|
310
330
|
isMultiAttachmentInInlineEditTable,
|
|
311
331
|
attachmentCount: attachmentCount.current,
|
|
312
|
-
insert: true
|
|
332
|
+
insert: true,
|
|
313
333
|
} as any);
|
|
314
334
|
attachmentCount.current += fileResponses.length;
|
|
315
335
|
|
|
@@ -319,7 +339,7 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
319
339
|
}
|
|
320
340
|
actionSequencer.deRegisterBlockingAction(contextName).catch(() => {});
|
|
321
341
|
})
|
|
322
|
-
.catch(error => {
|
|
342
|
+
.catch((error) => {
|
|
323
343
|
console.log(error);
|
|
324
344
|
setToggleUploadBegin(false);
|
|
325
345
|
});
|
|
@@ -347,7 +367,7 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
347
367
|
const transformAttachments = () => {
|
|
348
368
|
const transformedFiles = [...attachments];
|
|
349
369
|
let deleteIndex = -1;
|
|
350
|
-
transformedFiles.forEach(attachment => {
|
|
370
|
+
transformedFiles.forEach((attachment) => {
|
|
351
371
|
attachment.props.id = attachment.responseProps.ID;
|
|
352
372
|
attachment.props.format = attachment.props.name.split('.').pop();
|
|
353
373
|
if (attachment.props.error) {
|
|
@@ -365,25 +385,32 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
365
385
|
};
|
|
366
386
|
|
|
367
387
|
useEffect(() => {
|
|
368
|
-
const caseID = PCore.getStoreValue(
|
|
388
|
+
const caseID = PCore.getStoreValue(
|
|
389
|
+
`.${getMappedValue('pyID')}`,
|
|
390
|
+
PCore.getResolvedConstantValue('caseInfo.content'),
|
|
391
|
+
contextName,
|
|
392
|
+
);
|
|
369
393
|
if (displayMode !== 'DISPLAY_ONLY') {
|
|
370
394
|
PCore.getPubSubUtils().subscribe(
|
|
371
395
|
PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION,
|
|
372
396
|
() => {
|
|
373
397
|
overrideLocalState.current = true;
|
|
374
398
|
},
|
|
375
|
-
caseID
|
|
399
|
+
caseID,
|
|
376
400
|
);
|
|
377
401
|
}
|
|
378
402
|
|
|
379
403
|
// When component mounts, only set local files state from redux.
|
|
380
404
|
const serverFiles = transformAttachments();
|
|
381
405
|
setFiles(serverFiles);
|
|
382
|
-
filesWithError.current = serverFiles.filter(file => file.props.error);
|
|
406
|
+
filesWithError.current = serverFiles.filter((file) => file.props.error);
|
|
383
407
|
|
|
384
408
|
return () => {
|
|
385
409
|
if (displayMode !== 'DISPLAY_ONLY') {
|
|
386
|
-
PCore.getPubSubUtils().unsubscribe(
|
|
410
|
+
PCore.getPubSubUtils().unsubscribe(
|
|
411
|
+
PCore.getConstants().PUB_SUB_EVENTS.CASE_EVENTS.ASSIGNMENT_SUBMISSION,
|
|
412
|
+
caseID,
|
|
413
|
+
);
|
|
387
414
|
}
|
|
388
415
|
};
|
|
389
416
|
}, []);
|
|
@@ -397,25 +424,26 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
397
424
|
setFiles(serverFiles);
|
|
398
425
|
} else {
|
|
399
426
|
// Determine whether refresh call has overridden any error files in redux, push error files back to redux from local state to perform client side validation during assignment submit
|
|
400
|
-
const errorFiles = attachments.filter(attachment => attachment.props.error);
|
|
427
|
+
const errorFiles = attachments.filter((attachment) => attachment.props.error);
|
|
401
428
|
if (errorFiles.length === 0 && filesWithError.current.length > 0) {
|
|
402
429
|
// Check if local file state contains error files and push those to redux
|
|
403
430
|
const uniqueKey = getMappedValue('pzInsKey');
|
|
404
|
-
const transformedErrorFiles = filesWithError.current.map(errorFile => {
|
|
431
|
+
const transformedErrorFiles = filesWithError.current.map((errorFile) => {
|
|
405
432
|
const filename = errorFile.props.name;
|
|
406
433
|
return {
|
|
407
434
|
[uniqueKey]: errorFile.props.id,
|
|
408
435
|
FileName: filename,
|
|
409
436
|
Category: '',
|
|
410
437
|
FileExtension: filename.split('.').pop() ?? filename,
|
|
411
|
-
error: errorFile.props.error || null
|
|
438
|
+
error: errorFile.props.error || null,
|
|
412
439
|
};
|
|
413
440
|
});
|
|
414
441
|
let key = '';
|
|
415
442
|
let updatedAttachments: any = [];
|
|
416
443
|
if (allowMultiple || isOldAttachment) {
|
|
417
444
|
key = isOldAttachment ? `${valueRef}.pxResults` : valueRef;
|
|
418
|
-
const existingAttachments =
|
|
445
|
+
const existingAttachments =
|
|
446
|
+
PCore.getStoreValue(`.${key}`, pConn.getPageReference(), pConn.getContextName()) || [];
|
|
419
447
|
updatedAttachments = [...existingAttachments, ...transformedErrorFiles];
|
|
420
448
|
} else {
|
|
421
449
|
key = valueRef;
|
|
@@ -424,13 +452,13 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
424
452
|
PCore.getStateUtils().updateState(pConn.getContextName(), key, updatedAttachments, {
|
|
425
453
|
pageReference: pConn.getPageReference(),
|
|
426
454
|
isArrayDeepMerge: false,
|
|
427
|
-
removePropertyFromChangedList: true
|
|
455
|
+
removePropertyFromChangedList: true,
|
|
428
456
|
});
|
|
429
457
|
}
|
|
430
458
|
}
|
|
431
459
|
}, [memoizedAttachments]);
|
|
432
460
|
|
|
433
|
-
const handleClick = event => {
|
|
461
|
+
const handleClick = (event) => {
|
|
434
462
|
setAnchorEl(event.currentTarget);
|
|
435
463
|
};
|
|
436
464
|
|
|
@@ -441,21 +469,21 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
441
469
|
const content = (
|
|
442
470
|
<div style={{ marginBottom: '8px' }}>
|
|
443
471
|
<div className={`${disabled ? 'file-disabled' : ''} ${validatemessage === '' ? 'file-div' : 'file-div-error'}`}>
|
|
444
|
-
<div hidden={true} id=
|
|
472
|
+
<div hidden={true} id="attachment-ID">
|
|
445
473
|
{valueRef}
|
|
446
474
|
</div>
|
|
447
475
|
<label htmlFor={valueRef}>
|
|
448
476
|
<input
|
|
449
477
|
style={{ display: 'none' }}
|
|
450
478
|
id={valueRef}
|
|
451
|
-
name=
|
|
452
|
-
type=
|
|
479
|
+
name="upload-photo"
|
|
480
|
+
type="file"
|
|
453
481
|
multiple={allowMultiple}
|
|
454
482
|
required={required}
|
|
455
483
|
disabled={disabled}
|
|
456
484
|
onChange={onFileAdded}
|
|
457
485
|
/>
|
|
458
|
-
<Button style={{ textTransform: 'none' }} variant=
|
|
486
|
+
<Button style={{ textTransform: 'none' }} variant="outlined" color="primary" component="span">
|
|
459
487
|
{allowMultiple
|
|
460
488
|
? uploadMultipleFilesLabel === 'file_upload_text_multiple'
|
|
461
489
|
? 'Choose files'
|
|
@@ -475,41 +503,55 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
475
503
|
files.length > 0 &&
|
|
476
504
|
files.map((item, index) => {
|
|
477
505
|
return (
|
|
478
|
-
<div key={index} className=
|
|
479
|
-
<div className=
|
|
480
|
-
{!item.inProgress && <img className=
|
|
506
|
+
<div key={index} className="psdk-utility-card">
|
|
507
|
+
<div className="psdk-utility-card-icon">
|
|
508
|
+
{!item.inProgress && <img className="psdk-utility-card-svg-icon" src={srcImg} />}
|
|
481
509
|
{item.inProgress && (
|
|
482
510
|
<div>
|
|
483
511
|
<CircularProgress />
|
|
484
512
|
</div>
|
|
485
513
|
)}
|
|
486
514
|
</div>
|
|
487
|
-
<div className=
|
|
488
|
-
<div className=
|
|
489
|
-
{item.props.meta &&
|
|
515
|
+
<div className="psdk-utility-card-main">
|
|
516
|
+
<div className="psdk-utility-card-main-primary-label">{item.props.name}</div>
|
|
517
|
+
{item.props.meta && (
|
|
518
|
+
<div style={{ color: item.props.error ? 'red' : undefined }}>{item.props.meta}</div>
|
|
519
|
+
)}
|
|
490
520
|
</div>
|
|
491
|
-
<div className=
|
|
521
|
+
<div className="psdk-utility-action">
|
|
492
522
|
{item.ID && (
|
|
493
|
-
<button
|
|
494
|
-
|
|
523
|
+
<button
|
|
524
|
+
type="button"
|
|
525
|
+
className="psdk-utility-button"
|
|
526
|
+
aria-label="Delete Attachment"
|
|
527
|
+
onClick={() => deleteFile(item, index)}
|
|
528
|
+
>
|
|
529
|
+
<img className="psdk-utility-card-action-svg-icon" src={deleteIcon} />
|
|
495
530
|
</button>
|
|
496
531
|
)}
|
|
497
532
|
{!item.ID && (
|
|
498
533
|
<div>
|
|
499
534
|
<IconButton
|
|
500
|
-
id=
|
|
535
|
+
id="setting-button"
|
|
501
536
|
aria-controls={open ? 'file-menu' : undefined}
|
|
502
537
|
aria-expanded={open ? 'true' : undefined}
|
|
503
|
-
aria-haspopup=
|
|
538
|
+
aria-haspopup="true"
|
|
504
539
|
onClick={handleClick}
|
|
505
|
-
size=
|
|
540
|
+
size="large"
|
|
506
541
|
>
|
|
507
542
|
<MoreVertIcon />
|
|
508
543
|
</IconButton>
|
|
509
|
-
<Menu
|
|
544
|
+
<Menu
|
|
545
|
+
style={{ marginTop: '3rem' }}
|
|
546
|
+
id="file-menu"
|
|
547
|
+
anchorEl={anchorEl}
|
|
548
|
+
keepMounted
|
|
549
|
+
open={Boolean(anchorEl)}
|
|
550
|
+
onClose={handleClose}
|
|
551
|
+
>
|
|
510
552
|
<MenuItem
|
|
511
553
|
style={{ fontSize: '14px' }}
|
|
512
|
-
key=
|
|
554
|
+
key="download"
|
|
513
555
|
onClick={() => {
|
|
514
556
|
setAnchorEl(null);
|
|
515
557
|
onFileDownload(item.responseProps ? item.responseProps : {});
|
|
@@ -517,7 +559,7 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
517
559
|
>
|
|
518
560
|
Download
|
|
519
561
|
</MenuItem>
|
|
520
|
-
<MenuItem style={{ fontSize: '14px' }} key=
|
|
562
|
+
<MenuItem style={{ fontSize: '14px' }} key="delete" onClick={() => deleteFile(item, index)}>
|
|
521
563
|
Delete
|
|
522
564
|
</MenuItem>
|
|
523
565
|
</Menu>
|
|
@@ -531,10 +573,14 @@ export default function Attachment(props: AttachmentProps) {
|
|
|
531
573
|
);
|
|
532
574
|
|
|
533
575
|
return (
|
|
534
|
-
<div className=
|
|
576
|
+
<div className="file-upload-container">
|
|
535
577
|
<span className={`label ${required ? 'file-label' : ''}`}>{label}</span>
|
|
536
578
|
{((files.length === 0 && !allowMultiple) || allowMultiple) && <section>{content}</section>}
|
|
537
|
-
{validatemessage !== '' ?
|
|
579
|
+
{validatemessage !== '' ? (
|
|
580
|
+
<span className="file-error">{validatemessage}</span>
|
|
581
|
+
) : (
|
|
582
|
+
<span style={{ fontSize: '14px' }}>{helperText}</span>
|
|
583
|
+
)}
|
|
538
584
|
{files && files.length > 0 && <section>{fileDisplay}</section>}
|
|
539
585
|
</div>
|
|
540
586
|
);
|