@sapui5/sap.fe.core 1.101.0 → 1.103.0
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/package.json +5 -5
- package/src/sap/fe/core/.library +1 -1
- package/src/sap/fe/core/AppComponent.js +66 -30
- package/src/sap/fe/core/AppComponent.ts +68 -51
- package/src/sap/fe/core/AppStateHandler.js +13 -13
- package/src/sap/fe/core/AppStateHandler.ts +18 -18
- package/src/sap/fe/core/BaseController.js +11 -9
- package/src/sap/fe/core/BaseController.ts +15 -13
- package/src/sap/fe/core/CommonUtils.js +279 -188
- package/src/sap/fe/core/CommonUtils.ts +306 -215
- package/src/sap/fe/core/ExtensionAPI.js +25 -30
- package/src/sap/fe/core/ExtensionAPI.ts +37 -41
- package/src/sap/fe/core/PageController.js +12 -7
- package/src/sap/fe/core/PageController.ts +10 -5
- package/src/sap/fe/core/TemplateComponent.js +6 -6
- package/src/sap/fe/core/TemplateComponent.ts +11 -11
- package/src/sap/fe/core/TemplateModel.js +2 -2
- package/src/sap/fe/core/TemplateModel.ts +3 -3
- package/src/sap/fe/core/buildingBlocks/AttributeModel.js +1 -1
- package/src/sap/fe/core/buildingBlocks/AttributeModel.ts +1 -1
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.js +306 -78
- package/src/sap/fe/core/buildingBlocks/BuildingBlockRuntime.ts +280 -70
- package/src/sap/fe/core/buildingBlocks/TraceInfo.js +27 -27
- package/src/sap/fe/core/buildingBlocks/TraceInfo.ts +28 -26
- package/src/sap/fe/core/{BusyLocker.js → controllerextensions/BusyLocker.js} +1 -1
- package/src/sap/fe/core/{BusyLocker.ts → controllerextensions/BusyLocker.ts} +7 -7
- package/src/sap/fe/core/controllerextensions/EditFlow.js +351 -229
- package/src/sap/fe/core/controllerextensions/EditFlow.ts +321 -246
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.js +9 -9
- package/src/sap/fe/core/controllerextensions/IntentBasedNavigation.ts +10 -10
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.js +59 -34
- package/src/sap/fe/core/controllerextensions/InternalEditFlow.ts +71 -45
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.js +72 -72
- package/src/sap/fe/core/controllerextensions/InternalIntentBasedNavigation.ts +82 -80
- package/src/sap/fe/core/controllerextensions/InternalRouting.js +152 -131
- package/src/sap/fe/core/controllerextensions/InternalRouting.ts +171 -152
- package/src/sap/fe/core/controllerextensions/KPIManagement.js +66 -68
- package/src/sap/fe/core/controllerextensions/KPIManagement.ts +106 -123
- package/src/sap/fe/core/controllerextensions/MassEdit.js +11 -10
- package/src/sap/fe/core/controllerextensions/MassEdit.ts +31 -37
- package/src/sap/fe/core/controllerextensions/MessageHandler.js +21 -13
- package/src/sap/fe/core/controllerextensions/MessageHandler.ts +30 -15
- package/src/sap/fe/core/controllerextensions/PageReady.js +97 -25
- package/src/sap/fe/core/controllerextensions/PageReady.ts +94 -34
- package/src/sap/fe/core/controllerextensions/Paginator.js +19 -11
- package/src/sap/fe/core/controllerextensions/Paginator.ts +22 -14
- package/src/sap/fe/core/controllerextensions/Placeholder.js +4 -6
- package/src/sap/fe/core/controllerextensions/Placeholder.ts +12 -14
- package/src/sap/fe/core/controllerextensions/Routing.js +10 -11
- package/src/sap/fe/core/controllerextensions/Routing.ts +12 -13
- package/src/sap/fe/core/controllerextensions/Share.js +39 -21
- package/src/sap/fe/core/controllerextensions/Share.ts +45 -26
- package/src/sap/fe/core/controllerextensions/SideEffects.js +47 -51
- package/src/sap/fe/core/controllerextensions/SideEffects.ts +58 -62
- package/src/sap/fe/core/controllerextensions/ViewState.js +75 -62
- package/src/sap/fe/core/controllerextensions/ViewState.ts +78 -63
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.js +105 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivityBase.ts +99 -0
- package/src/sap/fe/core/controllerextensions/collaboration/ActivitySync.js +360 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ActivitySync.ts +58 -112
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.js +2 -2
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/CollaborationCommon.ts +7 -7
- package/src/sap/fe/core/controllerextensions/collaboration/Manage.js +262 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/Manage.ts +20 -21
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/ManageDialog.fragment.xml +0 -0
- package/src/sap/fe/core/{actions → controllerextensions}/collaboration/UserDetails.fragment.xml +5 -7
- package/src/sap/fe/core/controllerextensions/editFlow/TransactionHelper.js +1631 -0
- package/src/sap/fe/core/{TransactionHelper.ts → controllerextensions/editFlow/TransactionHelper.ts} +270 -211
- package/src/sap/fe/core/controllerextensions/editFlow/draft.js +772 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/draft.ts +240 -100
- package/src/sap/fe/core/controllerextensions/editFlow/operations.js +1199 -0
- package/src/sap/fe/core/{actions → controllerextensions/editFlow}/operations.ts +364 -229
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.js +188 -0
- package/src/sap/fe/core/controllerextensions/editFlow/sticky.ts +185 -0
- package/src/sap/fe/core/controllerextensions/messageHandler/messageHandling.js +626 -0
- package/src/sap/fe/core/{actions → controllerextensions/messageHandler}/messageHandling.ts +112 -69
- package/src/sap/fe/core/controllerextensions/routing/RouterProxy.js +937 -0
- package/src/sap/fe/core/{RouterProxy.ts → controllerextensions/routing/RouterProxy.ts} +72 -73
- package/src/sap/fe/core/controls/ActionParameterDialog.fragment.xml +21 -18
- package/src/sap/fe/core/controls/Any.js +9 -5
- package/src/sap/fe/core/controls/Any.ts +10 -4
- package/src/sap/fe/core/controls/CommandExecution.js +21 -24
- package/src/sap/fe/core/controls/CommandExecution.ts +19 -24
- package/src/sap/fe/core/controls/ConditionalWrapper.js +2 -2
- package/src/sap/fe/core/controls/ConditionalWrapper.ts +3 -3
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.js +48 -43
- package/src/sap/fe/core/controls/CustomFilterFieldContentWrapper.ts +51 -46
- package/src/sap/fe/core/controls/CustomQuickViewPage.js +3 -2
- package/src/sap/fe/core/controls/CustomQuickViewPage.ts +3 -2
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossDraft.fragment.xml +11 -3
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.js +19 -9
- package/src/sap/fe/core/controls/DataLossOrDraftDiscard/DataLossOrDraftDiscardHandler.ts +14 -8
- package/src/sap/fe/core/controls/FieldWrapper.js +2 -2
- package/src/sap/fe/core/controls/FieldWrapper.ts +3 -3
- package/src/sap/fe/core/controls/FileWrapper.js +50 -3
- package/src/sap/fe/core/controls/FileWrapper.ts +45 -12
- package/src/sap/fe/core/controls/FilterBar.js +6 -2
- package/src/sap/fe/core/controls/FilterBar.ts +13 -9
- package/src/sap/fe/core/controls/FormElementWrapper.js +12 -2
- package/src/sap/fe/core/controls/FormElementWrapper.ts +14 -3
- package/src/sap/fe/core/controls/MassEditSelect.js +33 -0
- package/src/sap/fe/core/controls/MassEditSelect.ts +41 -0
- package/src/sap/fe/core/controls/NonComputedVisibleKeyFieldsDialog.fragment.xml +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilter.js +16 -12
- package/src/sap/fe/core/controls/filterbar/VisualFilter.ts +20 -22
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.js +3 -3
- package/src/sap/fe/core/controls/filterbar/VisualFilterContainer.ts +8 -8
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.js +48 -48
- package/src/sap/fe/core/controls/filterbar/utils/VisualFilterUtils.ts +71 -76
- package/src/sap/fe/core/controls/massEdit/MassEditDialog.fragment.xml +36 -65
- package/src/sap/fe/core/controls/massEdit/MassEditField.fragment.xml +107 -0
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.js +551 -36
- package/src/sap/fe/core/controls/massEdit/MassEditHandlers.ts +605 -36
- package/src/sap/fe/core/converters/ConverterContext.js +26 -33
- package/src/sap/fe/core/converters/ConverterContext.ts +51 -60
- package/src/sap/fe/core/converters/ManifestSettings.js +2 -1
- package/src/sap/fe/core/converters/ManifestSettings.ts +17 -14
- package/src/sap/fe/core/converters/ManifestWrapper.js +59 -45
- package/src/sap/fe/core/converters/ManifestWrapper.ts +55 -45
- package/src/sap/fe/core/converters/MetaModelConverter.js +56 -67
- package/src/sap/fe/core/converters/MetaModelConverter.ts +183 -193
- package/src/sap/fe/core/converters/TemplateConverter.js +21 -20
- package/src/sap/fe/core/converters/TemplateConverter.ts +27 -24
- package/src/sap/fe/core/converters/annotations/DataField.js +73 -37
- package/src/sap/fe/core/converters/annotations/DataField.ts +121 -77
- package/src/sap/fe/core/converters/common/AnnotationConverter.js +1911 -1495
- package/src/sap/fe/core/converters/controls/Common/Action.js +51 -49
- package/src/sap/fe/core/converters/controls/Common/Action.ts +58 -54
- package/src/sap/fe/core/converters/controls/Common/Chart.js +22 -15
- package/src/sap/fe/core/converters/controls/Common/Chart.ts +29 -27
- package/src/sap/fe/core/converters/controls/Common/Criticality.js +3 -3
- package/src/sap/fe/core/converters/controls/Common/Criticality.ts +4 -4
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.js +28 -28
- package/src/sap/fe/core/converters/controls/Common/DataVisualization.ts +40 -36
- package/src/sap/fe/core/converters/controls/Common/Form.js +30 -34
- package/src/sap/fe/core/converters/controls/Common/Form.ts +48 -58
- package/src/sap/fe/core/converters/controls/Common/KPI.js +11 -11
- package/src/sap/fe/core/converters/controls/Common/KPI.ts +35 -39
- package/src/sap/fe/core/converters/controls/Common/Table.js +318 -244
- package/src/sap/fe/core/converters/controls/Common/Table.ts +368 -297
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.js +135 -125
- package/src/sap/fe/core/converters/controls/Common/table/StandardActions.ts +162 -148
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.js +51 -45
- package/src/sap/fe/core/converters/controls/ListReport/FilterBar.ts +79 -67
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.js +28 -26
- package/src/sap/fe/core/converters/controls/ListReport/VisualFilters.ts +46 -43
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.js +9 -9
- package/src/sap/fe/core/converters/controls/ObjectPage/Avatar.ts +14 -13
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.js +67 -64
- package/src/sap/fe/core/converters/controls/ObjectPage/HeaderFacet.ts +69 -66
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.js +92 -89
- package/src/sap/fe/core/converters/controls/ObjectPage/SubSection.ts +124 -120
- package/src/sap/fe/core/converters/helpers/Aggregation.js +11 -5
- package/src/sap/fe/core/converters/helpers/Aggregation.ts +25 -23
- package/src/sap/fe/core/converters/helpers/BindingHelper.js +31 -30
- package/src/sap/fe/core/converters/helpers/BindingHelper.ts +31 -29
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.js +4 -4
- package/src/sap/fe/core/converters/helpers/ConfigurableObject.ts +9 -9
- package/src/sap/fe/core/converters/helpers/ID.js +46 -46
- package/src/sap/fe/core/converters/helpers/ID.ts +25 -25
- package/src/sap/fe/core/converters/helpers/Key.js +7 -7
- package/src/sap/fe/core/converters/helpers/Key.ts +7 -7
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.js +1 -1
- package/src/sap/fe/core/converters/helpers/SelectionVariantHelper.ts +4 -4
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.js +6 -6
- package/src/sap/fe/core/converters/objectPage/FormMenuActions.ts +10 -10
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.js +46 -62
- package/src/sap/fe/core/converters/objectPage/HeaderAndFooterAction.ts +54 -82
- package/src/sap/fe/core/converters/templates/ListReportConverter.js +30 -29
- package/src/sap/fe/core/converters/templates/ListReportConverter.ts +40 -40
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.js +56 -55
- package/src/sap/fe/core/converters/templates/ObjectPageConverter.ts +65 -77
- package/src/sap/fe/core/designtime/AppComponent.designtime.js +6 -6
- package/src/sap/fe/core/designtime/AppComponent.designtime.ts +10 -8
- package/src/sap/fe/core/formatters/CollaborationFormatter.js +2 -2
- package/src/sap/fe/core/formatters/CollaborationFormatter.ts +3 -3
- package/src/sap/fe/core/formatters/FPMFormatter.js +5 -5
- package/src/sap/fe/core/formatters/FPMFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/KPIFormatter.js +7 -7
- package/src/sap/fe/core/formatters/KPIFormatter.ts +10 -10
- package/src/sap/fe/core/formatters/StandardFormatter.js +89 -0
- package/src/sap/fe/core/formatters/StandardFormatter.ts +64 -0
- package/src/sap/fe/core/formatters/TableFormatter.js +83 -22
- package/src/sap/fe/core/formatters/TableFormatter.ts +80 -25
- package/src/sap/fe/core/formatters/ValueFormatter.js +8 -8
- package/src/sap/fe/core/formatters/ValueFormatter.ts +9 -9
- package/src/sap/fe/core/fpm/Component.js +2 -2
- package/src/sap/fe/core/fpm/Component.ts +1 -1
- package/src/sap/fe/core/helpers/AppStartupHelper.js +15 -15
- package/src/sap/fe/core/helpers/AppStartupHelper.ts +37 -40
- package/src/sap/fe/core/helpers/BindingToolkit.js +1809 -0
- package/src/sap/fe/core/helpers/{BindingExpression.ts → BindingToolkit.ts} +388 -285
- package/src/sap/fe/core/helpers/ClassSupport.js +20 -11
- package/src/sap/fe/core/helpers/ClassSupport.ts +15 -10
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.js +2 -2
- package/src/sap/fe/core/helpers/DynamicAnnotationPathHelper.ts +1 -1
- package/src/sap/fe/core/helpers/EditState.js +1 -6
- package/src/sap/fe/core/helpers/EditState.ts +5 -10
- package/src/sap/fe/core/helpers/ExcelFormatHelper.js +2 -2
- package/src/sap/fe/core/helpers/ExcelFormatHelper.ts +4 -4
- package/src/sap/fe/core/helpers/FPMHelper.js +3 -2
- package/src/sap/fe/core/helpers/FPMHelper.ts +10 -9
- package/src/sap/fe/core/helpers/KeepAliveHelper.js +31 -31
- package/src/sap/fe/core/helpers/KeepAliveHelper.ts +52 -56
- package/src/sap/fe/core/helpers/MassEditHelper.js +532 -264
- package/src/sap/fe/core/helpers/MassEditHelper.ts +560 -289
- package/src/sap/fe/core/helpers/ModelHelper.js +25 -25
- package/src/sap/fe/core/helpers/ModelHelper.ts +50 -58
- package/src/sap/fe/core/helpers/PasteHelper.js +3 -10
- package/src/sap/fe/core/helpers/PasteHelper.ts +20 -25
- package/src/sap/fe/core/helpers/SemanticDateOperators.js +1 -1
- package/src/sap/fe/core/helpers/SemanticDateOperators.ts +11 -11
- package/src/sap/fe/core/helpers/SemanticKeyHelper.js +3 -3
- package/src/sap/fe/core/helpers/SemanticKeyHelper.ts +8 -8
- package/src/sap/fe/core/helpers/StableIdHelper.js +16 -12
- package/src/sap/fe/core/helpers/StableIdHelper.ts +20 -16
- package/src/sap/fe/core/{Synchronization.js → helpers/Synchronization.js} +1 -1
- package/src/sap/fe/core/{Synchronization.ts → helpers/Synchronization.ts} +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.js +1 -1
- package/src/sap/fe/core/jsx-runtime/jsx.ts +8 -8
- package/src/sap/fe/core/library.js +51 -3
- package/src/sap/fe/core/library.ts +47 -0
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.js +3 -3
- package/src/sap/fe/core/manifestMerger/ChangePageConfiguration.ts +2 -2
- package/src/sap/fe/core/messagebundle.properties +151 -197
- package/src/sap/fe/core/messagebundle_ar.properties +36 -63
- package/src/sap/fe/core/messagebundle_bg.properties +36 -63
- package/src/sap/fe/core/messagebundle_ca.properties +36 -63
- package/src/sap/fe/core/messagebundle_cs.properties +36 -63
- package/src/sap/fe/core/messagebundle_cy.properties +36 -63
- package/src/sap/fe/core/messagebundle_da.properties +37 -64
- package/src/sap/fe/core/messagebundle_de.properties +36 -63
- package/src/sap/fe/core/messagebundle_el.properties +38 -65
- package/src/sap/fe/core/messagebundle_en.properties +37 -64
- package/src/sap/fe/core/messagebundle_en_GB.properties +37 -64
- package/src/sap/fe/core/messagebundle_en_US_sappsd.properties +44 -73
- package/src/sap/fe/core/messagebundle_en_US_saprigi.properties +37 -64
- package/src/sap/fe/core/messagebundle_en_US_saptrc.properties +52 -81
- package/src/sap/fe/core/messagebundle_es.properties +36 -63
- package/src/sap/fe/core/messagebundle_es_MX.properties +36 -63
- package/src/sap/fe/core/messagebundle_et.properties +36 -63
- package/src/sap/fe/core/messagebundle_fi.properties +36 -63
- package/src/sap/fe/core/messagebundle_fr.properties +39 -66
- package/src/sap/fe/core/messagebundle_fr_CA.properties +36 -63
- package/src/sap/fe/core/messagebundle_hi.properties +36 -63
- package/src/sap/fe/core/messagebundle_hr.properties +36 -63
- package/src/sap/fe/core/messagebundle_hu.properties +35 -62
- package/src/sap/fe/core/messagebundle_id.properties +37 -64
- package/src/sap/fe/core/messagebundle_it.properties +54 -81
- package/src/sap/fe/core/messagebundle_iw.properties +36 -63
- package/src/sap/fe/core/messagebundle_ja.properties +36 -63
- package/src/sap/fe/core/messagebundle_kk.properties +36 -63
- package/src/sap/fe/core/messagebundle_ko.properties +36 -63
- package/src/sap/fe/core/messagebundle_lt.properties +36 -63
- package/src/sap/fe/core/messagebundle_lv.properties +36 -63
- package/src/sap/fe/core/messagebundle_ms.properties +37 -64
- package/src/sap/fe/core/messagebundle_nl.properties +37 -64
- package/src/sap/fe/core/messagebundle_no.properties +36 -63
- package/src/sap/fe/core/messagebundle_pl.properties +37 -64
- package/src/sap/fe/core/messagebundle_pt.properties +37 -64
- package/src/sap/fe/core/messagebundle_pt_PT.properties +36 -63
- package/src/sap/fe/core/messagebundle_ro.properties +36 -63
- package/src/sap/fe/core/messagebundle_ru.properties +36 -63
- package/src/sap/fe/core/messagebundle_sh.properties +36 -63
- package/src/sap/fe/core/messagebundle_sk.properties +36 -63
- package/src/sap/fe/core/messagebundle_sl.properties +38 -65
- package/src/sap/fe/core/messagebundle_sv.properties +36 -63
- package/src/sap/fe/core/messagebundle_th.properties +36 -63
- package/src/sap/fe/core/messagebundle_tr.properties +36 -63
- package/src/sap/fe/core/messagebundle_uk.properties +37 -64
- package/src/sap/fe/core/messagebundle_vi.properties +37 -64
- package/src/sap/fe/core/messagebundle_zh_CN.properties +36 -63
- package/src/sap/fe/core/messagebundle_zh_TW.properties +37 -64
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.js +2 -2
- package/src/sap/fe/core/services/AsyncComponentServiceFactory.ts +5 -5
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.js +2 -2
- package/src/sap/fe/core/services/CacheHandlerServiceFactory.ts +14 -14
- package/src/sap/fe/core/services/EnvironmentServiceFactory.js +6 -3
- package/src/sap/fe/core/services/EnvironmentServiceFactory.ts +12 -10
- package/src/sap/fe/core/services/NavigationServiceFactory.js +54 -45
- package/src/sap/fe/core/services/NavigationServiceFactory.ts +61 -49
- package/src/sap/fe/core/services/ResourceModelServiceFactory.js +2 -2
- package/src/sap/fe/core/services/ResourceModelServiceFactory.ts +4 -4
- package/src/sap/fe/core/services/RoutingServiceFactory.js +63 -60
- package/src/sap/fe/core/services/RoutingServiceFactory.ts +76 -73
- package/src/sap/fe/core/services/ShellServicesFactory.js +102 -71
- package/src/sap/fe/core/services/ShellServicesFactory.ts +109 -78
- package/src/sap/fe/core/services/SideEffectsServiceFactory.js +61 -61
- package/src/sap/fe/core/services/SideEffectsServiceFactory.ts +102 -92
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.js +24 -18
- package/src/sap/fe/core/services/TemplatedViewServiceFactory.ts +53 -50
- package/src/sap/fe/core/support/CommonHelper.js +3 -2
- package/src/sap/fe/core/support/CommonHelper.ts +9 -13
- package/src/sap/fe/core/support/Diagnostics.js +1 -1
- package/src/sap/fe/core/support/Diagnostics.ts +5 -5
- package/src/sap/fe/core/templating/CommonFormatters.js +84 -0
- package/src/sap/fe/core/templating/CommonFormatters.ts +86 -0
- package/src/sap/fe/core/templating/CriticalityFormatters.js +31 -31
- package/src/sap/fe/core/templating/CriticalityFormatters.ts +42 -40
- package/src/sap/fe/core/templating/DataFieldFormatters.js +8 -8
- package/src/sap/fe/core/templating/DataFieldFormatters.ts +13 -10
- package/src/sap/fe/core/templating/DataModelPathHelper.js +16 -15
- package/src/sap/fe/core/templating/DataModelPathHelper.ts +42 -32
- package/src/sap/fe/core/templating/DisplayModeFormatter.js +1 -1
- package/src/sap/fe/core/templating/DisplayModeFormatter.ts +3 -4
- package/src/sap/fe/core/templating/EntitySetHelper.js +7 -15
- package/src/sap/fe/core/templating/EntitySetHelper.ts +14 -18
- package/src/sap/fe/core/templating/FieldControlHelper.js +35 -34
- package/src/sap/fe/core/templating/FieldControlHelper.ts +29 -46
- package/src/sap/fe/core/templating/FilterHelper.js +12 -11
- package/src/sap/fe/core/templating/FilterHelper.ts +17 -16
- package/src/sap/fe/core/templating/FilterTemplating.js +1 -1
- package/src/sap/fe/core/templating/FilterTemplating.ts +3 -3
- package/src/sap/fe/core/templating/PropertyFormatters.js +7 -7
- package/src/sap/fe/core/templating/PropertyFormatters.ts +21 -19
- package/src/sap/fe/core/templating/PropertyHelper.js +79 -56
- package/src/sap/fe/core/templating/PropertyHelper.ts +41 -27
- package/src/sap/fe/core/templating/UIFormatters.js +163 -97
- package/src/sap/fe/core/templating/UIFormatters.ts +210 -129
- package/src/sap/fe/core/type/DateTimeWithTimezone.js +47 -0
- package/src/sap/fe/core/type/DateTimeWithTimezone.ts +23 -0
- package/src/sap/fe/core/type/Email.js +2 -2
- package/src/sap/fe/core/type/Email.ts +2 -2
- package/src/sap/fe/core/AnnotationHelper.js +0 -331
- package/src/sap/fe/core/AnnotationHelper.ts +0 -321
- package/src/sap/fe/core/RouterProxy.js +0 -938
- package/src/sap/fe/core/TransactionHelper.js +0 -1577
- package/src/sap/fe/core/actions/collaboration/ActivitySync.js +0 -406
- package/src/sap/fe/core/actions/collaboration/Manage.js +0 -264
- package/src/sap/fe/core/actions/draft.js +0 -665
- package/src/sap/fe/core/actions/messageHandling.js +0 -579
- package/src/sap/fe/core/actions/nonDraft.js +0 -20
- package/src/sap/fe/core/actions/nonDraft.ts +0 -12
- package/src/sap/fe/core/actions/operations.js +0 -1096
- package/src/sap/fe/core/actions/sticky.js +0 -130
- package/src/sap/fe/core/actions/sticky.ts +0 -119
- package/src/sap/fe/core/formatters/CriticalityFormatter.js +0 -77
- package/src/sap/fe/core/formatters/CriticalityFormatter.ts +0 -58
- package/src/sap/fe/core/helpers/BindingExpression.js +0 -1729
|
@@ -1,13 +1,13 @@
|
|
|
1
|
+
import type ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
1
2
|
import Log from "sap/base/Log";
|
|
2
|
-
import BaseObject from "sap/ui/base/Object";
|
|
3
|
-
import Synchronization from "sap/fe/core/Synchronization";
|
|
4
|
-
import URI from "sap/ui/thirdparty/URI";
|
|
5
|
-
import { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
|
|
6
|
-
import Router from "sap/ui/core/routing/Router";
|
|
7
3
|
import { defineUI5Class } from "sap/fe/core/helpers/ClassSupport";
|
|
8
|
-
import
|
|
9
|
-
import {
|
|
4
|
+
import Synchronization from "sap/fe/core/helpers/Synchronization";
|
|
5
|
+
import type { IShellServices } from "sap/fe/core/services/ShellServicesFactory";
|
|
6
|
+
import BaseObject from "sap/ui/base/Object";
|
|
10
7
|
import Core from "sap/ui/core/Core";
|
|
8
|
+
import type Router from "sap/ui/core/routing/Router";
|
|
9
|
+
import URI from "sap/ui/thirdparty/URI";
|
|
10
|
+
import type { CoreEx } from "types/extension_types";
|
|
11
11
|
|
|
12
12
|
const enumState = {
|
|
13
13
|
EQUAL: 0,
|
|
@@ -23,13 +23,13 @@ const enumURLParams = {
|
|
|
23
23
|
/**
|
|
24
24
|
* Creates a HashGuard object.
|
|
25
25
|
*
|
|
26
|
-
* @param
|
|
27
|
-
* @returns
|
|
26
|
+
* @param sGuardHash The hash used for the guard
|
|
27
|
+
* @returns The created hash guard
|
|
28
28
|
*/
|
|
29
29
|
function createGuardFromHash(sGuardHash: string) {
|
|
30
30
|
return {
|
|
31
31
|
_guardHash: sGuardHash.replace(/\?[^\?]*$/, ""), // Remove query part
|
|
32
|
-
check: function(sHash: any) {
|
|
32
|
+
check: function (sHash: any) {
|
|
33
33
|
return sHash.indexOf(this._guardHash) === 0;
|
|
34
34
|
}
|
|
35
35
|
};
|
|
@@ -37,43 +37,43 @@ function createGuardFromHash(sGuardHash: string) {
|
|
|
37
37
|
/**
|
|
38
38
|
* Returns the iAppState part from a hash (or null if not found).
|
|
39
39
|
*
|
|
40
|
-
* @param
|
|
41
|
-
* @returns
|
|
40
|
+
* @param sHash The hash
|
|
41
|
+
* @returns The iAppState part of the hash
|
|
42
42
|
*/
|
|
43
43
|
function findAppStateInHash(sHash: string): string | null {
|
|
44
|
-
const aAppState = sHash.match(new RegExp(
|
|
44
|
+
const aAppState = sHash.match(new RegExp(`\\?.*${enumURLParams.IAPPSTATEPARAM}=([^&]*)`));
|
|
45
45
|
return aAppState && aAppState.length > 1 ? aAppState[1] : null;
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Returns a hash without its iAppState part.
|
|
49
49
|
*
|
|
50
|
-
* @param
|
|
51
|
-
* @returns
|
|
50
|
+
* @param sHash The hash
|
|
51
|
+
* @returns The hash without the iAppState
|
|
52
52
|
*/
|
|
53
53
|
function removeAppStateInHash(sHash: string) {
|
|
54
|
-
return sHash.replace(new RegExp(
|
|
54
|
+
return sHash.replace(new RegExp(`[&?]*${enumURLParams.IAPPSTATEPARAM}=[^&]*`), "");
|
|
55
55
|
}
|
|
56
56
|
/**
|
|
57
57
|
* Adds an iAppState inside a hash (or replaces an existing one).
|
|
58
58
|
*
|
|
59
|
-
* @param
|
|
60
|
-
* @param
|
|
61
|
-
* @returns
|
|
59
|
+
* @param sHash The hash
|
|
60
|
+
* @param sAppStateKey The iAppState to add
|
|
61
|
+
* @returns The hash with the app state
|
|
62
62
|
*/
|
|
63
63
|
function setAppStateInHash(sHash: any, sAppStateKey: any) {
|
|
64
64
|
let sNewHash;
|
|
65
65
|
|
|
66
66
|
if (sHash.indexOf(enumURLParams.IAPPSTATEPARAM) >= 0) {
|
|
67
67
|
// If there's already an iAppState parameter in the hash, replace it
|
|
68
|
-
sNewHash = sHash.replace(new RegExp(enumURLParams.IAPPSTATEPARAM
|
|
68
|
+
sNewHash = sHash.replace(new RegExp(`${enumURLParams.IAPPSTATEPARAM}=[^&]*`), `${enumURLParams.IAPPSTATEPARAM}=${sAppStateKey}`);
|
|
69
69
|
} else {
|
|
70
70
|
// Add the iAppState parameter in the hash
|
|
71
71
|
if (sHash.indexOf("?") < 0) {
|
|
72
|
-
sNewHash = sHash
|
|
72
|
+
sNewHash = `${sHash}?`;
|
|
73
73
|
} else {
|
|
74
|
-
sNewHash = sHash
|
|
74
|
+
sNewHash = `${sHash}&`;
|
|
75
75
|
}
|
|
76
|
-
sNewHash += enumURLParams.IAPPSTATEPARAM
|
|
76
|
+
sNewHash += `${enumURLParams.IAPPSTATEPARAM}=${sAppStateKey}`;
|
|
77
77
|
}
|
|
78
78
|
|
|
79
79
|
return sNewHash;
|
|
@@ -129,7 +129,7 @@ class RouterProxy extends BaseObject {
|
|
|
129
129
|
this._fnBlockingNavFilter = this._blockingNavigationFilter.bind(this);
|
|
130
130
|
this._oShellServices.registerNavigationFilter(this._fnBlockingNavFilter);
|
|
131
131
|
})
|
|
132
|
-
.catch(function(oError: any) {
|
|
132
|
+
.catch(function (oError: any) {
|
|
133
133
|
Log.error("Cannot retrieve the shell services", oError);
|
|
134
134
|
});
|
|
135
135
|
this._fnHashGuard = this.hashGuard.bind(this);
|
|
@@ -149,7 +149,7 @@ class RouterProxy extends BaseObject {
|
|
|
149
149
|
/**
|
|
150
150
|
* Raw initialization (for unit tests).
|
|
151
151
|
*
|
|
152
|
-
* @param
|
|
152
|
+
* @param oRouter The router used by this proxy
|
|
153
153
|
*/
|
|
154
154
|
initRaw(oRouter: Router) {
|
|
155
155
|
this._oRouter = oRouter;
|
|
@@ -180,7 +180,6 @@ class RouterProxy extends BaseObject {
|
|
|
180
180
|
*
|
|
181
181
|
* @function
|
|
182
182
|
* @name sap.fe.core.RouterProxy#removeIAppStateKey
|
|
183
|
-
*
|
|
184
183
|
* @ui5-restricted
|
|
185
184
|
*/
|
|
186
185
|
removeIAppStateKey() {
|
|
@@ -194,12 +193,12 @@ class RouterProxy extends BaseObject {
|
|
|
194
193
|
* @name sap.fe.core.RouterProxy#navToHash
|
|
195
194
|
* @memberof sap.fe.core.RouterProxy
|
|
196
195
|
* @static
|
|
197
|
-
* @param
|
|
198
|
-
* @param
|
|
199
|
-
* @param
|
|
200
|
-
* @param
|
|
201
|
-
* @param
|
|
202
|
-
* @returns
|
|
196
|
+
* @param sHash Hash to be navigated to
|
|
197
|
+
* @param bPreserveHistory If set to true, non-ancestor entries in history will be retained
|
|
198
|
+
* @param bDisablePreservationCache If set to true, cache preservation mechanism is disabled for the current navigation
|
|
199
|
+
* @param bForceFocus If set to true, the logic to set the focus once the navigation is finalized will be triggered (onPageReady)
|
|
200
|
+
* @param bPreserveShellBackNavigationHandler If not set to false, the back navigation is set to undefined
|
|
201
|
+
* @returns Promise (resolved when the navigation is finalized) that returns 'true' if a navigation took place, 'false' if the navigation didn't happen
|
|
203
202
|
* @ui5-restricted
|
|
204
203
|
*/
|
|
205
204
|
navToHash(
|
|
@@ -208,7 +207,7 @@ class RouterProxy extends BaseObject {
|
|
|
208
207
|
bDisablePreservationCache?: boolean,
|
|
209
208
|
bForceFocus?: boolean,
|
|
210
209
|
bPreserveShellBackNavigationHandler?: boolean
|
|
211
|
-
) {
|
|
210
|
+
): Promise<boolean> {
|
|
212
211
|
if (bPreserveShellBackNavigationHandler !== false) {
|
|
213
212
|
this._oShellServices.setBackNavigation();
|
|
214
213
|
}
|
|
@@ -225,7 +224,7 @@ class RouterProxy extends BaseObject {
|
|
|
225
224
|
}
|
|
226
225
|
}
|
|
227
226
|
|
|
228
|
-
_internalNavToHash(sHash: any, bPreserveHistory: any, bDisablePreservationCache: any, bForceFocus?: boolean) {
|
|
227
|
+
_internalNavToHash(sHash: any, bPreserveHistory: any, bDisablePreservationCache: any, bForceFocus?: boolean): Promise<boolean> {
|
|
229
228
|
// Add the app state in the hash if needed
|
|
230
229
|
if (this.fclEnabled && this.sIAppStateKey && !findAppStateInHash(sHash)) {
|
|
231
230
|
sHash = setAppStateInHash(sHash, this.sIAppStateKey);
|
|
@@ -255,7 +254,7 @@ class RouterProxy extends BaseObject {
|
|
|
255
254
|
this._bForceFocus =
|
|
256
255
|
bForceFocus ||
|
|
257
256
|
(aCurrentHashKeys.length < oNewState.keys.length &&
|
|
258
|
-
aCurrentHashKeys.every(function(key: any, index: any) {
|
|
257
|
+
aCurrentHashKeys.every(function (key: any, index: any) {
|
|
259
258
|
return key === oNewState.keys[index];
|
|
260
259
|
}));
|
|
261
260
|
}
|
|
@@ -269,7 +268,7 @@ class RouterProxy extends BaseObject {
|
|
|
269
268
|
* Clears browser history if entries have been added without using the RouterProxy.
|
|
270
269
|
* Updates the internal history accordingly.
|
|
271
270
|
*
|
|
272
|
-
* @returns
|
|
271
|
+
* @returns Promise that is resolved once the history is rebuilt
|
|
273
272
|
*/
|
|
274
273
|
restoreHistory() {
|
|
275
274
|
if (this._bApplyRestore) {
|
|
@@ -289,7 +288,7 @@ class RouterProxy extends BaseObject {
|
|
|
289
288
|
/**
|
|
290
289
|
* Navigates back in the history.
|
|
291
290
|
*
|
|
292
|
-
* @returns
|
|
291
|
+
* @returns Promise that is resolved when the navigation is finalized
|
|
293
292
|
*/
|
|
294
293
|
navBack() {
|
|
295
294
|
const sCurrentHash = this.getHash();
|
|
@@ -316,9 +315,10 @@ class RouterProxy extends BaseObject {
|
|
|
316
315
|
|
|
317
316
|
/**
|
|
318
317
|
* Navigates to a route with parameters.
|
|
319
|
-
*
|
|
320
|
-
* @param
|
|
321
|
-
* @
|
|
318
|
+
*
|
|
319
|
+
* @param sRouteName The route name to be navigated to
|
|
320
|
+
* @param oParameters Parameters for the navigation
|
|
321
|
+
* @returns Promise that is resolved when the navigation is finalized
|
|
322
322
|
* @ui5-restricted
|
|
323
323
|
*/
|
|
324
324
|
navTo(sRouteName: string, oParameters: any) {
|
|
@@ -330,7 +330,7 @@ class RouterProxy extends BaseObject {
|
|
|
330
330
|
* Exits the current app by navigating back
|
|
331
331
|
* to the previous app (if any) or the FLP.
|
|
332
332
|
*
|
|
333
|
-
* @returns
|
|
333
|
+
* @returns Promise that is resolved when we exit the app
|
|
334
334
|
*/
|
|
335
335
|
exitFromApp() {
|
|
336
336
|
return this._oShellServices.backToPreviousApp();
|
|
@@ -340,8 +340,8 @@ class RouterProxy extends BaseObject {
|
|
|
340
340
|
* Checks whether a given hash can have an impact on the current state
|
|
341
341
|
* i.e. if the hash is equal, compatible or an ancestor of the current state.
|
|
342
342
|
*
|
|
343
|
-
* @param
|
|
344
|
-
* @returns
|
|
343
|
+
* @param sHash `true` if there is an impact
|
|
344
|
+
* @returns If there is an impact
|
|
345
345
|
*/
|
|
346
346
|
isCurrentStateImpactedBy(sHash: any) {
|
|
347
347
|
if (sHash[0] === "/") {
|
|
@@ -354,7 +354,7 @@ class RouterProxy extends BaseObject {
|
|
|
354
354
|
/**
|
|
355
355
|
* Checks if a navigation is currently being processed.
|
|
356
356
|
*
|
|
357
|
-
* @returns
|
|
357
|
+
* @returns `false` if a navigation has been triggered in the RouterProxy and is not yet finalized
|
|
358
358
|
*/
|
|
359
359
|
isNavigationFinalized() {
|
|
360
360
|
return !this.bIsRebuildHistoryRunning && !this._bDelayedRebuild;
|
|
@@ -382,7 +382,7 @@ class RouterProxy extends BaseObject {
|
|
|
382
382
|
/**
|
|
383
383
|
* Checks for the availability of the navigation guard.
|
|
384
384
|
*
|
|
385
|
-
* @returns
|
|
385
|
+
* @returns `true` if navigating guard is available
|
|
386
386
|
*/
|
|
387
387
|
hasNavigationGuard() {
|
|
388
388
|
return this._oNavigationGuard !== null;
|
|
@@ -391,8 +391,8 @@ class RouterProxy extends BaseObject {
|
|
|
391
391
|
/**
|
|
392
392
|
* Tests a hash against the navigation guard.
|
|
393
393
|
*
|
|
394
|
-
* @param
|
|
395
|
-
* @returns
|
|
394
|
+
* @param sHash The hash to be tested
|
|
395
|
+
* @returns `true` if navigating to the hash doesn't cross the guard
|
|
396
396
|
*/
|
|
397
397
|
checkHashWithGuard(sHash: string) {
|
|
398
398
|
return this._oNavigationGuard === null || this._oNavigationGuard.check(sHash);
|
|
@@ -401,7 +401,7 @@ class RouterProxy extends BaseObject {
|
|
|
401
401
|
/**
|
|
402
402
|
* Checks if the user allowed the navigation guard to be crossed.
|
|
403
403
|
*
|
|
404
|
-
* @returns
|
|
404
|
+
* @returns `true` if crossing the guard has been allowed by the user
|
|
405
405
|
*/
|
|
406
406
|
isGuardCrossAllowedByUser() {
|
|
407
407
|
return this.bIsGuardCrossAllowed;
|
|
@@ -441,7 +441,7 @@ class RouterProxy extends BaseObject {
|
|
|
441
441
|
const aTokens = sHashNoParams.split("/");
|
|
442
442
|
const aKeys: any[] = [];
|
|
443
443
|
|
|
444
|
-
aTokens.forEach(function(sToken: any) {
|
|
444
|
+
aTokens.forEach(function (sToken: any) {
|
|
445
445
|
const regexKey = /[^\(\)]+\([^\(\)]+\)/; // abc(def)
|
|
446
446
|
if (regexKey.test(sToken)) {
|
|
447
447
|
aKeys.push(sToken.split("(")[0]);
|
|
@@ -454,9 +454,8 @@ class RouterProxy extends BaseObject {
|
|
|
454
454
|
/**
|
|
455
455
|
* Builds a state from a hash.
|
|
456
456
|
*
|
|
457
|
-
* @param
|
|
458
|
-
* @returns
|
|
459
|
-
*
|
|
457
|
+
* @param sHash The hash to be used as entry
|
|
458
|
+
* @returns The state
|
|
460
459
|
* @ui5-restricted
|
|
461
460
|
*/
|
|
462
461
|
_extractStateFromHash(sHash: string) {
|
|
@@ -469,7 +468,7 @@ class RouterProxy extends BaseObject {
|
|
|
469
468
|
};
|
|
470
469
|
|
|
471
470
|
// Retrieve layout (if any)
|
|
472
|
-
const aLayout = sHash.match(new RegExp(
|
|
471
|
+
const aLayout = sHash.match(new RegExp(`\\?.*${enumURLParams.LAYOUTPARAM}=([^&]*)`));
|
|
473
472
|
oState.sLayout = aLayout && aLayout.length > 1 ? aLayout[1] : null;
|
|
474
473
|
if (oState.sLayout === "MidColumnFullScreen") {
|
|
475
474
|
oState.screenMode = 1;
|
|
@@ -489,11 +488,11 @@ class RouterProxy extends BaseObject {
|
|
|
489
488
|
* Also sets the iAppState key in the whole history.
|
|
490
489
|
*
|
|
491
490
|
* @memberof sap.fe.core.RouterProxy
|
|
492
|
-
* @param
|
|
493
|
-
* @param
|
|
494
|
-
* @param
|
|
495
|
-
* @param
|
|
496
|
-
* @returns
|
|
491
|
+
* @param oNewState The new state to be added
|
|
492
|
+
* @param bRebuildOnly `true` if we're rebuilding the history after a shell menu navigation
|
|
493
|
+
* @param bPreserveHistory If set to true, non-ancestor entries in history will be retained
|
|
494
|
+
* @param bDisableHistoryPreservation Disable the mechanism to retained marked entries in cache
|
|
495
|
+
* @returns The new state
|
|
497
496
|
* @ui5-restricted
|
|
498
497
|
* @final
|
|
499
498
|
*/
|
|
@@ -598,7 +597,6 @@ class RouterProxy extends BaseObject {
|
|
|
598
597
|
*
|
|
599
598
|
* @function
|
|
600
599
|
* @memberof sap.fe.core.RouterProxy
|
|
601
|
-
*
|
|
602
600
|
* @ui5-restricted
|
|
603
601
|
* @final
|
|
604
602
|
*/
|
|
@@ -613,8 +611,7 @@ class RouterProxy extends BaseObject {
|
|
|
613
611
|
* @function
|
|
614
612
|
* @name sap.fe.core.RouterProxy#_enableEventOnHashChange
|
|
615
613
|
* @memberof sap.fe.core.RouterProxy
|
|
616
|
-
* @param
|
|
617
|
-
*
|
|
614
|
+
* @param [bIgnoreCurrentHash] Ignore the last hash event triggered before the router has initialized
|
|
618
615
|
* @ui5-restricted
|
|
619
616
|
* @final
|
|
620
617
|
*/
|
|
@@ -627,16 +624,16 @@ class RouterProxy extends BaseObject {
|
|
|
627
624
|
* Synchronizes the browser history with the internal history of the routerProxy, and triggers a navigation if needed.
|
|
628
625
|
*
|
|
629
626
|
* @memberof sap.fe.core.RouterProxy
|
|
630
|
-
* @param
|
|
631
|
-
* @param
|
|
632
|
-
* @returns
|
|
627
|
+
* @param oHistoryAction Specifies the navigation action to be performed
|
|
628
|
+
* @param bRebuildOnly `true` if internal history is currently being rebuilt
|
|
629
|
+
* @returns Promise (resolved when the navigation is finalized) that returns 'true' if a navigation took place, 'false' if the navigation didn't happen
|
|
633
630
|
* @ui5-restricted
|
|
634
631
|
* @final
|
|
635
632
|
*/
|
|
636
|
-
_rebuildBrowserHistory(oHistoryAction: any, bRebuildOnly: boolean) {
|
|
633
|
+
_rebuildBrowserHistory(oHistoryAction: any, bRebuildOnly: boolean): Promise<boolean> {
|
|
637
634
|
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
638
635
|
const that = this;
|
|
639
|
-
return new Promise(resolve => {
|
|
636
|
+
return new Promise((resolve) => {
|
|
640
637
|
this.bIsRebuildHistoryRunning = true;
|
|
641
638
|
const oTargetState = this._oManagedHistory[this._oManagedHistory.length - 1],
|
|
642
639
|
newLevel = this._oManagedHistory.length - 1;
|
|
@@ -650,7 +647,7 @@ class RouterProxy extends BaseObject {
|
|
|
650
647
|
history.replaceState(Object.assign({ feLevel: newLevel }, history.state), "");
|
|
651
648
|
|
|
652
649
|
if (bRebuildOnly) {
|
|
653
|
-
setTimeout(function() {
|
|
650
|
+
setTimeout(function () {
|
|
654
651
|
// Timeout to let 'hashchange' event be processed before by the HashChanger, so that
|
|
655
652
|
// onRouteMatched notification isn't raised
|
|
656
653
|
that._enableEventOnHashChange(true);
|
|
@@ -664,7 +661,7 @@ class RouterProxy extends BaseObject {
|
|
|
664
661
|
// Async callbacks when navigating back, in order to let all notifications and events get processed
|
|
665
662
|
function backReplaceAsync() {
|
|
666
663
|
window.removeEventListener("popstate", backReplaceAsync);
|
|
667
|
-
setTimeout(function() {
|
|
664
|
+
setTimeout(function () {
|
|
668
665
|
// Timeout to let 'hashchange' event be processed before by the HashChanger
|
|
669
666
|
replaceAsync();
|
|
670
667
|
}, 0);
|
|
@@ -717,7 +714,9 @@ class RouterProxy extends BaseObject {
|
|
|
717
714
|
}
|
|
718
715
|
|
|
719
716
|
setPathMapping(mappings: { oldPath: string; newPath: string }[]) {
|
|
720
|
-
this._pathMappings = mappings
|
|
717
|
+
this._pathMappings = mappings.filter((mapping) => {
|
|
718
|
+
return mapping.oldPath !== mapping.newPath;
|
|
719
|
+
});
|
|
721
720
|
}
|
|
722
721
|
|
|
723
722
|
hashGuard() {
|
|
@@ -727,7 +726,7 @@ class RouterProxy extends BaseObject {
|
|
|
727
726
|
this._bApplyRestore = true;
|
|
728
727
|
} else if (!this.bIsRebuildHistoryRunning) {
|
|
729
728
|
// Check if the hash needs to be changed (this happens in FCL when switching b/w edit and read-only with 3 columns open)
|
|
730
|
-
const mapping = this._pathMappings.find(m => {
|
|
729
|
+
const mapping = this._pathMappings.find((m) => {
|
|
731
730
|
return sHash.indexOf(m.oldPath) >= 0;
|
|
732
731
|
});
|
|
733
732
|
if (mapping) {
|
|
@@ -795,8 +794,8 @@ class RouterProxy extends BaseObject {
|
|
|
795
794
|
/**
|
|
796
795
|
* Checks if back exits the present guard set.
|
|
797
796
|
*
|
|
798
|
-
* @param
|
|
799
|
-
* @returns
|
|
797
|
+
* @param sPresentHash The current hash. Only used for unit tests.
|
|
798
|
+
* @returns `true` if back exits there is a guard exit on back
|
|
800
799
|
*/
|
|
801
800
|
checkIfBackIsOutOfGuard(sPresentHash?: string) {
|
|
802
801
|
let sPrevHash;
|
|
@@ -837,7 +836,7 @@ class RouterProxy extends BaseObject {
|
|
|
837
836
|
/**
|
|
838
837
|
* Checks if the last 2 entries in the history share the same context.
|
|
839
838
|
*
|
|
840
|
-
* @returns
|
|
839
|
+
* @returns `true` if they share the same context.
|
|
841
840
|
*/
|
|
842
841
|
checkIfBackHasSameContext() {
|
|
843
842
|
if (this._oManagedHistory.length < 2) {
|
|
@@ -18,27 +18,27 @@
|
|
|
18
18
|
Property: 'sap/fe/core/templating/PropertyFormatters'
|
|
19
19
|
}"
|
|
20
20
|
>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
21
|
+
<form:SimpleForm binding="{$Parameter}">
|
|
22
|
+
<template:repeat list="{action>$Parameter}" var="parameter">
|
|
23
|
+
<template:with path="parameter>" helper="COMMON.gotoActionParameter" var="actionParameter">
|
|
24
|
+
<!-- In case of bound actions the first parameter shall be ignored -->
|
|
25
|
+
<template:if test="{= !${action>$IsBound} || ${parameter>$Name} !== ${action>$Parameter/0/$Name} }">
|
|
26
|
+
<Label
|
|
27
27
|
unittest:id="ActionParameterDialogLabelExpressionTest"
|
|
28
28
|
text="{= ${actionParameter>@com.sap.vocabularies.Common.v1.Label} ? ${actionParameter>@com.sap.vocabularies.Common.v1.Label} : ${parameter>$Name}}"
|
|
29
29
|
/>
|
|
30
|
-
|
|
30
|
+
<!-- TODOs:
|
|
31
31
|
edit mode, can there be also field control?
|
|
32
32
|
value help
|
|
33
33
|
additional value? (= text annotation)
|
|
34
34
|
text arrangement?
|
|
35
35
|
multipleLines?
|
|
36
36
|
-->
|
|
37
|
-
|
|
37
|
+
<!-- TODO: use new value helper -->
|
|
38
38
|
|
|
39
|
-
|
|
39
|
+
<template:if test="{= !${parameter>$isCollection} }">
|
|
40
40
|
<template:then>
|
|
41
|
-
|
|
41
|
+
<!--The payload of FieldBaseDelegate is used to control the fallback feature 'retrieveTextFromValueList' -->
|
|
42
42
|
<mdc:Field
|
|
43
43
|
delegate="{name:'sap/fe/macros/FieldBaseDelegate', payload:{retrieveTextFromValueList:true}}"
|
|
44
44
|
unittest:id="ActionParameterDialogFieldExpressionTest"
|
|
@@ -51,9 +51,9 @@
|
|
|
51
51
|
required="{= FIELD.isRequired(${actionParameter>@@FIELD.fieldControl}, 'Editable')}"
|
|
52
52
|
change="{= '.handleChange($event, \'' + ${parameter>$Name} + '\')' }"
|
|
53
53
|
fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
|
|
54
|
-
visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
|
|
54
|
+
visible="{= (${actionParameter>$Name} === 'ResultIsActiveEntity') ? false : ${actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility} }"
|
|
55
55
|
>
|
|
56
|
-
|
|
56
|
+
<core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
|
|
57
57
|
</mdc:Field>
|
|
58
58
|
</template:then>
|
|
59
59
|
<template:else>
|
|
@@ -70,13 +70,16 @@
|
|
|
70
70
|
fieldHelp="{= FIELD.getActionParameterDialogFieldHelp(${actionParameter>@}, ${actionName>@sapui.name}, ${parameter>$Name}) }"
|
|
71
71
|
visible="{actionParameter>@com.sap.vocabularies.UI.v1.Hidden@@FIELD.getActionParameterVisibility}"
|
|
72
72
|
>
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
<mdcField:MultiValueFieldItem
|
|
74
|
+
key="{path: 'mvfview>Key', type:'sap.ui.model.type.String'}"
|
|
75
|
+
description="{mvfview>Desc}"
|
|
76
|
+
/>
|
|
77
|
+
<core:Fragment fragmentName="sap.fe.core.controls.ActionParameterDialogValueHelp" type="XML" />
|
|
75
78
|
</mdc:MultiValueField>
|
|
76
79
|
</template:else>
|
|
77
|
-
</template:if>
|
|
78
80
|
</template:if>
|
|
79
|
-
</template:
|
|
80
|
-
</template:
|
|
81
|
-
</
|
|
81
|
+
</template:if>
|
|
82
|
+
</template:with>
|
|
83
|
+
</template:repeat>
|
|
84
|
+
</form:SimpleForm>
|
|
82
85
|
</core:FragmentDefinition>
|
|
@@ -8,21 +8,25 @@ sap.ui.define(["sap/ui/base/ManagedObject"], function (ManagedObject) {
|
|
|
8
8
|
/**
|
|
9
9
|
* @class
|
|
10
10
|
* A custom element to evaluate the value of Binding.
|
|
11
|
-
*
|
|
12
11
|
* @name sap.fe.core.controls.Any
|
|
13
12
|
* @hideconstructor
|
|
14
13
|
*/
|
|
15
14
|
var Any = ManagedObject.extend("sap.fe.core.controls.Any", {
|
|
16
15
|
metadata: {
|
|
17
16
|
properties: {
|
|
18
|
-
any: "any"
|
|
17
|
+
any: "any",
|
|
18
|
+
anyText: "string"
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
|
-
updateProperty: function () {
|
|
21
|
+
updateProperty: function (sName) {
|
|
22
22
|
// Avoid Promise processing in ManagedObject and set Promise as value directly
|
|
23
|
-
|
|
23
|
+
if (sName === "any") {
|
|
24
|
+
this.setAny(this.getBindingInfo(sName).binding.getExternalValue());
|
|
25
|
+
} else {
|
|
26
|
+
this.setAnyText(this.getBindingInfo(sName).binding.getExternalValue());
|
|
27
|
+
}
|
|
24
28
|
}
|
|
25
29
|
});
|
|
26
30
|
return Any;
|
|
27
31
|
}, false);
|
|
28
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
32
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkFueS50cyJdLCJuYW1lcyI6WyJBbnkiLCJNYW5hZ2VkT2JqZWN0IiwiZXh0ZW5kIiwibWV0YWRhdGEiLCJwcm9wZXJ0aWVzIiwiYW55IiwiYW55VGV4dCIsInVwZGF0ZVByb3BlcnR5Iiwic05hbWUiLCJzZXRBbnkiLCJnZXRCaW5kaW5nSW5mbyIsImJpbmRpbmciLCJnZXRFeHRlcm5hbFZhbHVlIiwic2V0QW55VGV4dCJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU1BLEdBQUcsR0FBR0MsYUFBYSxDQUFDQyxNQUFkLENBQXFCLDBCQUFyQixFQUFpRDtBQUM1REMsSUFBQUEsUUFBUSxFQUFFO0FBQ1RDLE1BQUFBLFVBQVUsRUFBRTtBQUNYQyxRQUFBQSxHQUFHLEVBQUUsS0FETTtBQUVYQyxRQUFBQSxPQUFPLEVBQUU7QUFGRTtBQURILEtBRGtEO0FBTzVEQyxJQUFBQSxjQUFjLEVBQUUsVUFBeUJDLEtBQXpCLEVBQXdDO0FBQ3ZEO0FBQ0EsVUFBSUEsS0FBSyxLQUFLLEtBQWQsRUFBcUI7QUFDcEIsYUFBS0MsTUFBTCxDQUFhLEtBQUtDLGNBQUwsQ0FBb0JGLEtBQXBCLENBQUQsQ0FBb0NHLE9BQXBDLENBQTRDQyxnQkFBNUMsRUFBWjtBQUNBLE9BRkQsTUFFTztBQUNOLGFBQUtDLFVBQUwsQ0FBaUIsS0FBS0gsY0FBTCxDQUFvQkYsS0FBcEIsQ0FBRCxDQUFvQ0csT0FBcEMsQ0FBNENDLGdCQUE1QyxFQUFoQjtBQUNBO0FBQ0Q7QUFkMkQsR0FBakQsQ0FBWjtTQWlCZVosRyIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IE1hbmFnZWRPYmplY3QgZnJvbSBcInNhcC91aS9iYXNlL01hbmFnZWRPYmplY3RcIjtcblxuZXhwb3J0IHR5cGUgQW55VHlwZSA9IE1hbmFnZWRPYmplY3QgJiB7XG5cdG1CaW5kaW5nSW5mb3M6IG9iamVjdDtcblx0Z2V0QW55KCk6IGFueTtcblx0Z2V0QW55VGV4dCgpOiBhbnk7XG5cdHNldEFueSh2YWx1ZTogYW55KTogdm9pZDtcblx0c2V0QW55VGV4dCh2YWx1ZTogYW55KTogdm9pZDtcblx0Z2V0QmluZGluZ0luZm8ocHJvcGVydHk6IHN0cmluZyk6IG9iamVjdDtcblx0ZXh0ZW5kKHNOYW1lOiBzdHJpbmcsIHNFeHRlbnNpb246IGFueSk6IEFueVR5cGU7XG59O1xuXG4vKipcbiAqIEBjbGFzc1xuICogQSBjdXN0b20gZWxlbWVudCB0byBldmFsdWF0ZSB0aGUgdmFsdWUgb2YgQmluZGluZy5cbiAqIEBuYW1lIHNhcC5mZS5jb3JlLmNvbnRyb2xzLkFueVxuICogQGhpZGVjb25zdHJ1Y3RvclxuICovXG5jb25zdCBBbnkgPSBNYW5hZ2VkT2JqZWN0LmV4dGVuZChcInNhcC5mZS5jb3JlLmNvbnRyb2xzLkFueVwiLCB7XG5cdG1ldGFkYXRhOiB7XG5cdFx0cHJvcGVydGllczoge1xuXHRcdFx0YW55OiBcImFueVwiLFxuXHRcdFx0YW55VGV4dDogXCJzdHJpbmdcIlxuXHRcdH1cblx0fSxcblx0dXBkYXRlUHJvcGVydHk6IGZ1bmN0aW9uICh0aGlzOiBBbnlUeXBlLCBzTmFtZTogc3RyaW5nKSB7XG5cdFx0Ly8gQXZvaWQgUHJvbWlzZSBwcm9jZXNzaW5nIGluIE1hbmFnZWRPYmplY3QgYW5kIHNldCBQcm9taXNlIGFzIHZhbHVlIGRpcmVjdGx5XG5cdFx0aWYgKHNOYW1lID09PSBcImFueVwiKSB7XG5cdFx0XHR0aGlzLnNldEFueSgodGhpcy5nZXRCaW5kaW5nSW5mbyhzTmFtZSkgYXMgYW55KS5iaW5kaW5nLmdldEV4dGVybmFsVmFsdWUoKSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuc2V0QW55VGV4dCgodGhpcy5nZXRCaW5kaW5nSW5mbyhzTmFtZSkgYXMgYW55KS5iaW5kaW5nLmdldEV4dGVybmFsVmFsdWUoKSk7XG5cdFx0fVxuXHR9XG59KTtcblxuZXhwb3J0IGRlZmF1bHQgQW55IGFzIGFueTtcbiJdfQ==
|
|
@@ -3,7 +3,9 @@ import ManagedObject from "sap/ui/base/ManagedObject";
|
|
|
3
3
|
export type AnyType = ManagedObject & {
|
|
4
4
|
mBindingInfos: object;
|
|
5
5
|
getAny(): any;
|
|
6
|
+
getAnyText(): any;
|
|
6
7
|
setAny(value: any): void;
|
|
8
|
+
setAnyText(value: any): void;
|
|
7
9
|
getBindingInfo(property: string): object;
|
|
8
10
|
extend(sName: string, sExtension: any): AnyType;
|
|
9
11
|
};
|
|
@@ -11,19 +13,23 @@ export type AnyType = ManagedObject & {
|
|
|
11
13
|
/**
|
|
12
14
|
* @class
|
|
13
15
|
* A custom element to evaluate the value of Binding.
|
|
14
|
-
*
|
|
15
16
|
* @name sap.fe.core.controls.Any
|
|
16
17
|
* @hideconstructor
|
|
17
18
|
*/
|
|
18
19
|
const Any = ManagedObject.extend("sap.fe.core.controls.Any", {
|
|
19
20
|
metadata: {
|
|
20
21
|
properties: {
|
|
21
|
-
any: "any"
|
|
22
|
+
any: "any",
|
|
23
|
+
anyText: "string"
|
|
22
24
|
}
|
|
23
25
|
},
|
|
24
|
-
updateProperty: function (this: AnyType) {
|
|
26
|
+
updateProperty: function (this: AnyType, sName: string) {
|
|
25
27
|
// Avoid Promise processing in ManagedObject and set Promise as value directly
|
|
26
|
-
|
|
28
|
+
if (sName === "any") {
|
|
29
|
+
this.setAny((this.getBindingInfo(sName) as any).binding.getExternalValue());
|
|
30
|
+
} else {
|
|
31
|
+
this.setAnyText((this.getBindingInfo(sName) as any).binding.getExternalValue());
|
|
32
|
+
}
|
|
27
33
|
}
|
|
28
34
|
});
|
|
29
35
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
3
|
* (c) Copyright 2009-2021 SAP SE. All rights reserved
|
|
4
4
|
*/
|
|
5
|
-
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/CommandExecution", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (Log, ClassSupport, CommandExecution, Element, Shortcut) {
|
|
5
|
+
sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/CommandExecution", "sap/ui/core/Component", "sap/ui/core/Element", "sap/ui/core/Shortcut"], function (Log, ClassSupport, CommandExecution, Component, Element, Shortcut) {
|
|
6
6
|
"use strict";
|
|
7
7
|
|
|
8
8
|
var _dec, _class;
|
|
@@ -23,9 +23,8 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
|
|
|
23
23
|
var _proto = CustomCommandExecution.prototype;
|
|
24
24
|
|
|
25
25
|
_proto.setParent = function setParent(oParent) {
|
|
26
|
-
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/ban-ts-comment
|
|
27
27
|
// @ts-ignore
|
|
28
|
-
|
|
29
28
|
_CommandExecution.prototype.setParent.call(this, oParent);
|
|
30
29
|
|
|
31
30
|
var aCommands = oParent.data("sap.ui.core.Shortcut");
|
|
@@ -34,26 +33,13 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
|
|
|
34
33
|
var oCommand = oParent.data("sap.ui.core.Shortcut")[aCommands.length - 1],
|
|
35
34
|
oShortcut = oCommand.shortcutSpec;
|
|
36
35
|
|
|
37
|
-
if (oShortcut
|
|
36
|
+
if (oShortcut) {
|
|
38
37
|
// Check if single key shortcut
|
|
39
38
|
for (var key in oShortcut) {
|
|
40
39
|
if (oShortcut[key] && key !== "key") {
|
|
41
40
|
return this;
|
|
42
41
|
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
oParent.addDelegate({
|
|
47
|
-
"onkeydown": function (oEvent) {
|
|
48
|
-
if (aExcludedSingleKey.indexOf(oEvent.key.toLowerCase()) > -1) {
|
|
49
|
-
var sElement = oEvent.target ? oEvent.target.tagName.toLowerCase() : undefined;
|
|
50
|
-
|
|
51
|
-
if (sElement === "input") {
|
|
52
|
-
oEvent.setMarked();
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
}, true, undefined, true);
|
|
42
|
+
}
|
|
57
43
|
}
|
|
58
44
|
|
|
59
45
|
return this;
|
|
@@ -77,12 +63,23 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
|
|
|
77
63
|
};
|
|
78
64
|
|
|
79
65
|
_proto.setVisible = function setVisible(bValue) {
|
|
80
|
-
var oCommand
|
|
66
|
+
var oCommand,
|
|
67
|
+
oParentControl = this.getParent(),
|
|
68
|
+
oComponent;
|
|
81
69
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
70
|
+
while (!oComponent && oParentControl) {
|
|
71
|
+
oComponent = Component.getOwnerComponentFor(oParentControl);
|
|
72
|
+
oParentControl = oParentControl.getParent();
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (oComponent) {
|
|
76
|
+
oCommand = oComponent.getCommand(this.getCommand());
|
|
77
|
+
|
|
78
|
+
if (oCommand) {
|
|
79
|
+
_CommandExecution.prototype.setVisible.call(this, bValue);
|
|
80
|
+
} else {
|
|
81
|
+
Log.info("There is no shortcut definition registered in the manifest for the command : " + this.getCommand());
|
|
82
|
+
}
|
|
86
83
|
}
|
|
87
84
|
|
|
88
85
|
return this;
|
|
@@ -92,4 +89,4 @@ sap.ui.define(["sap/base/Log", "sap/fe/core/helpers/ClassSupport", "sap/ui/core/
|
|
|
92
89
|
}(CommandExecution)) || _class);
|
|
93
90
|
return CustomCommandExecution;
|
|
94
91
|
}, false);
|
|
95
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkNvbW1hbmRFeGVjdXRpb24udHMiXSwibmFtZXMiOlsiQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiIsImRlZmluZVVJNUNsYXNzIiwic2V0UGFyZW50Iiwib1BhcmVudCIsImFDb21tYW5kcyIsImRhdGEiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJvQ29tbWFuZCIsIm9TaG9ydGN1dCIsInNob3J0Y3V0U3BlYyIsImtleSIsImRlc3Ryb3kiLCJiU3VwcHJlc3NJbnZhbGlkYXRlIiwiZ2V0UGFyZW50IiwiX2dldENvbW1hbmRJbmZvIiwiU2hvcnRjdXQiLCJ1bnJlZ2lzdGVyIiwic2hvcnRjdXQiLCJfY2xlYW51cENvbnRleHQiLCJFbGVtZW50IiwicHJvdG90eXBlIiwiYXBwbHkiLCJzZXRWaXNpYmxlIiwiYlZhbHVlIiwib1BhcmVudENvbnRyb2wiLCJvQ29tcG9uZW50IiwiQ29tcG9uZW50IiwiZ2V0T3duZXJDb21wb25lbnRGb3IiLCJnZXRDb21tYW5kIiwiTG9nIiwiaW5mbyIsIkNvbW1hbmRFeGVjdXRpb24iXSwibWFwcGluZ3MiOiI7QUFBQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztNQU1NQSxzQixXQURMQyxjQUFjLENBQUMsdUNBQUQsQzs7Ozs7Ozs7O1dBRWRDLFMsR0FBQSxtQkFBVUMsT0FBVixFQUF3QjtBQUN2QjtBQUNBO0FBQ0Esa0NBQU1ELFNBQU4sWUFBZ0JDLE9BQWhCOztBQUNBLFVBQU1DLFNBQVMsR0FBR0QsT0FBTyxDQUFDRSxJQUFSLENBQWEsc0JBQWIsQ0FBbEI7O0FBQ0EsVUFBSUMsS0FBSyxDQUFDQyxPQUFOLENBQWNILFNBQWQsS0FBNEJBLFNBQVMsQ0FBQ0ksTUFBVixHQUFtQixDQUFuRCxFQUFzRDtBQUNyRCxZQUFNQyxRQUFRLEdBQUdOLE9BQU8sQ0FBQ0UsSUFBUixDQUFhLHNCQUFiLEVBQXFDRCxTQUFTLENBQUNJLE1BQVYsR0FBbUIsQ0FBeEQsQ0FBakI7QUFBQSxZQUNDRSxTQUFTLEdBQUdELFFBQVEsQ0FBQ0UsWUFEdEI7O0FBRUEsWUFBSUQsU0FBSixFQUFlO0FBQ2Q7QUFDQSxlQUFLLElBQU1FLEdBQVgsSUFBa0JGLFNBQWxCLEVBQTZCO0FBQzVCLGdCQUFJQSxTQUFTLENBQUNFLEdBQUQsQ0FBVCxJQUFrQkEsR0FBRyxLQUFLLEtBQTlCLEVBQXFDO0FBQ3BDLHFCQUFPLElBQVA7QUFDQTtBQUNEO0FBQ0Q7O0FBQ0QsZUFBTyxJQUFQO0FBQ0E7QUFDRCxLOztXQUVEQyxPLEdBQUEsaUJBQVFDLG1CQUFSLEVBQXNDO0FBQ3JDLFVBQU1YLE9BQU8sR0FBRyxLQUFLWSxTQUFMLEVBQWhCOztBQUNBLFVBQUlaLE9BQUosRUFBYTtBQUNaLFlBQU1NLFFBQVEsR0FBRyxLQUFLTyxlQUFMLEVBQWpCOztBQUNBLFlBQUlQLFFBQUosRUFBYztBQUNiUSxVQUFBQSxRQUFRLENBQUNDLFVBQVQsQ0FBb0IsS0FBS0gsU0FBTCxFQUFwQixFQUFzQ04sUUFBUSxDQUFDVSxRQUEvQztBQUNBOztBQUNELGFBQUtDLGVBQUwsQ0FBcUJqQixPQUFyQjtBQUNBOztBQUNEa0IsTUFBQUEsT0FBTyxDQUFDQyxTQUFSLENBQWtCVCxPQUFsQixDQUEwQlUsS0FBMUIsQ0FBZ0MsSUFBaEMsRUFBc0MsQ0FBQ1QsbUJBQUQsQ0FBdEM7QUFDQSxLOztXQUNEVSxVLEdBQUEsb0JBQVdDLE1BQVgsRUFBNEI7QUFDM0IsVUFBSWhCLFFBQUo7QUFBQSxVQUNDaUIsY0FBYyxHQUFHLEtBQUtYLFNBQUwsRUFEbEI7QUFBQSxVQUVDWSxVQUZEOztBQUlBLGFBQU8sQ0FBQ0EsVUFBRCxJQUFlRCxjQUF0QixFQUFzQztBQUNyQ0MsUUFBQUEsVUFBVSxHQUFHQyxTQUFTLENBQUNDLG9CQUFWLENBQStCSCxjQUEvQixDQUFiO0FBQ0FBLFFBQUFBLGNBQWMsR0FBR0EsY0FBYyxDQUFDWCxTQUFmLEVBQWpCO0FBQ0E7O0FBRUQsVUFBSVksVUFBSixFQUFnQjtBQUNmbEIsUUFBQUEsUUFBUSxHQUFHa0IsVUFBVSxDQUFDRyxVQUFYLENBQXNCLEtBQUtBLFVBQUwsRUFBdEIsQ0FBWDs7QUFFQSxZQUFJckIsUUFBSixFQUFjO0FBQ2Isc0NBQU1lLFVBQU4sWUFBaUJDLE1BQWpCO0FBQ0EsU0FGRCxNQUVPO0FBQ05NLFVBQUFBLEdBQUcsQ0FBQ0MsSUFBSixDQUFTLGtGQUFrRixLQUFLRixVQUFMLEVBQTNGO0FBQ0E7QUFDRDs7QUFDRCxhQUFPLElBQVA7QUFDQSxLOzs7SUFwRG1DRyxnQjtTQTBEdEJqQyxzQiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IExvZyBmcm9tIFwic2FwL2Jhc2UvTG9nXCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcyB9IGZyb20gXCJzYXAvZmUvY29yZS9oZWxwZXJzL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IENvbW1hbmRFeGVjdXRpb24gZnJvbSBcInNhcC91aS9jb3JlL0NvbW1hbmRFeGVjdXRpb25cIjtcbmltcG9ydCBDb21wb25lbnQgZnJvbSBcInNhcC91aS9jb3JlL0NvbXBvbmVudFwiO1xuaW1wb3J0IEVsZW1lbnQgZnJvbSBcInNhcC91aS9jb3JlL0VsZW1lbnRcIjtcbmltcG9ydCBTaG9ydGN1dCBmcm9tIFwic2FwL3VpL2NvcmUvU2hvcnRjdXRcIjtcblxuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLmNvcmUuY29udHJvbHMuQ29tbWFuZEV4ZWN1dGlvblwiKVxuY2xhc3MgQ3VzdG9tQ29tbWFuZEV4ZWN1dGlvbiBleHRlbmRzIENvbW1hbmRFeGVjdXRpb24ge1xuXHRzZXRQYXJlbnQob1BhcmVudDogYW55KSB7XG5cdFx0Ly8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHMtY29tbWVudFxuXHRcdC8vIEB0cy1pZ25vcmVcblx0XHRzdXBlci5zZXRQYXJlbnQob1BhcmVudCk7XG5cdFx0Y29uc3QgYUNvbW1hbmRzID0gb1BhcmVudC5kYXRhKFwic2FwLnVpLmNvcmUuU2hvcnRjdXRcIik7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkoYUNvbW1hbmRzKSAmJiBhQ29tbWFuZHMubGVuZ3RoID4gMCkge1xuXHRcdFx0Y29uc3Qgb0NvbW1hbmQgPSBvUGFyZW50LmRhdGEoXCJzYXAudWkuY29yZS5TaG9ydGN1dFwiKVthQ29tbWFuZHMubGVuZ3RoIC0gMV0sXG5cdFx0XHRcdG9TaG9ydGN1dCA9IG9Db21tYW5kLnNob3J0Y3V0U3BlYztcblx0XHRcdGlmIChvU2hvcnRjdXQpIHtcblx0XHRcdFx0Ly8gQ2hlY2sgaWYgc2luZ2xlIGtleSBzaG9ydGN1dFxuXHRcdFx0XHRmb3IgKGNvbnN0IGtleSBpbiBvU2hvcnRjdXQpIHtcblx0XHRcdFx0XHRpZiAob1Nob3J0Y3V0W2tleV0gJiYga2V5ICE9PSBcImtleVwiKSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gdGhpcztcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHJldHVybiB0aGlzO1xuXHRcdH1cblx0fVxuXG5cdGRlc3Ryb3koYlN1cHByZXNzSW52YWxpZGF0ZTogYm9vbGVhbikge1xuXHRcdGNvbnN0IG9QYXJlbnQgPSB0aGlzLmdldFBhcmVudCgpO1xuXHRcdGlmIChvUGFyZW50KSB7XG5cdFx0XHRjb25zdCBvQ29tbWFuZCA9IHRoaXMuX2dldENvbW1hbmRJbmZvKCk7XG5cdFx0XHRpZiAob0NvbW1hbmQpIHtcblx0XHRcdFx0U2hvcnRjdXQudW5yZWdpc3Rlcih0aGlzLmdldFBhcmVudCgpLCBvQ29tbWFuZC5zaG9ydGN1dCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLl9jbGVhbnVwQ29udGV4dChvUGFyZW50KTtcblx0XHR9XG5cdFx0RWxlbWVudC5wcm90b3R5cGUuZGVzdHJveS5hcHBseSh0aGlzLCBbYlN1cHByZXNzSW52YWxpZGF0ZV0pO1xuXHR9XG5cdHNldFZpc2libGUoYlZhbHVlOiBib29sZWFuKSB7XG5cdFx0bGV0IG9Db21tYW5kLFxuXHRcdFx0b1BhcmVudENvbnRyb2wgPSB0aGlzLmdldFBhcmVudCgpLFxuXHRcdFx0b0NvbXBvbmVudDogYW55O1xuXG5cdFx0d2hpbGUgKCFvQ29tcG9uZW50ICYmIG9QYXJlbnRDb250cm9sKSB7XG5cdFx0XHRvQ29tcG9uZW50ID0gQ29tcG9uZW50LmdldE93bmVyQ29tcG9uZW50Rm9yKG9QYXJlbnRDb250cm9sKTtcblx0XHRcdG9QYXJlbnRDb250cm9sID0gb1BhcmVudENvbnRyb2wuZ2V0UGFyZW50KCk7XG5cdFx0fVxuXG5cdFx0aWYgKG9Db21wb25lbnQpIHtcblx0XHRcdG9Db21tYW5kID0gb0NvbXBvbmVudC5nZXRDb21tYW5kKHRoaXMuZ2V0Q29tbWFuZCgpKTtcblxuXHRcdFx0aWYgKG9Db21tYW5kKSB7XG5cdFx0XHRcdHN1cGVyLnNldFZpc2libGUoYlZhbHVlKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdExvZy5pbmZvKFwiVGhlcmUgaXMgbm8gc2hvcnRjdXQgZGVmaW5pdGlvbiByZWdpc3RlcmVkIGluIHRoZSBtYW5pZmVzdCBmb3IgdGhlIGNvbW1hbmQgOiBcIiArIHRoaXMuZ2V0Q29tbWFuZCgpKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHRoaXM7XG5cdH1cbn1cbmludGVyZmFjZSBDdXN0b21Db21tYW5kRXhlY3V0aW9uIHtcblx0X2dldENvbW1hbmRJbmZvKCk6IGFueTtcblx0X2NsZWFudXBDb250ZXh0KG9QYXJlbnQ6IGFueSk6IHZvaWQ7XG59XG5leHBvcnQgZGVmYXVsdCBDdXN0b21Db21tYW5kRXhlY3V0aW9uO1xuIl19
|