@sapui5/sap.fe.templates 1.95.0 → 1.98.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.
Files changed (105) hide show
  1. package/package.json +6 -3
  2. package/src/sap/fe/templates/.library +1 -1
  3. package/src/sap/fe/templates/AnalyticalListPage/Component.js +1 -1
  4. package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +3 -3
  5. package/src/sap/fe/templates/ListComponent.js +1 -1
  6. package/src/sap/fe/templates/ListReport/Component.js +1 -1
  7. package/src/sap/fe/templates/ListReport/ExtensionAPI.js +1 -1
  8. package/src/sap/fe/templates/ListReport/ListReport.view.xml +6 -4
  9. package/src/sap/fe/templates/ListReport/ListReportController.controller.js +136 -85
  10. package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +7 -3
  11. package/src/sap/fe/templates/ListReport/overrides/MassEdit.js +95 -0
  12. package/src/sap/fe/templates/ListReport/overrides/Share.js +37 -22
  13. package/src/sap/fe/templates/ListReport/overrides/ViewState.js +166 -33
  14. package/src/sap/fe/templates/ObjectPage/AnnotationHelper.js +23 -3
  15. package/src/sap/fe/templates/ObjectPage/Component.js +31 -18
  16. package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +16 -1
  17. package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +103 -88
  18. package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +235 -174
  19. package/src/sap/fe/templates/ObjectPage/controls/StashableHBox.js +9 -1
  20. package/src/sap/fe/templates/ObjectPage/controls/StashableVBox.js +1 -1
  21. package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -2
  22. package/src/sap/fe/templates/ObjectPage/designtime/FlexBox.designtime.js +1 -1
  23. package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
  24. package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
  25. package/src/sap/fe/templates/ObjectPage/flexibility/StashableHBox.flexibility.js +1 -1
  26. package/src/sap/fe/templates/ObjectPage/flexibility/StashableVBox.flexibility.js +1 -1
  27. package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
  28. package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
  29. package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
  30. package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +13 -1
  31. package/src/sap/fe/templates/ObjectPage/overrides/Share.js +89 -72
  32. package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +10 -6
  33. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.js +14 -11
  34. package/src/sap/fe/templates/ObjectPage/templating/ObjectPageTemplating.ts +26 -12
  35. package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +2 -2
  36. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderDataPointTitle.fragment.xml +26 -16
  37. package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +5 -5
  38. package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +24 -5
  39. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +1 -4
  40. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContentLazyLoader.fragment.xml +181 -0
  41. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
  42. package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
  43. package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +111 -8
  44. package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +88 -32
  45. package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +161 -144
  46. package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
  47. package/src/sap/fe/templates/RootContainer/view/Fcl.view.xml +2 -1
  48. package/src/sap/fe/templates/RootContainer/view/NavContainer.view.xml +1 -1
  49. package/src/sap/fe/templates/TableScroller.js +1 -1
  50. package/src/sap/fe/templates/controls/Chart.fragment.xml +6 -2
  51. package/src/sap/fe/templates/controls/Table.fragment.xml +2 -0
  52. package/src/sap/fe/templates/library.js +2 -2
  53. package/src/sap/fe/templates/messagebundle.properties +25 -2
  54. package/src/sap/fe/templates/messagebundle_ar.properties +1 -1
  55. package/src/sap/fe/templates/messagebundle_bg.properties +1 -1
  56. package/src/sap/fe/templates/messagebundle_ca.properties +1 -1
  57. package/src/sap/fe/templates/messagebundle_cs.properties +1 -1
  58. package/src/sap/fe/templates/messagebundle_cy.properties +1 -1
  59. package/src/sap/fe/templates/messagebundle_da.properties +1 -1
  60. package/src/sap/fe/templates/messagebundle_de.properties +1 -1
  61. package/src/sap/fe/templates/messagebundle_el.properties +1 -1
  62. package/src/sap/fe/templates/messagebundle_en.properties +1 -1
  63. package/src/sap/fe/templates/messagebundle_en_GB.properties +1 -1
  64. package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -2
  65. package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -2
  66. package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +2 -2
  67. package/src/sap/fe/templates/messagebundle_es.properties +9 -9
  68. package/src/sap/fe/templates/messagebundle_es_MX.properties +1 -1
  69. package/src/sap/fe/templates/messagebundle_et.properties +1 -1
  70. package/src/sap/fe/templates/messagebundle_fi.properties +1 -1
  71. package/src/sap/fe/templates/messagebundle_fr.properties +2 -2
  72. package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -2
  73. package/src/sap/fe/templates/messagebundle_hi.properties +1 -1
  74. package/src/sap/fe/templates/messagebundle_hr.properties +2 -2
  75. package/src/sap/fe/templates/messagebundle_hu.properties +1 -1
  76. package/src/sap/fe/templates/messagebundle_id.properties +1 -1
  77. package/src/sap/fe/templates/messagebundle_it.properties +1 -1
  78. package/src/sap/fe/templates/messagebundle_iw.properties +1 -1
  79. package/src/sap/fe/templates/messagebundle_ja.properties +2 -2
  80. package/src/sap/fe/templates/messagebundle_kk.properties +1 -1
  81. package/src/sap/fe/templates/messagebundle_ko.properties +1 -1
  82. package/src/sap/fe/templates/messagebundle_lt.properties +1 -1
  83. package/src/sap/fe/templates/messagebundle_lv.properties +1 -1
  84. package/src/sap/fe/templates/messagebundle_ms.properties +1 -1
  85. package/src/sap/fe/templates/messagebundle_nl.properties +1 -1
  86. package/src/sap/fe/templates/messagebundle_no.properties +2 -2
  87. package/src/sap/fe/templates/messagebundle_pl.properties +1 -1
  88. package/src/sap/fe/templates/messagebundle_pt.properties +1 -1
  89. package/src/sap/fe/templates/messagebundle_pt_PT.properties +1 -1
  90. package/src/sap/fe/templates/messagebundle_ro.properties +1 -1
  91. package/src/sap/fe/templates/messagebundle_ru.properties +1 -1
  92. package/src/sap/fe/templates/messagebundle_sh.properties +1 -1
  93. package/src/sap/fe/templates/messagebundle_sk.properties +1 -1
  94. package/src/sap/fe/templates/messagebundle_sl.properties +1 -1
  95. package/src/sap/fe/templates/messagebundle_sv.properties +1 -1
  96. package/src/sap/fe/templates/messagebundle_th.properties +1 -1
  97. package/src/sap/fe/templates/messagebundle_tr.properties +2 -2
  98. package/src/sap/fe/templates/messagebundle_uk.properties +1 -1
  99. package/src/sap/fe/templates/messagebundle_vi.properties +1 -1
  100. package/src/sap/fe/templates/messagebundle_zh_CN.properties +1 -1
  101. package/src/sap/fe/templates/messagebundle_zh_TW.properties +1 -1
  102. package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderImage.fragment.xml +0 -24
  103. package/src/sap/fe/templates/RootContainer/view/PlaceholderLR.view.xml +0 -617
  104. package/src/sap/fe/templates/RootContainer/view/PlaceholderOP.view.xml +0 -588
  105. package/src/sap/fe/templates/controls/OverflowToolbarButtonHover.js +0 -25
@@ -19,15 +19,22 @@
19
19
  text="{sap.fe.i18n>T_HEADER_DATAPOINT_TITLE_LINK_EXTERNAL_ARIA}"
20
20
  id="{= ID.generate(['fe', ${converterHeaderFacet>targetAnnotationValue}, 'AriaText']) }"
21
21
  />
22
- <Link
23
- unittest:id="headerDataPointLinkTest"
24
- id="{= ID.generate(['fe', 'HeaderDPLink', ${converterHeaderFacet>targetAnnotationValue}]) }"
25
- text="{dataPoint>Title@@MODEL.value}"
22
+ <Title
23
+ unittest:id="headerDataPointLinkTitleTest"
24
+ level="H3"
26
25
  visible="{= COMMON.getHeaderDataPointLinkVisibility(ID.generate(['fe', 'HeaderDPLink', ${converterHeaderFacet>targetAnnotationValue}]), true, ${dataPoint>@@FIELD.isNotAlwaysHidden}) }"
27
- press="{= OP.getPressExpressionForLink(${viewData>controlConfiguration}[${converterHeaderFacet>targetAnnotationValue}]['navigation'], ${manifest>/sap.app/crossNavigation/outbounds})}"
28
- ariaDescribedBy="{= ID.generate(['fe', ${converterHeaderFacet>targetAnnotationValue}, 'AriaText']) }"
29
- class="sapUiTinyMarginBottom"
30
- />
26
+ >
27
+ <content>
28
+ <Link
29
+ unittest:id="headerDataPointLinkInsideTitleTest"
30
+ id="{= ID.generate(['fe', 'HeaderDPLink', ${converterHeaderFacet>targetAnnotationValue}]) }"
31
+ text="{dataPoint>Title@@MODEL.value}"
32
+ press="{= OP.getPressExpressionForLink(${viewData>controlConfiguration}[${converterHeaderFacet>targetAnnotationValue}]['navigation'], ${manifest>/sap.app/crossNavigation/outbounds})}"
33
+ ariaDescribedBy="{= ID.generate(['fe', ${converterHeaderFacet>targetAnnotationValue}, 'AriaText']) }"
34
+ class="sapUiTinyMarginBottom"
35
+ />
36
+ </content>
37
+ </Title>
31
38
 
32
39
  <Title
33
40
  unittest:id="headerDataPointTitleTest"
@@ -47,14 +54,17 @@
47
54
  text="{sap.fe.i18n>T_COMMON_HEADERDP_TITLE_LINK_INPAGE_ARIA}"
48
55
  id="{= ID.generate(['fe', ${converterHeaderFacet>targetAnnotationValue}, 'AriaText']) }"
49
56
  />
50
- <Link
51
- unittest:id="HeaderDataPointInternalLinkTest"
52
- id="{= ID.generate(['fe', 'HeaderDPLink', ${headerFacet>Target/$AnnotationPath}]) }"
53
- text="{dataPoint>Title@@MODEL.value}"
54
- visible="{= !!${dataPoint>Title}}"
55
- press="{= OP.getPressExpressionForLink(${viewData>controlConfiguration}[${converterHeaderFacet>targetAnnotationValue}]['navigation']) }"
56
- ariaDescribedBy="{= ID.generate(['fe', ${converterHeaderFacet>targetAnnotationValue}, 'AriaText']) }"
57
- />
57
+ <Title level="H3" visible="{= !!${dataPoint>Title}}">
58
+ <content>
59
+ <Link
60
+ unittest:id="HeaderDataPointInternalLinkTest"
61
+ id="{= ID.generate(['fe', 'HeaderDPLink', ${headerFacet>Target/$AnnotationPath}]) }"
62
+ text="{dataPoint>Title@@MODEL.value}"
63
+ press="{= OP.getPressExpressionForLink(${viewData>controlConfiguration}[${converterHeaderFacet>targetAnnotationValue}]['navigation']) }"
64
+ ariaDescribedBy="{= ID.generate(['fe', ${converterHeaderFacet>targetAnnotationValue}, 'AriaText']) }"
65
+ />
66
+ </content>
67
+ </Title>
58
68
  </template:elseif>
59
69
  <template:else>
60
70
  <Title
@@ -3,12 +3,12 @@
3
3
  xmlns="sap.m"
4
4
  xmlns:internalMacro="sap.fe.macros.internal"
5
5
  xmlns:core="sap.ui.core"
6
- xmlns:l="sap.ui.layout"
7
6
  xmlns:unittest="http://schemas.sap.com/sapui5/preprocessorextension/sap.fe.unittesting/1"
8
7
  template:require="{
9
8
  MODEL: 'sap/ui/model/odata/v4/AnnotationHelper',
10
9
  ID: 'sap/fe/core/helpers/StableIdHelper',
11
- OP: 'sap/fe/templates/ObjectPage/AnnotationHelper'
10
+ OP: 'sap/fe/templates/ObjectPage/AnnotationHelper',
11
+ FIELD: 'sap/fe/macros/field/FieldHelper'
12
12
  }"
13
13
  >
14
14
  <VBox id="{= ${converterHeaderFacet>headerFormData/id} }" displayInline="true">
@@ -38,10 +38,10 @@
38
38
  <Label
39
39
  unittest:id="ObjectPageHeaderLabelTest"
40
40
  id="{= ID.generate([ ${formElement>idPrefix}, 'Label'])}"
41
- text="{formElement>label}:"
42
- visible="{= ${formElement>label} ? 'true':'false'}"
41
+ text="{= ${dataField>@@FIELD.computeLabelText} + ':' }"
42
+ visible="{= !!${dataField>@@FIELD.computeLabelText} }"
43
43
  class="sapUiTinyMarginEnd"
44
- vAlign="{= ${formElement>isValueMultilineText} === true ? 'Middle' : 'Bottom' }"
44
+ vAlign="{= ${formElement>isValueMultilineText} === true ? 'Middle' : 'Inherit' }"
45
45
  />
46
46
  <internalMacro:Field
47
47
  idPrefix="{formElement>idPrefix}"
@@ -55,17 +55,36 @@
55
55
  showTitle="{subSection>showTitle}"
56
56
  visible="{subSection>visible}"
57
57
  >
58
- <uxap:customData>
58
+ <!--uxap:customData>
59
59
  <core:CustomData key="strategyForVisibilityChange" value="lazyLoading" />
60
+ </uxap:customData-->
61
+ <uxap:customData>
62
+ <core:CustomData key="isVisibilityDynamic" value="{subSection>isVisibilityDynamic}" />
60
63
  </uxap:customData>
61
64
  <template:if test="{= ${subSection>type} === 'Mixed'}">
62
65
  <template:then>
63
- <template:repeat list="{subSection>content}" var="subSection">
64
- <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionContent" type="XML" />
65
- </template:repeat>
66
+ <template:if test="{viewData>/useNewLazyLoading}">
67
+ <template:then>
68
+ <template:repeat list="{subSection>content}" var="subSection">
69
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionContentLazyLoader" type="XML" />
70
+ </template:repeat>
71
+ </template:then>
72
+ <template:else>
73
+ <template:repeat list="{subSection>content}" var="subSection">
74
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionContent" type="XML" />
75
+ </template:repeat>
76
+ </template:else>
77
+ </template:if>
66
78
  </template:then>
67
79
  <template:else>
68
- <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionContent" type="XML" />
80
+ <template:if test="{viewData>/useNewLazyLoading}">
81
+ <template:then>
82
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionContentLazyLoader" type="XML" />
83
+ </template:then>
84
+ <template:else>
85
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionContent" type="XML" />
86
+ </template:else>
87
+ </template:if>
69
88
  </template:else>
70
89
  </template:if>
71
90
  </uxap:ObjectPageSubSection>
@@ -131,10 +131,7 @@
131
131
  <template:elseif test="{= ${subSection>type} === 'DataVisualization'}">
132
132
  <uxap:blocks>
133
133
  <template:if test="{= ${subSection>level} === 2}">
134
- <Title
135
- text="{subSection>title}"
136
- visible="{= ${subSection>visible} &amp;&amp; ${subSection>title} !=='undefined' &amp;&amp; ${subSection>showTitle} ? true : false}"
137
- />
134
+ <Title text="{subSection>title}" visible="{subSection>titleVisible}" />
138
135
  </template:if>
139
136
  <opcontrol:SubSectionBlock visible="{subSection>visible}">
140
137
  <opcontrol:content>
@@ -0,0 +1,181 @@
1
+ <core:FragmentDefinition
2
+ xmlns:uxap="sap.uxap"
3
+ xmlns:core="sap.ui.core"
4
+ xmlns:template="http://schemas.sap.com/sapui5/extension/sap.ui.core.template/1"
5
+ xmlns:fpm="sap.fe.macros.fpm"
6
+ xmlns:macro="sap.fe.macros"
7
+ xmlns:layout="sap.ui.layout"
8
+ xmlns:dt="sap.ui.dt"
9
+ xmlns="sap.m"
10
+ xmlns:opcontrol="sap.fe.templates.ObjectPage.controls"
11
+ template:require="{
12
+ fpm: 'sap/fe/macros/fpm/fpm',
13
+ MODEL: 'sap/ui/model/odata/v4/AnnotationHelper',
14
+ OP: 'sap/fe/templates/ObjectPage/AnnotationHelper',
15
+ COMMON: 'sap/fe/macros/CommonHelper',
16
+ ID: 'sap/fe/core/helpers/StableIdHelper'
17
+ }"
18
+ >
19
+ <!-- We want to ensure that statically non visible sections are non visible-->
20
+ <template:if test="{subSection>visible}">
21
+ <template:if test="{= ${subSection>type} === 'XMLFragment'}">
22
+ <template:then>
23
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.FormActions" type="XML" />
24
+ <uxap:blocks>
25
+ <uxap:ObjectPageLazyLoader stashed="true" id="{= ID.generate(['fe', ${subSection>key}])}">
26
+ <opcontrol:SubSectionBlock>
27
+ <opcontrol:content>
28
+ <template:if test="{= ${subSection>sideContent} !== undefined}">
29
+ <template:then>
30
+ <layout:DynamicSideContent
31
+ id="{= ID.generate(['fe', ${subSection>key}, 'SideContentLayout'])}"
32
+ showMainContent="true"
33
+ showSideContent="{subSection>sideContent/visible}"
34
+ sideContentFallDown="BelowM"
35
+ containerQuery="true"
36
+ equalSplit="{subSection>sideContent/equalSplit}"
37
+ >
38
+ <layout:mainContent>
39
+ <core:Fragment
40
+ fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionCustomSection"
41
+ type="XML"
42
+ />
43
+ </layout:mainContent>
44
+ <layout:sideContent>
45
+ <core:Fragment
46
+ fragmentName="sap.fe.templates.ObjectPage.view.fragments.SideContentCustomContainer"
47
+ type="XML"
48
+ />
49
+ </layout:sideContent>
50
+ </layout:DynamicSideContent>
51
+ </template:then>
52
+ <template:else>
53
+ <core:Fragment
54
+ fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionCustomSection"
55
+ type="XML"
56
+ />
57
+ </template:else>
58
+ </template:if>
59
+ </opcontrol:content>
60
+ </opcontrol:SubSectionBlock>
61
+ </uxap:ObjectPageLazyLoader>
62
+ </uxap:blocks>
63
+
64
+ </template:then>
65
+ <template:elseif test="{= ${subSection>type} === 'Form'}">
66
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.FormActions" type="XML" />
67
+ <uxap:blocks>
68
+ <uxap:ObjectPageLazyLoader stashed="true" id="{= ID.generate(['fe', ${subSection>key}])}">
69
+ <opcontrol:SubSectionBlock>
70
+ <opcontrol:content>
71
+ <template:if test="{= ${subSection>sideContent} !== undefined}">
72
+ <template:then>
73
+ <layout:DynamicSideContent
74
+ id="{= ID.generate(['fe', ${subSection>key}, 'SideContentLayout'])}"
75
+ showMainContent="true"
76
+ showSideContent="{subSection>sideContent/visible}"
77
+ sideContentFallDown="BelowM"
78
+ containerQuery="true"
79
+ equalSplit="{subSection>sideContent/equalSplit}"
80
+ >
81
+ <layout:mainContent>
82
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionFormContent" type="XML" />
83
+ </layout:mainContent>
84
+ <layout:sideContent>
85
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SideContentCustomContainer" type="XML" />
86
+ </layout:sideContent>
87
+ </layout:DynamicSideContent>
88
+
89
+ </template:then>
90
+ <template:else>
91
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionFormContent" type="XML" />
92
+ </template:else>
93
+ </template:if>
94
+ </opcontrol:content>
95
+ </opcontrol:SubSectionBlock>
96
+ </uxap:ObjectPageLazyLoader>
97
+ </uxap:blocks>
98
+ <template:if test="{subSection>formDefinition/hasFacetsNotPartOfPreview}">
99
+ <template:then>
100
+ <!-- Button "Show More / Less" is displayed for a collection facets that contains at least one reference facets with annotation "PartOfPreview === TRUE" -->
101
+ <uxap:moreBlocks>
102
+ <template:if test="{= ${subSection>level} === 2}">
103
+ <Title text="{subSection>title}" />
104
+ </template:if>
105
+ <opcontrol:SubSectionBlock>
106
+ <opcontrol:content>
107
+ <template:if test="{= ${subSection>sideContent} !== undefined}">
108
+ <template:then>
109
+ <layout:DynamicSideContent
110
+ id="{= ID.generate(['fe', ${subSection>key}, 'MoreSideContentLayout'])}"
111
+ showMainContent="true"
112
+ showSideContent="{subSection>sideContent/visible}"
113
+ sideContentFallDown="BelowM"
114
+ containerQuery="true"
115
+ equalSplit="{subSection>sideContent/equalSplit}"
116
+ >
117
+ <layout:mainContent>
118
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionMoreFormContent" type="XML" />
119
+ </layout:mainContent>
120
+ <layout:sideContent>
121
+ <!--No Side Content for MoreBlocks so far-->
122
+ </layout:sideContent>
123
+ </layout:DynamicSideContent>
124
+ </template:then>
125
+ <template:else>
126
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionMoreFormContent" type="XML" />
127
+ </template:else>
128
+ </template:if>
129
+ </opcontrol:content>
130
+ </opcontrol:SubSectionBlock>
131
+ </uxap:moreBlocks>
132
+ </template:then>
133
+ </template:if>
134
+ </template:elseif>
135
+ <template:elseif test="{= ${subSection>type} === 'DataVisualization'}">
136
+ <uxap:blocks>
137
+ <uxap:ObjectPageLazyLoader stashed="true" id="{= ID.generate(['fe', ${subSection>key}])}">
138
+ <template:if test="{= ${subSection>level} === 2}">
139
+ <Title
140
+ text="{subSection>title}"
141
+ visible="{= ${subSection>visible} &amp;&amp; ${subSection>title} !=='undefined' &amp;&amp; ${subSection>showTitle} ? true : false}"
142
+ />
143
+ </template:if>
144
+ <opcontrol:SubSectionBlock visible="{subSection>visible}">
145
+ <opcontrol:content>
146
+ <template:if test="{= ${subSection>sideContent} !== undefined}">
147
+ <template:then>
148
+ <layout:DynamicSideContent
149
+ id="{= ID.generate(['fe', ${subSection>key}, 'SideContentLayout'])}"
150
+ showMainContent="true"
151
+ showSideContent="{subSection>sideContent/visible}"
152
+ sideContentFallDown="BelowM"
153
+ containerQuery="true"
154
+ equalSplit="{subSection>sideContent/equalSplit}"
155
+ >
156
+ <layout:mainContent>
157
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionPresentationVisualization" type="XML" />
158
+ </layout:mainContent>
159
+ <layout:sideContent>
160
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SideContentCustomContainer" type="XML" />
161
+ </layout:sideContent>
162
+ </layout:DynamicSideContent>
163
+ </template:then>
164
+ <template:else>
165
+ <core:Fragment fragmentName="sap.fe.templates.ObjectPage.view.fragments.SectionPresentationVisualization" type="XML" />
166
+ </template:else>
167
+ </template:if>
168
+ </opcontrol:content>
169
+ </opcontrol:SubSectionBlock>
170
+ </uxap:ObjectPageLazyLoader>
171
+ </uxap:blocks>
172
+ </template:elseif>
173
+ <template:elseif test="{= ${subSection>type} === 'Unknown'}">
174
+ <Text text="{subSection>text}" />
175
+ </template:elseif>
176
+ <template:else>
177
+
178
+ </template:else>
179
+ </template:if>
180
+ </template:if>
181
+ </core:FragmentDefinition>
@@ -14,5 +14,6 @@
14
14
  useFormContainerLabels="{= ${subSection>formDefinition/useFormContainerLabels}}"
15
15
  partOfPreview="true"
16
16
  formContainers="{subSection>formDefinition/formContainers}"
17
+ isVisible="{subSection>formDefinition/isVisible}"
17
18
  />
18
19
  </core:FragmentDefinition>
@@ -14,5 +14,6 @@
14
14
  useFormContainerLabels="{= ${subSection>formDefinition/useFormContainerLabels}}"
15
15
  partOfPreview="false"
16
16
  formContainers="{subSection>formDefinition/formContainers}"
17
+ isVisible="{subSection>formDefinition/isVisible}"
17
18
  />
18
19
  </core:FragmentDefinition>
@@ -1,6 +1,6 @@
1
1
  /*!
2
2
  * SAPUI5
3
- * (c) Copyright 2009-2021 SAP SE. All rights reserved.
3
+ * (c) Copyright 2009-2022 SAP SE. All rights reserved.
4
4
  */
5
5
  sap.ui.define(
6
6
  [
@@ -9,12 +9,24 @@ sap.ui.define(
9
9
  "./RootContainerBaseController",
10
10
  "sap/f/FlexibleColumnLayoutSemanticHelper",
11
11
  "sap/ui/core/Component",
12
+ "sap/fe/core/helpers/KeepAliveHelper",
12
13
  "sap/fe/core/controllerextensions/ViewState",
13
14
  "sap/m/Link",
14
15
  "sap/m/MessagePage",
15
16
  "sap/m/MessageBox"
16
17
  ],
17
- function(Log, JSONModel, BaseController, FlexibleColumnLayoutSemanticHelper, Component, ViewState, Link, MessagePage, MessageBox) {
18
+ function(
19
+ Log,
20
+ JSONModel,
21
+ BaseController,
22
+ FlexibleColumnLayoutSemanticHelper,
23
+ Component,
24
+ KeepAliveHelper,
25
+ ViewState,
26
+ Link,
27
+ MessagePage,
28
+ MessageBox
29
+ ) {
18
30
  "use strict";
19
31
 
20
32
  var CONSTANTS = {
@@ -75,6 +87,33 @@ sap.ui.define(
75
87
  });
76
88
  aStateControls.push(pChildView);
77
89
  });
90
+ },
91
+ onRestore: function() {
92
+ var oView = this.getView(),
93
+ oNavContainer = oView.byId("appContent");
94
+ var oInternalModel = oNavContainer.getModel("internal");
95
+ var oPages = oInternalModel.getProperty("/pages");
96
+
97
+ for (var sComponentId in oPages) {
98
+ oInternalModel.setProperty("/pages/" + sComponentId + "/restoreStatus", "pending");
99
+ }
100
+ },
101
+ onSuspend: function() {
102
+ var oFCLController = this.getView().getController();
103
+ var oFCLControl = oFCLController.getFclControl();
104
+ var aBeginColumnPages = oFCLControl.getBeginColumnPages() || [];
105
+ var aMidColumnPages = oFCLControl.getMidColumnPages() || [];
106
+ var aEndColumnPages = oFCLControl.getEndColumnPages() || [];
107
+ var aPages = [].concat(aBeginColumnPages, aMidColumnPages, aEndColumnPages);
108
+
109
+ aPages.forEach(function(oPage) {
110
+ var oTargetView = _getViewFromContainer(oPage);
111
+
112
+ var oController = oTargetView && oTargetView.getController();
113
+ if (oController && oController.viewState && oController.viewState.onSuspend) {
114
+ return oController.viewState.onSuspend();
115
+ }
116
+ });
78
117
  }
79
118
  }),
80
119
 
@@ -497,9 +536,11 @@ sap.ui.define(
497
536
  if (FCLLevel >= this._oFCLConfig.maxColumnsCount) {
498
537
  // The view is on a level > max number of columns. It's always fullscreen without close/exit buttons
499
538
  viewColumn = oFclColName[this._oFCLConfig.maxColumnsCount - 1];
539
+ oUIState.actionButtonsInfo.midColumn.fullScreen = null;
500
540
  oUIState.actionButtonsInfo.midColumn.exitFullScreen = null;
501
541
  oUIState.actionButtonsInfo.midColumn.closeColumn = null;
502
542
  oUIState.actionButtonsInfo.endColumn.exitFullScreen = null;
543
+ oUIState.actionButtonsInfo.endColumn.fullScreen = null;
503
544
  oUIState.actionButtonsInfo.endColumn.closeColumn = null;
504
545
  } else {
505
546
  viewColumn = oFclColName[FCLLevel];
@@ -519,7 +560,13 @@ sap.ui.define(
519
560
  // so we have to add this info manually
520
561
  oUIState.actionButtonsInfo.beginColumn = { fullScreen: null, exitFullScreen: null, closeColumn: null };
521
562
 
522
- oView.getModel("fclhelper").setProperty("/actionButtonsInfo", Object.assign({}, oUIState.actionButtonsInfo[viewColumn]));
563
+ var oActionButtonInfos = Object.assign({}, oUIState.actionButtonsInfo[viewColumn]);
564
+ oActionButtonInfos.switchVisible = oActionButtonInfos.fullScreen !== null || oActionButtonInfos.exitFullScreen !== null;
565
+ oActionButtonInfos.switchIcon =
566
+ oActionButtonInfos.fullScreen !== null ? "sap-icon://full-screen" : "sap-icon://exit-full-screen";
567
+ oActionButtonInfos.isFullScreen = oActionButtonInfos.fullScreen === null;
568
+
569
+ oView.getModel("fclhelper").setProperty("/actionButtonsInfo", oActionButtonInfos);
523
570
 
524
571
  oView.getModel("fclhelper").setProperty("/showShareIcon", this._updateShareButtonVisibility(viewColumn, sLayout));
525
572
  },
@@ -550,11 +597,7 @@ sap.ui.define(
550
597
 
551
598
  // Update the layout of the FlexibleColumnLayout
552
599
  if (sLayout) {
553
- if (!this.getFclControl().getModel("fcl")) {
554
- this.getFclControl().setModel(new JSONModel(), "fcl");
555
- this.getFclControl().bindProperty("layout", "fcl>/layout");
556
- }
557
- this.getFclControl().setProperty("layout", sLayout);
600
+ this.getFclControl().setLayout(sLayout);
558
601
  }
559
602
  }
560
603
  },
@@ -707,6 +750,66 @@ sap.ui.define(
707
750
  }
708
751
 
709
752
  return aViews;
753
+ },
754
+
755
+ onContainerReady: function() {
756
+ // Restore views if neccessary.
757
+ var aViews = this._getAllVisibleViews();
758
+ var aRestorePromises = [];
759
+ aViews.reduce(function(aPromises, oTargetView) {
760
+ aPromises.push(KeepAliveHelper.restoreView(oTargetView));
761
+ return aPromises;
762
+ }, aRestorePromises);
763
+ return Promise.all(aRestorePromises);
764
+ },
765
+
766
+ getRightmostContext: function() {
767
+ var oContext;
768
+ switch (this.getFclControl().getLayout()) {
769
+ case sap.f.LayoutType.OneColumn:
770
+ if (this.getFclControl().getCurrentBeginColumnPage()) {
771
+ oContext = _getViewFromContainer(this.getFclControl().getCurrentBeginColumnPage()).getBindingContext();
772
+ }
773
+ break;
774
+
775
+ case sap.f.LayoutType.TwoColumnsBeginExpanded:
776
+ case sap.f.LayoutType.TwoColumnsMidExpanded:
777
+ if (this.getFclControl().getCurrentMidColumnPage()) {
778
+ oContext = _getViewFromContainer(this.getFclControl().getCurrentMidColumnPage()).getBindingContext();
779
+ }
780
+ break;
781
+
782
+ case sap.f.LayoutType.ThreeColumnsEndExpanded:
783
+ case sap.f.LayoutType.ThreeColumnsMidExpanded:
784
+ case sap.f.LayoutType.ThreeColumnsMidExpandedEndHidden:
785
+ case sap.f.LayoutType.ThreeColumnsBeginExpandedEndHidden:
786
+ case sap.f.LayoutType.EndColumnFullScreen:
787
+ if (this.getFclControl().getCurrentEndColumnPage()) {
788
+ oContext = _getViewFromContainer(this.getFclControl().getCurrentEndColumnPage()).getBindingContext();
789
+ }
790
+ break;
791
+
792
+ case sap.f.LayoutType.MidColumnFullScreen:
793
+ // In this case we need to determine if this mid column fullscreen comes from a 2 or a 3 column layout
794
+ var sLayoutWhenExitFullScreen = this.getHelper().getCurrentUIState().actionButtonsInfo.midColumn.exitFullScreen;
795
+ if (sLayoutWhenExitFullScreen.indexOf("ThreeColumn") >= 0) {
796
+ // We come from a 3 column layout
797
+ if (this.getFclControl().getCurrentEndColumnPage()) {
798
+ oContext = _getViewFromContainer(this.getFclControl().getCurrentEndColumnPage()).getBindingContext();
799
+ }
800
+ } else {
801
+ // We come from a 2 column layout
802
+ if (this.getFclControl().getCurrentMidColumnPage()) {
803
+ oContext = _getViewFromContainer(this.getFclControl().getCurrentMidColumnPage()).getBindingContext();
804
+ }
805
+ }
806
+ break;
807
+
808
+ default:
809
+ Log.error("Unhandled switch case for " + this.getFclControl().getLayout());
810
+ }
811
+
812
+ return oContext;
710
813
  }
711
814
  });
712
815
  },