@openui5/sap.ui.integration 1.143.1 → 1.145.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/REUSE.toml +40 -16
- package/THIRDPARTY.txt +22 -1
- package/package.json +6 -6
- package/src/sap/ui/integration/.library +2 -2
- package/src/sap/ui/integration/ActionDefinition.js +2 -2
- package/src/sap/ui/integration/Designtime.js +2 -2
- package/src/sap/ui/integration/Extension.js +2 -2
- package/src/sap/ui/integration/Host.js +2 -2
- package/src/sap/ui/integration/bindingFeatures/DateRange.js +1 -1
- package/src/sap/ui/integration/cards/AdaptiveContent.js +2 -2
- package/src/sap/ui/integration/cards/AnalyticalContent.js +86 -13
- package/src/sap/ui/integration/cards/AnalyticalContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/AnalyticsCloudContent.js +2 -2
- package/src/sap/ui/integration/cards/AnalyticsCloudContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/BaseContent.js +26 -5
- package/src/sap/ui/integration/cards/BaseContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/BaseListContent.js +2 -2
- package/src/sap/ui/integration/cards/BaseListContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/CalendarContent.js +2 -2
- package/src/sap/ui/integration/cards/CalendarContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/ComponentContent.js +2 -2
- package/src/sap/ui/integration/cards/ComponentContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/Footer.js +2 -2
- package/src/sap/ui/integration/cards/Header.js +2 -2
- package/src/sap/ui/integration/cards/ListContent.js +3 -3
- package/src/sap/ui/integration/cards/ListContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/NumericHeader.js +2 -2
- package/src/sap/ui/integration/cards/ObjectContent.js +68 -7
- package/src/sap/ui/integration/cards/ObjectContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/TableContent.js +6 -3
- package/src/sap/ui/integration/cards/TableContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/TimelineContent.js +2 -2
- package/src/sap/ui/integration/cards/TimelineContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/WebPageContent.js +2 -2
- package/src/sap/ui/integration/cards/WebPageContentRenderer.js +1 -1
- package/src/sap/ui/integration/cards/actions/BaseAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/CardActions.js +24 -18
- package/src/sap/ui/integration/cards/actions/CustomAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/DateChangeAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/HideCardAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/MonthChangeAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/NavigationAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/ShowCardAction.js +1 -1
- package/src/sap/ui/integration/cards/actions/SubmitAction.js +1 -1
- package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputChoiceSet.js +2 -2
- package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputDate.js +2 -2
- package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputNumber.js +2 -2
- package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputText.js +2 -2
- package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputTime.js +1 -1
- package/src/sap/ui/integration/cards/adaptivecards/elements/UI5InputToggle.js +2 -2
- package/src/sap/ui/integration/cards/adaptivecards/elements/hostConfig.js +1 -1
- package/src/sap/ui/integration/cards/adaptivecards/overwrites/ActionRender.js +1 -1
- package/src/sap/ui/integration/cards/adaptivecards/overwrites/inputsGeneralOverwrites.js +1 -1
- package/src/sap/ui/integration/cards/data/CsrfToken.js +1 -1
- package/src/sap/ui/integration/cards/filters/BaseFilter.js +2 -2
- package/src/sap/ui/integration/cards/filters/ComboBoxFilter.js +2 -2
- package/src/sap/ui/integration/cards/filters/DateRangeFilter.js +2 -2
- package/src/sap/ui/integration/cards/filters/FilterBar.js +2 -2
- package/src/sap/ui/integration/cards/filters/FilterBarFactory.js +2 -2
- package/src/sap/ui/integration/cards/filters/SearchFilter.js +2 -2
- package/src/sap/ui/integration/cards/filters/SelectFilter.js +2 -2
- package/src/sap/ui/integration/cards/list/MicrochartsResizeHelper.js +2 -2
- package/src/sap/ui/integration/controls/ActionsStrip.js +2 -2
- package/src/sap/ui/integration/controls/ActionsToolbar.js +3 -3
- package/src/sap/ui/integration/controls/ActionsToolbarRenderer.js +1 -1
- package/src/sap/ui/integration/controls/BlockingMessage.js +2 -2
- package/src/sap/ui/integration/controls/ComboBox.js +2 -2
- package/src/sap/ui/integration/controls/HeaderInfoSectionColumn.js +2 -2
- package/src/sap/ui/integration/controls/HeaderInfoSectionColumnRenderer.js +1 -1
- package/src/sap/ui/integration/controls/HeaderInfoSectionRow.js +2 -2
- package/src/sap/ui/integration/controls/HeaderInfoSectionRowRenderer.js +1 -1
- package/src/sap/ui/integration/controls/ImageWithOverlay.js +2 -2
- package/src/sap/ui/integration/controls/ImageWithOverlayRenderer.js +1 -1
- package/src/sap/ui/integration/controls/ListContentItem.js +2 -2
- package/src/sap/ui/integration/controls/ListContentItemRenderer.js +1 -1
- package/src/sap/ui/integration/controls/Microchart.js +2 -2
- package/src/sap/ui/integration/controls/MicrochartLegend.js +2 -2
- package/src/sap/ui/integration/controls/MicrochartLegendRenderer.js +1 -1
- package/src/sap/ui/integration/controls/MicrochartRenderer.js +1 -1
- package/src/sap/ui/integration/controls/ObjectStatus.js +3 -3
- package/src/sap/ui/integration/customElements/CustomElementBase.js +1 -1
- package/src/sap/ui/integration/customElements/CustomElementCard.js +1 -1
- package/src/sap/ui/integration/customElements/CustomElementCardEditor.js +1 -1
- package/src/sap/ui/integration/customElements/CustomElementEditor.js +1 -1
- package/src/sap/ui/integration/delegate/OverflowHandler.js +2 -2
- package/src/sap/ui/integration/delegate/Paginator.js +18 -16
- package/src/sap/ui/integration/delegate/PreventKeyboardScrolling.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/BaseEditor.js +20 -17
- package/src/sap/ui/integration/designtime/baseEditor/PropertyEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/PropertyEditors.js +10 -7
- package/src/sap/ui/integration/designtime/baseEditor/layout/Form.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/BasePropertyEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/PropertyEditorFactory.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/arrayEditor/ArrayEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/booleanEditor/BooleanEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/codeEditor/CodeEditor.fragment.xml +0 -1
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/codeEditor/CodeEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/dateEditor/DateEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/dateTimeEditor/DateTimeEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/enumStringEditor/EnumStringEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/groupEditor/GroupEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/iconEditor/IconEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/iconEditor/IsInIconPool.validator.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/integerEditor/IntegerEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/jsonEditor/JsonEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/listEditor/ListEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/mapEditor/MapEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/multiSelectEditor/MultiSelectEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/numberEditor/NumberEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/objectArrayEditor/ObjectArrayEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/selectEditor/SelectEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/separatorEditor/SeparatorEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/stringEditor/StringEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/propertyEditor/textAreaEditor/TextAreaEditor.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/util/BaseDefaultValidatorModules.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/EvalUtils.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/StylesheetManager.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/binding/ObjectBinding.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/util/binding/resolveBinding.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/cleanupDesigntimeMetadata.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/createPromise.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/escapeParameter.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/findClosestInstance.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/hasTag.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/isTemplate.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/isValidBindingString.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/util/unset.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsBoolean.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsDate.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsInteger.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsNumber.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsPatternMatch.js +1 -1
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsSelectedKey.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsStringList.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsUniqueKey.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsUniqueList.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/IsValidBinding.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/MaxLength.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/NotABinding.js +2 -2
- package/src/sap/ui/integration/designtime/baseEditor/validator/ValidatorRegistry.js +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/BASEditor.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/CardEditor.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/PropertyEditor.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/PropertyEditors.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/AppConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/FooterConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/HeaderConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/ListCardConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/ObjectCardConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/TableCardConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/generateActionConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/generateDataConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/generateFooterActionsStripConfig.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/config/index.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/i18n/i18n_fr.properties +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/complexMapEditor/ComplexMapEditor.js +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/destinationsEditor/DestinationsEditor.js +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/filtersEditor/FiltersEditor.js +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/iconEditor/IconEditor.js +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/propertyEditor/parametersEditor/ParametersEditor.js +2 -2
- package/src/sap/ui/integration/designtime/cardEditor/util/CommonPatterns.js +1 -1
- package/src/sap/ui/integration/designtime/cardEditor/validator/IsPatternMatchList.js +1 -1
- package/src/sap/ui/integration/designtime/editor/Card.js +2 -2
- package/src/sap/ui/integration/designtime/editor/CardEditor.js +78 -22
- package/src/sap/ui/integration/designtime/editor/CardPreview.js +18 -11
- package/src/sap/ui/integration/designtime/editor/CardRenderer.js +1 -1
- package/src/sap/ui/integration/editor/Constants.js +1 -1
- package/src/sap/ui/integration/editor/Editor.js +630 -169
- package/src/sap/ui/integration/editor/EditorResourceBundles.js +2 -2
- package/src/sap/ui/integration/editor/Extension.js +2 -2
- package/src/sap/ui/integration/editor/Manifest.js +2 -2
- package/src/sap/ui/integration/editor/Merger.js +1 -1
- package/src/sap/ui/integration/editor/Settings.js +7 -7
- package/src/sap/ui/integration/editor/css/Editor.css +28 -0
- package/src/sap/ui/integration/editor/fields/BaseField.js +12 -12
- package/src/sap/ui/integration/editor/fields/BooleanField.js +2 -2
- package/src/sap/ui/integration/editor/fields/DateField.js +2 -2
- package/src/sap/ui/integration/editor/fields/DateTimeField.js +2 -2
- package/src/sap/ui/integration/editor/fields/DestinationField.js +2 -2
- package/src/sap/ui/integration/editor/fields/GroupField.js +19 -5
- package/src/sap/ui/integration/editor/fields/IntegerField.js +2 -2
- package/src/sap/ui/integration/editor/fields/NumberField.js +2 -2
- package/src/sap/ui/integration/editor/fields/ObjectField.js +26 -11
- package/src/sap/ui/integration/editor/fields/ObjectListField.js +2 -2
- package/src/sap/ui/integration/editor/fields/StringField.js +22 -15
- package/src/sap/ui/integration/editor/fields/StringListField.js +2 -2
- package/src/sap/ui/integration/editor/fields/fragment/Controller.js +3 -3
- package/src/sap/ui/integration/editor/fields/viz/ColorSelect.js +2 -2
- package/src/sap/ui/integration/editor/fields/viz/IconSelect.js +2 -2
- package/src/sap/ui/integration/editor/fields/viz/ImageSelect.js +2 -2
- package/src/sap/ui/integration/editor/fields/viz/ShapeSelect.js +2 -2
- package/src/sap/ui/integration/editor/fields/viz/VizBase.js +2 -2
- package/src/sap/ui/integration/extensions/OAuth3LO.js +2 -2
- package/src/sap/ui/integration/formatters/DateTimeFormatter.js +1 -1
- package/src/sap/ui/integration/formatters/IconFormatter.js +1 -1
- package/src/sap/ui/integration/formatters/InitialsFormatter.js +1 -1
- package/src/sap/ui/integration/formatters/NumberFormatter.js +1 -1
- package/src/sap/ui/integration/formatters/TextFormatter.js +1 -1
- package/src/sap/ui/integration/library-bootstrap.js +1 -1
- package/src/sap/ui/integration/library.js +3 -3
- package/src/sap/ui/integration/messagebundle.properties +3 -0
- package/src/sap/ui/integration/messagebundle_ar.properties +2 -0
- package/src/sap/ui/integration/messagebundle_bg.properties +2 -0
- package/src/sap/ui/integration/messagebundle_ca.properties +2 -0
- package/src/sap/ui/integration/messagebundle_cnr.properties +3 -1
- package/src/sap/ui/integration/messagebundle_cs.properties +2 -0
- package/src/sap/ui/integration/messagebundle_cy.properties +2 -0
- package/src/sap/ui/integration/messagebundle_da.properties +2 -0
- package/src/sap/ui/integration/messagebundle_de.properties +2 -0
- package/src/sap/ui/integration/messagebundle_el.properties +2 -0
- package/src/sap/ui/integration/messagebundle_en.properties +2 -0
- package/src/sap/ui/integration/messagebundle_en_GB.properties +2 -0
- package/src/sap/ui/integration/messagebundle_en_US_saprigi.properties +2 -0
- package/src/sap/ui/integration/messagebundle_es.properties +2 -0
- package/src/sap/ui/integration/messagebundle_es_MX.properties +2 -0
- package/src/sap/ui/integration/messagebundle_et.properties +2 -0
- package/src/sap/ui/integration/messagebundle_fi.properties +2 -0
- package/src/sap/ui/integration/messagebundle_fr.properties +2 -0
- package/src/sap/ui/integration/messagebundle_fr_CA.properties +2 -0
- package/src/sap/ui/integration/messagebundle_hi.properties +2 -0
- package/src/sap/ui/integration/messagebundle_hr.properties +2 -0
- package/src/sap/ui/integration/messagebundle_hu.properties +2 -0
- package/src/sap/ui/integration/messagebundle_id.properties +3 -1
- package/src/sap/ui/integration/messagebundle_it.properties +2 -0
- package/src/sap/ui/integration/messagebundle_iw.properties +2 -0
- package/src/sap/ui/integration/messagebundle_ja.properties +2 -0
- package/src/sap/ui/integration/messagebundle_kk.properties +2 -0
- package/src/sap/ui/integration/messagebundle_ko.properties +2 -0
- package/src/sap/ui/integration/messagebundle_lt.properties +2 -0
- package/src/sap/ui/integration/messagebundle_lv.properties +2 -0
- package/src/sap/ui/integration/messagebundle_mk.properties +2 -0
- package/src/sap/ui/integration/messagebundle_ms.properties +2 -0
- package/src/sap/ui/integration/messagebundle_nl.properties +2 -0
- package/src/sap/ui/integration/messagebundle_no.properties +2 -0
- package/src/sap/ui/integration/messagebundle_pl.properties +2 -0
- package/src/sap/ui/integration/messagebundle_pt.properties +2 -0
- package/src/sap/ui/integration/messagebundle_pt_PT.properties +2 -0
- package/src/sap/ui/integration/messagebundle_ro.properties +2 -0
- package/src/sap/ui/integration/messagebundle_ru.properties +2 -0
- package/src/sap/ui/integration/messagebundle_sh.properties +3 -1
- package/src/sap/ui/integration/messagebundle_sk.properties +2 -0
- package/src/sap/ui/integration/messagebundle_sl.properties +2 -0
- package/src/sap/ui/integration/messagebundle_sr.properties +3 -1
- package/src/sap/ui/integration/messagebundle_sv.properties +2 -0
- package/src/sap/ui/integration/messagebundle_th.properties +2 -0
- package/src/sap/ui/integration/messagebundle_tr.properties +2 -0
- package/src/sap/ui/integration/messagebundle_uk.properties +2 -0
- package/src/sap/ui/integration/messagebundle_vi.properties +2 -0
- package/src/sap/ui/integration/messagebundle_zh_CN.properties +2 -0
- package/src/sap/ui/integration/messagebundle_zh_TW.properties +2 -0
- package/src/sap/ui/integration/model/ContextModel.js +2 -2
- package/src/sap/ui/integration/model/ObservableModel.js +2 -2
- package/src/sap/ui/integration/sap-ui-integration-config.js +1 -1
- package/src/sap/ui/integration/sap-ui-integration-define-nojQuery.js +1 -1
- package/src/sap/ui/integration/schemas/sap-card.json +38 -1
- package/src/sap/ui/integration/services/Data.js +1 -1
- package/src/sap/ui/integration/services/Navigation.js +1 -1
- package/src/sap/ui/integration/services/Service.js +1 -1
- package/src/sap/ui/integration/themes/base/ListContentItem.less +7 -7
- package/src/sap/ui/integration/themes/base/ObjectContent.less +4 -0
- package/src/sap/ui/integration/themes/base/library.source.less +1 -1
- package/src/sap/ui/integration/themes/sap_hcb/library.source.less +1 -1
- package/src/sap/ui/integration/types/HeaderInfoSectionJustifyContent.js +1 -1
- package/src/sap/ui/integration/util/AnalyticsCloudHelper.js +2 -2
- package/src/sap/ui/integration/util/BaseFactory.js +2 -2
- package/src/sap/ui/integration/util/BindingHelper.js +2 -2
- package/src/sap/ui/integration/util/BindingResolver.js +2 -2
- package/src/sap/ui/integration/util/CacheAndRequestDataProvider.js +1 -1
- package/src/sap/ui/integration/util/CardMerger.js +1 -1
- package/src/sap/ui/integration/util/CardObserver.js +2 -2
- package/src/sap/ui/integration/util/ComboBoxHelper.js +2 -2
- package/src/sap/ui/integration/util/ContentFactory.js +2 -2
- package/src/sap/ui/integration/util/CsrfTokenHandler.js +2 -2
- package/src/sap/ui/integration/util/DataProvider.js +2 -2
- package/src/sap/ui/integration/util/DataProviderFactory.js +2 -2
- package/src/sap/ui/integration/util/DateRangeHelper.js +15 -6
- package/src/sap/ui/integration/util/Destinations.js +2 -2
- package/src/sap/ui/integration/util/DisplayVariants.js +2 -2
- package/src/sap/ui/integration/util/Duration.js +1 -1
- package/src/sap/ui/integration/util/ErrorHandler.js +2 -2
- package/src/sap/ui/integration/util/ExtensionDataProvider.js +2 -2
- package/src/sap/ui/integration/util/Form.js +50 -21
- package/src/sap/ui/integration/util/HeaderFactory.js +2 -2
- package/src/sap/ui/integration/util/JSONBindingHelper.js +2 -2
- package/src/sap/ui/integration/util/LoadingProvider.js +2 -2
- package/src/sap/ui/integration/util/Manifest.js +2 -2
- package/src/sap/ui/integration/util/ManifestResolver.js +1 -1
- package/src/sap/ui/integration/util/Measurement.js +1 -1
- package/src/sap/ui/integration/util/OAuth3LOHelper.js +2 -2
- package/src/sap/ui/integration/util/ObjectStatusFactory.js +2 -2
- package/src/sap/ui/integration/util/ParameterMap.js +1 -1
- package/src/sap/ui/integration/util/RadioButtonHelper.js +71 -0
- package/src/sap/ui/integration/util/RequestDataProvider.js +2 -2
- package/src/sap/ui/integration/util/ServiceDataProvider.js +2 -2
- package/src/sap/ui/integration/util/ServiceManager.js +2 -2
- package/src/sap/ui/integration/util/SkeletonCard.js +2 -2
- package/src/sap/ui/integration/util/SorterHelper.js +2 -2
- package/src/sap/ui/integration/util/Utils.js +3 -3
- package/src/sap/ui/integration/util/Validators.js +8 -2
- package/src/sap/ui/integration/util/loadCardEditor.js +1 -1
- package/src/sap/ui/integration/util/openCardDialog.js +1 -1
- package/src/sap/ui/integration/util/openCardShowMore.js +1 -1
- package/src/sap/ui/integration/util/subtitleToSubTitle.js +1 -1
- package/src/sap/ui/integration/widgets/Card.js +25 -10
- package/src/sap/ui/integration/widgets/CardRenderer.js +1 -1
- package/src/sap-ui-integration-card-editor.js +1 -1
- package/src/sap-ui-integration-editor.js +1 -1
- package/src/sap-ui-integration.js +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/*!
|
|
2
2
|
* OpenUI5
|
|
3
|
-
* (c) Copyright
|
|
3
|
+
* (c) Copyright 2026 SAP SE or an SAP affiliate company.
|
|
4
4
|
* Licensed under the Apache License, Version 2.0 - see LICENSE.txt.
|
|
5
5
|
*/
|
|
6
6
|
|
|
@@ -45,7 +45,10 @@ sap.ui.define([
|
|
|
45
45
|
"./Constants",
|
|
46
46
|
"sap/m/FlexItemData",
|
|
47
47
|
"sap/m/FlexBox",
|
|
48
|
-
"sap/m/Button"
|
|
48
|
+
"sap/m/Button",
|
|
49
|
+
"sap/ui/core/UIArea",
|
|
50
|
+
"sap/m/Tree",
|
|
51
|
+
"sap/m/StandardTreeItem"
|
|
49
52
|
], function(
|
|
50
53
|
Localization,
|
|
51
54
|
Control,
|
|
@@ -81,13 +84,16 @@ sap.ui.define([
|
|
|
81
84
|
MessageStrip,
|
|
82
85
|
Separator,
|
|
83
86
|
ResourceModel,
|
|
84
|
-
|
|
87
|
+
Manifest,
|
|
85
88
|
Merger,
|
|
86
89
|
Settings,
|
|
87
90
|
Constants,
|
|
88
91
|
FlexItemData,
|
|
89
92
|
FlexBox,
|
|
90
|
-
Button
|
|
93
|
+
Button,
|
|
94
|
+
UIArea,
|
|
95
|
+
Tree,
|
|
96
|
+
StandardTreeItem
|
|
91
97
|
) {
|
|
92
98
|
"use strict";
|
|
93
99
|
|
|
@@ -135,7 +141,7 @@ sap.ui.define([
|
|
|
135
141
|
* @extends sap.ui.core.Control
|
|
136
142
|
*
|
|
137
143
|
* @author SAP SE
|
|
138
|
-
* @version 1.
|
|
144
|
+
* @version 1.145.0
|
|
139
145
|
* @constructor
|
|
140
146
|
* @since 1.94
|
|
141
147
|
* @private
|
|
@@ -260,6 +266,63 @@ sap.ui.define([
|
|
|
260
266
|
oRm.class("sapUiIntegrationEditor");
|
|
261
267
|
oRm.openEnd();
|
|
262
268
|
}
|
|
269
|
+
// render the Child editors tree
|
|
270
|
+
var oRef = oControl.getId() + "_childsTreeContainer";
|
|
271
|
+
var bChildTreeRendered;
|
|
272
|
+
var renderChildsTreePromise;
|
|
273
|
+
if (oControl.isFieldReady() && oControl._oChildTree) {
|
|
274
|
+
bChildTreeRendered = false;
|
|
275
|
+
// render the container for Child editors tree
|
|
276
|
+
oRm.openStart("div", oRef);
|
|
277
|
+
oRm.class("childsTreeContainer");
|
|
278
|
+
oRm.openEnd();
|
|
279
|
+
oRm.close("div");
|
|
280
|
+
|
|
281
|
+
// if the container is not rendered in body immediately by above codes, wait for it to be created
|
|
282
|
+
var waitForContainer = new Promise((resolve) => {
|
|
283
|
+
const observer = new MutationObserver((mutations, obs) => {
|
|
284
|
+
const container = document.getElementById(oRef);
|
|
285
|
+
if (container) {
|
|
286
|
+
obs.disconnect();
|
|
287
|
+
resolve(container);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
observer.observe(document.body, {
|
|
291
|
+
childList: true,
|
|
292
|
+
subtree: true
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
|
|
296
|
+
// wait for the container to be created and then render the nodes tree
|
|
297
|
+
renderChildsTreePromise = waitForContainer.then((container) => {
|
|
298
|
+
// create a UIArea for the container and render the tree into it
|
|
299
|
+
var oUIArea = UIArea.create(oRef);
|
|
300
|
+
oUIArea.addContent(oControl._oChildTree);
|
|
301
|
+
// focus the selected item in the nodes tree
|
|
302
|
+
var expandTreeItemPromise = new Promise(function (resolve, reject) {
|
|
303
|
+
setTimeout(function () {
|
|
304
|
+
if (oControl._oChildTree._itemIndex) {
|
|
305
|
+
var oItem = oControl._oChildTree.getItems().find(function(item) {
|
|
306
|
+
return item.getBindingContext().getPath() === oControl._oChildTree._itemIndex;
|
|
307
|
+
});
|
|
308
|
+
if (oItem) {
|
|
309
|
+
oItem.focus();
|
|
310
|
+
if (!oItem.isLeaf() && !oItem.getExpanded()) {
|
|
311
|
+
oControl._oChildTree.expand(oControl._oChildTree.indexOfItem(oItem));
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
oControl._oChildTree.expand(0);
|
|
316
|
+
}
|
|
317
|
+
bChildTreeRendered = true;
|
|
318
|
+
setTimeout(function () {
|
|
319
|
+
resolve({});
|
|
320
|
+
}, 100);
|
|
321
|
+
}, 100);
|
|
322
|
+
});
|
|
323
|
+
return expandTreeItemPromise;
|
|
324
|
+
});
|
|
325
|
+
}
|
|
263
326
|
if (oControl.isFieldReady()) {
|
|
264
327
|
//surrounding div tag for form <div class="sapUiIntegrationEditorForm"
|
|
265
328
|
oRm.openStart("div");
|
|
@@ -870,9 +933,27 @@ sap.ui.define([
|
|
|
870
933
|
oControl._aFieldDataReadyPromise = [];
|
|
871
934
|
// check ready status again since this is in async promise
|
|
872
935
|
if (!oControl.isReady()) {
|
|
936
|
+
if (bChildTreeRendered === false && renderChildsTreePromise) {
|
|
937
|
+
renderChildsTreePromise.then(function() {
|
|
938
|
+
// add a timeout to make sure all UI updates are done before firing ready
|
|
939
|
+
setTimeout(function () {
|
|
940
|
+
oControl._ready = true;
|
|
941
|
+
oControl.fireReady();
|
|
942
|
+
}, 200);
|
|
943
|
+
});
|
|
944
|
+
} else {
|
|
945
|
+
oControl._ready = true;
|
|
946
|
+
oControl.fireReady();
|
|
947
|
+
}
|
|
948
|
+
}
|
|
949
|
+
});
|
|
950
|
+
} else if (bChildTreeRendered === false && renderChildsTreePromise) {
|
|
951
|
+
renderChildsTreePromise.then(function() {
|
|
952
|
+
// add a timeout to make sure all UI updates are done before firing ready
|
|
953
|
+
setTimeout(function () {
|
|
873
954
|
oControl._ready = true;
|
|
874
955
|
oControl.fireReady();
|
|
875
|
-
}
|
|
956
|
+
}, 200);
|
|
876
957
|
});
|
|
877
958
|
} else {
|
|
878
959
|
oControl._ready = true;
|
|
@@ -896,8 +977,9 @@ sap.ui.define([
|
|
|
896
977
|
this._aFieldReadyPromise = [];
|
|
897
978
|
this._aFieldDataReadyPromise = [];
|
|
898
979
|
this._oResourceBundle = Library.getResourceBundleFor("sap.ui.integration", Utils._language);
|
|
899
|
-
this.
|
|
900
|
-
this.
|
|
980
|
+
this._aAppliedLayerChanges = [];
|
|
981
|
+
this._oBeforeLayerChange = {};
|
|
982
|
+
this._oCurrentLayerChange = {};
|
|
901
983
|
this._mDestinationDataProviders = {};
|
|
902
984
|
var oMessageStrip = new MessageStrip(this.getId() + MessageStripId, {
|
|
903
985
|
showIcon: false
|
|
@@ -913,7 +995,7 @@ sap.ui.define([
|
|
|
913
995
|
* @experimental since 1.94
|
|
914
996
|
* @public
|
|
915
997
|
* @author SAP SE
|
|
916
|
-
* @version 1.
|
|
998
|
+
* @version 1.145.0
|
|
917
999
|
* @borrows sap.ui.integration.editor.Editor#getParameters as getParameters
|
|
918
1000
|
* @borrows sap.ui.integration.editor.Editor#resolveDestination as resolveDestination
|
|
919
1001
|
* @borrows sap.ui.integration.editor.Editor#request as request
|
|
@@ -933,7 +1015,7 @@ sap.ui.define([
|
|
|
933
1015
|
return null;
|
|
934
1016
|
}
|
|
935
1017
|
|
|
936
|
-
var oParams = this.
|
|
1018
|
+
var oParams = this._oManifest.getProcessedParameters(),
|
|
937
1019
|
oResultParams = {},
|
|
938
1020
|
sKey;
|
|
939
1021
|
|
|
@@ -1012,6 +1094,7 @@ sap.ui.define([
|
|
|
1012
1094
|
};
|
|
1013
1095
|
|
|
1014
1096
|
Editor.prototype.setJson = function (vIdOrSettings, bSuppress) {
|
|
1097
|
+
this._vIdOrSettings = deepClone(vIdOrSettings, 500);
|
|
1015
1098
|
this._fieldReady = false;
|
|
1016
1099
|
this._ready = false;
|
|
1017
1100
|
if (deepEqual(vIdOrSettings, this._preIdOrSettings)) {
|
|
@@ -1029,10 +1112,12 @@ sap.ui.define([
|
|
|
1029
1112
|
if (vIdOrSettings.manifestChanges) {
|
|
1030
1113
|
//map translations of unmatch languages
|
|
1031
1114
|
Utils.mapLanguagesInManifestChanges(vIdOrSettings.manifestChanges);
|
|
1032
|
-
//
|
|
1115
|
+
//filter the child changes from the current layer
|
|
1116
|
+
this._filterChildManifestChanges(vIdOrSettings);
|
|
1117
|
+
//filter the changes from the current layer
|
|
1033
1118
|
this._filterManifestChangesByLayer(vIdOrSettings);
|
|
1034
1119
|
}
|
|
1035
|
-
if (this.
|
|
1120
|
+
if (this._oManifestModel) {
|
|
1036
1121
|
//already created
|
|
1037
1122
|
return;
|
|
1038
1123
|
}
|
|
@@ -1045,7 +1130,7 @@ sap.ui.define([
|
|
|
1045
1130
|
if (vIdOrSettings.baseUrl) {
|
|
1046
1131
|
this.setProperty("baseUrl", vIdOrSettings.baseUrl);
|
|
1047
1132
|
}
|
|
1048
|
-
this.
|
|
1133
|
+
this._aAppliedLayerChanges = vIdOrSettings.manifestChanges;
|
|
1049
1134
|
|
|
1050
1135
|
this.createManifest(vIdOrSettings, bSuppress);
|
|
1051
1136
|
}
|
|
@@ -1062,28 +1147,28 @@ sap.ui.define([
|
|
|
1062
1147
|
vManifest = null;
|
|
1063
1148
|
}
|
|
1064
1149
|
|
|
1065
|
-
if (this.
|
|
1066
|
-
this.
|
|
1150
|
+
if (this._oManifest) {
|
|
1151
|
+
this._oManifest.destroy();
|
|
1067
1152
|
}
|
|
1068
1153
|
this.destroyAggregation("_extension");
|
|
1069
1154
|
var iCurrentModeIndex = Merger.layers[this.getMode()];
|
|
1070
1155
|
|
|
1071
|
-
this.
|
|
1072
|
-
this.
|
|
1156
|
+
this._oManifest = new Manifest(this.getSection(), vManifest, sBaseUrl, vIdOrSettings.manifestChanges);
|
|
1157
|
+
this._oManifest
|
|
1073
1158
|
.load(mOptions)
|
|
1074
1159
|
.then(async function () {
|
|
1075
1160
|
this._registerManifestModulePath();
|
|
1076
|
-
this._oInitialManifestModel = new JSONModel(this.
|
|
1077
|
-
this.setProperty("json", this.
|
|
1078
|
-
var oManifestJson = this.
|
|
1079
|
-
var
|
|
1080
|
-
this.
|
|
1081
|
-
if (iCurrentModeIndex < Merger.layers[Constants.EDITOR_MODE.TRANSLATION] && this.
|
|
1161
|
+
this._oInitialManifestModel = new JSONModel(this._oManifest._oInitialJson);
|
|
1162
|
+
this.setProperty("json", this._oManifest._oInitialJson, bSuppress);
|
|
1163
|
+
var oManifestJson = this._oManifest.oJson;
|
|
1164
|
+
var oBeforeLayerManifestJson = merge({}, oManifestJson);
|
|
1165
|
+
this._oBeforeLayerManifestModel = new JSONModel(oBeforeLayerManifestJson);
|
|
1166
|
+
if (iCurrentModeIndex < Merger.layers[Constants.EDITOR_MODE.TRANSLATION] && this._oCurrentLayerChange) {
|
|
1082
1167
|
//merge if not translation
|
|
1083
|
-
oManifestJson = Merger.mergeDelta(oManifestJson, [this.
|
|
1168
|
+
oManifestJson = Merger.mergeDelta(oManifestJson, [this._oCurrentLayerChange], this.getSection());
|
|
1084
1169
|
}
|
|
1085
1170
|
//create a manifest model after the changes are merged
|
|
1086
|
-
this.
|
|
1171
|
+
this._oManifestModel = new JSONModel(oManifestJson);
|
|
1087
1172
|
this._isManifestReady = true;
|
|
1088
1173
|
this.fireManifestReady();
|
|
1089
1174
|
this._initResourceBundlesForMultiTranslation();
|
|
@@ -1094,8 +1179,8 @@ sap.ui.define([
|
|
|
1094
1179
|
}
|
|
1095
1180
|
//add a context model
|
|
1096
1181
|
this._createContextModel();
|
|
1097
|
-
if (this.
|
|
1098
|
-
this._enhanceI18nModel(this.
|
|
1182
|
+
if (this._oManifest.getResourceBundle()) {
|
|
1183
|
+
this._enhanceI18nModel(this._oManifest.getResourceBundle());
|
|
1099
1184
|
}
|
|
1100
1185
|
return this._loadExtension().then(function() {
|
|
1101
1186
|
this._initInternal();
|
|
@@ -1107,7 +1192,7 @@ sap.ui.define([
|
|
|
1107
1192
|
* Init the Resource Bundles for Multi Translation
|
|
1108
1193
|
*/
|
|
1109
1194
|
Editor.prototype._initResourceBundlesForMultiTranslation = function () {
|
|
1110
|
-
var vI18n = this.
|
|
1195
|
+
var vI18n = this._oManifest.get("/sap.app/i18n");
|
|
1111
1196
|
var sResourceBundleURL;
|
|
1112
1197
|
var aSupportedLocales;
|
|
1113
1198
|
if (typeof vI18n === "string") {
|
|
@@ -1132,12 +1217,12 @@ sap.ui.define([
|
|
|
1132
1217
|
* Registers the manifest ID as a module path.
|
|
1133
1218
|
*/
|
|
1134
1219
|
Editor.prototype._registerManifestModulePath = function () {
|
|
1135
|
-
if (!this.
|
|
1220
|
+
if (!this._oManifest) {
|
|
1136
1221
|
return;
|
|
1137
1222
|
}
|
|
1138
|
-
this._sAppId = this.
|
|
1223
|
+
this._sAppId = this._oManifest.get("/sap.app/id");
|
|
1139
1224
|
if (this._sAppId) {
|
|
1140
|
-
LoaderExtensions.registerResourcePath(this._sAppId.replace(/\./g, "/"), this.
|
|
1225
|
+
LoaderExtensions.registerResourcePath(this._sAppId.replace(/\./g, "/"), this._oManifest.getUrl() || "/");
|
|
1141
1226
|
} else {
|
|
1142
1227
|
Log.error("sap.ui.integration.editor.Editor: sap.app/id entry in the manifest is mandatory");
|
|
1143
1228
|
}
|
|
@@ -1168,7 +1253,7 @@ sap.ui.define([
|
|
|
1168
1253
|
};
|
|
1169
1254
|
|
|
1170
1255
|
Editor.prototype._loadExtension = function () {
|
|
1171
|
-
var sExtensionPath = this.
|
|
1256
|
+
var sExtensionPath = this._oManifest.get(this.getConfigurationPath() + "/extension") || this._oManifest.get("/" + this.getSection() + "/extension"),
|
|
1172
1257
|
sFullExtensionPath;
|
|
1173
1258
|
if (!sExtensionPath) {
|
|
1174
1259
|
Log.info("sap.ui.integration.editor.Editor: extension is not defined in manifest, do not load it.");
|
|
@@ -1223,8 +1308,8 @@ sap.ui.define([
|
|
|
1223
1308
|
};
|
|
1224
1309
|
|
|
1225
1310
|
Editor.prototype.initDestinations = function (vHost) {
|
|
1226
|
-
this.
|
|
1227
|
-
this.setModel(this.
|
|
1311
|
+
this._oDestinationsModel = new JSONModel({});
|
|
1312
|
+
this.setModel(this._oDestinationsModel, "destinations");
|
|
1228
1313
|
var oHostInstance = this.getHostInstance();
|
|
1229
1314
|
|
|
1230
1315
|
if (vHost && !oHostInstance) {
|
|
@@ -1241,7 +1326,7 @@ sap.ui.define([
|
|
|
1241
1326
|
var sConfigurationPath = this.getConfigurationPath();
|
|
1242
1327
|
this._oDestinations = new Destinations({
|
|
1243
1328
|
host: oHostInstance,
|
|
1244
|
-
manifestConfig: this.
|
|
1329
|
+
manifestConfig: this._oManifestModel.getProperty(sConfigurationPath + "/destinations"),
|
|
1245
1330
|
prefix: "destinations"
|
|
1246
1331
|
});
|
|
1247
1332
|
}
|
|
@@ -1255,7 +1340,7 @@ sap.ui.define([
|
|
|
1255
1340
|
this._oDataProviderFactory = new DataProviderFactory({
|
|
1256
1341
|
destinations: this._oDestinations,
|
|
1257
1342
|
extension: oExtension,
|
|
1258
|
-
csrfTokensConfig: this.
|
|
1343
|
+
csrfTokensConfig: this._oManifest.get(this.getConfigurationPath() + "/csrfTokens"),
|
|
1259
1344
|
editor: this
|
|
1260
1345
|
});
|
|
1261
1346
|
};
|
|
@@ -1355,6 +1440,7 @@ sap.ui.define([
|
|
|
1355
1440
|
}
|
|
1356
1441
|
return this;
|
|
1357
1442
|
};
|
|
1443
|
+
|
|
1358
1444
|
/**
|
|
1359
1445
|
* Increases the zIndex to a higher value for all popups
|
|
1360
1446
|
*/
|
|
@@ -1364,19 +1450,81 @@ sap.ui.define([
|
|
|
1364
1450
|
Popup.setInitialZIndex(this._iZIndex);
|
|
1365
1451
|
}
|
|
1366
1452
|
};
|
|
1453
|
+
|
|
1367
1454
|
/**
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1455
|
+
* Filter out the manifestChanges of Child editors in the oManifestSettings
|
|
1456
|
+
*
|
|
1457
|
+
* @param {*} oManifestSettings
|
|
1458
|
+
*/
|
|
1459
|
+
Editor.prototype._filterChildManifestChanges = function (oManifestSettings) {
|
|
1460
|
+
var that = this;
|
|
1461
|
+
if (that._bChildManifestChangesFiltered) {
|
|
1462
|
+
return;
|
|
1463
|
+
}
|
|
1464
|
+
that._aMainEditorChanges = deepClone(oManifestSettings.manifestChanges, 500);
|
|
1465
|
+
that._oChildEditorChanges = {};
|
|
1466
|
+
var processObject = function(obj, parentKey) {
|
|
1467
|
+
parentKey = parentKey ? (parentKey + "/") : "";
|
|
1468
|
+
Object.keys(obj).forEach(function(sKey) {
|
|
1469
|
+
if (sKey.startsWith(that.getConfigurationPath() + "/childCards/") && sKey.endsWith("_manifestChanges")) {
|
|
1470
|
+
var sRest = sKey.substring("/sap.card/configuration/childCards/".length);
|
|
1471
|
+
var sChildEditorName = sRest.split("/")[0];
|
|
1472
|
+
if (sChildEditorName) {
|
|
1473
|
+
var sChildEditorPath = parentKey + sChildEditorName;
|
|
1474
|
+
that._oChildEditorChanges[sChildEditorPath] = that._oChildEditorChanges[sChildEditorPath] || [];
|
|
1475
|
+
that._oChildEditorChanges[sChildEditorPath].push(obj[sKey]);
|
|
1476
|
+
if (obj[sKey] !== null) {
|
|
1477
|
+
processObject(obj[sKey], sChildEditorPath);
|
|
1478
|
+
}
|
|
1479
|
+
}
|
|
1480
|
+
}
|
|
1481
|
+
});
|
|
1482
|
+
};
|
|
1483
|
+
|
|
1484
|
+
// first process child changes
|
|
1485
|
+
// - move all the /sap.card/configuration/childCards/.../_manifestChanges to oChildChanges
|
|
1486
|
+
that._aMainEditorChanges.forEach(function(oChange) {
|
|
1487
|
+
processObject(oChange);
|
|
1488
|
+
});
|
|
1489
|
+
|
|
1490
|
+
// clean up child changes
|
|
1491
|
+
// - remove all /sap.card/configuration/childCards/.../_manifestChanges
|
|
1492
|
+
Object.keys(that._oChildEditorChanges).forEach(function(sKey) {
|
|
1493
|
+
that._oChildEditorChanges[sKey].forEach(function(oChange) {
|
|
1494
|
+
Object.keys(oChange).forEach(function(sKey1) {
|
|
1495
|
+
if (sKey1.startsWith(that.getConfigurationPath() + "/childCards/") && sKey1.endsWith("_manifestChanges")) {
|
|
1496
|
+
delete oChange[sKey1];
|
|
1497
|
+
}
|
|
1498
|
+
});
|
|
1499
|
+
});
|
|
1500
|
+
});
|
|
1501
|
+
|
|
1502
|
+
// clean up main changes
|
|
1503
|
+
// - remove all /sap.card/configuration/childCards/.../_manifestChanges
|
|
1504
|
+
that._aMainEditorChanges.forEach(function(oChange) {
|
|
1505
|
+
Object.keys(oChange).forEach(function(sKey1) {
|
|
1506
|
+
if (sKey1.startsWith(that.getConfigurationPath() + "/childCards/") && sKey1.endsWith("_manifestChanges")) {
|
|
1507
|
+
delete oChange[sKey1];
|
|
1508
|
+
}
|
|
1509
|
+
});
|
|
1510
|
+
});
|
|
1511
|
+
|
|
1512
|
+
that._bChildManifestChangesFiltered = true;
|
|
1513
|
+
};
|
|
1514
|
+
|
|
1515
|
+
/**
|
|
1516
|
+
* Filters the manifestChanges array in the oManifestSettings
|
|
1517
|
+
* All changes that are done for layers > than current layer are removed (see also layers)
|
|
1518
|
+
* The changes of current layer will be stored in this._oCurrentLayerChange to be applied later in the editor code.
|
|
1519
|
+
* All changes that are done for layers < that the current layer are kept in oManifestSettings.manifestChanges
|
|
1520
|
+
*
|
|
1521
|
+
* @param {*} oManifestSettings
|
|
1522
|
+
*/
|
|
1523
|
+
Editor.prototype._filterManifestChangesByLayer = function (oManifestSettings) {
|
|
1376
1524
|
var aChanges = [],
|
|
1377
1525
|
that = this,
|
|
1378
|
-
|
|
1379
|
-
|
|
1526
|
+
oBeforeLayerChange = {},
|
|
1527
|
+
oCurrentLayerChange = { ":layer": Merger.layers[this.getMode()] },
|
|
1380
1528
|
iCurrentModeIndex = Merger.layers[that.getMode()];
|
|
1381
1529
|
oManifestSettings.manifestChanges.forEach(function (oChange) {
|
|
1382
1530
|
//filter manifest changes. only the changes before the current layer are needed
|
|
@@ -1405,16 +1553,256 @@ sap.ui.define([
|
|
|
1405
1553
|
}
|
|
1406
1554
|
if (iLayer < iCurrentModeIndex) {
|
|
1407
1555
|
aChanges.push(oChange);
|
|
1408
|
-
|
|
1556
|
+
oBeforeLayerChange = merge(oBeforeLayerChange, oChange);
|
|
1409
1557
|
} else if (iLayer === iCurrentModeIndex) {
|
|
1410
1558
|
//store the current layer changes locally for later processing
|
|
1411
|
-
|
|
1559
|
+
oCurrentLayerChange = oChange;
|
|
1412
1560
|
}
|
|
1413
1561
|
});
|
|
1414
1562
|
oManifestSettings.manifestChanges = aChanges;
|
|
1415
|
-
this.
|
|
1416
|
-
this.
|
|
1563
|
+
this._oCurrentLayerChange = oCurrentLayerChange;
|
|
1564
|
+
this._oBeforeLayerChange = oBeforeLayerChange;
|
|
1565
|
+
};
|
|
1566
|
+
|
|
1567
|
+
/**
|
|
1568
|
+
* Create the tree of Child editors
|
|
1569
|
+
*
|
|
1570
|
+
* @param {*} oChildNodes
|
|
1571
|
+
*/
|
|
1572
|
+
Editor.prototype.createChildTree = function (oChildNodes) {
|
|
1573
|
+
var that = this;
|
|
1574
|
+
var sBaseUrl = this.getBaseUrl();
|
|
1575
|
+
|
|
1576
|
+
var sMainManifest = that._vIdOrSettings.manifest;
|
|
1577
|
+
if (typeof that._vIdOrSettings.manifest === "object") {
|
|
1578
|
+
sMainManifest = JSON.stringify(that._vIdOrSettings.manifest);
|
|
1579
|
+
}
|
|
1580
|
+
var mainTitle = this._oManifest.get("/sap.app/title") || this._oResourceBundle.getText("EDITOR_CHILD_TREE_MAIN_NODE_TEXT");
|
|
1581
|
+
// Create data model with main node
|
|
1582
|
+
var oData = [{
|
|
1583
|
+
text: mainTitle,
|
|
1584
|
+
baseUrl: sBaseUrl,
|
|
1585
|
+
manifest: sMainManifest,
|
|
1586
|
+
path: "",
|
|
1587
|
+
selected: true,
|
|
1588
|
+
nodes: []
|
|
1589
|
+
}];
|
|
1590
|
+
var oModel = new JSONModel(oData);
|
|
1591
|
+
|
|
1592
|
+
var loadChildNode = function (sName, oChildConfig, sPath, sBaseUrl, sParentName) {
|
|
1593
|
+
// calculate base url and manifest path for childs
|
|
1594
|
+
var sManifestPath = sBaseUrl + oChildConfig.manifest;
|
|
1595
|
+
sBaseUrl = sManifestPath.substring(0, sManifestPath.lastIndexOf("/") + 1);
|
|
1596
|
+
var oNode = {
|
|
1597
|
+
text: sName,
|
|
1598
|
+
baseUrl: sBaseUrl,
|
|
1599
|
+
manifest: sManifestPath,
|
|
1600
|
+
isChild: true,
|
|
1601
|
+
path: sPath,
|
|
1602
|
+
selected: false,
|
|
1603
|
+
nodes: []
|
|
1604
|
+
};
|
|
1605
|
+
if (oChildConfig.manifest) {
|
|
1606
|
+
try {
|
|
1607
|
+
var sManifestUrl = that._sAppId.replace(/\./g, "/");
|
|
1608
|
+
if (sParentName) {
|
|
1609
|
+
sManifestUrl += "/" + sParentName;
|
|
1610
|
+
}
|
|
1611
|
+
sManifestUrl += "/" + oChildConfig.manifest;
|
|
1612
|
+
// load child manifest to get title and sub child nodes
|
|
1613
|
+
LoaderExtensions.loadResource(sManifestUrl, {
|
|
1614
|
+
dataType: "json",
|
|
1615
|
+
async: true,
|
|
1616
|
+
failOnError: false
|
|
1617
|
+
}).then(function (oManifest) {
|
|
1618
|
+
if (oManifest && oManifest["sap.card"]?.configuration?.childCards) {
|
|
1619
|
+
var oSubChildNodes = oManifest["sap.card"].configuration.childCards;
|
|
1620
|
+
for (var sSubName in oSubChildNodes) {
|
|
1621
|
+
var oSubNode = loadChildNode(sSubName, oSubChildNodes[sSubName], sPath ? (sPath + "/" + sSubName) : sSubName, sBaseUrl, sName);
|
|
1622
|
+
oNode.nodes.push(oSubNode);
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
if (oManifest) {
|
|
1626
|
+
oNode.text = oChildConfig.title || oManifest["sap.app"].title || oNode.text;
|
|
1627
|
+
} else if (oChildConfig.title) {
|
|
1628
|
+
oNode.text = oChildConfig.title;
|
|
1629
|
+
}
|
|
1630
|
+
oModel.checkUpdate(true);
|
|
1631
|
+
});
|
|
1632
|
+
} catch (e) {
|
|
1633
|
+
if (oChildConfig.title) {
|
|
1634
|
+
oNode.text = oChildConfig.title;
|
|
1635
|
+
}
|
|
1636
|
+
oModel.checkUpdate(true);
|
|
1637
|
+
Log.error("sap.ui.integration.editor.Editor: child edtior tree manifest load error: " + e);
|
|
1638
|
+
}
|
|
1639
|
+
} else if (oChildConfig.title) {
|
|
1640
|
+
oNode.text = oChildConfig.title;
|
|
1641
|
+
}
|
|
1642
|
+
return oNode;
|
|
1643
|
+
};
|
|
1644
|
+
|
|
1645
|
+
for (var sChildNodeName in oChildNodes) {
|
|
1646
|
+
var oNode = loadChildNode(sChildNodeName, oChildNodes[sChildNodeName], sChildNodeName, sBaseUrl);
|
|
1647
|
+
oData[0].nodes.push(oNode);
|
|
1648
|
+
}
|
|
1649
|
+
that._oChildTree = new Tree({
|
|
1650
|
+
items: {
|
|
1651
|
+
path: "/",
|
|
1652
|
+
template: new StandardTreeItem({
|
|
1653
|
+
title: "{text}",
|
|
1654
|
+
tooltip: "{text}",
|
|
1655
|
+
type: "Active",
|
|
1656
|
+
highlight: "{= ${selected} ? 'Information' : 'None'}"
|
|
1657
|
+
})
|
|
1658
|
+
},
|
|
1659
|
+
toggleOpenState: that.onToggleOpenState,
|
|
1660
|
+
itemPress: that.onTreeItemPress.bind(that)
|
|
1661
|
+
}).addStyleClass("sapUiIntegrationEditorChildTreeItem");
|
|
1662
|
+
that._oChildTree.setModel(oModel);
|
|
1417
1663
|
};
|
|
1664
|
+
|
|
1665
|
+
Editor.prototype.onToggleOpenState = function(oEvent) {
|
|
1666
|
+
var oControl = oEvent.getSource();
|
|
1667
|
+
var bExpanded = oEvent.getParameter("expanded");
|
|
1668
|
+
if (bExpanded) {
|
|
1669
|
+
Log.info("sap.ui.integration.editor.Editor: child edtior tree item expanded: " + oEvent.getParameter("itemIndex"));
|
|
1670
|
+
oControl.expand([oEvent.getParameter("itemIndex")]);
|
|
1671
|
+
} else {
|
|
1672
|
+
Log.info("sap.ui.integration.editor.Editor: child edtior tree item collapsed: " + oEvent.getParameter("itemIndex"));
|
|
1673
|
+
oControl.collapse([oEvent.getParameter("itemIndex")]);
|
|
1674
|
+
}
|
|
1675
|
+
};
|
|
1676
|
+
|
|
1677
|
+
/**
|
|
1678
|
+
* process the pressed tree item event
|
|
1679
|
+
* @param {sap.ui.base.Event} oEvent the event object
|
|
1680
|
+
*/
|
|
1681
|
+
Editor.prototype.onTreeItemPress = function(oEvent) {
|
|
1682
|
+
// get the pressed item
|
|
1683
|
+
var oItem = oEvent.getParameter("srcControl");
|
|
1684
|
+
if (!oItem || !oItem.getBindingContext() || !oItem.getBindingContext().getObject()) {
|
|
1685
|
+
Log.error("sap.ui.integration.editor.Editor: child editor tree item pressed without binding context or binding object");
|
|
1686
|
+
return;
|
|
1687
|
+
}
|
|
1688
|
+
|
|
1689
|
+
// get the binding object and the manifest
|
|
1690
|
+
var oItemObject = oItem.getBindingContext().getObject();
|
|
1691
|
+
var oManifest = oItemObject.manifest;
|
|
1692
|
+
if (!oManifest) {
|
|
1693
|
+
Log.error("sap.ui.integration.editor.Editor: child editor tree item pressed without manifest");
|
|
1694
|
+
return;
|
|
1695
|
+
}
|
|
1696
|
+
// check if manifest is json
|
|
1697
|
+
try {
|
|
1698
|
+
oManifest = JSON.parse(oManifest);
|
|
1699
|
+
} catch (e) {
|
|
1700
|
+
//manifest is not json
|
|
1701
|
+
Log.info("sap.ui.integration.editor.Editor: child editor tree item pressed with manifest not json");
|
|
1702
|
+
}
|
|
1703
|
+
// check if same item pressed, if yes do nothing
|
|
1704
|
+
var path = oItemObject.path || "/";
|
|
1705
|
+
this._oChildTree._path = this._oChildTree._path || "/";
|
|
1706
|
+
if (this._oChildTree._path === path) {
|
|
1707
|
+
Log.info("sap.ui.integration.editor.Editor: same item pressed, do nothing");
|
|
1708
|
+
return;
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
// update current settings to manifest changes (main editor or Child editor)
|
|
1712
|
+
var oCurrentSettings = this.getCurrentSettings(true);
|
|
1713
|
+
this._oChildEditorChanges = this._oChildEditorChanges || {};
|
|
1714
|
+
this._aMainEditorChanges = this._aMainEditorChanges || [];
|
|
1715
|
+
var sLayer = oCurrentSettings[":layer"];
|
|
1716
|
+
var oMatchedChange, oMatchedChangeCloned;
|
|
1717
|
+
if (!this.isChild) {
|
|
1718
|
+
// find current layer change in main editor changes
|
|
1719
|
+
oMatchedChange = this._aMainEditorChanges.find(function(oChange) {
|
|
1720
|
+
return oChange[":layer"] === sLayer;
|
|
1721
|
+
});
|
|
1722
|
+
if (oMatchedChange) {
|
|
1723
|
+
oMatchedChangeCloned = merge({}, oMatchedChange, oCurrentSettings);
|
|
1724
|
+
var iIndex = this._aMainEditorChanges.indexOf(oMatchedChange);
|
|
1725
|
+
if (iIndex > -1) {
|
|
1726
|
+
this._aMainEditorChanges.splice(iIndex, 1);
|
|
1727
|
+
}
|
|
1728
|
+
oMatchedChange = oMatchedChangeCloned;
|
|
1729
|
+
} else {
|
|
1730
|
+
oMatchedChange = oCurrentSettings;
|
|
1731
|
+
}
|
|
1732
|
+
this._aMainEditorChanges.push(oMatchedChange);
|
|
1733
|
+
} else {
|
|
1734
|
+
this._oChildEditorChanges[this._oChildTree._path] = this._oChildEditorChanges[this._oChildTree._path] || [];
|
|
1735
|
+
var aChildChanges = this._oChildEditorChanges[this._oChildTree._path];
|
|
1736
|
+
// find current layer change in Child editor changes
|
|
1737
|
+
oMatchedChange = aChildChanges.find(function(oChange) {
|
|
1738
|
+
return oChange[":layer"] === sLayer;
|
|
1739
|
+
});
|
|
1740
|
+
if (oMatchedChange) {
|
|
1741
|
+
oMatchedChangeCloned = merge({}, oMatchedChange, oCurrentSettings);
|
|
1742
|
+
var iIndex = aChildChanges.indexOf(oMatchedChange);
|
|
1743
|
+
if (iIndex > -1) {
|
|
1744
|
+
aChildChanges.splice(iIndex, 1);
|
|
1745
|
+
}
|
|
1746
|
+
oMatchedChange = oMatchedChangeCloned;
|
|
1747
|
+
} else {
|
|
1748
|
+
oMatchedChange = oCurrentSettings;
|
|
1749
|
+
}
|
|
1750
|
+
aChildChanges.push(oMatchedChange);
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
// clean editor and reset flags
|
|
1754
|
+
this.cleanAndReset();
|
|
1755
|
+
|
|
1756
|
+
// switch to the pressed editor
|
|
1757
|
+
this.switchToEditor(oManifest, oItemObject, path);
|
|
1758
|
+
|
|
1759
|
+
// unHighlignt the previous selected item and highlight the current selected item
|
|
1760
|
+
var oTreeModel = this._oChildTree.getModel();
|
|
1761
|
+
var sCurrentItemIndex = this._oChildTree._itemIndex || "/0";
|
|
1762
|
+
oTreeModel.setProperty(sCurrentItemIndex + "/selected", false);
|
|
1763
|
+
oItemObject.selected = true;
|
|
1764
|
+
oTreeModel.checkUpdate(true);
|
|
1765
|
+
|
|
1766
|
+
// update the item index and path
|
|
1767
|
+
this._oChildTree._itemIndex = oItem.getBindingContext().getPath();
|
|
1768
|
+
this._oChildTree._path = path;
|
|
1769
|
+
Log.info("sap.ui.integration.editor.Editor: child editor tree item pressed");
|
|
1770
|
+
};
|
|
1771
|
+
|
|
1772
|
+
/**
|
|
1773
|
+
* Switch to another editor based on the manifest and item object
|
|
1774
|
+
*
|
|
1775
|
+
* @param {*} oManifest the manifest of the editor to switch to
|
|
1776
|
+
* @param {*} oItemObject the binding object of the pressed tree item
|
|
1777
|
+
* @param {string} sPath the path of the pressed tree item
|
|
1778
|
+
*/
|
|
1779
|
+
Editor.prototype.switchToEditor = function(oManifest, oItemObject, sPath) {
|
|
1780
|
+
// save the current settings, to avoid creating new instance when switching between child editors
|
|
1781
|
+
this._oChildTreeSettings = this._oChildTreeSettings || {};
|
|
1782
|
+
if (!this._oChildTreeSettings[this._oChildTree._path]) {
|
|
1783
|
+
this._oChildTreeSettings[this._oChildTree._path] = deepClone(this._vIdOrSettings, 500);
|
|
1784
|
+
}
|
|
1785
|
+
|
|
1786
|
+
// get settings for the pressed item
|
|
1787
|
+
this.isChild = oItemObject.isChild;
|
|
1788
|
+
var oManifestChanges;
|
|
1789
|
+
if (!this.isChild) {
|
|
1790
|
+
oManifestChanges = this._aMainEditorChanges;
|
|
1791
|
+
} else {
|
|
1792
|
+
oManifestChanges = this._oChildEditorChanges[sPath] || [];
|
|
1793
|
+
}
|
|
1794
|
+
if (this._oChildTreeSettings[sPath]) {
|
|
1795
|
+
this._vIdOrSettings = this._oChildTreeSettings[sPath];
|
|
1796
|
+
} else {
|
|
1797
|
+
this._vIdOrSettings.baseUrl = oItemObject.baseUrl;
|
|
1798
|
+
this._vIdOrSettings.manifest = oManifest;
|
|
1799
|
+
}
|
|
1800
|
+
this._vIdOrSettings.manifestChanges = oManifestChanges;
|
|
1801
|
+
|
|
1802
|
+
// switch to the pressed editor
|
|
1803
|
+
this.setJson(this._vIdOrSettings, true); //suppress rerendering as the editor will be rerendered anyway
|
|
1804
|
+
};
|
|
1805
|
+
|
|
1418
1806
|
/**
|
|
1419
1807
|
* Initializes the editor after the json is set
|
|
1420
1808
|
*/
|
|
@@ -1422,12 +1810,19 @@ sap.ui.define([
|
|
|
1422
1810
|
var that = this;
|
|
1423
1811
|
//handle keyword designtime removal
|
|
1424
1812
|
var sConfigurationPath = that.getConfigurationPath();
|
|
1425
|
-
var sDesigntime = that.
|
|
1813
|
+
var sDesigntime = that._oManifest.get(sConfigurationPath + "/editor");
|
|
1426
1814
|
if (!sDesigntime) {
|
|
1427
|
-
sDesigntime = that.
|
|
1815
|
+
sDesigntime = that._oManifest.get("/" + that.getSection() + "/designtime");
|
|
1816
|
+
}
|
|
1817
|
+
if (!that._oChildTree) {
|
|
1818
|
+
// create Child editors tree if Child editors are defined and tree not created yet
|
|
1819
|
+
var oChildEditors = that._oManifest.get(sConfigurationPath + "/childCards");
|
|
1820
|
+
if (oChildEditors && typeof oChildEditors === "object") {
|
|
1821
|
+
that.createChildTree(oChildEditors);
|
|
1822
|
+
}
|
|
1428
1823
|
}
|
|
1429
1824
|
//load the designtime control and bundles lazy
|
|
1430
|
-
var oConfiguration = that.
|
|
1825
|
+
var oConfiguration = that._oManifestModel.getProperty(sConfigurationPath),
|
|
1431
1826
|
oPromise,
|
|
1432
1827
|
oDesigntimeConfig = that.getDesigntime();
|
|
1433
1828
|
if (oDesigntimeConfig) {
|
|
@@ -1464,17 +1859,17 @@ sap.ui.define([
|
|
|
1464
1859
|
that._oDesigntimeInstance = oDesigntime;
|
|
1465
1860
|
that.initDestinations();
|
|
1466
1861
|
that.initDataProviderFactory();
|
|
1467
|
-
if (that.getMode() === Constants.EDITOR_MODE.ADMIN || that.getMode() === Constants.EDITOR_MODE.ALL) {
|
|
1468
|
-
//always add destination settings for admin and all modes
|
|
1862
|
+
if (!that.isChild && (that.getMode() === Constants.EDITOR_MODE.ADMIN || that.getMode() === Constants.EDITOR_MODE.ALL)) {
|
|
1863
|
+
//always add destination settings for admin and all modes if not child editor
|
|
1469
1864
|
that._addDestinationSettings(oConfiguration);
|
|
1470
1865
|
} else {
|
|
1471
1866
|
//delete destination settings in dt for other modes
|
|
1472
1867
|
that._deleleDestinationSettings();
|
|
1473
1868
|
}
|
|
1474
1869
|
//create a settings model
|
|
1475
|
-
that.
|
|
1476
|
-
that.setModel(that.
|
|
1477
|
-
that.setModel(that.
|
|
1870
|
+
that._oSettingsModel = new JSONModel(that._oDesigntimeInstance.getSettings());
|
|
1871
|
+
that.setModel(that._oSettingsModel, "currentSettings");
|
|
1872
|
+
that.setModel(that._oSettingsModel, "items");
|
|
1478
1873
|
return that._loadValueContextInDesigntime();
|
|
1479
1874
|
}).then(function () {
|
|
1480
1875
|
that._applyDesigntimeLayers(); //changes done from admin to content on the dt values
|
|
@@ -1491,7 +1886,7 @@ sap.ui.define([
|
|
|
1491
1886
|
return Promise.resolve(this._oDesigntime);
|
|
1492
1887
|
}
|
|
1493
1888
|
|
|
1494
|
-
if (!this.
|
|
1889
|
+
if (!this._oManifest) {
|
|
1495
1890
|
return new Promise(function (resolve, reject) {
|
|
1496
1891
|
this.attachManifestReady(function () {
|
|
1497
1892
|
this.loadDesigntime().then(resolve, reject);
|
|
@@ -1506,9 +1901,9 @@ sap.ui.define([
|
|
|
1506
1901
|
return new Promise(function (resolve, reject) {
|
|
1507
1902
|
//build the module path to load as part of the widgets module path
|
|
1508
1903
|
//handle keyword designtime removal
|
|
1509
|
-
var sDesigntimePath = this.
|
|
1904
|
+
var sDesigntimePath = this._oManifest.get(this.getConfigurationPath() + "/editor");
|
|
1510
1905
|
if (!sDesigntimePath) {
|
|
1511
|
-
sDesigntimePath = this.
|
|
1906
|
+
sDesigntimePath = this._oManifest.get("/" + this.getSection() + "/designtime");
|
|
1512
1907
|
}
|
|
1513
1908
|
var sFullDesigntimePath = this._sAppId.replace(/\./g, "/") + "/" + sDesigntimePath;
|
|
1514
1909
|
if (sFullDesigntimePath) {
|
|
@@ -1538,9 +1933,13 @@ sap.ui.define([
|
|
|
1538
1933
|
/**
|
|
1539
1934
|
* Returns the current settings as a json with a manifest path and the current value
|
|
1540
1935
|
* additionally there is a layer number added as ":layer"
|
|
1936
|
+
*
|
|
1937
|
+
* @param {boolean} bOnlyCurrentEditor If true, only the settings of the current editor are returned (without child editors)
|
|
1938
|
+
* @returns {object} The current settings in manifest format
|
|
1541
1939
|
*/
|
|
1542
|
-
Editor.prototype.getCurrentSettings = function () {
|
|
1543
|
-
|
|
1940
|
+
Editor.prototype.getCurrentSettings = function (bOnlyCurrentEditor) {
|
|
1941
|
+
bOnlyCurrentEditor = bOnlyCurrentEditor || false;
|
|
1942
|
+
var oSettings = this._oSettingsModel.getProperty("/"),
|
|
1544
1943
|
mResult = {},
|
|
1545
1944
|
mNext;
|
|
1546
1945
|
if (oSettings && oSettings.form && oSettings.form.items) {
|
|
@@ -1548,19 +1947,19 @@ sap.ui.define([
|
|
|
1548
1947
|
var oItem = oSettings.form.items[n];
|
|
1549
1948
|
if (oItem.editable && oItem.visible) {
|
|
1550
1949
|
if (this.getMode() !== Constants.EDITOR_MODE.TRANSLATION) {
|
|
1551
|
-
if (oItem.translatable && !oItem._changed && oItem._translatedPlaceholder && !this.
|
|
1950
|
+
if (oItem.translatable && !oItem._changed && oItem._translatedPlaceholder && !this._oCurrentLayerChange[oItem.manifestpath]) {
|
|
1552
1951
|
//do not save a value that was not changed and comes from a translated default value
|
|
1553
1952
|
//mResult[oItem.manifestpath] = oItem._translatedPlaceholder;
|
|
1554
1953
|
//but we need to save the setting changes for the next layer, so remove the continue sentence.
|
|
1555
1954
|
//continue;
|
|
1556
1955
|
} else {
|
|
1557
|
-
if (oItem.valueItems && !deepEqual(this.
|
|
1956
|
+
if (oItem.valueItems && !deepEqual(this._oBeforeLayerChange[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems"], oItem.valueItems)) {
|
|
1558
1957
|
mResult[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems"] = oItem.valueItems;
|
|
1559
1958
|
}
|
|
1560
|
-
if (oItem.valueTokens && !deepEqual(this.
|
|
1959
|
+
if (oItem.valueTokens && !deepEqual(this._oBeforeLayerChange[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens"], oItem.valueTokens)) {
|
|
1561
1960
|
mResult[oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens"] = oItem.valueTokens;
|
|
1562
1961
|
}
|
|
1563
|
-
var beforeLayerChange = this.
|
|
1962
|
+
var beforeLayerChange = this._oBeforeLayerChange[oItem.manifestpath];
|
|
1564
1963
|
if (typeof oItem.value !== "undefined" && !deepEqual(beforeLayerChange, oItem.value)) {
|
|
1565
1964
|
switch (oItem.type) {
|
|
1566
1965
|
case "string":
|
|
@@ -1570,8 +1969,8 @@ sap.ui.define([
|
|
|
1570
1969
|
// if value is dynamic value of a translatable parameter, save it and delete all the current translations
|
|
1571
1970
|
mResult[oItem.manifestpath] = oItem.value;
|
|
1572
1971
|
this.deleteAllTranslationValuesInTexts(oItem.manifestpath);
|
|
1573
|
-
} else if (oItem.
|
|
1574
|
-
// if before value is dynamic value
|
|
1972
|
+
} else if (oItem._beforeLayerValue && (oItem._beforeLayerValue.indexOf("{context>") === 0 || oItem._beforeLayerValue.indexOf("{{parameters") === 0)) {
|
|
1973
|
+
// if before layer value is dynamic value or a translatable parameter, save it
|
|
1575
1974
|
mResult[oItem.manifestpath] = oItem.value;
|
|
1576
1975
|
}
|
|
1577
1976
|
break;
|
|
@@ -1617,7 +2016,9 @@ sap.ui.define([
|
|
|
1617
2016
|
}
|
|
1618
2017
|
break;
|
|
1619
2018
|
default:
|
|
1620
|
-
|
|
2019
|
+
if (oItem.manifestpath) {
|
|
2020
|
+
mResult[oItem.manifestpath] = oItem.value;
|
|
2021
|
+
}
|
|
1621
2022
|
}
|
|
1622
2023
|
}
|
|
1623
2024
|
}
|
|
@@ -1625,9 +2026,9 @@ sap.ui.define([
|
|
|
1625
2026
|
if (oItem._changed) {
|
|
1626
2027
|
//in translation mode create an entry if value changes
|
|
1627
2028
|
mResult[oItem.manifestpath] = oItem.value;
|
|
1628
|
-
} else if (this.
|
|
2029
|
+
} else if (this._oCurrentLayerChange && this._oCurrentLayerChange.texts && this._oCurrentLayerChange.texts[this._language] && this._oCurrentLayerChange.texts[this._language][oItem.manifestpath]) {
|
|
1629
2030
|
//if translation layer has changed value before, save it again
|
|
1630
|
-
mResult[oItem.manifestpath] = this.
|
|
2031
|
+
mResult[oItem.manifestpath] = this._oCurrentLayerChange.texts[this._language][oItem.manifestpath];
|
|
1631
2032
|
}
|
|
1632
2033
|
}
|
|
1633
2034
|
if (oItem._next && (this.getAllowSettings())) {
|
|
@@ -1667,7 +2068,7 @@ sap.ui.define([
|
|
|
1667
2068
|
} else if (oSettings.texts) {
|
|
1668
2069
|
mResult.texts = deepClone(oSettings.texts, 500) || {};
|
|
1669
2070
|
// get the before layer translation texts
|
|
1670
|
-
var beforeLayerTexts = merge({}, this.
|
|
2071
|
+
var beforeLayerTexts = merge({}, this._oBeforeLayerChange.texts);
|
|
1671
2072
|
if (deepEqual(beforeLayerTexts, mResult.texts)) {
|
|
1672
2073
|
// if no change, DO NOT return the transtalion texts
|
|
1673
2074
|
delete mResult.texts;
|
|
@@ -1726,7 +2127,8 @@ sap.ui.define([
|
|
|
1726
2127
|
}
|
|
1727
2128
|
}
|
|
1728
2129
|
}
|
|
1729
|
-
|
|
2130
|
+
var iLayer = Merger.layers[this.getMode()];
|
|
2131
|
+
mResult[":layer"] = iLayer;
|
|
1730
2132
|
mResult[":errors"] = this.checkCurrentSettings()[":errors"];
|
|
1731
2133
|
if (mNext) {
|
|
1732
2134
|
mResult[":designtime"] = mNext;
|
|
@@ -1734,6 +2136,42 @@ sap.ui.define([
|
|
|
1734
2136
|
if (oSettings[":designtime"]) {
|
|
1735
2137
|
mResult[":designtime"] = merge(mResult[":designtime"], oSettings[":designtime"]);
|
|
1736
2138
|
}
|
|
2139
|
+
|
|
2140
|
+
// handle child editor settings
|
|
2141
|
+
if (this._oChildTree) {
|
|
2142
|
+
this._childSettings = this._childSettings || [];
|
|
2143
|
+
this._mainSettings = this._mainSettings || {};
|
|
2144
|
+
if (this.isChild) {
|
|
2145
|
+
this._childSettings[this._oChildTree._path] = mResult;
|
|
2146
|
+
} else {
|
|
2147
|
+
this._mainSettings = mResult;
|
|
2148
|
+
}
|
|
2149
|
+
// return whole settings including child editors
|
|
2150
|
+
if (!bOnlyCurrentEditor){
|
|
2151
|
+
// merge main settings and child settings into one object
|
|
2152
|
+
var mAllSettings = deepClone(this._mainSettings, 500);
|
|
2153
|
+
Object.keys(this._childSettings).forEach(function (childKey) {
|
|
2154
|
+
var oChildSetting = this._childSettings[childKey];
|
|
2155
|
+
var paths = childKey.split("/");
|
|
2156
|
+
var oParent = mAllSettings;
|
|
2157
|
+
paths.forEach(function (sPath, iIndex) {
|
|
2158
|
+
if (sPath && oChildSetting) {
|
|
2159
|
+
var fullPath = this.getConfigurationPath() + "/childCards/" + sPath + "/_manifestChanges";
|
|
2160
|
+
if (iIndex === paths.length - 1) {
|
|
2161
|
+
oParent[fullPath] = oChildSetting;
|
|
2162
|
+
} else {
|
|
2163
|
+
oParent[fullPath] = oParent[fullPath] || {
|
|
2164
|
+
":layer": iLayer,
|
|
2165
|
+
":errors": false
|
|
2166
|
+
};
|
|
2167
|
+
oParent = oParent[fullPath];
|
|
2168
|
+
}
|
|
2169
|
+
}
|
|
2170
|
+
}.bind(this));
|
|
2171
|
+
}.bind(this));
|
|
2172
|
+
return mAllSettings;
|
|
2173
|
+
}
|
|
2174
|
+
}
|
|
1737
2175
|
return mResult;
|
|
1738
2176
|
};
|
|
1739
2177
|
/**
|
|
@@ -1741,7 +2179,7 @@ sap.ui.define([
|
|
|
1741
2179
|
* TODO: highlight issues and add states...
|
|
1742
2180
|
*/
|
|
1743
2181
|
Editor.prototype.checkCurrentSettings = function () {
|
|
1744
|
-
var oSettings = this.
|
|
2182
|
+
var oSettings = this._oSettingsModel.getProperty("/"),
|
|
1745
2183
|
mChecks = {};
|
|
1746
2184
|
if (oSettings && oSettings.form && oSettings.form.items) {
|
|
1747
2185
|
for (var n in oSettings.form.items) {
|
|
@@ -2177,7 +2615,7 @@ sap.ui.define([
|
|
|
2177
2615
|
}.bind(this)));
|
|
2178
2616
|
if (oConfig.type !== "group") {
|
|
2179
2617
|
// listen to value changes on the settings
|
|
2180
|
-
oField._oValueBinding = this.
|
|
2618
|
+
oField._oValueBinding = this._oSettingsModel.bindProperty(oConfig._settingspath + "/value");
|
|
2181
2619
|
oField._oValueBinding.attachChange(function () {
|
|
2182
2620
|
if (!this._bIgnoreUpdates) {
|
|
2183
2621
|
oConfig._changed = true;
|
|
@@ -2189,7 +2627,7 @@ sap.ui.define([
|
|
|
2189
2627
|
}.bind(this));
|
|
2190
2628
|
if (oField.isFilterBackend()) {
|
|
2191
2629
|
// listen to suggest value changes on the settings if current field support filter backend feature
|
|
2192
|
-
var oSuggestValueBinding = this.
|
|
2630
|
+
var oSuggestValueBinding = this._oSettingsModel.bindProperty(oConfig._settingspath + "/suggestValue");
|
|
2193
2631
|
oSuggestValueBinding.attachChange(function () {
|
|
2194
2632
|
var oConfigTemp = merge({}, oConfig);
|
|
2195
2633
|
oConfigTemp._cancel = false;
|
|
@@ -2281,7 +2719,7 @@ sap.ui.define([
|
|
|
2281
2719
|
}).then(function (oData) {
|
|
2282
2720
|
if (oConfig._cancel) {
|
|
2283
2721
|
oConfig._values = [];
|
|
2284
|
-
this.
|
|
2722
|
+
this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", false);
|
|
2285
2723
|
return;
|
|
2286
2724
|
}
|
|
2287
2725
|
// filter data for page admin
|
|
@@ -2398,7 +2836,7 @@ sap.ui.define([
|
|
|
2398
2836
|
if (oConfig.type === "object" || oConfig.type === "object[]") {
|
|
2399
2837
|
oField.mergeValueWithRequestResult(tResult);
|
|
2400
2838
|
}
|
|
2401
|
-
this.
|
|
2839
|
+
this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", false);
|
|
2402
2840
|
oField._hideValueState(true, true);
|
|
2403
2841
|
}.bind(this))
|
|
2404
2842
|
.catch(function (oError) {
|
|
@@ -2443,7 +2881,7 @@ sap.ui.define([
|
|
|
2443
2881
|
if (oConfig.type === "object" || oConfig.type === "object[]") {
|
|
2444
2882
|
oField.mergeValueWithRequestResult();
|
|
2445
2883
|
}
|
|
2446
|
-
this.
|
|
2884
|
+
this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", false);
|
|
2447
2885
|
oField._showValueState("error", sError, true);
|
|
2448
2886
|
}.bind(this));
|
|
2449
2887
|
|
|
@@ -2460,11 +2898,11 @@ sap.ui.define([
|
|
|
2460
2898
|
}
|
|
2461
2899
|
var bHasExtensionData = false;
|
|
2462
2900
|
var oExtensionConfig = {};
|
|
2463
|
-
var oExtensionProperty = this.
|
|
2901
|
+
var oExtensionProperty = this._oManifest.get(this.getConfigurationPath() + "/data/extension");
|
|
2464
2902
|
var sPath;
|
|
2465
2903
|
if (oExtensionProperty) {
|
|
2466
2904
|
bHasExtensionData = true;
|
|
2467
|
-
sPath = this.
|
|
2905
|
+
sPath = this._oManifest.get(this.getConfigurationPath() + "/data/path");
|
|
2468
2906
|
oExtensionConfig = {
|
|
2469
2907
|
"extension": oExtensionProperty
|
|
2470
2908
|
};
|
|
@@ -2472,10 +2910,10 @@ sap.ui.define([
|
|
|
2472
2910
|
oExtensionConfig.path = sPath;
|
|
2473
2911
|
}
|
|
2474
2912
|
} else {
|
|
2475
|
-
oExtensionProperty = this.
|
|
2913
|
+
oExtensionProperty = this._oManifest.get("/" + this.getSection() + "/data/extension");
|
|
2476
2914
|
if (oExtensionProperty) {
|
|
2477
2915
|
bHasExtensionData = true;
|
|
2478
|
-
sPath = this.
|
|
2916
|
+
sPath = this._oManifest.get("/" + this.getSection() + "/data/path");
|
|
2479
2917
|
oExtensionConfig = {
|
|
2480
2918
|
"extension": oExtensionProperty
|
|
2481
2919
|
};
|
|
@@ -2551,7 +2989,7 @@ sap.ui.define([
|
|
|
2551
2989
|
oValueModel = new JSONModel({});
|
|
2552
2990
|
oField.setModel(oValueModel, undefined);
|
|
2553
2991
|
}
|
|
2554
|
-
this.
|
|
2992
|
+
this._oSettingsModel.setProperty(oConfig._settingspath + "/_loading", true);
|
|
2555
2993
|
if (!nTimeout) {
|
|
2556
2994
|
return this._requestData(oConfig, oField);
|
|
2557
2995
|
} else {
|
|
@@ -2664,22 +3102,15 @@ sap.ui.define([
|
|
|
2664
3102
|
}
|
|
2665
3103
|
};
|
|
2666
3104
|
|
|
2667
|
-
Editor.prototype.getBeforeLayerChange = function (sManifestPath) {
|
|
2668
|
-
if (!this._beforeLayerManifestChanges) {
|
|
2669
|
-
this._beforeLayerManifestChanges = {};
|
|
2670
|
-
}
|
|
2671
|
-
return this._beforeLayerManifestChanges[sManifestPath];
|
|
2672
|
-
};
|
|
2673
|
-
|
|
2674
3105
|
Editor.prototype.getTranslationValueInTexts = function (sLanguage, sManifestPath) {
|
|
2675
3106
|
var sTranslationPath = "/texts/" + sLanguage;
|
|
2676
|
-
var oProperty = this.
|
|
3107
|
+
var oProperty = this._oSettingsModel.getProperty(sTranslationPath) || {};
|
|
2677
3108
|
return oProperty[sManifestPath];
|
|
2678
3109
|
};
|
|
2679
3110
|
|
|
2680
3111
|
Editor.prototype.deleteAllTranslationValuesInTexts = function (sManifestPath) {
|
|
2681
3112
|
var that = this;
|
|
2682
|
-
var oData = that.
|
|
3113
|
+
var oData = that._oSettingsModel.getData();
|
|
2683
3114
|
if (!oData || !oData.texts) {
|
|
2684
3115
|
return;
|
|
2685
3116
|
}
|
|
@@ -2690,7 +3121,7 @@ sap.ui.define([
|
|
|
2690
3121
|
delete oTexts[n][sManifestPath];
|
|
2691
3122
|
}
|
|
2692
3123
|
}
|
|
2693
|
-
this.
|
|
3124
|
+
this._oSettingsModel.setProperty(sTranslationPath, oTexts);
|
|
2694
3125
|
};
|
|
2695
3126
|
|
|
2696
3127
|
/**
|
|
@@ -2781,7 +3212,7 @@ sap.ui.define([
|
|
|
2781
3212
|
//even if a item is not visible or not editable by another layer for translations it should always be editable and visible
|
|
2782
3213
|
oConfig.editable = oConfig.visible = oConfig.translatable;
|
|
2783
3214
|
sLanguage = this._language;
|
|
2784
|
-
if (!this.
|
|
3215
|
+
if (!this._oBeforeLayerChange[oConfig.manifestpath]) {
|
|
2785
3216
|
oConfig.value = oConfig._translatedValue || "";
|
|
2786
3217
|
}
|
|
2787
3218
|
var sTranslateText = this.getTranslationValueInTexts(sLanguage, oConfig.manifestpath);
|
|
@@ -2808,14 +3239,14 @@ sap.ui.define([
|
|
|
2808
3239
|
this.addAggregation("_formContent",
|
|
2809
3240
|
oNewLabel
|
|
2810
3241
|
);
|
|
2811
|
-
var sBeforeLayerChange = this.
|
|
3242
|
+
var sBeforeLayerChange = this._oBeforeLayerChange[oConfig.manifestpath];
|
|
2812
3243
|
if (sBeforeLayerChange) {
|
|
2813
3244
|
oConfig._beforeLayerChange = sBeforeLayerChange;
|
|
2814
3245
|
}
|
|
2815
3246
|
//if there are changes for the current layer, read the already translated value from there
|
|
2816
3247
|
//now merge these changes for translation into the item configs
|
|
2817
|
-
if (this.
|
|
2818
|
-
oConfig.value = this.
|
|
3248
|
+
if (this._oCurrentLayerChange && this._oCurrentLayerChange[oConfig.manifestpath]) {
|
|
3249
|
+
oConfig.value = this._oCurrentLayerChange[oConfig.manifestpath];
|
|
2819
3250
|
oConfig._beforeLayerChange = oConfig.value;
|
|
2820
3251
|
}
|
|
2821
3252
|
//only get translations of string fields
|
|
@@ -2882,7 +3313,7 @@ sap.ui.define([
|
|
|
2882
3313
|
if (!sLanguage) {
|
|
2883
3314
|
return;
|
|
2884
3315
|
}
|
|
2885
|
-
var vI18n = this.
|
|
3316
|
+
var vI18n = this._oManifest.get("/sap.app/i18n"),
|
|
2886
3317
|
sResourceBundleURL,
|
|
2887
3318
|
aSupportedLocales;
|
|
2888
3319
|
if (!vI18n) {
|
|
@@ -2954,12 +3385,12 @@ sap.ui.define([
|
|
|
2954
3385
|
this.destroyAggregation("_formContent");
|
|
2955
3386
|
}
|
|
2956
3387
|
|
|
2957
|
-
var oSettingsData = this.
|
|
3388
|
+
var oSettingsData = this._oSettingsModel.getData();
|
|
2958
3389
|
var oItems;
|
|
2959
3390
|
if (oSettingsData.form && oSettingsData.form.items) {
|
|
2960
3391
|
oItems = oSettingsData.form.items;
|
|
2961
3392
|
// ### check if need to add general configuration group ###
|
|
2962
|
-
// since the items had already reordered in _addDestinationSettings function according by this.
|
|
3393
|
+
// since the items had already reordered in _addDestinationSettings function according by this._bDestinationGroupAtTop,
|
|
2963
3394
|
// if destination group is at top:
|
|
2964
3395
|
// a. check item from 2nd position (the 1st item is the destination group itme)
|
|
2965
3396
|
// b. if item is a destination item, set iInsertPosition to current position number, then check the next item
|
|
@@ -2971,14 +3402,14 @@ sap.ui.define([
|
|
|
2971
3402
|
// c. if item is a group and not a sub group, break, no need to add general configuration group
|
|
2972
3403
|
// d. if item is not a group and visible is true, which means it is a valid item, so need to add general configuration group, or check the next item
|
|
2973
3404
|
var bAddGeneralSettingsPanel = false,
|
|
2974
|
-
iStartIndex = this.
|
|
3405
|
+
iStartIndex = this._bDestinationGroupAtTop ? 1 : 0,
|
|
2975
3406
|
aKeys = Object.keys(oItems),
|
|
2976
3407
|
iLength = aKeys.length,
|
|
2977
3408
|
iInsertPosition = 0;
|
|
2978
3409
|
for (var i = iStartIndex; i < iLength; i++) {
|
|
2979
3410
|
var oItem = oItems[aKeys[i]];
|
|
2980
3411
|
if (oItem.type === "destination") {
|
|
2981
|
-
if (!this.
|
|
3412
|
+
if (!this._bDestinationGroupAtTop) {
|
|
2982
3413
|
break;
|
|
2983
3414
|
}
|
|
2984
3415
|
iInsertPosition = i;
|
|
@@ -2999,7 +3430,7 @@ sap.ui.define([
|
|
|
2999
3430
|
_settingspath: "/form/items/generalPanel"
|
|
3000
3431
|
};
|
|
3001
3432
|
//insert general settings panel in position iInsertPosition
|
|
3002
|
-
if (this.
|
|
3433
|
+
if (this._bDestinationGroupAtTop) {
|
|
3003
3434
|
var oNewItems = {};
|
|
3004
3435
|
var iPosition = 0;
|
|
3005
3436
|
aKeys.forEach(function(sKey) {
|
|
@@ -3018,11 +3449,11 @@ sap.ui.define([
|
|
|
3018
3449
|
);
|
|
3019
3450
|
}
|
|
3020
3451
|
oSettingsData.form.items = oItems;
|
|
3021
|
-
this.
|
|
3452
|
+
this._oSettingsModel.setData(oSettingsData);
|
|
3022
3453
|
}
|
|
3023
3454
|
}
|
|
3024
3455
|
|
|
3025
|
-
var oSettings = this.
|
|
3456
|
+
var oSettings = this._oSettingsModel.getProperty("/");
|
|
3026
3457
|
this._mItemsByPaths = {};
|
|
3027
3458
|
if (oSettings.form && oSettings.form.items) {
|
|
3028
3459
|
oItems = oSettings.form.items;
|
|
@@ -3048,7 +3479,7 @@ sap.ui.define([
|
|
|
3048
3479
|
if (oItem.manifestpath) {
|
|
3049
3480
|
this._mItemsByPaths[oItem.manifestpath] = oItem;
|
|
3050
3481
|
if (this.getMode() !== Constants.EDITOR_MODE.TRANSLATION) {
|
|
3051
|
-
sCurrentLayerValue = this.
|
|
3482
|
+
sCurrentLayerValue = this._oCurrentLayerChange[oItem.manifestpath];
|
|
3052
3483
|
}
|
|
3053
3484
|
}
|
|
3054
3485
|
//if not changed it should be undefined, and ignore changes in tranlation layer
|
|
@@ -3058,13 +3489,13 @@ sap.ui.define([
|
|
|
3058
3489
|
oItem.translatable = false;
|
|
3059
3490
|
}
|
|
3060
3491
|
|
|
3061
|
-
oItem.
|
|
3492
|
+
oItem._beforeLayerValue = this._getBeforeLayerValue(oItem.manifestpath);
|
|
3062
3493
|
|
|
3063
3494
|
//check if the provided value from the parameter or designtime default value is a translated value
|
|
3064
3495
|
//restrict this to string types for now
|
|
3065
3496
|
if (oItem.type === "string") {
|
|
3066
3497
|
//check if is translatable via default value, if default value match "{{sTranslationTextKey}}" or "{i18n>sTranslationTextKey}", it is translatable
|
|
3067
|
-
oItem._translatedDefaultPlaceholder = this.
|
|
3498
|
+
oItem._translatedDefaultPlaceholder = this._getInitialValue(oItem.manifestpath);
|
|
3068
3499
|
var sTranslationTextKey = null,
|
|
3069
3500
|
sPlaceholder = oItem._translatedDefaultPlaceholder;
|
|
3070
3501
|
if (sPlaceholder) {
|
|
@@ -3082,15 +3513,15 @@ sap.ui.define([
|
|
|
3082
3513
|
if (sTranslationTextKey) {
|
|
3083
3514
|
//force translatable, even if it was not explicitly set already
|
|
3084
3515
|
oItem.translatable = true;
|
|
3085
|
-
} else if (oItem.translatable && this.getMode() === Constants.EDITOR_MODE.TRANSLATION && !this.
|
|
3516
|
+
} else if (oItem.translatable && this.getMode() === Constants.EDITOR_MODE.TRANSLATION && !this._oBeforeLayerChange[oItem.manifestpath]) {
|
|
3086
3517
|
//if no translation key which means item defined as string value directly.
|
|
3087
3518
|
//set the _translatedValue with item manifest value.
|
|
3088
3519
|
oItem._translatedValue = oItem._translatedDefaultPlaceholder;
|
|
3089
3520
|
oItem.value = oItem._translatedValue;
|
|
3090
3521
|
}
|
|
3091
3522
|
}
|
|
3092
|
-
//check if before value still has tranlation key
|
|
3093
|
-
oItem._translatedPlaceholder = oItem.
|
|
3523
|
+
//check if before layer value still has tranlation key
|
|
3524
|
+
oItem._translatedPlaceholder = oItem._beforeLayerValue;
|
|
3094
3525
|
sPlaceholder = oItem._translatedPlaceholder;
|
|
3095
3526
|
if (sPlaceholder) {
|
|
3096
3527
|
//value with parameter syntax will not be translated
|
|
@@ -3145,13 +3576,13 @@ sap.ui.define([
|
|
|
3145
3576
|
}
|
|
3146
3577
|
} else if (oItem.type === "string[]") {
|
|
3147
3578
|
var sValueItemsPath = oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueItems";
|
|
3148
|
-
var oValueItems = this.
|
|
3579
|
+
var oValueItems = this._oManifestModel.getProperty(sValueItemsPath);
|
|
3149
3580
|
if (oValueItems) {
|
|
3150
3581
|
oItem.valueItems = oValueItems;
|
|
3151
3582
|
}
|
|
3152
3583
|
// get value tokens of MultiInput from manifest change for current item
|
|
3153
3584
|
var sValueTokensPath = oItem.manifestpath.substring(0, oItem.manifestpath.lastIndexOf("/")) + "/valueTokens";
|
|
3154
|
-
var oValueTokens = this.
|
|
3585
|
+
var oValueTokens = this._oManifestModel.getProperty(sValueTokensPath);
|
|
3155
3586
|
if (oValueTokens) {
|
|
3156
3587
|
oItem.valueTokens = oValueTokens;
|
|
3157
3588
|
}
|
|
@@ -3190,9 +3621,9 @@ sap.ui.define([
|
|
|
3190
3621
|
var oItem = oItems[n];
|
|
3191
3622
|
this._addItem(oItem, n);
|
|
3192
3623
|
}
|
|
3193
|
-
// customize the size of
|
|
3194
|
-
var editorHeight = this.
|
|
3195
|
-
editorWidth = this.
|
|
3624
|
+
// customize the size of editor, define the size in dt.js
|
|
3625
|
+
var editorHeight = this._oSettingsModel.getProperty("/form/height") !== undefined ? this._oSettingsModel.getProperty("/form/height") : "350px",
|
|
3626
|
+
editorWidth = this._oSettingsModel.getProperty("/form/width") !== undefined ? this._oSettingsModel.getProperty("/form/width") : "100%";
|
|
3196
3627
|
if (this.getProperty("height") === "") {
|
|
3197
3628
|
this.setProperty("height", editorHeight);
|
|
3198
3629
|
document.body.style.setProperty("--sapUiIntegrationEditorFormHeight", editorHeight);
|
|
@@ -3236,37 +3667,61 @@ sap.ui.define([
|
|
|
3236
3667
|
* Destroy the editor and the internal instances that it created
|
|
3237
3668
|
*/
|
|
3238
3669
|
Editor.prototype.destroy = function () {
|
|
3670
|
+
this.cleanAndReset();
|
|
3239
3671
|
if (this._oPopover) {
|
|
3240
3672
|
this._oPopover.destroy();
|
|
3241
3673
|
}
|
|
3242
|
-
if (this._oDesigntimeInstance) {
|
|
3243
|
-
this._oDesigntimeInstance.destroy();
|
|
3244
|
-
}
|
|
3245
|
-
var oPreview = this.getAggregation("_preview");
|
|
3246
|
-
if (oPreview && oPreview.destroy) {
|
|
3247
|
-
oPreview.destroy();
|
|
3248
|
-
}
|
|
3249
3674
|
var oMessageStrip = Element.getElementById(MessageStripId);
|
|
3250
3675
|
if (oMessageStrip) {
|
|
3251
3676
|
oMessageStrip.destroy();
|
|
3252
3677
|
}
|
|
3253
|
-
this.
|
|
3254
|
-
this._beforeManifestModel = null;
|
|
3255
|
-
this._oInitialManifestModel = null;
|
|
3256
|
-
this._settingsModel = null;
|
|
3257
|
-
this._destinationsModel = null;
|
|
3678
|
+
this._oDestinationsModel = null;
|
|
3258
3679
|
this._oEditorResourceBundles = null;
|
|
3259
3680
|
document.body.style.removeProperty("--sapUiIntegrationEditorFormWidth");
|
|
3260
3681
|
document.body.style.removeProperty("--sapUiIntegrationEditorFormHeight");
|
|
3261
3682
|
Control.prototype.destroy.apply(this, arguments);
|
|
3262
3683
|
};
|
|
3263
3684
|
|
|
3685
|
+
Editor.prototype.cleanAndReset = function () {
|
|
3686
|
+
if (this._oDesigntimeInstance) {
|
|
3687
|
+
this._oDesigntimeInstance.destroy();
|
|
3688
|
+
}
|
|
3689
|
+
this._oInitialManifestModel = null;
|
|
3690
|
+
this._oBeforeLayerManifestModel = null;
|
|
3691
|
+
this._oManifestModel = null;
|
|
3692
|
+
this._oSettingsModel = null;
|
|
3693
|
+
this._oDesigntime = null;
|
|
3694
|
+
this._aAppliedLayerChanges = [];
|
|
3695
|
+
this._oBeforeLayerChange = {};
|
|
3696
|
+
this._oCurrentLayerChange = {};
|
|
3697
|
+
|
|
3698
|
+
this.resetProperty("designtime");
|
|
3699
|
+
this.destroyAggregation("_formContent");
|
|
3700
|
+
|
|
3701
|
+
// destory preview
|
|
3702
|
+
this._destoryPreview();
|
|
3703
|
+
|
|
3704
|
+
this._ready = false;
|
|
3705
|
+
this._fieldReady = false;
|
|
3706
|
+
};
|
|
3707
|
+
|
|
3264
3708
|
/**
|
|
3265
|
-
* Initializes the
|
|
3709
|
+
* Initializes the preview content
|
|
3266
3710
|
*/
|
|
3267
3711
|
Editor.prototype._initPreview = function () {
|
|
3268
3712
|
};
|
|
3269
3713
|
|
|
3714
|
+
/**
|
|
3715
|
+
* Destory the preview content
|
|
3716
|
+
*/
|
|
3717
|
+
Editor.prototype._destoryPreview = function () {
|
|
3718
|
+
var oPreview = this.getAggregation("_preview");
|
|
3719
|
+
if (oPreview) {
|
|
3720
|
+
oPreview.destroy();
|
|
3721
|
+
this.setAggregation("_preview", null);
|
|
3722
|
+
}
|
|
3723
|
+
};
|
|
3724
|
+
|
|
3270
3725
|
/**
|
|
3271
3726
|
* Applies the defaults for the designtime settings
|
|
3272
3727
|
*/
|
|
@@ -3282,7 +3737,7 @@ sap.ui.define([
|
|
|
3282
3737
|
continue;
|
|
3283
3738
|
}
|
|
3284
3739
|
if (oItem.manifestpath) {
|
|
3285
|
-
oItem.value = this.
|
|
3740
|
+
oItem.value = this._oManifestModel.getProperty(oItem.manifestpath);
|
|
3286
3741
|
}
|
|
3287
3742
|
if (oItem.visible === undefined || oItem.visible === null) {
|
|
3288
3743
|
oItem.visible = true;
|
|
@@ -3309,7 +3764,7 @@ sap.ui.define([
|
|
|
3309
3764
|
|
|
3310
3765
|
oItem.type = "string";
|
|
3311
3766
|
}
|
|
3312
|
-
//only if the value is undefined from the this.
|
|
3767
|
+
//only if the value is undefined from the this._oManifestModel.getProperty(oItem.manifestpath)
|
|
3313
3768
|
//false, "", 0... are valid values and should not apply the default
|
|
3314
3769
|
if (oItem.value === undefined || oItem.value === null) {
|
|
3315
3770
|
switch (oItem.type) {
|
|
@@ -3337,9 +3792,9 @@ sap.ui.define([
|
|
|
3337
3792
|
var oTexts = {};
|
|
3338
3793
|
var oDesigntime = {};
|
|
3339
3794
|
//pull current values
|
|
3340
|
-
if (this.
|
|
3341
|
-
for (var i = 0; i < this.
|
|
3342
|
-
var oChanges = this.
|
|
3795
|
+
if (this._aAppliedLayerChanges && Array.isArray(this._aAppliedLayerChanges)) {
|
|
3796
|
+
for (var i = 0; i < this._aAppliedLayerChanges.length; i++) {
|
|
3797
|
+
var oChanges = this._aAppliedLayerChanges[i][":designtime"];
|
|
3343
3798
|
if (oChanges) {
|
|
3344
3799
|
var aKeys = Object.keys(oChanges);
|
|
3345
3800
|
for (var j = 0; j < aKeys.length; j++) {
|
|
@@ -3351,9 +3806,9 @@ sap.ui.define([
|
|
|
3351
3806
|
//if it is a parameter transformed from destination, add it into form/items as new parameter for this layer
|
|
3352
3807
|
var oNewParameterConfig = vValue.configuration;
|
|
3353
3808
|
delete oNewParameterConfig.parameterFromDestination;
|
|
3354
|
-
oNewParameterConfig.value = this.
|
|
3809
|
+
oNewParameterConfig.value = this._oManifestModel.getProperty(oNewParameterConfig.manifestpath);
|
|
3355
3810
|
oNewParameterConfig._settingspath = "/form/items/" + vValue.parameter;
|
|
3356
|
-
this.
|
|
3811
|
+
this._oSettingsModel.setProperty(oNewParameterConfig._settingspath, oNewParameterConfig);
|
|
3357
3812
|
} else {
|
|
3358
3813
|
// else it should for the object field/object list field
|
|
3359
3814
|
// add it into designtime of settings
|
|
@@ -3361,18 +3816,18 @@ sap.ui.define([
|
|
|
3361
3816
|
continue;
|
|
3362
3817
|
}
|
|
3363
3818
|
} else {
|
|
3364
|
-
this.
|
|
3819
|
+
this._oSettingsModel.setProperty(aKeys[j], vValue);
|
|
3365
3820
|
}
|
|
3366
3821
|
}
|
|
3367
3822
|
}
|
|
3368
|
-
var oAppliedLayerManifestChangeTexts = this.
|
|
3823
|
+
var oAppliedLayerManifestChangeTexts = this._aAppliedLayerChanges[i]["texts"];
|
|
3369
3824
|
if (oAppliedLayerManifestChangeTexts) {
|
|
3370
3825
|
oTexts = merge(oTexts, oAppliedLayerManifestChangeTexts);
|
|
3371
3826
|
}
|
|
3372
3827
|
}
|
|
3373
3828
|
}
|
|
3374
|
-
if (this.
|
|
3375
|
-
var oChanges = this.
|
|
3829
|
+
if (this._oCurrentLayerChange) {
|
|
3830
|
+
var oChanges = this._oCurrentLayerChange[":designtime"];
|
|
3376
3831
|
if (oChanges) {
|
|
3377
3832
|
var aKeys = Object.keys(oChanges);
|
|
3378
3833
|
for (var j = 0; j < aKeys.length; j++) {
|
|
@@ -3389,25 +3844,25 @@ sap.ui.define([
|
|
|
3389
3844
|
continue;
|
|
3390
3845
|
}
|
|
3391
3846
|
}
|
|
3392
|
-
if (!this.
|
|
3847
|
+
if (!this._oSettingsModel.getProperty(sNext)) {
|
|
3393
3848
|
//create a _next entry if it does not exist
|
|
3394
|
-
this.
|
|
3849
|
+
this._oSettingsModel.setProperty(sNext, {});
|
|
3395
3850
|
}
|
|
3396
3851
|
var sNext = sPath.substring(0, sPath.lastIndexOf("/") + 1) + "_next",
|
|
3397
3852
|
sProp = sPath.substring(sPath.lastIndexOf("/") + 1);
|
|
3398
|
-
this.
|
|
3853
|
+
this._oSettingsModel.setProperty(sNext + "/" + sProp, vValue);
|
|
3399
3854
|
}
|
|
3400
3855
|
}
|
|
3401
|
-
var ocurrentLayerManifestChangeTexts = this.
|
|
3856
|
+
var ocurrentLayerManifestChangeTexts = this._oCurrentLayerChange["texts"];
|
|
3402
3857
|
if (ocurrentLayerManifestChangeTexts) {
|
|
3403
3858
|
oTexts = merge(oTexts, ocurrentLayerManifestChangeTexts);
|
|
3404
3859
|
}
|
|
3405
3860
|
}
|
|
3406
3861
|
if (!deepEqual(oTexts, {})) {
|
|
3407
|
-
this.
|
|
3862
|
+
this._oSettingsModel.setProperty("/texts", oTexts);
|
|
3408
3863
|
}
|
|
3409
3864
|
if (!deepEqual(oDesigntime, {})) {
|
|
3410
|
-
this.
|
|
3865
|
+
this._oSettingsModel.setProperty("/:designtime", oDesigntime);
|
|
3411
3866
|
}
|
|
3412
3867
|
};
|
|
3413
3868
|
/**
|
|
@@ -3450,7 +3905,7 @@ sap.ui.define([
|
|
|
3450
3905
|
oSettings.form = oSettings.form || {};
|
|
3451
3906
|
oSettings.form.items = oSettings.form.items || {};
|
|
3452
3907
|
if (oSettings && oConfiguration && oConfiguration.destinations) {
|
|
3453
|
-
this.
|
|
3908
|
+
this._bDestinationGroupAtTop = false;
|
|
3454
3909
|
var oItems = oSettings.form.items,
|
|
3455
3910
|
oDestinations = {},
|
|
3456
3911
|
oHost = this.getHostInstance();
|
|
@@ -3462,8 +3917,8 @@ sap.ui.define([
|
|
|
3462
3917
|
_settingspath: "/form/items/destination.group"
|
|
3463
3918
|
};
|
|
3464
3919
|
if (oItems["destination.group"]) {
|
|
3465
|
-
// if the 1st item is destination group, set this.
|
|
3466
|
-
this.
|
|
3920
|
+
// if the 1st item is destination group, set this._bDestinationGroupAtTop to true. Then render destination group at top
|
|
3921
|
+
this._bDestinationGroupAtTop = Object.keys(oItems)[0] === "destination.group";
|
|
3467
3922
|
oDestinationGroup = merge(oDestinationGroup, oItems["destination.group"]);
|
|
3468
3923
|
delete oItems["destination.group"];
|
|
3469
3924
|
}
|
|
@@ -3491,22 +3946,22 @@ sap.ui.define([
|
|
|
3491
3946
|
}
|
|
3492
3947
|
oDestinations[n + ".destination"] = oDestination;
|
|
3493
3948
|
});
|
|
3494
|
-
// reorder the items according by this.
|
|
3495
|
-
if (this.
|
|
3949
|
+
// reorder the items according by this._bDestinationGroupAtTop
|
|
3950
|
+
if (this._bDestinationGroupAtTop) {
|
|
3496
3951
|
oSettings.form.items = merge(oDestinations, oItems);
|
|
3497
3952
|
} else {
|
|
3498
3953
|
oSettings.form.items = merge(oItems, oDestinations);
|
|
3499
3954
|
}
|
|
3500
3955
|
var getDestinationsDone = false;
|
|
3501
3956
|
if (oHost) {
|
|
3502
|
-
this.
|
|
3503
|
-
this.
|
|
3957
|
+
this._oDestinationsModel.setProperty("/_loading", true);
|
|
3958
|
+
this._oDestinationsModel.checkUpdate(true);
|
|
3504
3959
|
this.getHostInstance().getDestinations().then(function (a) {
|
|
3505
3960
|
getDestinationsDone = true;
|
|
3506
|
-
this.
|
|
3507
|
-
this.
|
|
3508
|
-
this.
|
|
3509
|
-
this.
|
|
3961
|
+
this._oDestinationsModel.setProperty("/_values", a);
|
|
3962
|
+
this._oDestinationsModel.setProperty("/_loading", false);
|
|
3963
|
+
this._oDestinationsModel.setSizeLimit(a.length);
|
|
3964
|
+
this._oDestinationsModel.checkUpdate(true);
|
|
3510
3965
|
setTimeout(function () {
|
|
3511
3966
|
this.fireDestinationReady();
|
|
3512
3967
|
}.bind(this), 100);
|
|
@@ -3517,16 +3972,16 @@ sap.ui.define([
|
|
|
3517
3972
|
if (getDestinationsDone) {
|
|
3518
3973
|
return;
|
|
3519
3974
|
}
|
|
3520
|
-
this.
|
|
3521
|
-
this.
|
|
3522
|
-
this.
|
|
3523
|
-
this.
|
|
3975
|
+
this._oDestinationsModel.setProperty("/_values", b);
|
|
3976
|
+
this._oDestinationsModel.setProperty("/_loading", false);
|
|
3977
|
+
this._oDestinationsModel.setSizeLimit(b.length);
|
|
3978
|
+
this._oDestinationsModel.checkUpdate(true);
|
|
3524
3979
|
setTimeout(function () {
|
|
3525
3980
|
this.fireDestinationReady();
|
|
3526
3981
|
}.bind(this), 100);
|
|
3527
3982
|
}.bind(this)).catch(function (e) {
|
|
3528
|
-
this.
|
|
3529
|
-
this.
|
|
3983
|
+
this._oDestinationsModel.setProperty("/_loading", false);
|
|
3984
|
+
this._oDestinationsModel.checkUpdate(true);
|
|
3530
3985
|
setTimeout(function () {
|
|
3531
3986
|
this.fireDestinationReady();
|
|
3532
3987
|
}.bind(this), 100);
|
|
@@ -3553,15 +4008,21 @@ sap.ui.define([
|
|
|
3553
4008
|
};
|
|
3554
4009
|
|
|
3555
4010
|
/**
|
|
3556
|
-
* Returns the
|
|
4011
|
+
* Returns the initial value that was given by the developer for the given path
|
|
3557
4012
|
* @param {string} sPath
|
|
3558
4013
|
*/
|
|
3559
|
-
Editor.prototype.
|
|
4014
|
+
Editor.prototype._getInitialValue = function (sPath) {
|
|
3560
4015
|
return this._oInitialManifestModel.getProperty(sPath);
|
|
3561
4016
|
};
|
|
3562
|
-
|
|
3563
|
-
|
|
4017
|
+
|
|
4018
|
+
/**
|
|
4019
|
+
* Returns the value including changes in the before layer manifest model for the given path
|
|
4020
|
+
* @param {string} sPath
|
|
4021
|
+
*/
|
|
4022
|
+
Editor.prototype._getBeforeLayerValue = function (sPath) {
|
|
4023
|
+
return this._oBeforeLayerManifestModel.getProperty(sPath);
|
|
3564
4024
|
};
|
|
4025
|
+
|
|
3565
4026
|
/**
|
|
3566
4027
|
* Returns whether the value is translatable via the handlbars translation syntax {{KEY}}
|
|
3567
4028
|
* For other than string values false is returned
|