@sapui5/sap.suite.ui.generic.template 1.152.1 → 1.154.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 +1 -1
- package/src/sap/suite/ui/generic/template/.library +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/controller/ControllerImplementation.js +31 -2
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n.properties +7 -2
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ar.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_bg.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ca.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_cnr.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_cs.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_cy.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_da.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_de.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_el.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en_GB.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en_US_sappsd.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_en_US_saprigi.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_es.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_es_MX.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_et.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fi.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fr.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_fr_CA.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_hi.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_hr.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_hu.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_id.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_it.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_iw.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ja.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_kk.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ko.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_lt.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_lv.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_mk.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ms.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_nl.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_no.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_pl.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_pt.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_pt_PT.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ro.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_ru.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sh.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sk.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sl.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sr.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_sv.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_th.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_tr.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_uk.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_vi.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_zh_CN.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/i18n/i18n_zh_TW.properties +3 -0
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/manifest.json +8 -3
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/FilterContainer.fragment.xml +2 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/HeaderCommands.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/AnalyticalListPage/view/fragments/SmartFilterBar.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/Canvas/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/ListReport/Component.js +25 -1
- package/src/sap/suite/ui/generic/template/ListReport/controller/ControllerImplementation.js +121 -25
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n.properties +6 -3
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ar.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_bg.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ca.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_cnr.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_cs.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_cy.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_da.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_de.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_el.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en.properties +3 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_GB.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_US_sappsd.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_en_US_saprigi.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es.properties +3 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_es_MX.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_et.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fi.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fr.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_fr_CA.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hi.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hr.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_hu.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_id.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_it.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_iw.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ja.properties +4 -2
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_kk.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ko.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_lt.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_lv.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_mk.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ms.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_nl.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_no.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pl.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pt.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_pt_PT.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ro.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_ru.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sh.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sk.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sl.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sr.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_sv.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_th.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_tr.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_uk.properties +3 -1
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_vi.properties +2 -0
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_zh_CN.properties +4 -2
- package/src/sap/suite/ui/generic/template/ListReport/i18n/i18n_zh_TW.properties +5 -3
- package/src/sap/suite/ui/generic/template/ListReport/manifest.json +7 -2
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/HeaderCommands.fragment.xml +21 -15
- package/src/sap/suite/ui/generic/template/ListReport/view/fragments/SmartFilterBar.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/ControllerImplementation.js +96 -14
- package/src/sap/suite/ui/generic/template/ObjectPage/controller/SectionTitleHandler.js +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n.properties +6 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ar.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_bg.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ca.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cnr.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cs.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_cy.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_da.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_de.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_el.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_GB.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_US_sappsd.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_en_US_saprigi.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es.properties +5 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_es_MX.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_et.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fi.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fr.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_fr_CA.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hi.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hr.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_hu.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_id.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_it.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_iw.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ja.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_kk.properties +30 -26
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ko.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_lt.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_lv.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_mk.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ms.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_nl.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_no.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pl.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_pt_PT.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ro.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_ru.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sh.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sk.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sl.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sr.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_sv.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_th.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_tr.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_uk.properties +8 -4
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_vi.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_zh_CN.properties +4 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/i18n/i18n_zh_TW.properties +8 -4
- package/src/sap/suite/ui/generic/template/ObjectPage/manifest.json +13 -5
- package/src/sap/suite/ui/generic/template/ObjectPage/templateSpecificPreparationHelper.js +2 -2
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/Actions.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/PageLevelCommands.fragment.xml +2 -0
- package/src/sap/suite/ui/generic/template/ObjectPage/view/fragments/SmartTableUiTableCommons.fragment.xml +1 -1
- package/src/sap/suite/ui/generic/template/QuickCreate/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/QuickView/manifest.json +1 -1
- package/src/sap/suite/ui/generic/template/designtime/controls/DynamicPage.designtime.js +39 -3
- package/src/sap/suite/ui/generic/template/designtime/controls/ObjectPageLayout.designtime.js +39 -5
- package/src/sap/suite/ui/generic/template/designtime/controls/SmartTable.designtime.js +17 -0
- package/src/sap/suite/ui/generic/template/detailTemplates/detailUtils.js +3 -2
- package/src/sap/suite/ui/generic/template/detailTemplates/i18n/i18n_es.properties +1 -1
- package/src/sap/suite/ui/generic/template/fragments/EasyFilter.fragment.xml +1 -0
- package/src/sap/suite/ui/generic/template/fragments/SmartTableUiTableCommons.fragment.xml +1 -0
- package/src/sap/suite/ui/generic/template/fragments/TableColumnListItem.fragment.xml +3 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/controlHelper.js +3 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartFilterBarWrapper.js +8 -3
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartTableChartCommon.js +7 -0
- package/src/sap/suite/ui/generic/template/genericUtilities/controlStateWrapperFactory/SmartVariantManagementWrapper.js +35 -43
- package/src/sap/suite/ui/generic/template/genericUtilities/designtime/messagebundle.properties +0 -0
- package/src/sap/suite/ui/generic/template/lib/AppComponent.js +28 -7
- package/src/sap/suite/ui/generic/template/lib/Application.js +13 -0
- package/src/sap/suite/ui/generic/template/lib/CommonEventHandlers.js +88 -4
- package/src/sap/suite/ui/generic/template/lib/CommonUtils.js +36 -5
- package/src/sap/suite/ui/generic/template/lib/ContextMenuHandler.js +45 -2
- package/src/sap/suite/ui/generic/template/lib/MessageUtils.js +1 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillAIOrchestrator.js +142 -8
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillApplyHandler.js +21 -6
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillDialogController.js +234 -13
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFileHandler.js +218 -0
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillFormRenderer.js +83 -18
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillHandler.js +165 -6
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/EasyFillTableRenderer.js +106 -6
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFill/fragments/EasyFillDialog.fragment.xml +193 -30
- package/src/sap/suite/ui/generic/template/lib/ai/EasyFilterBarHandler.js +610 -27
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n.properties +71 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ar.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_bg.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ca.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cnr.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cs.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_cy.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_da.properties +48 -2
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_de.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_el.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_GB.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_sappsd.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saprigi.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_en_US_saptrc.properties +7 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es.properties +49 -3
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_es_MX.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_et.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fi.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr.properties +50 -4
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_fr_CA.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hi.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hr.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_hu.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_id.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_it.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_iw.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ja.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_kk.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ko.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lt.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_lv.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_mk.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ms.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_nl.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_no.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pl.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_pt_PT.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ro.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_ru.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sh.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sk.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sl.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sr.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_sv.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_th.properties +49 -3
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_tr.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_uk.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_vi.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_CN.properties +47 -1
- package/src/sap/suite/ui/generic/template/lib/i18n/i18n_zh_TW.properties +48 -2
- package/src/sap/suite/ui/generic/template/lib/insights/InsightsCardHelper.js +24 -4
- package/src/sap/suite/ui/generic/template/lib/navigation/NavigationController.js +27 -7
- package/src/sap/suite/ui/generic/template/lib/presentationControl/SmartTableHandler.js +4 -0
- package/src/sap/suite/ui/generic/template/library.js +1 -1
- package/src/sap/suite/ui/generic/template/listTemplates/fragments/DetailSmartTable.fragment.xml +3 -0
- package/src/sap/suite/ui/generic/template/listTemplates/fragments/TableCommands.fragment.xml +23 -19
- package/src/sap/suite/ui/generic/template/themes/base/ObjectPage.less +271 -0
- package/src/sap/suite/ui/generic/template/themes/sap_belize_base/ObjectPage.less +9 -0
- package/src/sap/suite/ui/generic/template/themes/sap_bluecrystal_base/ObjectPage.less +9 -0
- package/src/sap/suite/ui/generic/template/themes/sap_hcb/base_ObjectPage.less +9 -0
|
@@ -191,13 +191,40 @@ sap.ui.define([
|
|
|
191
191
|
keyUser: true
|
|
192
192
|
};
|
|
193
193
|
|
|
194
|
+
/**
|
|
195
|
+
* @type {DesigntimeSetting}
|
|
196
|
+
* App-level setting: controls the Smart Summarization button visibility across all pages.
|
|
197
|
+
* Always written as a global manifest change (settings/aiConfiguration/smartSummarization/visibility).
|
|
198
|
+
*/
|
|
199
|
+
const smartSummarizationVisibility = {
|
|
200
|
+
id: "smartSummarizationVisibility",
|
|
201
|
+
name: oResourceBundle.getText('RTA_SMART_SUMMARIZATION_VISIBILITY'),
|
|
202
|
+
description: oResourceBundle.getText('RTA_SMART_SUMMARIZATION_VISIBILITY_DESC'),
|
|
203
|
+
type: "string",
|
|
204
|
+
value: "ShowOnAllPages",
|
|
205
|
+
enums: [
|
|
206
|
+
{
|
|
207
|
+
id: "ShowOnAllPages",
|
|
208
|
+
name: oResourceBundle.getText("RTA_SMART_SUMMARIZATION_OPTION_AVAILABLE_FOR_ALL_PAGES")
|
|
209
|
+
},
|
|
210
|
+
{
|
|
211
|
+
id: "HideOnAllPages",
|
|
212
|
+
name: oResourceBundle.getText("RTA_SMART_SUMMARIZATION_OPTION_NOT_AVAILABLE_FOR_ALL_PAGES")
|
|
213
|
+
}
|
|
214
|
+
],
|
|
215
|
+
getPath: () => "settings/aiConfiguration/smartSummarization/visibility",
|
|
216
|
+
bSupportsGlobalScope: true,
|
|
217
|
+
keyUser: true
|
|
218
|
+
};
|
|
219
|
+
|
|
194
220
|
return [
|
|
195
221
|
smartVariantManagement,
|
|
196
222
|
hideVariantManagement,
|
|
197
223
|
enableTableFilterInPageVariant,
|
|
198
224
|
initialLoad,
|
|
199
225
|
openInEditMode,
|
|
200
|
-
defaultContentView
|
|
226
|
+
defaultContentView,
|
|
227
|
+
smartSummarizationVisibility
|
|
201
228
|
];
|
|
202
229
|
|
|
203
230
|
}
|
|
@@ -240,6 +267,9 @@ sap.ui.define([
|
|
|
240
267
|
case "defaultContentView":
|
|
241
268
|
mPropertyValues[sProperty] = mLrOrALPSettings.defaultContentView ?? oSetting.value;
|
|
242
269
|
break;
|
|
270
|
+
case "smartSummarizationVisibility":
|
|
271
|
+
mPropertyValues[sProperty] = ObjectPath.get("aiConfiguration.smartSummarization.visibility", mLrOrALPSettings) ?? oSetting.value;
|
|
272
|
+
break;
|
|
243
273
|
default:
|
|
244
274
|
break;
|
|
245
275
|
}
|
|
@@ -262,6 +292,11 @@ sap.ui.define([
|
|
|
262
292
|
const sComponentName = oComponent.getMetadata().getComponentName();
|
|
263
293
|
const mLrOrALPSettings = oComponent.mProperties;
|
|
264
294
|
|
|
295
|
+
// Merge app-level aiConfiguration into the settings for reading smartSummarizationVisibility
|
|
296
|
+
const oAppComponent = oComponent.getAppComponent();
|
|
297
|
+
const oGlobalSettings = oAppComponent.getManifestEntry("sap.ui.generic.app")?.settings;
|
|
298
|
+
const mSettingsWithGlobal = Object.assign({}, mLrOrALPSettings, { aiConfiguration: oGlobalSettings?.aiConfiguration });
|
|
299
|
+
|
|
265
300
|
// Get all the designtime settings
|
|
266
301
|
const aAllDesigntimeSettings = getAllDesigntimeSettings(oControl);
|
|
267
302
|
// Get the allowed designtime settings based on the floorplan
|
|
@@ -276,7 +311,7 @@ sap.ui.define([
|
|
|
276
311
|
|
|
277
312
|
|
|
278
313
|
// Get the current values of the properties
|
|
279
|
-
const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings,
|
|
314
|
+
const mRuntimeAdaptationPropertyValues = getRuntimeAdapationProperties(aAllowedDesigntimeSettings, mSettingsWithGlobal);
|
|
280
315
|
// Save the unchanged data to compare later
|
|
281
316
|
const mUnchangedData = deepClone(mRuntimeAdaptationPropertyValues);
|
|
282
317
|
// Get the settings of the dialog from the designtime settings using which the dialog will be created
|
|
@@ -293,7 +328,8 @@ sap.ui.define([
|
|
|
293
328
|
* @type {ControlChangeParams}
|
|
294
329
|
*/
|
|
295
330
|
const mPathParameters = {
|
|
296
|
-
sChangeType: designtimeUtils.ChangeType.ChangePageConfiguration
|
|
331
|
+
sChangeType: designtimeUtils.ChangeType.ChangePageConfiguration,
|
|
332
|
+
sScope: designtimeUtils.SettingScope.Application
|
|
297
333
|
};
|
|
298
334
|
return designtimeUtils.extractChanges(mPropertyValuesEntered, mUnchangedData, aAllowedDesigntimeSettings, oComponent, mPathParameters);
|
|
299
335
|
|
package/src/sap/suite/ui/generic/template/designtime/controls/ObjectPageLayout.designtime.js
CHANGED
|
@@ -75,6 +75,9 @@ sap.ui.define([
|
|
|
75
75
|
case "showRelatedApps":
|
|
76
76
|
mPropertyValues[sProperty] = mSettings[sProperty] ?? oSetting.value;
|
|
77
77
|
break;
|
|
78
|
+
case "smartSummarizationVisibility":
|
|
79
|
+
mPropertyValues[sProperty] = ObjectPath.get("aiConfiguration.smartSummarization.visibility", mSettings) ?? oSetting.value;
|
|
80
|
+
break;
|
|
78
81
|
default:
|
|
79
82
|
break;
|
|
80
83
|
}
|
|
@@ -140,23 +143,52 @@ sap.ui.define([
|
|
|
140
143
|
keyUser: true
|
|
141
144
|
};
|
|
142
145
|
|
|
146
|
+
/**
|
|
147
|
+
* @type {DesigntimeSetting}
|
|
148
|
+
* App-level setting: controls the Smart Summarization button visibility across all pages.
|
|
149
|
+
* Always written as a global manifest change (settings/aiConfiguration/smartSummarization/visibility).
|
|
150
|
+
*/
|
|
151
|
+
const smartSummarizationVisibility = {
|
|
152
|
+
id: "smartSummarizationVisibility",
|
|
153
|
+
name: oResourceBundle.getText('RTA_SMART_SUMMARIZATION_VISIBILITY'),
|
|
154
|
+
description: oResourceBundle.getText('RTA_SMART_SUMMARIZATION_VISIBILITY_DESC'),
|
|
155
|
+
type: "string",
|
|
156
|
+
value: "ShowOnAllPages",
|
|
157
|
+
enums: [
|
|
158
|
+
{
|
|
159
|
+
id: "ShowOnAllPages",
|
|
160
|
+
name: oResourceBundle.getText("RTA_SMART_SUMMARIZATION_OPTION_AVAILABLE_FOR_ALL_PAGES")
|
|
161
|
+
},
|
|
162
|
+
{
|
|
163
|
+
id: "HideOnAllPages",
|
|
164
|
+
name: oResourceBundle.getText("RTA_SMART_SUMMARIZATION_OPTION_NOT_AVAILABLE_FOR_ALL_PAGES")
|
|
165
|
+
}
|
|
166
|
+
],
|
|
167
|
+
getPath: () => "settings/aiConfiguration/smartSummarization/visibility",
|
|
168
|
+
bSupportsGlobalScope: true,
|
|
169
|
+
keyUser: true
|
|
170
|
+
};
|
|
171
|
+
|
|
143
172
|
return [
|
|
144
173
|
editableHeaderContent,
|
|
145
174
|
tableVariantManagement,
|
|
146
175
|
chartVariantManagement,
|
|
147
|
-
showRelatedApps
|
|
176
|
+
showRelatedApps,
|
|
177
|
+
smartSummarizationVisibility
|
|
148
178
|
];
|
|
149
179
|
|
|
150
180
|
};
|
|
151
181
|
|
|
152
182
|
|
|
153
183
|
|
|
154
|
-
function getObjectPageSettings(oComponent) {
|
|
184
|
+
function getObjectPageSettings(oComponent, oAppComponent) {
|
|
185
|
+
const oGlobalSettings = oAppComponent.getManifestEntry("sap.ui.generic.app")?.settings;
|
|
155
186
|
return {
|
|
156
187
|
editableHeaderContent: JSON.parse(oComponent.getEditableHeaderContent()),
|
|
157
188
|
tableVariantManagement: ObjectPath.get(["variantManagement"], oComponent.getTableSettings()),
|
|
158
189
|
chartVariantManagement: ObjectPath.get(["variantManagement"], oComponent.getChartSettings()),
|
|
159
|
-
showRelatedApps: JSON.parse(oComponent.getShowRelatedApps())
|
|
190
|
+
showRelatedApps: JSON.parse(oComponent.getShowRelatedApps()),
|
|
191
|
+
aiConfiguration: oGlobalSettings?.aiConfiguration
|
|
160
192
|
};
|
|
161
193
|
}
|
|
162
194
|
|
|
@@ -172,8 +204,9 @@ sap.ui.define([
|
|
|
172
204
|
async function fnOpenObjectPageConfigurationDialog(oControl, mPropertyBag) {
|
|
173
205
|
const oResourceModel = oControl.getModel("i18n");
|
|
174
206
|
const oComponent = designtimeUtils.getOwnerComponentFor(oControl);
|
|
207
|
+
const oAppComponent = oComponent.getAppComponent();
|
|
175
208
|
|
|
176
|
-
const mObjectPageSettings = getObjectPageSettings(oComponent);
|
|
209
|
+
const mObjectPageSettings = getObjectPageSettings(oComponent, oAppComponent);
|
|
177
210
|
|
|
178
211
|
// Get all the designtime settings
|
|
179
212
|
const aAllDesigntimeSettings = getAllDesigntimeSettings(oControl);
|
|
@@ -203,7 +236,8 @@ sap.ui.define([
|
|
|
203
236
|
* @type {ControlChangeParams}
|
|
204
237
|
*/
|
|
205
238
|
const mPathParameters = {
|
|
206
|
-
sChangeType: designtimeUtils.ChangeType.ChangePageConfiguration
|
|
239
|
+
sChangeType: designtimeUtils.ChangeType.ChangePageConfiguration,
|
|
240
|
+
sScope: designtimeUtils.SettingScope.Application
|
|
207
241
|
};
|
|
208
242
|
return designtimeUtils.extractChanges(mPropertyValuesEntered, mUnchangedData, aAllowedDesigntimeSettings, oComponent, mPathParameters);
|
|
209
243
|
|
|
@@ -604,6 +604,23 @@ sap.ui.define([
|
|
|
604
604
|
|
|
605
605
|
const oHelper = {
|
|
606
606
|
getDesigntime: function (oSmartTable) {
|
|
607
|
+
const oComponent = designtimeUtils.getOwnerComponentFor(oSmartTable);
|
|
608
|
+
const sComponentName = oComponent.getMetadata().getComponentName();
|
|
609
|
+
// Tables in reuse/extension components have no FE manifest settings to configure.
|
|
610
|
+
if (sComponentName !== sObjectPageComponentName && sComponentName !== sListReportComponentName) {
|
|
611
|
+
return {};
|
|
612
|
+
}
|
|
613
|
+
if (sComponentName === sObjectPageComponentName) {
|
|
614
|
+
const sLocalId = designtimeUtils.getLocalId(oSmartTable);
|
|
615
|
+
// Null means the table is not part of the FE-owned view.
|
|
616
|
+
if (!sLocalId) {
|
|
617
|
+
return {};
|
|
618
|
+
}
|
|
619
|
+
// No manifest section means the table was added by the application, not by FE.
|
|
620
|
+
if (!oComponent.getSections()?.[getSectionKey(oSmartTable)]) {
|
|
621
|
+
return {};
|
|
622
|
+
}
|
|
623
|
+
}
|
|
607
624
|
return {
|
|
608
625
|
actions: {
|
|
609
626
|
settings: {
|
|
@@ -160,9 +160,10 @@ sap.ui.define([ "sap/suite/ui/generic/template/genericUtilities/FeLogger", "sap/
|
|
|
160
160
|
oBusyHelper.setBusy(oApplyPromise);
|
|
161
161
|
}
|
|
162
162
|
|
|
163
|
-
//
|
|
163
|
+
// Called from the Apply button (draft sub-object pages) and from the PrimaryAction keyboard shortcut.
|
|
164
|
+
// oEvent is present when triggered by a button; absent (null/undefined) when triggered by the shortcut.
|
|
164
165
|
function fnApplyAndUp(oEvent) {
|
|
165
|
-
var oControl = oEvent.getSource();
|
|
166
|
+
var oControl = oEvent && oEvent.getSource();
|
|
166
167
|
var oCRUDActionHandler = oTemplateUtils.oComponentUtils.getCRUDActionHandler();
|
|
167
168
|
|
|
168
169
|
// Pre-check validation to decide navigation
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
afterQueryProcessing="._templateEventHandlers.onEasyFilterAfterQueryProcessing"
|
|
11
11
|
clearFilters="._templateEventHandlers.onEasyFilterClearFilters"
|
|
12
12
|
dataFetcher="._templateEventHandlers.onEasyFilterDataFetcher"
|
|
13
|
+
complexFilterApplied="._templateEventHandlers.onEasyFilterComplexFilterApplied"
|
|
13
14
|
/>
|
|
14
15
|
</VBox>
|
|
15
16
|
</core:FragmentDefinition>
|
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
selectionChange="._templateEventHandlers.onMultiSelectionChange"
|
|
9
9
|
selectionMode="{tableSettings>mode}" />
|
|
10
10
|
<plugins.ContextMenuSetting scope="Selection"/>
|
|
11
|
+
<core:CommandExecution execute="._templateEventHandlers.onNavigateToDetails" command="NavigateToDetails"/>
|
|
11
12
|
</table:dependents>
|
|
12
13
|
<table:rowSettingsTemplate>
|
|
13
14
|
<table:RowSettings
|
|
@@ -31,6 +31,9 @@
|
|
|
31
31
|
type="{parts: [{path: 'listEntitySet>'}, {path: 'parameter>/settings/subPages/'}, {path: 'parameter>/manifest/'}, {path: 'parameter>/treeNode/'}, {path:'parameter>/isDraftEnabled'}, {path: 'facet>Target/AnnotationPath'}], formatter: 'AH.getColumnListItemType'}"
|
|
32
32
|
navigated="{parts: [{path: '_templPriv>/generic/currentActiveChildContext'}, {path: ''}], formatter: 'RuntimeFormatters.setRowNavigated.bind($control)'}"
|
|
33
33
|
detailPress="._templateEventHandlers.onEdit">
|
|
34
|
+
<dependents>
|
|
35
|
+
<core:CommandExecution execute="._templateEventHandlers.onNavigateToDetails" command="NavigateToDetails"/>
|
|
36
|
+
</dependents>
|
|
34
37
|
<template:if test="{parts: [{path: 'listEntitySet>name'}, {path: 'parameter>/settings/subPages/'}, {path: 'facet>Target/AnnotationPath'}], formatter: 'AH.getDisplayNavigationIntent'}">
|
|
35
38
|
<customData>
|
|
36
39
|
<core:CustomData key="CrossNavigation"
|
|
@@ -126,6 +126,9 @@ sap.ui.define([
|
|
|
126
126
|
if (oControlHelper.isObjectPageSubSection(oControl)){
|
|
127
127
|
return oControl.getBlocks().concat(oControl.getMoreBlocks());
|
|
128
128
|
}
|
|
129
|
+
if (isControlOfType("sap/ui/layout/form/Form", oControl)){
|
|
130
|
+
return oControl.getFormContainers();
|
|
131
|
+
}
|
|
129
132
|
if (isControlOfType("sap/ui/comp/smartform/Group", oControl)){
|
|
130
133
|
return oControl.getFormElements();
|
|
131
134
|
}
|
|
@@ -190,7 +190,13 @@ sap.ui.define([
|
|
|
190
190
|
function fnSetState(oState) {
|
|
191
191
|
// Don't cause side effects (filter change event), if setting state is no real change.
|
|
192
192
|
// If this comparison fails for state that actually are identically, maybe it needs to be enhanced (e.g. ignoring order in some arrays might be needed)
|
|
193
|
-
|
|
193
|
+
// If default values present - always set state, to ensure that DefaultValues will be converted to tokens.
|
|
194
|
+
// SFB will have DefaultValues only in case then SFB currently have selected variant with DefaultValues.
|
|
195
|
+
// In case then application is restored from state, SFB will load variant with DefaultValues.
|
|
196
|
+
// SFB ui state and state from URL will be equals. But SFB will have DefaultValues in corresponding ValueHelp controls.
|
|
197
|
+
// To override DefaultValues and to convert to tokens, FEv2 will set state from URL.
|
|
198
|
+
var oUiState = oSmartFilterBar.getUiState();
|
|
199
|
+
if (JSON.stringify(oState) === JSON.stringify(fnGetState()) && !oUiState.getDefaultValues()){
|
|
194
200
|
return;
|
|
195
201
|
}
|
|
196
202
|
|
|
@@ -198,8 +204,7 @@ sap.ui.define([
|
|
|
198
204
|
|
|
199
205
|
// SFB expects a UIState object - not serializable, but a managed object, actually containing also information not belonging to SFBs state
|
|
200
206
|
// => get current UIState object from SFB, replace only relevant information, and set it again
|
|
201
|
-
var
|
|
202
|
-
oSmartVariant = oSmartFilterBar.getSmartVariant(),
|
|
207
|
+
var oSmartVariant = oSmartFilterBar.getSmartVariant(),
|
|
203
208
|
bIsCurrentVariantModifiedBeforeSetState = oSmartVariant.currentVariantGetModified();
|
|
204
209
|
|
|
205
210
|
oUiState.getSelectionVariant().SelectOptions = oState && oState.selectOptions;
|
|
@@ -166,6 +166,13 @@ sap.ui.define([
|
|
|
166
166
|
oState.variantId = oState.sVariantId;
|
|
167
167
|
}
|
|
168
168
|
|
|
169
|
+
// Compare current passed and control states. If states are same, setting state make no change, but trigger table refresh.
|
|
170
|
+
// For performance reason we compare object stringified versions. Object key order should not change as it only get applied at runtime.
|
|
171
|
+
var oControlState = bVariantManagementActive ? oVariantManagementStateWrapper.getState() : oSmartControlStateWrapper.getState();
|
|
172
|
+
if (JSON.stringify(oState) === JSON.stringify(oControlState)) {
|
|
173
|
+
return;
|
|
174
|
+
}
|
|
175
|
+
|
|
169
176
|
if (bVariantManagementActive) {
|
|
170
177
|
// In case VariantManagement is configured
|
|
171
178
|
oVariantManagementStateWrapper.setState(oState);
|
|
@@ -151,52 +151,44 @@ sap.ui.define([
|
|
|
151
151
|
};
|
|
152
152
|
}
|
|
153
153
|
|
|
154
|
-
function fnApplyVariantState() {
|
|
155
|
-
bIsApplyingVariant = true;
|
|
156
|
-
if (!oPreliminaryState) {
|
|
157
|
-
// if no state is provided set default variant (not modified)
|
|
158
|
-
// use cases:
|
|
159
|
-
// - LR: if appStateKey in the URL that cannot be read
|
|
160
|
-
// - OP: if switching to different object instance (in discovery mode always, in persistency mode when page was not shown)
|
|
161
|
-
fnSetVariant(oSmartVariantManagement.getDefaultVariantId());
|
|
162
|
-
} else if (oPreliminaryState.modified) {
|
|
163
|
-
// Special logic according to UX: If variant was modified anyway, there's no benefit for the user to see the name (but it could be confusing), so standard variant (not default!) should be
|
|
164
|
-
// set (which is achieved by empty string)
|
|
165
|
-
fnSetVariant("");
|
|
166
|
-
oSmartVariantManagement.currentVariantSetModified(true);
|
|
167
|
-
// Usually restoring the state of any of the managed controls should mark the variant as dirty, but there might be edge cases (state from an old release not containing information for any
|
|
168
|
-
// managed control now relevant), so to be on the safe side, we set modified=true explicitly.
|
|
169
|
-
fnSetManagedControlStates(oPreliminaryState);
|
|
170
|
-
} else {
|
|
171
|
-
fnSetVariant(oPreliminaryState.variantId);
|
|
172
|
-
// if managedControlStates is not provided (legacy or maybe broken state), applying VM state should not break
|
|
173
|
-
// don't apply undefined to managedControlWrappers, but just leave them untouched
|
|
174
|
-
if (oPreliminaryState.managedControlStates){
|
|
175
|
-
if (oSmartFilterBarWrapper) {
|
|
176
|
-
// SmartFilterBarWrapper.setState is invoked to apply the state changes modified by "modifyStartupExtension"
|
|
177
|
-
oSmartFilterBarWrapper.setState(oPreliminaryState.managedControlStates[oSmartFilterBarWrapper.getLocalId()]);
|
|
178
|
-
}
|
|
179
|
-
if (oPreliminaryState.variantId !== oSmartVariantManagement.getCurrentVariantId()){
|
|
180
|
-
// variant could not be set because it is not known, i.e. it could be private and URL was shared, or could be deleted after page was bookmarked. In this case,
|
|
181
|
-
// standard variant is set (by VM). Additionally, it should be marked as modified.
|
|
182
|
-
oSmartVariantManagement.currentVariantSetModified(true);
|
|
183
|
-
}
|
|
184
|
-
}
|
|
185
|
-
}
|
|
186
|
-
bIsApplyingVariant = false;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
154
|
function setState(oState) {
|
|
190
155
|
oPreliminaryState = oState;
|
|
191
156
|
|
|
192
|
-
//
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
157
|
+
// Wait for all managed controls to be initialized before applying state
|
|
158
|
+
return oAllControlsInitializedPromise.then(function() {
|
|
159
|
+
bIsApplyingVariant = true;
|
|
160
|
+
if (!oPreliminaryState) {
|
|
161
|
+
// if no state is provided set default variant (not modified)
|
|
162
|
+
// use cases:
|
|
163
|
+
// - LR: if appStateKey in the URL that cannot be read
|
|
164
|
+
// - OP: if switching to different object instance (in discovery mode always, in persistency mode when page was not shown)
|
|
165
|
+
fnSetVariant(oSmartVariantManagement.getDefaultVariantId());
|
|
166
|
+
} else if (oPreliminaryState.modified) {
|
|
167
|
+
// Special logic according to UX: If variant was modified anyway, there's no benefit for the user to see the name (but it could be confusing), so standard variant (not default!) should be
|
|
168
|
+
// set (which is achieved by empty string)
|
|
169
|
+
fnSetVariant("");
|
|
170
|
+
oSmartVariantManagement.currentVariantSetModified(true);
|
|
171
|
+
// Usually restoring the state of any of the managed controls should mark the variant as dirty, but there might be edge cases (state from an old release not containing information for any
|
|
172
|
+
// managed control now relevant), so to be on the safe side, we set modified=true explicitly.
|
|
173
|
+
fnSetManagedControlStates(oPreliminaryState);
|
|
174
|
+
} else {
|
|
175
|
+
fnSetVariant(oPreliminaryState.variantId);
|
|
176
|
+
// if managedControlStates is not provided (legacy or maybe broken state), applying VM state should not break
|
|
177
|
+
// don't apply undefined to managedControlWrappers, but just leave them untouched
|
|
178
|
+
if (oPreliminaryState.managedControlStates){
|
|
179
|
+
if (oSmartFilterBarWrapper) {
|
|
180
|
+
// SmartFilterBarWrapper.setState is invoked to apply the state changes modified by "modifyStartupExtension"
|
|
181
|
+
oSmartFilterBarWrapper.setState(oPreliminaryState.managedControlStates[oSmartFilterBarWrapper.getLocalId()]);
|
|
182
|
+
}
|
|
183
|
+
if (oPreliminaryState.variantId !== oSmartVariantManagement.getCurrentVariantId()){
|
|
184
|
+
// variant could not be set because it is not known, i.e. it could be private and URL was shared, or could be deleted after page was bookmarked. In this case,
|
|
185
|
+
// standard variant is set (by VM). Additionally, it should be marked as modified.
|
|
186
|
+
oSmartVariantManagement.currentVariantSetModified(true);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
bIsApplyingVariant = false;
|
|
191
|
+
});
|
|
200
192
|
}
|
|
201
193
|
|
|
202
194
|
function attachStateChanged(fnHandler) {
|
package/src/sap/suite/ui/generic/template/genericUtilities/designtime/messagebundle.properties
ADDED
|
File without changes
|
|
@@ -290,8 +290,21 @@ sap.ui.define([
|
|
|
290
290
|
// - FCL: only used in case the App runs in FCL. In this case the FlexibleColumnLayoutHandler instantiates and maintains this subsection
|
|
291
291
|
// - messagePage: is used to control the MessagePage. It is set on demand by the NavigationController.
|
|
292
292
|
// Moreover, this function attaches the ui5 message model as named model to the AppComponent with name _templPrivMessage
|
|
293
|
-
function setGlobalTemplateModels(){
|
|
294
|
-
|
|
293
|
+
function setGlobalTemplateModels() {
|
|
294
|
+
var oGenericApp = oAppComponent.getManifestEntry("sap.ui.generic.app");
|
|
295
|
+
var oGlobalSettings = oGenericApp && oGenericApp.settings;
|
|
296
|
+
var sSummarizationVisibility = oGlobalSettings?.aiConfiguration?.smartSummarization?.visibility;
|
|
297
|
+
var bShowSummarizationButton = true;
|
|
298
|
+
if (sSummarizationVisibility !== undefined) {
|
|
299
|
+
var aValidVisibilityValues = ["ShowOnAllPages", "HideOnAllPages"];
|
|
300
|
+
if (!aValidVisibilityValues.includes(sSummarizationVisibility)) {
|
|
301
|
+
oLogger.warning("Manifest setting 'aiConfiguration.smartSummarization.visibility' has invalid value '" + sSummarizationVisibility + "'. Valid values: ShowOnAllPages | HideOnAllPages. Falling back to default: ShowOnAllPages.");
|
|
302
|
+
} else {
|
|
303
|
+
bShowSummarizationButton = (sSummarizationVisibility === "ShowOnAllPages");
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
oAppComponent.setModel(oTemplateContract.oTemplatePrivateGlobalModel, "_templPrivGlobal");
|
|
307
|
+
oAppComponent.getModel("_templPrivGlobal").setProperty("/generic", {
|
|
295
308
|
// Since draft saving is done globally, there is a global state which applies to all DraftIndicators
|
|
296
309
|
draftIndicatorState: DraftIndicatorState.Clear,
|
|
297
310
|
// if the ShellService is unavailable some of its tasks have to be done by ourselves. Assume that this is not the case.
|
|
@@ -303,10 +316,10 @@ sap.ui.define([
|
|
|
303
316
|
isSummarizationEnabled : false,
|
|
304
317
|
isEasyFilterEnabled : false,
|
|
305
318
|
isErrorExplanationEnabled : false,
|
|
306
|
-
isEasyFillEnabled: false
|
|
319
|
+
isEasyFillEnabled: false,
|
|
320
|
+
summarizationButtonVisibility: bShowSummarizationButton
|
|
307
321
|
}
|
|
308
322
|
});
|
|
309
|
-
oAppComponent.setModel(oTemplateContract.oTemplatePrivateGlobalModel, "_templPrivGlobal");
|
|
310
323
|
oTemplateContract.oShellServicePromise.catch(function(){
|
|
311
324
|
// it turns out that the ShellService is not available
|
|
312
325
|
oTemplateContract.oTemplatePrivateGlobalModel.setProperty("/generic/shellServiceUnavailable", true);
|
|
@@ -460,6 +473,7 @@ sap.ui.define([
|
|
|
460
473
|
oTemplateContract.appSettings = new ManagedObjectModel(oAppComponent);
|
|
461
474
|
oTemplateContract.oBusyHelper.setBusy(oTemplateContract.oShellServicePromise, undefined, undefined, true);
|
|
462
475
|
fnDeregister = fnRegisterAppComponent(oAppRegistryEntry);
|
|
476
|
+
setGlobalTemplateModels();
|
|
463
477
|
|
|
464
478
|
var oModel = oAppComponent.getModel();
|
|
465
479
|
oTemplateContract.bCreateRequestsCanonical = true;
|
|
@@ -475,7 +489,6 @@ sap.ui.define([
|
|
|
475
489
|
}
|
|
476
490
|
// workaround until Modules Factory is available
|
|
477
491
|
oApplicationController = new ApplicationController(oModel);
|
|
478
|
-
setGlobalTemplateModels();
|
|
479
492
|
oNavigationController = new NavigationController(oTemplateContract);
|
|
480
493
|
attachToApplicationController();
|
|
481
494
|
CRUDHelper.enableAutomaticDraftSaving(oTemplateContract);
|
|
@@ -767,7 +780,7 @@ sap.ui.define([
|
|
|
767
780
|
}
|
|
768
781
|
|
|
769
782
|
function fnNormalizeQuickVariantSelectionXEntitySets(oConfig){
|
|
770
|
-
fnAddMissingEntitySetsToQuickVariantSelectionX(oConfig.pages[0]);
|
|
783
|
+
fnAddMissingEntitySetsToQuickVariantSelectionX(oConfig.pages && oConfig.pages[0]);
|
|
771
784
|
}
|
|
772
785
|
|
|
773
786
|
// handling of deprecated properties which are still supported for compatibility reasons
|
|
@@ -961,7 +974,7 @@ sap.ui.define([
|
|
|
961
974
|
* @public
|
|
962
975
|
* @extends sap.ui.core.UIComponent
|
|
963
976
|
* @author SAP SE
|
|
964
|
-
* @version 1.
|
|
977
|
+
* @version 1.154.0
|
|
965
978
|
* @name sap.suite.ui.generic.template.lib.AppComponent
|
|
966
979
|
*/
|
|
967
980
|
var oAppComponent = UIComponent.extend("sap.suite.ui.generic.template.lib.AppComponent", {
|
|
@@ -1073,6 +1086,14 @@ sap.ui.define([
|
|
|
1073
1086
|
noDataRepresentation: {
|
|
1074
1087
|
type: "string",
|
|
1075
1088
|
defaultValue: "illustration" // Possible values: 'illustration', 'illustrationWithFallback' and 'textOnly'
|
|
1089
|
+
},
|
|
1090
|
+
aiConfiguration: {
|
|
1091
|
+
type: "object",
|
|
1092
|
+
defaultValue: {
|
|
1093
|
+
smartSummarization: {
|
|
1094
|
+
visibility: "ShowOnAllPages" // Possible values ShowOnAllPages or HideOnAllPages,
|
|
1095
|
+
}
|
|
1096
|
+
}
|
|
1076
1097
|
}
|
|
1077
1098
|
},
|
|
1078
1099
|
events: {
|
|
@@ -810,6 +810,18 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
810
810
|
return oTemplateContract.oNavigationControllerProxy.preloadComponent(sRouteName);
|
|
811
811
|
}
|
|
812
812
|
|
|
813
|
+
// Returns true when a navigation call will open in a new tab rather than replacing the current app.
|
|
814
|
+
// sap-ushell-navmode (manifest-level) takes priority; sap-ushell-next-navmode (FLP startup parameter,
|
|
815
|
+
// system-level) is the fallback — mirroring how NavigationHandler itself determines explace.
|
|
816
|
+
function fnIsExplaceNavigation(oOutboundParameters) {
|
|
817
|
+
if (oOutboundParameters && oOutboundParameters["sap-ushell-navmode"] === "explace") {
|
|
818
|
+
return true;
|
|
819
|
+
}
|
|
820
|
+
var oComponentData = oTemplateContract.oAppComponent.getComponentData && oTemplateContract.oAppComponent.getComponentData();
|
|
821
|
+
var oStartupParams = oComponentData && oComponentData.startupParameters;
|
|
822
|
+
return !!(oStartupParams && oStartupParams["sap-ushell-next-navmode"] && oStartupParams["sap-ushell-next-navmode"][0] === "explace");
|
|
823
|
+
}
|
|
824
|
+
|
|
813
825
|
oTemplateContract.oApplicationProxy = { // inject own api for AppComponent into the Template Contract. Other classes (NavigationController, BusyHelper) will call these functions accordingly.
|
|
814
826
|
createDraftSiblingPromise: oContextBookkeeping.createDraftSiblingPromise,
|
|
815
827
|
getDraftSiblingPromise: oContextBookkeeping.getDraftSiblingPromise,
|
|
@@ -916,6 +928,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
916
928
|
mustRequireRequestsCanonical: mustRequireRequestsCanonical,
|
|
917
929
|
getNavigationHandler: getNavigationHandler,
|
|
918
930
|
navigateExternal: fnNavigateExternal,
|
|
931
|
+
isExplaceNavigation: fnIsExplaceNavigation,
|
|
919
932
|
getStatePreservationMode: getStatePreservationMode,
|
|
920
933
|
setObjectInEditMode: fnSetObjectInEditMode,
|
|
921
934
|
getObjectInEditMode: fnGetObjectInEditMode,
|
|
@@ -722,7 +722,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
722
722
|
// null object has to be passed as the fourth argument (i.e. for oInnerAppData) to the navigate method as an indicator that the state should not be overwritten
|
|
723
723
|
// Explace outbounds must bypass fnNavigateExternal to avoid setting the app busy and consuming the re-entry guard.
|
|
724
724
|
// getNavigationHandler() returns a ghost stub (no .navigate) when ghostapp=true — guard before calling.
|
|
725
|
-
if (
|
|
725
|
+
if (oServices.oApplication.isExplaceNavigation(oOutbound.parameters)) {
|
|
726
726
|
var oNavHandler = oServices.oApplication.getNavigationHandler();
|
|
727
727
|
if (oNavHandler.navigate) {
|
|
728
728
|
oNavHandler.navigate(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError, null, "explace");
|
|
@@ -742,7 +742,15 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
742
742
|
oCommonUtils.removePropertiesFromNavigationContext(oSelectionVariant, oEventSource);
|
|
743
743
|
oController.adaptNavigationParameterExtension(oSelectionVariant, oObjectInfo);
|
|
744
744
|
oCommonUtils.setComponentRefreshBehaviour(oOutbound);
|
|
745
|
-
|
|
745
|
+
// SmartLink outbounds have no manifest parameters so sap-ushell-navmode is never set.
|
|
746
|
+
// System-level sap-ushell-next-navmode can still force a new tab — bypass the re-entry guard in that case.
|
|
747
|
+
if (oServices.oApplication.isExplaceNavigation()) {
|
|
748
|
+
if (oNavigationHandler.navigate) {
|
|
749
|
+
oNavigationHandler.navigate(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError, null, "explace");
|
|
750
|
+
}
|
|
751
|
+
} else {
|
|
752
|
+
oServices.oApplication.navigateExternal(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError);
|
|
753
|
+
}
|
|
746
754
|
}
|
|
747
755
|
|
|
748
756
|
function fnHideTitleArea(oSmLiContent,aContactTitleArea) {
|
|
@@ -1115,8 +1123,15 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1115
1123
|
// The value "sEntitySet" holds the entity set of an object page or a table.
|
|
1116
1124
|
//
|
|
1117
1125
|
// Sometimes, the SmartLink is located on a field group which belongs to the child entity set of object page.
|
|
1118
|
-
// So, we
|
|
1126
|
+
// So, we try to derive the entity type from the SmartLink's binding context.
|
|
1119
1127
|
var oEntityType = ModelUtil.getEntityTypeFromContext(oControl.getBindingContext());
|
|
1128
|
+
// CS20260013063140: ModelUtil.getEntityTypeFromContext returns null when the SmartLink
|
|
1129
|
+
// is resolved via SmartLinkDelegate, because the binding context is not yet resolvable
|
|
1130
|
+
// to an entity type at that point.
|
|
1131
|
+
// Fall back to deriving the entity type from the enclosing entity set instead.
|
|
1132
|
+
if (!oEntityType) {
|
|
1133
|
+
oEntityType = oMetaModel.getODataEntityType(oEntitySet.entityType);
|
|
1134
|
+
}
|
|
1120
1135
|
var oField = oEntityType.property.find(function (oProperty) { return oProperty.name === sSourceClickedField; });
|
|
1121
1136
|
var sTextArrangement = "descriptionAndId";
|
|
1122
1137
|
if (oField) { // TODO: Need to provide the correct field Object using the entityType and corresponding association (should be handled by a BLI)
|
|
@@ -1803,6 +1818,73 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
1803
1818
|
|
|
1804
1819
|
}
|
|
1805
1820
|
|
|
1821
|
+
/**
|
|
1822
|
+
* Handles Alt+Enter keyboard shortcut on a focused row in a UI Table or Responsive Table.
|
|
1823
|
+
* For UI Table: finds the RowActionItem for the focused row and fires its press event.
|
|
1824
|
+
* For Responsive Table: finds the focused ColumnListItem and fires its press event.
|
|
1825
|
+
* Both paths trigger the same navigation as clicking the chevron/row, preserving
|
|
1826
|
+
* cross-app navigation and all existing navigation logic.
|
|
1827
|
+
* Does nothing if the table has no navigation configured or the focused row is not navigable.
|
|
1828
|
+
* @param {sap.ui.base.Event} oEvent - execute event from the CommandExecution placed in the table dependents
|
|
1829
|
+
*/
|
|
1830
|
+
function onNavigateToDetails(oEvent) {
|
|
1831
|
+
var oParent = oEvent.getSource().getParent();
|
|
1832
|
+
var oTable = oParent.isA("sap.m.ListItemBase") ? oParent.getParent() : oParent;
|
|
1833
|
+
var oFocusedDom = document.activeElement;
|
|
1834
|
+
if (controlHelper.isUiTable(oTable)) {
|
|
1835
|
+
if (oTable.getRowActionCount() === 0) {
|
|
1836
|
+
return;
|
|
1837
|
+
}
|
|
1838
|
+
var oFocusedRow = oTable.getRows().find(function(oRow) {
|
|
1839
|
+
var oDomRef = oRow.getDomRef();
|
|
1840
|
+
return oDomRef && oDomRef.contains(oFocusedDom);
|
|
1841
|
+
});
|
|
1842
|
+
if (!oFocusedRow || !oFocusedRow.getBindingContext()) {
|
|
1843
|
+
return;
|
|
1844
|
+
}
|
|
1845
|
+
// Find the per-row RowAction clone using only public APIs (findAggregatedObjects + isA).
|
|
1846
|
+
// sap.ui.table.Row offers no public getter for its RowAction instance, and
|
|
1847
|
+
// getRowActionTemplate() returns only the template which has no row binding.
|
|
1848
|
+
var oRowAction = oFocusedRow.findAggregatedObjects(false, function(oChild) {
|
|
1849
|
+
return oChild.isA("sap.ui.table.RowAction");
|
|
1850
|
+
})[0];
|
|
1851
|
+
if (!oRowAction || !oRowAction.getVisible()) {
|
|
1852
|
+
return;
|
|
1853
|
+
}
|
|
1854
|
+
var oNavItem = oRowAction.getItems().find(function(oItem) {
|
|
1855
|
+
return oItem.getType() === "Navigation" && oItem.getVisible();
|
|
1856
|
+
});
|
|
1857
|
+
if (!oNavItem) {
|
|
1858
|
+
return;
|
|
1859
|
+
}
|
|
1860
|
+
// Fire press on the RowActionItem — triggers the same onListNavigate handler as a chevron click,
|
|
1861
|
+
// preserving cross-app navigation (CrossNavigation custom data) and all existing navigation logic.
|
|
1862
|
+
oNavItem.firePress({
|
|
1863
|
+
row: oFocusedRow,
|
|
1864
|
+
item: oNavItem
|
|
1865
|
+
});
|
|
1866
|
+
} else if (controlHelper.isMTable(oTable)) {
|
|
1867
|
+
// CommandExecution is on the row; oParent IS the focused ColumnListItem.
|
|
1868
|
+
var oFocusedItem = oParent;
|
|
1869
|
+
// Only navigate if the item has type Navigation and has a binding context
|
|
1870
|
+
if (!oFocusedItem || !oFocusedItem.getBindingContext() ||
|
|
1871
|
+
oFocusedItem.getType() !== "Navigation") {
|
|
1872
|
+
return;
|
|
1873
|
+
}
|
|
1874
|
+
// ListReport/ObjectPage wire onListNavigate to the table's itemPress event.
|
|
1875
|
+
// ALP wires it to the ColumnListItem's press event instead (no itemPress on table).
|
|
1876
|
+
// hasListeners distinguishes the two patterns without touching private APIs.
|
|
1877
|
+
if (oTable.hasListeners("itemPress")) {
|
|
1878
|
+
oTable.fireItemPress({
|
|
1879
|
+
listItem: oFocusedItem,
|
|
1880
|
+
srcControl: oFocusedItem
|
|
1881
|
+
});
|
|
1882
|
+
} else {
|
|
1883
|
+
oFocusedItem.firePress();
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
}
|
|
1887
|
+
|
|
1806
1888
|
/**
|
|
1807
1889
|
* Navigation from table
|
|
1808
1890
|
* @param {sap.ui.base.EventProvider} oEventOrSource - either event triggering navigation, or it's source control (if the event needs to be faked - then the control should be a ColumnListItem or mTable)
|
|
@@ -2724,7 +2806,7 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2724
2806
|
oCommonUtils.setComponentRefreshBehaviour(oOutbound);
|
|
2725
2807
|
// Explace outbounds must bypass fnNavigateExternal to avoid setting the app busy and consuming the re-entry guard.
|
|
2726
2808
|
// getNavigationHandler() returns a ghost stub (no .navigate) when ghostapp=true — guard before calling.
|
|
2727
|
-
if (
|
|
2809
|
+
if (oServices.oApplication.isExplaceNavigation(oOutbound.parameters)) {
|
|
2728
2810
|
var oNavHandler = oServices.oApplication.getNavigationHandler();
|
|
2729
2811
|
if (oNavHandler.navigate) {
|
|
2730
2812
|
oNavHandler.navigate(oOutbound.semanticObject, oOutbound.action, oSelectionVariant.toJSONString(), null, oCommonUtils.handleError, null, "explace");
|
|
@@ -2993,12 +3075,14 @@ sap.ui.define(["sap/ui/base/Object",
|
|
|
2993
3075
|
var fnApplyCellHiddenBindings = testableHelper.testable(fnApplyCellHiddenBindings, "fnApplyCellHiddenBindings");
|
|
2994
3076
|
var fnAttachRowsUpdateHandler = testableHelper.testable(fnAttachRowsUpdateHandler, "fnAttachRowsUpdateHandler");
|
|
2995
3077
|
var fnHandleTableCellVisibility = testableHelper.testable(fnHandleTableCellVisibility, "fnHandleTableCellVisibility");
|
|
3078
|
+
var onNavigateToDetails = testableHelper.testable(onNavigateToDetails, "onNavigateToDetails");
|
|
2996
3079
|
/* eslint-enable */
|
|
2997
3080
|
|
|
2998
3081
|
return {
|
|
2999
3082
|
onDataReceived: onDataReceived,
|
|
3000
3083
|
onBeforeRebindTable: onBeforeRebindTable,
|
|
3001
3084
|
onListNavigate: onListNavigate,
|
|
3085
|
+
onNavigateToDetails: onNavigateToDetails,
|
|
3002
3086
|
onEditNavigateIntent: fnNavigateIntentManifest,
|
|
3003
3087
|
onRelatedAppNavigation: onRelatedAppNavigation,
|
|
3004
3088
|
onDataFieldWithNavigationPath: onDataFieldWithNavigationPath,
|