@sapui5/sap.fe.templates 1.102.2 → 1.104.1
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 +3 -4
- package/src/sap/fe/templates/.library +1 -1
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.js +2 -2
- package/src/sap/fe/templates/AnalyticalListPage/chart/FEChartDelegate.ts +1 -1
- package/src/sap/fe/templates/Feedback.js +18 -18
- package/src/sap/fe/templates/Feedback.ts +12 -12
- package/src/sap/fe/templates/ListReport/ExtensionAPI.js +9 -12
- package/src/sap/fe/templates/ListReport/ExtensionAPI.ts +9 -12
- package/src/sap/fe/templates/ListReport/ListReport.view.xml +4 -3
- package/src/sap/fe/templates/ListReport/ListReportController.controller.js +102 -313
- package/src/sap/fe/templates/ListReport/ListReportController.controller.ts +109 -297
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.js +367 -0
- package/src/sap/fe/templates/ListReport/controls/MultipleModeControl.ts +259 -0
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.js +16 -9
- package/src/sap/fe/templates/ListReport/overrides/IntentBasedNavigation.ts +17 -11
- package/src/sap/fe/templates/ListReport/overrides/Share.js +3 -4
- package/src/sap/fe/templates/ListReport/overrides/Share.ts +6 -7
- package/src/sap/fe/templates/ListReport/overrides/ViewState.js +22 -31
- package/src/sap/fe/templates/ListReport/overrides/ViewState.ts +33 -37
- package/src/sap/fe/templates/ListReport/view/fragments/CollectionVisualization.fragment.xml +1 -1
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.js +19 -3
- package/src/sap/fe/templates/ListReport/view/fragments/MultipleMode.fragment.ts +75 -47
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.js +12 -16
- package/src/sap/fe/templates/ObjectPage/ExtensionAPI.ts +17 -20
- package/src/sap/fe/templates/ObjectPage/ObjectPage.view.xml +5 -4
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.js +270 -244
- package/src/sap/fe/templates/ObjectPage/ObjectPageController.controller.ts +175 -235
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.js +62 -73
- package/src/sap/fe/templates/ObjectPage/ObjectPageTemplating.ts +75 -90
- package/src/sap/fe/templates/ObjectPage/components/DraftHandlerButton.tsx +132 -0
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.js +2 -3
- package/src/sap/fe/templates/ObjectPage/controls/SubSectionBlock.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableHBox.designtime.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.js +1 -1
- package/src/sap/fe/templates/ObjectPage/designtime/StashableVBox.designtime.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/IntentBasedNavigation.ts +6 -6
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/InternalRouting.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/MessageHandler.ts +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.js +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Paginator.ts +1 -1
- package/src/sap/fe/templates/ObjectPage/overrides/Share.js +67 -41
- package/src/sap/fe/templates/ObjectPage/overrides/Share.ts +44 -56
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.js +2 -2
- package/src/sap/fe/templates/ObjectPage/overrides/ViewState.ts +4 -4
- package/src/sap/fe/templates/ObjectPage/view/fragments/Actions.fragment.xml +3 -10
- package/src/sap/fe/templates/ObjectPage/view/fragments/EditableHeaderFacet.fragment.xml +15 -5
- package/src/sap/fe/templates/ObjectPage/view/fragments/FooterContent.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeaderFacet.fragment.xml +1 -14
- package/src/sap/fe/templates/ObjectPage/view/fragments/HeadingTitle.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderAddress.fragment.xml +7 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderContact.fragment.xml +26 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/ObjectPageHeaderForm.fragment.xml +1 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/Section.fragment.xml +4 -1
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionContent.fragment.xml +6 -2
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionFormContent.fragment.xml +1 -0
- package/src/sap/fe/templates/ObjectPage/view/fragments/SectionMoreFormContent.fragment.xml +1 -0
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.js +25 -28
- package/src/sap/fe/templates/RootContainer/controller/Fcl.controller.ts +30 -33
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.js +3 -4
- package/src/sap/fe/templates/RootContainer/controller/NavContainer.controller.ts +4 -5
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.js +140 -52
- package/src/sap/fe/templates/RootContainer/controller/RootContainerBaseController.ts +108 -54
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.js +1 -1
- package/src/sap/fe/templates/RootContainer/overrides/EditFlow.ts +3 -3
- package/src/sap/fe/templates/TableScroller.js +3 -3
- package/src/sap/fe/templates/TableScroller.ts +2 -2
- package/src/sap/fe/templates/controls/Table.fragment.xml +1 -0
- package/src/sap/fe/templates/library.js +7 -3
- package/src/sap/fe/templates/library.ts +5 -0
- package/src/sap/fe/templates/messagebundle.properties +7 -22
- package/src/sap/fe/templates/messagebundle_ar.properties +3 -12
- package/src/sap/fe/templates/messagebundle_bg.properties +0 -9
- package/src/sap/fe/templates/messagebundle_ca.properties +2 -11
- package/src/sap/fe/templates/messagebundle_cs.properties +3 -12
- package/src/sap/fe/templates/messagebundle_cy.properties +0 -9
- package/src/sap/fe/templates/messagebundle_da.properties +3 -12
- package/src/sap/fe/templates/messagebundle_de.properties +2 -11
- package/src/sap/fe/templates/messagebundle_el.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_GB.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_US_sappsd.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_US_saprigi.properties +2 -11
- package/src/sap/fe/templates/messagebundle_en_US_saptrc.properties +1 -5
- package/src/sap/fe/templates/messagebundle_es.properties +0 -9
- package/src/sap/fe/templates/messagebundle_es_MX.properties +2 -11
- package/src/sap/fe/templates/messagebundle_et.properties +0 -9
- package/src/sap/fe/templates/messagebundle_fi.properties +2 -11
- package/src/sap/fe/templates/messagebundle_fr.properties +3 -12
- package/src/sap/fe/templates/messagebundle_fr_CA.properties +2 -11
- package/src/sap/fe/templates/messagebundle_hi.properties +2 -11
- package/src/sap/fe/templates/messagebundle_hr.properties +2 -11
- package/src/sap/fe/templates/messagebundle_hu.properties +2 -11
- package/src/sap/fe/templates/messagebundle_id.properties +2 -11
- package/src/sap/fe/templates/messagebundle_it.properties +2 -11
- package/src/sap/fe/templates/messagebundle_iw.properties +2 -11
- package/src/sap/fe/templates/messagebundle_ja.properties +2 -11
- package/src/sap/fe/templates/messagebundle_kk.properties +2 -11
- package/src/sap/fe/templates/messagebundle_ko.properties +2 -11
- package/src/sap/fe/templates/messagebundle_lt.properties +2 -11
- package/src/sap/fe/templates/messagebundle_lv.properties +0 -9
- package/src/sap/fe/templates/messagebundle_ms.properties +2 -11
- package/src/sap/fe/templates/messagebundle_nl.properties +2 -11
- package/src/sap/fe/templates/messagebundle_no.properties +0 -9
- package/src/sap/fe/templates/messagebundle_pl.properties +0 -9
- package/src/sap/fe/templates/messagebundle_pt.properties +3 -12
- package/src/sap/fe/templates/messagebundle_pt_PT.properties +2 -11
- package/src/sap/fe/templates/messagebundle_ro.properties +0 -9
- package/src/sap/fe/templates/messagebundle_ru.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sh.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sk.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sl.properties +2 -11
- package/src/sap/fe/templates/messagebundle_sv.properties +2 -11
- package/src/sap/fe/templates/messagebundle_th.properties +1 -10
- package/src/sap/fe/templates/messagebundle_tr.properties +2 -11
- package/src/sap/fe/templates/messagebundle_uk.properties +2 -11
- package/src/sap/fe/templates/messagebundle_vi.properties +0 -9
- package/src/sap/fe/templates/messagebundle_zh_CN.properties +0 -9
- package/src/sap/fe/templates/messagebundle_zh_TW.properties +2 -11
- package/src/sap/fe/templates/ObjectPage/view/fragments/SwitchDraftAndActiveObjectPopOver.fragment.xml +0 -27
|
@@ -1,30 +1,30 @@
|
|
|
1
1
|
// Formatters for the Object Page
|
|
2
|
-
import { DataField,
|
|
3
|
-
import {
|
|
4
|
-
import ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
2
|
+
import type { DataField, DataFieldTypes, HeaderInfoType } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
3
|
+
import { UIAnnotationTerms, UIAnnotationTypes } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
4
|
+
import type ResourceBundle from "sap/base/i18n/ResourceBundle";
|
|
5
5
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
6
|
-
import { ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
6
|
+
import type { ConverterAction } from "sap/fe/core/converters/controls/Common/Action";
|
|
7
7
|
import { Draft, Entity, UI } from "sap/fe/core/converters/helpers/BindingHelper";
|
|
8
|
-
import { ManifestAction } from "sap/fe/core/converters/ManifestSettings";
|
|
8
|
+
import type { ManifestAction } from "sap/fe/core/converters/ManifestSettings";
|
|
9
|
+
import type { BindingToolkitExpression, CompiledBindingToolkitExpression } from "sap/fe/core/helpers/BindingToolkit";
|
|
9
10
|
import {
|
|
10
11
|
and,
|
|
11
|
-
|
|
12
|
-
BindingExpression,
|
|
13
|
-
compileBinding,
|
|
12
|
+
compileExpression,
|
|
14
13
|
concat,
|
|
15
|
-
|
|
14
|
+
getExpressionFromAnnotation,
|
|
16
15
|
ifElse,
|
|
17
16
|
isEmpty,
|
|
18
17
|
or,
|
|
19
18
|
resolveBindingString
|
|
20
|
-
} from "sap/fe/core/helpers/
|
|
21
|
-
import { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
19
|
+
} from "sap/fe/core/helpers/BindingToolkit";
|
|
20
|
+
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
22
21
|
import CommonHelper from "sap/fe/macros/CommonHelper";
|
|
23
22
|
import { addTextArrangementToBindingExpression, formatValueRecursively } from "sap/fe/macros/field/FieldTemplating";
|
|
24
23
|
import mLibrary from "sap/m/library";
|
|
25
24
|
import ManagedObject from "sap/ui/base/ManagedObject";
|
|
26
25
|
import ODataModelAnnotationHelper from "sap/ui/model/odata/v4/AnnotationHelper";
|
|
27
|
-
import Context from "sap/ui/model/odata/v4/Context";
|
|
26
|
+
import type Context from "sap/ui/model/odata/v4/Context";
|
|
27
|
+
|
|
28
28
|
const ButtonType = mLibrary.ButtonType;
|
|
29
29
|
|
|
30
30
|
type ViewData = {
|
|
@@ -48,6 +48,7 @@ type ViewData = {
|
|
|
48
48
|
// ```
|
|
49
49
|
/**
|
|
50
50
|
* Compute the title for the object page.
|
|
51
|
+
*
|
|
51
52
|
* @param oHeaderInfo The @UI.HeaderInfo annotation content
|
|
52
53
|
* @param oViewData The view data object we're currently on
|
|
53
54
|
* @param fullContextPath The full context path used to reach that object page
|
|
@@ -59,7 +60,7 @@ export const getExpressionForTitle = function (
|
|
|
59
60
|
oViewData: ViewData,
|
|
60
61
|
fullContextPath: DataModelObjectPath,
|
|
61
62
|
oDraftRoot: Object | undefined
|
|
62
|
-
):
|
|
63
|
+
): CompiledBindingToolkitExpression {
|
|
63
64
|
const titleNoHeaderInfo = CommonUtils.getTranslatedText("T_NEW_OBJECT", oViewData.resourceBundle, undefined, oViewData.entitySet);
|
|
64
65
|
|
|
65
66
|
const titleWithHeaderInfo = CommonUtils.getTranslatedText(
|
|
@@ -76,7 +77,7 @@ export const getExpressionForTitle = function (
|
|
|
76
77
|
? CommonUtils.getTranslatedText("T_ANNOTATION_HELPER_DEFAULT_OBJECT_PAGE_HEADER_TITLE_NO_HEADER_INFO", oViewData.resourceBundle)
|
|
77
78
|
: "";
|
|
78
79
|
|
|
79
|
-
let titleValueExpression =
|
|
80
|
+
let titleValueExpression = getExpressionFromAnnotation((oHeaderInfo?.Title as DataFieldTypes)?.Value);
|
|
80
81
|
if ((oHeaderInfo?.Title as DataFieldTypes)?.Value?.$target?.annotations?.Common?.Text?.annotations?.UI?.TextArrangement) {
|
|
81
82
|
// In case an explicit text arrangement was set we make use of it in the description as well
|
|
82
83
|
titleValueExpression = addTextArrangementToBindingExpression(titleValueExpression, fullContextPath);
|
|
@@ -86,11 +87,11 @@ export const getExpressionForTitle = function (
|
|
|
86
87
|
|
|
87
88
|
// If there is a TypeName defined, show the default title 'New + TypeName', otherwise show the custom title or the default 'New object'
|
|
88
89
|
const createModeTitle = oHeaderInfo?.TypeName
|
|
89
|
-
? concat(titleWithHeaderInfo, ": ",
|
|
90
|
+
? concat(titleWithHeaderInfo, ": ", getExpressionFromAnnotation(oHeaderInfo.TypeName.toString()))
|
|
90
91
|
: titleNoHeaderInfo;
|
|
91
92
|
const activeExpression = oDraftRoot ? Entity.IsActive : true;
|
|
92
93
|
|
|
93
|
-
return
|
|
94
|
+
return compileExpression(
|
|
94
95
|
ifElse(
|
|
95
96
|
// If Create Mode && Empty expression
|
|
96
97
|
and(or(UI.IsCreateModeSticky, UI.IsCreateMode), titleValueExpression && isEmpty(titleValueExpression)),
|
|
@@ -116,14 +117,14 @@ export const getExpressionForTitle = function (
|
|
|
116
117
|
export const getExpressionForDescription = function (
|
|
117
118
|
oHeaderInfo: HeaderInfoType | undefined,
|
|
118
119
|
fullContextPath: DataModelObjectPath
|
|
119
|
-
):
|
|
120
|
-
let
|
|
120
|
+
): CompiledBindingToolkitExpression {
|
|
121
|
+
let pathInModel = getExpressionFromAnnotation((oHeaderInfo?.Description as DataFieldTypes)?.Value);
|
|
121
122
|
if ((oHeaderInfo?.Description as DataFieldTypes)?.Value?.$target?.annotations?.Common?.Text?.annotations?.UI?.TextArrangement) {
|
|
122
123
|
// In case an explicit text arrangement was set we make use of it in the description as well
|
|
123
|
-
|
|
124
|
+
pathInModel = addTextArrangementToBindingExpression(pathInModel, fullContextPath);
|
|
124
125
|
}
|
|
125
126
|
|
|
126
|
-
return
|
|
127
|
+
return compileExpression(formatValueRecursively(pathInModel, fullContextPath));
|
|
127
128
|
};
|
|
128
129
|
|
|
129
130
|
/**
|
|
@@ -133,7 +134,10 @@ export const getExpressionForDescription = function (
|
|
|
133
134
|
* @param fullContextPath The path used up until here
|
|
134
135
|
* @returns The binding expression that shows the right save button text
|
|
135
136
|
*/
|
|
136
|
-
export const getExpressionForSaveButton = function (
|
|
137
|
+
export const getExpressionForSaveButton = function (
|
|
138
|
+
oViewData: ViewData,
|
|
139
|
+
fullContextPath: DataModelObjectPath
|
|
140
|
+
): CompiledBindingToolkitExpression {
|
|
137
141
|
const saveButtonText = CommonUtils.getTranslatedText("T_OP_OBJECT_PAGE_SAVE", oViewData.resourceBundle);
|
|
138
142
|
const createButtonText = CommonUtils.getTranslatedText("T_OP_OBJECT_PAGE_CREATE", oViewData.resourceBundle);
|
|
139
143
|
let saveExpression;
|
|
@@ -145,7 +149,7 @@ export const getExpressionForSaveButton = function (oViewData: ViewData, fullCon
|
|
|
145
149
|
// If we're in draft AND the draft is a new object (!IsActiveEntity && !HasActiveEntity), show create, else show save
|
|
146
150
|
saveExpression = ifElse(Draft.IsNewObject, createButtonText, saveButtonText);
|
|
147
151
|
}
|
|
148
|
-
return
|
|
152
|
+
return compileExpression(saveExpression);
|
|
149
153
|
};
|
|
150
154
|
|
|
151
155
|
/**
|
|
@@ -153,13 +157,16 @@ export const getExpressionForSaveButton = function (oViewData: ViewData, fullCon
|
|
|
153
157
|
*
|
|
154
158
|
* @function
|
|
155
159
|
* @name getFooterVisible
|
|
156
|
-
* @param
|
|
157
|
-
* @param
|
|
158
|
-
* @returns
|
|
160
|
+
* @param footerActions The footer action object coming from the converter
|
|
161
|
+
* @param dataFields Data field array for normal footer visibility processing
|
|
162
|
+
* @returns `true` if any action is true, otherwise compiled Binding or `false`
|
|
159
163
|
*/
|
|
160
|
-
export const getFooterVisible = function (
|
|
164
|
+
export const getFooterVisible = function (
|
|
165
|
+
footerActions: ConverterAction[],
|
|
166
|
+
dataFields: DataField[]
|
|
167
|
+
): boolean | CompiledBindingToolkitExpression {
|
|
161
168
|
const manifestActions = footerActions.filter((action) => isManifestAction(action)) as ManifestAction[];
|
|
162
|
-
let customActionVisibility:
|
|
169
|
+
let customActionVisibility: BindingToolkitExpression<boolean>;
|
|
163
170
|
if (manifestActions.length) {
|
|
164
171
|
// If we have manifest actions
|
|
165
172
|
const customActionIndividualVisibility = manifestActions.map((action) => {
|
|
@@ -170,7 +177,7 @@ export const getFooterVisible = function (footerActions: ConverterAction[], data
|
|
|
170
177
|
// and then the binding of all annotation actions inside the footer ...
|
|
171
178
|
const annotationActionVisibility = getDataFieldBasedFooterVisibility(dataFields, true);
|
|
172
179
|
// finally, return everything.
|
|
173
|
-
return
|
|
180
|
+
return compileExpression(or(customActionVisibility, resolveBindingString<boolean>(annotationActionVisibility, "boolean")));
|
|
174
181
|
}
|
|
175
182
|
return getDataFieldBasedFooterVisibility(dataFields, true);
|
|
176
183
|
};
|
|
@@ -182,12 +189,12 @@ export const getFooterVisible = function (footerActions: ConverterAction[], data
|
|
|
182
189
|
* @static
|
|
183
190
|
* @name sap.fe.templates.ObjectPage.ObjectPageTemplating.getDataFieldBasedFooterVisibility
|
|
184
191
|
* @memberof sap.fe.templates.ObjectPage.ObjectPageTemplating
|
|
185
|
-
* @param
|
|
186
|
-
* @param
|
|
187
|
-
* @returns
|
|
192
|
+
* @param aDataFields Array of DataFields in the identification
|
|
193
|
+
* @param bConsiderEditable Whether the edit mode binding is required or not
|
|
194
|
+
* @returns An expression if all the actions are ui.hidden, true otherwise
|
|
188
195
|
* @private
|
|
189
196
|
* @ui5-restricted
|
|
190
|
-
|
|
197
|
+
*/
|
|
191
198
|
export const getDataFieldBasedFooterVisibility = function (aDataFields: any[], bConsiderEditable: boolean) {
|
|
192
199
|
let sHiddenExpression = "";
|
|
193
200
|
let sSemiHiddenExpression;
|
|
@@ -235,8 +242,8 @@ export const getDataFieldBasedFooterVisibility = function (aDataFields: any[], b
|
|
|
235
242
|
*
|
|
236
243
|
* @function
|
|
237
244
|
* @name isManifestActionVisible
|
|
238
|
-
* @param
|
|
239
|
-
* @returns
|
|
245
|
+
* @param oAction The action object
|
|
246
|
+
* @returns `true` if action is coming from manifest, `false` otherwise
|
|
240
247
|
*/
|
|
241
248
|
export const isManifestAction = function (oAction: any) {
|
|
242
249
|
const aActions = [
|
|
@@ -260,11 +267,11 @@ export const isManifestAction = function (oAction: any) {
|
|
|
260
267
|
* @static
|
|
261
268
|
* @name sap.fe.templates.ObjectPage.ObjectPageTemplating.buildEmphasizedButtonExpression
|
|
262
269
|
* @memberof sap.fe.templates.ObjectPage.ObjectPageTemplating
|
|
263
|
-
* @param
|
|
264
|
-
* @returns
|
|
270
|
+
* @param aIdentification Array of all the DataFields in Identification
|
|
271
|
+
* @returns An expression to deduce if button type is Default or Emphasized
|
|
265
272
|
* @private
|
|
266
273
|
* @ui5-restricted
|
|
267
|
-
|
|
274
|
+
*/
|
|
268
275
|
export const buildEmphasizedButtonExpression = function (aIdentification?: any[]) {
|
|
269
276
|
if (!aIdentification) {
|
|
270
277
|
return ButtonType.Emphasized;
|
|
@@ -351,8 +358,8 @@ export const getElementBinding = function (sPath: any) {
|
|
|
351
358
|
/**
|
|
352
359
|
* Function to check if draft pattern is supported.
|
|
353
360
|
*
|
|
354
|
-
* @param
|
|
355
|
-
* @returns
|
|
361
|
+
* @param oAnnotations Annotations of the current entity set.
|
|
362
|
+
* @returns Returns the Boolean value based on draft state
|
|
356
363
|
*/
|
|
357
364
|
export const checkDraftState = function (oAnnotations: any) {
|
|
358
365
|
if (
|
|
@@ -368,8 +375,8 @@ export const checkDraftState = function (oAnnotations: any) {
|
|
|
368
375
|
/**
|
|
369
376
|
* Function to get the visibility for the SwitchToActive button in the object page or subobject page.
|
|
370
377
|
*
|
|
371
|
-
* @param
|
|
372
|
-
* @returns
|
|
378
|
+
* @param oAnnotations Annotations of the current entity set.
|
|
379
|
+
* @returns Returns expression binding or Boolean value based on the draft state
|
|
373
380
|
*/
|
|
374
381
|
export const getSwitchToActiveVisibility = function (oAnnotations: any): any {
|
|
375
382
|
if (checkDraftState(oAnnotations)) {
|
|
@@ -382,8 +389,8 @@ export const getSwitchToActiveVisibility = function (oAnnotations: any): any {
|
|
|
382
389
|
/**
|
|
383
390
|
* Function to get the visibility for the SwitchToDraft button in the object page or subobject page.
|
|
384
391
|
*
|
|
385
|
-
* @param
|
|
386
|
-
* @returns
|
|
392
|
+
* @param oAnnotations Annotations of the current entity set.
|
|
393
|
+
* @returns Returns expression binding or Boolean value based on the draft state
|
|
387
394
|
*/
|
|
388
395
|
export const getSwitchToDraftVisibility = function (oAnnotations: any): any {
|
|
389
396
|
if (checkDraftState(oAnnotations)) {
|
|
@@ -396,8 +403,8 @@ export const getSwitchToDraftVisibility = function (oAnnotations: any): any {
|
|
|
396
403
|
/**
|
|
397
404
|
* Function to get the visibility for the SwitchDraftAndActive button in the object page or subobject page.
|
|
398
405
|
*
|
|
399
|
-
* @param
|
|
400
|
-
* @returns
|
|
406
|
+
* @param oAnnotations Annotations of the current entity set.
|
|
407
|
+
* @returns Returns expression binding or Boolean value based on the draft state
|
|
401
408
|
*/
|
|
402
409
|
export const getSwitchDraftAndActiveVisibility = function (oAnnotations: any): any {
|
|
403
410
|
if (checkDraftState(oAnnotations)) {
|
|
@@ -410,9 +417,9 @@ export const getSwitchDraftAndActiveVisibility = function (oAnnotations: any): a
|
|
|
410
417
|
/**
|
|
411
418
|
* Function to find an action from the array of header actions in the converter context.
|
|
412
419
|
*
|
|
413
|
-
* @param
|
|
414
|
-
* @param
|
|
415
|
-
* @returns
|
|
420
|
+
* @param aConverterContextHeaderActions Array of 'header' actions on the object page.
|
|
421
|
+
* @param sActionType The action type
|
|
422
|
+
* @returns The action with the matching action type
|
|
416
423
|
* @private
|
|
417
424
|
*/
|
|
418
425
|
export const _findAction = function (aConverterContextHeaderActions: any[], sActionType: string) {
|
|
@@ -428,8 +435,8 @@ export const _findAction = function (aConverterContextHeaderActions: any[], sAct
|
|
|
428
435
|
/**
|
|
429
436
|
* Function to format the 'enabled' property for the Delete button on the object page or subobject page in case of a Command Execution.
|
|
430
437
|
*
|
|
431
|
-
* @param
|
|
432
|
-
* @returns
|
|
438
|
+
* @param aConverterContextHeaderActions Array of header actions on the object page
|
|
439
|
+
* @returns Returns expression binding or Boolean value from the converter output
|
|
433
440
|
*/
|
|
434
441
|
export const getDeleteCommandExecutionEnabled = function (aConverterContextHeaderActions: any[]) {
|
|
435
442
|
const oDeleteAction = _findAction(aConverterContextHeaderActions, "Secondary");
|
|
@@ -439,8 +446,8 @@ export const getDeleteCommandExecutionEnabled = function (aConverterContextHeade
|
|
|
439
446
|
/**
|
|
440
447
|
* Function to format the 'visible' property for the Delete button on the object page or subobject page in case of a Command Execution.
|
|
441
448
|
*
|
|
442
|
-
* @param
|
|
443
|
-
* @returns
|
|
449
|
+
* @param aConverterContextHeaderActions Array of header actions on the object page
|
|
450
|
+
* @returns Returns expression binding or Boolean value from the converter output
|
|
444
451
|
*/
|
|
445
452
|
export const getDeleteCommandExecutionVisible = function (aConverterContextHeaderActions: any[]) {
|
|
446
453
|
const oDeleteAction = _findAction(aConverterContextHeaderActions, "Secondary");
|
|
@@ -450,8 +457,8 @@ export const getDeleteCommandExecutionVisible = function (aConverterContextHeade
|
|
|
450
457
|
/**
|
|
451
458
|
* Function to format the 'visible' property for the Edit button on the object page or subobject page in case of a Command Execution.
|
|
452
459
|
*
|
|
453
|
-
* @param
|
|
454
|
-
* @returns
|
|
460
|
+
* @param aConverterContextHeaderActions Array of header actions on the object page
|
|
461
|
+
* @returns Returns expression binding or Boolean value from the converter output
|
|
455
462
|
*/
|
|
456
463
|
export const getEditCommandExecutionVisible = function (aConverterContextHeaderActions: any[]) {
|
|
457
464
|
const oEditAction = _findAction(aConverterContextHeaderActions, "Primary");
|
|
@@ -461,8 +468,8 @@ export const getEditCommandExecutionVisible = function (aConverterContextHeaderA
|
|
|
461
468
|
/**
|
|
462
469
|
* Function to format the 'enabled' property for the Edit button on the object page or subobject page in case of a Command Execution.
|
|
463
470
|
*
|
|
464
|
-
* @param
|
|
465
|
-
* @returns
|
|
471
|
+
* @param aConverterContextHeaderActions Array of header actions on the object page
|
|
472
|
+
* @returns Returns expression binding or Boolean value from the converter output
|
|
466
473
|
*/
|
|
467
474
|
export const getEditCommandExecutionEnabled = function (aConverterContextHeaderActions: any[]) {
|
|
468
475
|
const oEditAction = _findAction(aConverterContextHeaderActions, "Primary");
|
|
@@ -472,21 +479,21 @@ export const getEditCommandExecutionEnabled = function (aConverterContextHeaderA
|
|
|
472
479
|
/**
|
|
473
480
|
* Function to get the EditAction from the Entityset based on Draft or sticky based application.
|
|
474
481
|
*
|
|
475
|
-
* @param
|
|
476
|
-
* @returns
|
|
482
|
+
* @param [oEntitySet] The value from the expression.
|
|
483
|
+
* @returns Returns expression binding or boolean value based on vRawValue & oDraftNode
|
|
477
484
|
*/
|
|
478
485
|
export const getEditAction = function (oEntitySet: Context) {
|
|
479
486
|
const sPath = oEntitySet.getPath(),
|
|
480
|
-
oAnnotations = oEntitySet.getObject(sPath
|
|
487
|
+
oAnnotations = oEntitySet.getObject(`${sPath}@`);
|
|
481
488
|
const bDraftRoot = oAnnotations.hasOwnProperty("@com.sap.vocabularies.Common.v1.DraftRoot");
|
|
482
489
|
const bStickySession = oAnnotations.hasOwnProperty("@com.sap.vocabularies.Session.v1.StickySessionSupported");
|
|
483
490
|
let sActionName;
|
|
484
491
|
if (bDraftRoot) {
|
|
485
|
-
sActionName = oEntitySet.getObject(sPath
|
|
492
|
+
sActionName = oEntitySet.getObject(`${sPath}@com.sap.vocabularies.Common.v1.DraftRoot/EditAction`);
|
|
486
493
|
} else if (bStickySession) {
|
|
487
|
-
sActionName = oEntitySet.getObject(sPath
|
|
494
|
+
sActionName = oEntitySet.getObject(`${sPath}@com.sap.vocabularies.Session.v1.StickySessionSupported/EditAction`);
|
|
488
495
|
}
|
|
489
|
-
return !sActionName ? sActionName : sPath
|
|
496
|
+
return !sActionName ? sActionName : `${sPath}/${sActionName}`;
|
|
490
497
|
};
|
|
491
498
|
|
|
492
499
|
export const isReadOnlyFromStaticAnnotations = function (oAnnotations: any, oFieldControl: any) {
|
|
@@ -519,14 +526,14 @@ export const readOnlyExpressionFromDynamicAnnotations = function (oFieldControl:
|
|
|
519
526
|
if (sIsFieldControlPathReadOnly) {
|
|
520
527
|
return "{= " + sIsFieldControlPathReadOnly + "? false : true }";
|
|
521
528
|
} else {
|
|
522
|
-
return;
|
|
529
|
+
return undefined;
|
|
523
530
|
}
|
|
524
531
|
};
|
|
525
532
|
|
|
526
533
|
/*
|
|
527
534
|
* Function to get the expression for chart Title Press
|
|
528
535
|
*
|
|
529
|
-
* @
|
|
536
|
+
* @functionw
|
|
530
537
|
* @param {oConfiguration} [oConfigurations] control configuration from manifest
|
|
531
538
|
* @param {oManifest} [oManifest] Outbounds from manifest
|
|
532
539
|
* returns {String} [sCollectionName] Collection Name of the Micro Chart
|
|
@@ -623,8 +630,8 @@ export const getBindingWithGroupIdFromConfig = function (oConfigurations: any, s
|
|
|
623
630
|
/**
|
|
624
631
|
* Method to check whether a FieldGroup consists of only 1 DataField with MultiLine Text annotation.
|
|
625
632
|
*
|
|
626
|
-
* @param
|
|
627
|
-
* @returns
|
|
633
|
+
* @param aFormElements A collection of form elements used in the current field group
|
|
634
|
+
* @returns Returns true if only 1 data field with Multiline Text annotation exists.
|
|
628
635
|
*/
|
|
629
636
|
export const doesFieldGroupContainOnlyOneMultiLineDataField = function (aFormElements: any[]) {
|
|
630
637
|
return aFormElements && aFormElements.length === 1 && !!aFormElements[0].isValueMultilineText;
|
|
@@ -743,9 +750,7 @@ export const getPressExpressionForEdit = function (oDataField: any, sEntitySetNa
|
|
|
743
750
|
label: CommonHelper.addSingleQuotes(oDataField && oDataField.Label, true),
|
|
744
751
|
isNavigable: oHeaderAction && oHeaderAction.isNavigable,
|
|
745
752
|
defaultValuesExtensionFunction:
|
|
746
|
-
oHeaderAction && oHeaderAction.defaultValuesExtensionFunction
|
|
747
|
-
? "'" + oHeaderAction.defaultValuesExtensionFunction + "'"
|
|
748
|
-
: undefined
|
|
753
|
+
oHeaderAction && oHeaderAction.defaultValuesExtensionFunction ? `'${oHeaderAction.defaultValuesExtensionFunction}'` : undefined
|
|
749
754
|
};
|
|
750
755
|
return CommonHelper.generateFunction(".handlers.onCallAction", "${$view>/}", sEditableContexts, CommonHelper.objectToString(oParams));
|
|
751
756
|
};
|
|
@@ -771,9 +776,7 @@ export const getPressExpressionForFooterAnnotationAction = function (oDataField:
|
|
|
771
776
|
label: CommonHelper.addSingleQuotes(oDataField && oDataField.Label, true),
|
|
772
777
|
isNavigable: oHeaderAction && oHeaderAction.isNavigable,
|
|
773
778
|
defaultValuesExtensionFunction:
|
|
774
|
-
oHeaderAction && oHeaderAction.defaultValuesExtensionFunction
|
|
775
|
-
? "'" + oHeaderAction.defaultValuesExtensionFunction + "'"
|
|
776
|
-
: undefined
|
|
779
|
+
oHeaderAction && oHeaderAction.defaultValuesExtensionFunction ? `'${oHeaderAction.defaultValuesExtensionFunction}'` : undefined
|
|
777
780
|
};
|
|
778
781
|
return CommonHelper.generateFunction(".handlers.onCallAction", "${$view>/}", sActionContexts, CommonHelper.objectToString(oParams));
|
|
779
782
|
};
|
|
@@ -817,21 +820,3 @@ export const getPressExpressionForLink = function (oConfiguration: any, oManifes
|
|
|
817
820
|
}
|
|
818
821
|
}
|
|
819
822
|
};
|
|
820
|
-
|
|
821
|
-
export const isSubSectionTitleVisible = function (sSubSectionvisible: any, sSubSectiontitle: any, sSubSectionshowTitle: any) {
|
|
822
|
-
if (sSubSectionvisible.indexOf("{=") === 0) {
|
|
823
|
-
// Dynamic expression
|
|
824
|
-
const sExpressionResult = sSubSectionvisible.substring(sSubSectionvisible.indexOf("{=") + 2, sSubSectionvisible.lastIndexOf("}"));
|
|
825
|
-
return (
|
|
826
|
-
"{= (" +
|
|
827
|
-
sExpressionResult +
|
|
828
|
-
") && ('" +
|
|
829
|
-
sSubSectiontitle +
|
|
830
|
-
"' !=='undefined') && (" +
|
|
831
|
-
sSubSectionshowTitle +
|
|
832
|
-
" ? true : false) }"
|
|
833
|
-
);
|
|
834
|
-
} else {
|
|
835
|
-
return sSubSectionvisible && sSubSectiontitle !== "undefined" && (sSubSectionshowTitle ? "true" : "false");
|
|
836
|
-
}
|
|
837
|
-
};
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
import { BuildingBlockBase, defineBuildingBlock, xmlAttribute } from "sap/fe/core/buildingBlocks/BuildingBlock";
|
|
2
|
+
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
3
|
+
import { Entity, UI } from "sap/fe/core/converters/helpers/BindingHelper";
|
|
4
|
+
import { and, ifElse, not, pathInModel } from "sap/fe/core/helpers/BindingToolkit";
|
|
5
|
+
import { defineReference, PropertiesOf } from "sap/fe/core/helpers/ClassSupport";
|
|
6
|
+
import { Ref } from "sap/fe/core/jsx-runtime/jsx";
|
|
7
|
+
import PageController from "sap/fe/core/PageController";
|
|
8
|
+
import { getSwitchDraftAndActiveVisibility } from "sap/fe/templates/ObjectPage/ObjectPageTemplating";
|
|
9
|
+
import Button from "sap/m/Button";
|
|
10
|
+
import ResponsivePopover from "sap/m/ResponsivePopover";
|
|
11
|
+
import SelectList from "sap/m/SelectList";
|
|
12
|
+
import Event from "sap/ui/base/Event";
|
|
13
|
+
import { PropertyBindingInfo } from "sap/ui/base/ManagedObject";
|
|
14
|
+
import InvisibleText from "sap/ui/core/InvisibleText";
|
|
15
|
+
import Item from "sap/ui/core/Item";
|
|
16
|
+
import View from "sap/ui/core/mvc/View";
|
|
17
|
+
import Context from "sap/ui/model/Context";
|
|
18
|
+
import type { V4Context } from "types/extension_types";
|
|
19
|
+
|
|
20
|
+
@defineBuildingBlock({ name: "DraftHandlerButton", namespace: "sap.fe.templates.ObjectPage.components", isRuntime: true })
|
|
21
|
+
export default class DraftHandlerButton extends BuildingBlockBase {
|
|
22
|
+
private _containingView!: View;
|
|
23
|
+
private popover?: ResponsivePopover;
|
|
24
|
+
|
|
25
|
+
private readonly SWITCH_TO_DRAFT_KEY = "switchToDraft";
|
|
26
|
+
private readonly SWITCH_TO_ACTIVE_KEY = "switchToActive";
|
|
27
|
+
|
|
28
|
+
constructor(oProps: PropertiesOf<DraftHandlerButton>) {
|
|
29
|
+
super(oProps);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@xmlAttribute({ type: "string" })
|
|
33
|
+
public id!: string;
|
|
34
|
+
|
|
35
|
+
@xmlAttribute({ type: "sap.ui.model.Context" })
|
|
36
|
+
public contextPath!: Context;
|
|
37
|
+
|
|
38
|
+
@defineReference()
|
|
39
|
+
public switchToActiveRef!: Ref<Item>;
|
|
40
|
+
@defineReference()
|
|
41
|
+
public switchToDraftRef!: Ref<Item>;
|
|
42
|
+
|
|
43
|
+
private initialSelectedKey: string = this.SWITCH_TO_ACTIVE_KEY;
|
|
44
|
+
|
|
45
|
+
handleSelectedItemChange = (event: Event) => {
|
|
46
|
+
const selectedItemKey = event.getParameter("item").getProperty("key");
|
|
47
|
+
if (selectedItemKey !== this.initialSelectedKey) {
|
|
48
|
+
(this._containingView.getController() as PageController).editFlow.toggleDraftActive(
|
|
49
|
+
this._containingView.getBindingContext() as V4Context
|
|
50
|
+
);
|
|
51
|
+
}
|
|
52
|
+
if (this.popover) {
|
|
53
|
+
this.popover.close();
|
|
54
|
+
this.popover.destroy();
|
|
55
|
+
delete this.popover;
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
|
|
59
|
+
openSwitchActivePopover = (event: Event) => {
|
|
60
|
+
const sourceControl = event.getSource();
|
|
61
|
+
const containingView = CommonUtils.getTargetView(sourceControl);
|
|
62
|
+
|
|
63
|
+
const context: V4Context = containingView.getBindingContext();
|
|
64
|
+
const isActiveEntity = context.getObject().IsActiveEntity;
|
|
65
|
+
this.initialSelectedKey = isActiveEntity ? this.SWITCH_TO_ACTIVE_KEY : this.SWITCH_TO_DRAFT_KEY;
|
|
66
|
+
this.popover = this.createPopover();
|
|
67
|
+
|
|
68
|
+
this._containingView = containingView;
|
|
69
|
+
containingView.addDependent(this.popover);
|
|
70
|
+
this.popover.openBy(sourceControl);
|
|
71
|
+
this.popover.attachEventOnce("afterOpen", () => {
|
|
72
|
+
if (isActiveEntity) {
|
|
73
|
+
this.switchToDraftRef.current?.focus();
|
|
74
|
+
} else {
|
|
75
|
+
this.switchToActiveRef.current?.focus();
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return this.popover;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
createPopover(): ResponsivePopover {
|
|
82
|
+
return (
|
|
83
|
+
<ResponsivePopover
|
|
84
|
+
showHeader={false}
|
|
85
|
+
contentWidth={"15.625rem"}
|
|
86
|
+
verticalScrolling={false}
|
|
87
|
+
class={"sapUiNoContentPadding"}
|
|
88
|
+
placement={"Bottom"}
|
|
89
|
+
>
|
|
90
|
+
<SelectList selectedKey={this.initialSelectedKey} itemPress={this.handleSelectedItemChange}>
|
|
91
|
+
<Item
|
|
92
|
+
text={"{sap.fe.i18n>C_COMMON_OBJECT_PAGE_DISPLAY_DRAFT_MIT}"}
|
|
93
|
+
key={this.SWITCH_TO_DRAFT_KEY}
|
|
94
|
+
ref={this.switchToDraftRef}
|
|
95
|
+
/>
|
|
96
|
+
<Item
|
|
97
|
+
text={"{sap.fe.i18n>C_COMMON_OBJECT_PAGE_DISPLAY_SAVED_VERSION_MIT}"}
|
|
98
|
+
key={this.SWITCH_TO_ACTIVE_KEY}
|
|
99
|
+
ref={this.switchToActiveRef}
|
|
100
|
+
/>
|
|
101
|
+
</SelectList>
|
|
102
|
+
</ResponsivePopover>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
render() {
|
|
107
|
+
const textValue = ifElse(
|
|
108
|
+
and(not(UI.IsEditable), not(UI.IsCreateMode), Entity.HasDraft),
|
|
109
|
+
pathInModel("C_COMMON_OBJECT_PAGE_SAVED_VERSION_BUT", "sap.fe.i18n"),
|
|
110
|
+
pathInModel("C_COMMON_OBJECT_PAGE_DRAFT_BUT", "sap.fe.i18n")
|
|
111
|
+
) as PropertyBindingInfo;
|
|
112
|
+
const visible = getSwitchDraftAndActiveVisibility(this.contextPath.getObject("@"));
|
|
113
|
+
return (
|
|
114
|
+
<>
|
|
115
|
+
<Button
|
|
116
|
+
id="fe::StandardAction::SwitchDraftAndActiveObject"
|
|
117
|
+
text={textValue}
|
|
118
|
+
visible={visible}
|
|
119
|
+
icon="sap-icon://navigation-down-arrow"
|
|
120
|
+
iconFirst={false}
|
|
121
|
+
type="Transparent"
|
|
122
|
+
press={this.openSwitchActivePopover}
|
|
123
|
+
ariaDescribedBy={["fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"]}
|
|
124
|
+
></Button>
|
|
125
|
+
<InvisibleText
|
|
126
|
+
text="{sap.fe.i18n>T_HEADER_DATAPOINT_TITLE_DRAFT_SWITCHER_ARIA_BUTTON}"
|
|
127
|
+
id="fe::StandardAction::SwitchDraftAndActiveObject::AriaTextDraftSwitcher"
|
|
128
|
+
/>
|
|
129
|
+
</>
|
|
130
|
+
);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -81,8 +81,7 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/uxap/BlockBase", "sap/ux
|
|
|
81
81
|
;
|
|
82
82
|
|
|
83
83
|
_proto._getSelectedViewContent = function _getSelectedViewContent() {
|
|
84
|
-
|
|
85
|
-
return oContent;
|
|
84
|
+
return this.getAggregation("content");
|
|
86
85
|
};
|
|
87
86
|
|
|
88
87
|
return SubSectionBlock;
|
|
@@ -99,4 +98,4 @@ sap.ui.define(["sap/fe/core/helpers/ClassSupport", "sap/uxap/BlockBase", "sap/ux
|
|
|
99
98
|
})), _class2)) || _class);
|
|
100
99
|
return SubSectionBlock;
|
|
101
100
|
}, false);
|
|
102
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
101
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN1YlNlY3Rpb25CbG9jay50cyJdLCJuYW1lcyI6WyJCbG9ja0Jhc2VGb3JtQWRqdXN0bWVudCIsInV4YXBMaWIiLCJTdWJTZWN0aW9uQmxvY2siLCJkZWZpbmVVSTVDbGFzcyIsInByb3BlcnR5IiwidHlwZSIsImdyb3VwIiwiZGVmYXVsdFZhbHVlIiwiYWdncmVnYXRpb24iLCJtdWx0aXBsZSIsImluaXQiLCJfYkNvbm5lY3RlZCIsIl9hcHBseUZvcm1BZGp1c3RtZW50Iiwic0Zvcm1BZGp1c3RtZW50IiwiZ2V0Rm9ybUFkanVzdG1lbnQiLCJvVmlldyIsIl9nZXRTZWxlY3RlZFZpZXdDb250ZW50Iiwib1BhcmVudCIsIl9vUGFyZW50T2JqZWN0UGFnZVN1YlNlY3Rpb24iLCJvRm9ybUFkanVzdG1lbnRGaWVsZHMiLCJOb25lIiwiX2NvbXB1dGVGb3JtQWRqdXN0bWVudEZpZWxkcyIsIl9vTGF5b3V0Q29uZmlnIiwiX2FkanVzdEZvcm0iLCJzZXRNb2RlIiwic01vZGUiLCJzZXRQcm9wZXJ0eSIsImNvbm5lY3RUb01vZGVscyIsImdldEFnZ3JlZ2F0aW9uIiwiQmxvY2tCYXNlIl0sIm1hcHBpbmdzIjoiO0FBQUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0EsTUFBTUEsdUJBQXVCLEdBQUdDLE9BQU8sQ0FBQ0QsdUJBQXhDO01BRU1FLGUsV0FETEMsY0FBYyxDQUFDLHNEQUFELEMsVUFFYkMsUUFBUSxDQUFDO0FBQUVDLElBQUFBLElBQUksRUFBRSxnQ0FBUjtBQUEwQ0MsSUFBQUEsS0FBSyxFQUFFLFVBQWpEO0FBQTZEQyxJQUFBQSxZQUFZLEVBQUU7QUFBM0UsR0FBRCxDLFVBR1JDLFdBQVcsQ0FBQztBQUFFSCxJQUFBQSxJQUFJLEVBQUUscUJBQVI7QUFBK0JJLElBQUFBLFFBQVEsRUFBRTtBQUF6QyxHQUFELEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztXQUdaQyxJLEdBQUEsZ0JBQU87QUFDTiwyQkFBTUEsSUFBTjs7QUFDQyxVQUFELENBQWNDLFdBQWQsR0FBNEIsSUFBNUI7QUFDQSxLOztXQUNEQyxvQixHQUFBLGdDQUF1QjtBQUN0QixVQUFNQyxlQUFlLEdBQUcsS0FBS0MsaUJBQUwsRUFBeEI7QUFBQSxVQUNDQyxLQUFLLEdBQUcsS0FBS0MsdUJBQUwsRUFEVDtBQUFBLFVBRUNDLE9BQU8sR0FBRyxLQUFLQyw0QkFGaEI7O0FBR0EsVUFBSUMscUJBQUo7O0FBRUEsVUFBSU4sZUFBZSxLQUFLYix1QkFBdUIsQ0FBQ29CLElBQTVDLElBQW9ETCxLQUFwRCxJQUE2REUsT0FBakUsRUFBMEU7QUFDekVFLFFBQUFBLHFCQUFxQixHQUFHLEtBQUtFLDRCQUFMLENBQWtDUixlQUFsQyxFQUFtREksT0FBTyxDQUFDSyxjQUEzRCxDQUF4Qjs7QUFFQSxhQUFLQyxXQUFMLENBQWlCUixLQUFqQixFQUF3QkkscUJBQXhCO0FBQ0E7QUFDRCxLOztXQUNESyxPLEdBQUEsaUJBQVFDLEtBQVIsRUFBb0I7QUFDbkIsV0FBS0MsV0FBTCxDQUFpQixNQUFqQixFQUF5QkQsS0FBekIsRUFEbUIsQ0FFbkI7QUFDQSxLOztXQUVERSxlLEdBQUEsMkJBQWtCLENBQ2pCO0FBQ0EsSyxDQUNEOzs7V0FDQVgsdUIsR0FBQSxtQ0FBMEI7QUFDekIsYUFBTyxLQUFLWSxjQUFMLENBQW9CLFNBQXBCLENBQVA7QUFDQSxLOzs7SUFsQzRCQyxTOzs7Ozs7Ozs7OztTQTBDZjNCLGUiLCJzb3VyY2VSb290IjoiLiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFnZ3JlZ2F0aW9uLCBkZWZpbmVVSTVDbGFzcywgcHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9DbGFzc1N1cHBvcnRcIjtcbmltcG9ydCB0eXBlIENvbnRyb2wgZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCBCbG9ja0Jhc2UgZnJvbSBcInNhcC91eGFwL0Jsb2NrQmFzZVwiO1xuaW1wb3J0IHR5cGUgeyBCbG9ja0Jhc2VDb2x1bW5MYXlvdXQgfSBmcm9tIFwic2FwL3V4YXAvbGlicmFyeVwiO1xuaW1wb3J0IHV4YXBMaWIgZnJvbSBcInNhcC91eGFwL2xpYnJhcnlcIjtcbmNvbnN0IEJsb2NrQmFzZUZvcm1BZGp1c3RtZW50ID0gdXhhcExpYi5CbG9ja0Jhc2VGb3JtQWRqdXN0bWVudDtcbkBkZWZpbmVVSTVDbGFzcyhcInNhcC5mZS50ZW1wbGF0ZXMuT2JqZWN0UGFnZS5jb250cm9scy5TdWJTZWN0aW9uQmxvY2tcIilcbmNsYXNzIFN1YlNlY3Rpb25CbG9jayBleHRlbmRzIEJsb2NrQmFzZSB7XG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic2FwLnV4YXAuQmxvY2tCYXNlQ29sdW1uTGF5b3V0XCIsIGdyb3VwOiBcIkJlaGF2aW9yXCIsIGRlZmF1bHRWYWx1ZTogNCB9KVxuXHRjb2x1bW5MYXlvdXQhOiBCbG9ja0Jhc2VDb2x1bW5MYXlvdXQ7XG5cblx0QGFnZ3JlZ2F0aW9uKHsgdHlwZTogXCJzYXAudWkuY29yZS5Db250cm9sXCIsIG11bHRpcGxlOiBmYWxzZSB9KVxuXHRjb250ZW50ITogQ29udHJvbDtcblx0cHJpdmF0ZSBfb1BhcmVudE9iamVjdFBhZ2VTdWJTZWN0aW9uITogYW55O1xuXHRpbml0KCkge1xuXHRcdHN1cGVyLmluaXQoKTtcblx0XHQodGhpcyBhcyBhbnkpLl9iQ29ubmVjdGVkID0gdHJ1ZTtcblx0fVxuXHRfYXBwbHlGb3JtQWRqdXN0bWVudCgpIHtcblx0XHRjb25zdCBzRm9ybUFkanVzdG1lbnQgPSB0aGlzLmdldEZvcm1BZGp1c3RtZW50KCksXG5cdFx0XHRvVmlldyA9IHRoaXMuX2dldFNlbGVjdGVkVmlld0NvbnRlbnQoKSxcblx0XHRcdG9QYXJlbnQgPSB0aGlzLl9vUGFyZW50T2JqZWN0UGFnZVN1YlNlY3Rpb247XG5cdFx0bGV0IG9Gb3JtQWRqdXN0bWVudEZpZWxkcztcblxuXHRcdGlmIChzRm9ybUFkanVzdG1lbnQgIT09IEJsb2NrQmFzZUZvcm1BZGp1c3RtZW50Lk5vbmUgJiYgb1ZpZXcgJiYgb1BhcmVudCkge1xuXHRcdFx0b0Zvcm1BZGp1c3RtZW50RmllbGRzID0gdGhpcy5fY29tcHV0ZUZvcm1BZGp1c3RtZW50RmllbGRzKHNGb3JtQWRqdXN0bWVudCwgb1BhcmVudC5fb0xheW91dENvbmZpZyk7XG5cblx0XHRcdHRoaXMuX2FkanVzdEZvcm0ob1ZpZXcsIG9Gb3JtQWRqdXN0bWVudEZpZWxkcyk7XG5cdFx0fVxuXHR9XG5cdHNldE1vZGUoc01vZGU6IGFueSkge1xuXHRcdHRoaXMuc2V0UHJvcGVydHkoXCJtb2RlXCIsIHNNb2RlKTtcblx0XHQvLyBPUFRJT05BTDogdGhpcy5pbnRlcm5hbE1vZGVsLnNldFByb3BlcnR5KFwiL21vZGVcIiwgc01vZGUpO1xuXHR9XG5cblx0Y29ubmVjdFRvTW9kZWxzKCkge1xuXHRcdC8vIFZpZXcgaXMgYWxyZWFkeSBjb25uZWN0ZWQgdG8gdGhlIFVJNSBtb2RlbCB0cmVlLCBoZW5jZSBubyBleHRyYSBsb2dpYyByZXF1aXJlZCBoZXJlXG5cdH1cblx0Ly8vIFN1YlNlY3Rpb25CbG9jayB1c2UgYWdncmVnYXRpb24gaW5zdGVhZCBvZiBhIHZpZXcsIGkuZS4gcmV0dXJuIHRoYXQgYXMgdGhlIHZpZXcgY29udGVudFxuXHRfZ2V0U2VsZWN0ZWRWaWV3Q29udGVudCgpIHtcblx0XHRyZXR1cm4gdGhpcy5nZXRBZ2dyZWdhdGlvbihcImNvbnRlbnRcIik7XG5cdH1cbn1cblxuaW50ZXJmYWNlIFN1YlNlY3Rpb25CbG9jayB7XG5cdF9hZGp1c3RGb3JtKHZpZXc6IGFueSwgZm9ybUZpZWxkczogYW55KTogdm9pZDtcblx0X2NvbXB1dGVGb3JtQWRqdXN0bWVudEZpZWxkcyhzRm9ybUFkanVzdG1lbnQ6IGFueSwgX29MYXlvdXRDb25maWc6IGFueSk6IGFueTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU3ViU2VjdGlvbkJsb2NrO1xuIl19
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { aggregation, defineUI5Class, property } from "sap/fe/core/helpers/ClassSupport";
|
|
2
|
-
import Control from "sap/ui/core/Control";
|
|
2
|
+
import type Control from "sap/ui/core/Control";
|
|
3
3
|
import BlockBase from "sap/uxap/BlockBase";
|
|
4
|
-
import
|
|
4
|
+
import type { BlockBaseColumnLayout } from "sap/uxap/library";
|
|
5
|
+
import uxapLib from "sap/uxap/library";
|
|
5
6
|
const BlockBaseFormAdjustment = uxapLib.BlockBaseFormAdjustment;
|
|
6
7
|
@defineUI5Class("sap.fe.templates.ObjectPage.controls.SubSectionBlock")
|
|
7
8
|
class SubSectionBlock extends BlockBase {
|
|
@@ -37,8 +38,7 @@ class SubSectionBlock extends BlockBase {
|
|
|
37
38
|
}
|
|
38
39
|
/// SubSectionBlock use aggregation instead of a view, i.e. return that as the view content
|
|
39
40
|
_getSelectedViewContent() {
|
|
40
|
-
|
|
41
|
-
return oContent;
|
|
41
|
+
return this.getAggregation("content");
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
|
|
@@ -51,4 +51,4 @@ sap.ui.define(["sap/ui/core/Core"], function (Core) {
|
|
|
51
51
|
};
|
|
52
52
|
return StashableHBoxDesignTime;
|
|
53
53
|
}, false);
|
|
54
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
54
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YXNoYWJsZUhCb3guZGVzaWdudGltZS50cyJdLCJuYW1lcyI6WyJvUmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiU3Rhc2hhYmxlSEJveERlc2lnblRpbWUiLCJhY3Rpb25zIiwicmVtb3ZlIiwiY2hhbmdlVHlwZSIsInJldmVhbCIsInJlbmFtZSIsImRvbVJlZiIsIm9Db250cm9sIiwib1RpdGxlQ29udHJvbCIsImdldFRpdGxlQ29udHJvbCIsImdldERvbVJlZiIsIm5hbWUiLCJzaW5ndWxhciIsImdldFRleHQiLCJwbHVyYWwiLCJwYWxldHRlIiwiZ3JvdXAiLCJpY29ucyIsInN2ZyIsInRlbXBsYXRlcyIsImNyZWF0ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGVBQWUsR0FBSUMsSUFBRCxDQUFpQkMsd0JBQWpCLENBQTBDLGtCQUExQyxDQUF4QjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHO0FBQy9CQyxJQUFBQSxPQUFPLEVBQUU7QUFDUkMsTUFBQUEsTUFBTSxFQUFFO0FBQ1BDLFFBQUFBLFVBQVUsRUFBRTtBQURMLE9BREE7QUFJUkMsTUFBQUEsTUFBTSxFQUFFO0FBQ1BELFFBQUFBLFVBQVUsRUFBRTtBQURMLE9BSkE7QUFPUkUsTUFBQUEsTUFBTSxFQUFFO0FBQVU7QUFBVixTQUFpQztBQUN4QyxlQUFPO0FBQ05GLFVBQUFBLFVBQVUsRUFBRSxtQkFETjtBQUVORyxVQUFBQSxNQUFNLEVBQUUsVUFBVUMsUUFBVixFQUF5QjtBQUNoQyxnQkFBTUMsYUFBYSxHQUFHRCxRQUFRLENBQUNFLGVBQVQsRUFBdEI7O0FBQ0EsZ0JBQUlELGFBQUosRUFBbUI7QUFDbEIscUJBQU9BLGFBQWEsQ0FBQ0UsU0FBZCxFQUFQO0FBQ0EsYUFGRCxNQUVPO0FBQ04scUJBQU8sSUFBUDtBQUNBO0FBQ0Q7QUFUSyxTQUFQO0FBV0E7QUFuQk8sS0FEc0I7QUFzQi9CQyxJQUFBQSxJQUFJLEVBQUU7QUFDTEMsTUFBQUEsUUFBUSxFQUFFLFlBQVk7QUFDckIsZUFBT2YsZUFBZSxDQUFDZ0IsT0FBaEIsQ0FBd0IsMkNBQXhCLENBQVA7QUFDQSxPQUhJO0FBSUxDLE1BQUFBLE1BQU0sRUFBRSxZQUFZO0FBQ25CLGVBQU9qQixlQUFlLENBQUNnQixPQUFoQixDQUF3QixrREFBeEIsQ0FBUDtBQUNBO0FBTkksS0F0QnlCO0FBOEIvQkUsSUFBQUEsT0FBTyxFQUFFO0FBQ1JDLE1BQUFBLEtBQUssRUFBRSxRQURDO0FBRVJDLE1BQUFBLEtBQUssRUFBRTtBQUNOQyxRQUFBQSxHQUFHLEVBQUU7QUFEQztBQUZDLEtBOUJzQjtBQW9DL0JDLElBQUFBLFNBQVMsRUFBRTtBQUNWQyxNQUFBQSxNQUFNLEVBQUU7QUFERTtBQXBDb0IsR0FBaEM7U0F5Q2VwQix1QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG5jb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS50ZW1wbGF0ZXNcIik7XG5cbmNvbnN0IFN0YXNoYWJsZUhCb3hEZXNpZ25UaW1lID0ge1xuXHRhY3Rpb25zOiB7XG5cdFx0cmVtb3ZlOiB7XG5cdFx0XHRjaGFuZ2VUeXBlOiBcInN0YXNoQ29udHJvbFwiXG5cdFx0fSxcblx0XHRyZXZlYWw6IHtcblx0XHRcdGNoYW5nZVR5cGU6IFwidW5zdGFzaENvbnRyb2xcIlxuXHRcdH0sXG5cdFx0cmVuYW1lOiBmdW5jdGlvbiAoLypvSGVhZGVyRmFjZXQ6IGFueSovKSB7XG5cdFx0XHRyZXR1cm4ge1xuXHRcdFx0XHRjaGFuZ2VUeXBlOiBcInJlbmFtZUhlYWRlckZhY2V0XCIsXG5cdFx0XHRcdGRvbVJlZjogZnVuY3Rpb24gKG9Db250cm9sOiBhbnkpIHtcblx0XHRcdFx0XHRjb25zdCBvVGl0bGVDb250cm9sID0gb0NvbnRyb2wuZ2V0VGl0bGVDb250cm9sKCk7XG5cdFx0XHRcdFx0aWYgKG9UaXRsZUNvbnRyb2wpIHtcblx0XHRcdFx0XHRcdHJldHVybiBvVGl0bGVDb250cm9sLmdldERvbVJlZigpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRyZXR1cm4gbnVsbDtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0fVxuXHR9LFxuXHRuYW1lOiB7XG5cdFx0c2luZ3VsYXI6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfU1RBU0hBQkxFX0hCT1hfUlRBX0hFQURFUkZBQ0VUX01FTlVfQUREXCIpO1xuXHRcdH0sXG5cdFx0cGx1cmFsOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX1NUQVNIQUJMRV9IQk9YX1JUQV9IRUFERVJGQUNFVF9NRU5VX0FERF9QTFVSQUxcIik7XG5cdFx0fVxuXHR9LFxuXHRwYWxldHRlOiB7XG5cdFx0Z3JvdXA6IFwiTEFZT1VUXCIsXG5cdFx0aWNvbnM6IHtcblx0XHRcdHN2ZzogXCJzYXAvbS9kZXNpZ250aW1lL0hCb3guaWNvbi5zdmdcIlxuXHRcdH1cblx0fSxcblx0dGVtcGxhdGVzOiB7XG5cdFx0Y3JlYXRlOiBcInNhcC9tL2Rlc2lnbnRpbWUvSEJveC5jcmVhdGUuZnJhZ21lbnQueG1sXCJcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU3Rhc2hhYmxlSEJveERlc2lnblRpbWU7XG4iXX0=
|
|
@@ -35,4 +35,4 @@ sap.ui.define(["sap/ui/core/Core"], function (Core) {
|
|
|
35
35
|
};
|
|
36
36
|
return StashableVBoxDesignTime;
|
|
37
37
|
}, false);
|
|
38
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlN0YXNoYWJsZVZCb3guZGVzaWdudGltZS50cyJdLCJuYW1lcyI6WyJvUmVzb3VyY2VCdW5kbGUiLCJDb3JlIiwiZ2V0TGlicmFyeVJlc291cmNlQnVuZGxlIiwiU3Rhc2hhYmxlVkJveERlc2lnblRpbWUiLCJhY3Rpb25zIiwicmVtb3ZlIiwiY2hhbmdlVHlwZSIsInJldmVhbCIsIm5hbWUiLCJzaW5ndWxhciIsImdldFRleHQiLCJwbHVyYWwiLCJwYWxldHRlIiwiZ3JvdXAiLCJpY29ucyIsInN2ZyIsInRlbXBsYXRlcyIsImNyZWF0ZSJdLCJtYXBwaW5ncyI6IjtBQUFBO0FBQ0E7QUFDQTs7OztBQUNBLE1BQU1BLGVBQWUsR0FBSUMsSUFBRCxDQUFpQkMsd0JBQWpCLENBQTBDLGtCQUExQyxDQUF4QjtBQUVBLE1BQU1DLHVCQUF1QixHQUFHO0FBQy9CQyxJQUFBQSxPQUFPLEVBQUU7QUFDUkMsTUFBQUEsTUFBTSxFQUFFO0FBQ1BDLFFBQUFBLFVBQVUsRUFBRTtBQURMLE9BREE7QUFJUkMsTUFBQUEsTUFBTSxFQUFFO0FBQ1BELFFBQUFBLFVBQVUsRUFBRTtBQURMO0FBSkEsS0FEc0I7QUFTL0JFLElBQUFBLElBQUksRUFBRTtBQUNMQyxNQUFBQSxRQUFRLEVBQUUsWUFBWTtBQUNyQixlQUFPVCxlQUFlLENBQUNVLE9BQWhCLENBQXdCLHFEQUF4QixDQUFQO0FBQ0EsT0FISTtBQUlMQyxNQUFBQSxNQUFNLEVBQUUsWUFBWTtBQUNuQixlQUFPWCxlQUFlLENBQUNVLE9BQWhCLENBQXdCLDREQUF4QixDQUFQO0FBQ0E7QUFOSSxLQVR5QjtBQWlCL0JFLElBQUFBLE9BQU8sRUFBRTtBQUNSQyxNQUFBQSxLQUFLLEVBQUUsUUFEQztBQUVSQyxNQUFBQSxLQUFLLEVBQUU7QUFDTkMsUUFBQUEsR0FBRyxFQUFFO0FBREM7QUFGQyxLQWpCc0I7QUF1Qi9CQyxJQUFBQSxTQUFTLEVBQUU7QUFDVkMsTUFBQUEsTUFBTSxFQUFFO0FBREU7QUF2Qm9CLEdBQWhDO1NBNEJlZCx1QiIsInNvdXJjZVJvb3QiOiIuIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IENvcmUgZnJvbSBcInNhcC91aS9jb3JlL0NvcmVcIjtcbmltcG9ydCB0eXBlIHsgQ29yZUV4IH0gZnJvbSBcInR5cGVzL2V4dGVuc2lvbl90eXBlc1wiO1xuXG5jb25zdCBvUmVzb3VyY2VCdW5kbGUgPSAoQ29yZSBhcyBDb3JlRXgpLmdldExpYnJhcnlSZXNvdXJjZUJ1bmRsZShcInNhcC5mZS50ZW1wbGF0ZXNcIik7XG5cbmNvbnN0IFN0YXNoYWJsZVZCb3hEZXNpZ25UaW1lID0ge1xuXHRhY3Rpb25zOiB7XG5cdFx0cmVtb3ZlOiB7XG5cdFx0XHRjaGFuZ2VUeXBlOiBcInN0YXNoQ29udHJvbFwiXG5cdFx0fSxcblx0XHRyZXZlYWw6IHtcblx0XHRcdGNoYW5nZVR5cGU6IFwidW5zdGFzaENvbnRyb2xcIlxuXHRcdH1cblx0fSxcblx0bmFtZToge1xuXHRcdHNpbmd1bGFyOiBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gb1Jlc291cmNlQnVuZGxlLmdldFRleHQoXCJUX1NUQVNIQUJMRV9WQk9YX1JUQV9IRUFERVJDT0xMRUNUSU9ORkFDRVRfTUVOVV9BRERcIik7XG5cdFx0fSxcblx0XHRwbHVyYWw6IGZ1bmN0aW9uICgpIHtcblx0XHRcdHJldHVybiBvUmVzb3VyY2VCdW5kbGUuZ2V0VGV4dChcIlRfU1RBU0hBQkxFX1ZCT1hfUlRBX0hFQURFUkNPTExFQ1RJT05GQUNFVF9NRU5VX0FERF9QTFVSQUxcIik7XG5cdFx0fVxuXHR9LFxuXHRwYWxldHRlOiB7XG5cdFx0Z3JvdXA6IFwiTEFZT1VUXCIsXG5cdFx0aWNvbnM6IHtcblx0XHRcdHN2ZzogXCJzYXAvbS9kZXNpZ250aW1lL1ZCb3guaWNvbi5zdmdcIlxuXHRcdH1cblx0fSxcblx0dGVtcGxhdGVzOiB7XG5cdFx0Y3JlYXRlOiBcInNhcC9tL2Rlc2lnbnRpbWUvVkJveC5jcmVhdGUuZnJhZ21lbnQueG1sXCJcblx0fVxufTtcblxuZXhwb3J0IGRlZmF1bHQgU3Rhc2hhYmxlVkJveERlc2lnblRpbWU7XG4iXX0=
|