@sapui5/sap.fe.macros 1.138.0 → 1.140.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/fe/macros/.library +1 -1
- package/src/sap/fe/macros/Breadcrumbs.js +269 -0
- package/src/sap/fe/macros/Breadcrumbs.tsx +243 -0
- package/src/sap/fe/macros/CommonHelper.js +2 -2
- package/src/sap/fe/macros/CommonHelper.ts +1 -1
- package/src/sap/fe/macros/Field.js +85 -58
- package/src/sap/fe/macros/Field.ts +104 -60
- package/src/sap/fe/macros/FooterContent.js +44 -11
- package/src/sap/fe/macros/FooterContent.tsx +48 -9
- package/src/sap/fe/macros/FormElement.js +2 -2
- package/src/sap/fe/macros/FormElement.ts +1 -2
- package/src/sap/fe/macros/MessageButton.js +1 -2
- package/src/sap/fe/macros/MessageButton.tsx +0 -1
- package/src/sap/fe/macros/MultiValueField.js +17 -6
- package/src/sap/fe/macros/MultiValueField.tsx +7 -4
- package/src/sap/fe/macros/RichTextEditor.js +30 -5
- package/src/sap/fe/macros/RichTextEditor.tsx +34 -6
- package/src/sap/fe/macros/Share.js +85 -40
- package/src/sap/fe/macros/Share.tsx +42 -1
- package/src/sap/fe/macros/Status.js +226 -0
- package/src/sap/fe/macros/Status.tsx +192 -0
- package/src/sap/fe/macros/ValueHelp.js +4 -29
- package/src/sap/fe/macros/ValueHelp.tsx +2 -43
- package/src/sap/fe/macros/ai/EasyFillButton.js +10 -4
- package/src/sap/fe/macros/ai/EasyFillButton.tsx +8 -1
- package/src/sap/fe/macros/ai/EasyFillDialog.js +25 -10
- package/src/sap/fe/macros/ai/EasyFillDialog.tsx +32 -23
- package/src/sap/fe/macros/ai/EasyFilterBar.js +123 -114
- package/src/sap/fe/macros/ai/EasyFilterBar.tsx +140 -124
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.js +11 -5
- package/src/sap/fe/macros/ai/EasyFilterDataFetcher.ts +14 -5
- package/src/sap/fe/macros/ai/SummarizationButton.js +2 -2
- package/src/sap/fe/macros/ai/SummarizationButton.tsx +1 -1
- package/src/sap/fe/macros/chart/ChartDelegate.js +4 -4
- package/src/sap/fe/macros/chart/ChartDelegate.ts +3 -3
- package/src/sap/fe/macros/chart/ChartHelper.js +1 -2
- package/src/sap/fe/macros/chart/ChartHelper.ts +0 -1
- package/src/sap/fe/macros/chart/ChartRuntime.js +1 -2
- package/src/sap/fe/macros/chart/ChartRuntime.ts +0 -1
- package/src/sap/fe/macros/chart/MdcChartTemplate.js +20 -6
- package/src/sap/fe/macros/chart/MdcChartTemplate.tsx +16 -8
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.js +3 -1
- package/src/sap/fe/macros/controls/BuildingBlockWithTemplating.ts +2 -0
- package/src/sap/fe/macros/controls/FieldWrapper.js +9 -3
- package/src/sap/fe/macros/controls/FieldWrapper.ts +11 -2
- package/src/sap/fe/macros/controls/FilterBar.js +49 -2
- package/src/sap/fe/macros/controls/FilterBar.ts +55 -1
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.js +2 -2
- package/src/sap/fe/macros/controls/NumberWithUnitOrCurrency.tsx +2 -2
- package/src/sap/fe/macros/controls/RequiredFlexBox.js +62 -0
- package/src/sap/fe/macros/controls/RequiredFlexBox.tsx +20 -0
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.js +21 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilter.ts +25 -11
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.js +11 -2
- package/src/sap/fe/macros/controls/filterbar/VisualFilterContainer.ts +12 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.js +18 -1
- package/src/sap/fe/macros/controls/filterbar/utils/VisualFilterUtils.ts +20 -0
- package/src/sap/fe/macros/coreUI/CreateDialog.js +2 -2
- package/src/sap/fe/macros/coreUI/CreateDialog.tsx +1 -1
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.js +43 -4
- package/src/sap/fe/macros/coreUI/OperationParameterDialog.tsx +48 -1
- package/src/sap/fe/macros/designtime/Designtime.helper.js +39 -2
- package/src/sap/fe/macros/designtime/Designtime.helper.ts +39 -0
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.js +15 -4
- package/src/sap/fe/macros/draftIndicator/DraftIndicator.tsx +5 -0
- package/src/sap/fe/macros/field/FieldBaseDelegate.js +20 -8
- package/src/sap/fe/macros/field/FieldBaseDelegate.ts +34 -9
- package/src/sap/fe/macros/field/FieldFormatOptions.js +73 -44
- package/src/sap/fe/macros/field/FieldFormatOptions.ts +20 -2
- package/src/sap/fe/macros/field/FieldRuntime.js +1 -2
- package/src/sap/fe/macros/field/FieldRuntime.ts +0 -1
- package/src/sap/fe/macros/filter/FilterUtils.js +3 -5
- package/src/sap/fe/macros/filter/FilterUtils.ts +2 -4
- package/src/sap/fe/macros/filterBar/FilterBar.block.js +8 -2
- package/src/sap/fe/macros/filterBar/FilterBar.block.tsx +2 -5
- package/src/sap/fe/macros/filterBar/FilterBarAPI.js +8 -8
- package/src/sap/fe/macros/filterBar/FilterBarAPI.ts +8 -8
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.js +3 -1
- package/src/sap/fe/macros/filterBar/designtime/FilterBar.designtime.ts +2 -0
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.js +1 -1
- package/src/sap/fe/macros/filterBar/mixin/FilterBarAPIStateHandler.ts +1 -1
- package/src/sap/fe/macros/form/Form.js +1 -4
- package/src/sap/fe/macros/form/Form.tsx +0 -3
- package/src/sap/fe/macros/form/FormActionButtons.fragment.xml +13 -2
- package/src/sap/fe/macros/form/FormContainer.block.js +1 -2
- package/src/sap/fe/macros/form/FormContainer.block.ts +0 -1
- package/src/sap/fe/macros/form/FormContainer.fragment.xml +40 -0
- package/src/sap/fe/macros/form/FormContainerAPI.js +14 -16
- package/src/sap/fe/macros/form/FormContainerAPI.ts +13 -15
- package/src/sap/fe/macros/form/FormDelegate.js +20 -1
- package/src/sap/fe/macros/form/FormDelegate.ts +25 -0
- package/src/sap/fe/macros/form/FormHelper.js +1 -2
- package/src/sap/fe/macros/form/FormHelper.ts +0 -1
- package/src/sap/fe/macros/formatters/TableFormatter.js +10 -1
- package/src/sap/fe/macros/formatters/TableFormatter.ts +14 -5
- package/src/sap/fe/macros/fpm/CustomFragment.block.js +1 -2
- package/src/sap/fe/macros/fpm/CustomFragment.block.ts +0 -1
- package/src/sap/fe/macros/inlineEdit/InlineEdit.js +15 -3
- package/src/sap/fe/macros/inlineEdit/InlineEdit.ts +14 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.js +1 -2
- package/src/sap/fe/macros/internal/ActionCommand.block.ts +0 -1
- package/src/sap/fe/macros/internal/DataPoint.js +2 -1
- package/src/sap/fe/macros/internal/DataPoint.tsx +1 -0
- package/src/sap/fe/macros/internal/DataPointFormatOptions.js +11 -2
- package/src/sap/fe/macros/internal/DataPointFormatOptions.ts +3 -0
- package/src/sap/fe/macros/internal/FilterField.block.js +10 -2
- package/src/sap/fe/macros/internal/FilterField.block.ts +11 -1
- package/src/sap/fe/macros/internal/field/CheckBoxGroup.fragment.xml +25 -0
- package/src/sap/fe/macros/internal/field/DisplayStyle.js +51 -13
- package/src/sap/fe/macros/internal/field/DisplayStyle.tsx +53 -6
- package/src/sap/fe/macros/internal/field/EditStyle.js +5 -1
- package/src/sap/fe/macros/internal/field/EditStyle.tsx +4 -0
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.js +9 -2
- package/src/sap/fe/macros/internal/field/FieldStructureHelper.ts +11 -0
- package/src/sap/fe/macros/internal/field/FieldStyles.js +1 -1
- package/src/sap/fe/macros/internal/field/FieldStyles.tsx +2 -1
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.js +46 -8
- package/src/sap/fe/macros/internal/valuehelp/AdditionalValueHelper.ts +60 -6
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.js +38 -2
- package/src/sap/fe/macros/internal/valuehelp/TableDelegate.ts +37 -2
- package/src/sap/fe/macros/internal/valuehelp/ValueListDialogTable.fragment.xml +2 -1
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.js +16 -5
- package/src/sap/fe/macros/internal/valuehelp/ValueListHelper.ts +21 -9
- package/src/sap/fe/macros/internal/valuehelp/ValueListTable.fragment.xml +1 -0
- package/src/sap/fe/macros/library.js +1 -1
- package/src/sap/fe/macros/mdc/adapter/StateHelper.js +7 -2
- package/src/sap/fe/macros/mdc/adapter/StateHelper.ts +7 -3
- package/src/sap/fe/macros/messagebundle.properties +42 -32
- package/src/sap/fe/macros/messagebundle_ar.properties +12 -4
- package/src/sap/fe/macros/messagebundle_bg.properties +11 -3
- package/src/sap/fe/macros/messagebundle_ca.properties +15 -7
- package/src/sap/fe/macros/messagebundle_cnr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_cs.properties +10 -2
- package/src/sap/fe/macros/messagebundle_cy.properties +12 -4
- package/src/sap/fe/macros/messagebundle_da.properties +11 -3
- package/src/sap/fe/macros/messagebundle_de.properties +18 -10
- package/src/sap/fe/macros/messagebundle_el.properties +13 -5
- package/src/sap/fe/macros/messagebundle_en.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_GB.properties +16 -8
- package/src/sap/fe/macros/messagebundle_en_US_saprigi.properties +16 -8
- package/src/sap/fe/macros/messagebundle_es.properties +13 -5
- package/src/sap/fe/macros/messagebundle_es_MX.properties +14 -6
- package/src/sap/fe/macros/messagebundle_et.properties +13 -5
- package/src/sap/fe/macros/messagebundle_fi.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr.properties +14 -6
- package/src/sap/fe/macros/messagebundle_fr_CA.properties +15 -7
- package/src/sap/fe/macros/messagebundle_hi.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hr.properties +11 -3
- package/src/sap/fe/macros/messagebundle_hu.properties +10 -2
- package/src/sap/fe/macros/messagebundle_id.properties +18 -10
- package/src/sap/fe/macros/messagebundle_it.properties +10 -2
- package/src/sap/fe/macros/messagebundle_iw.properties +10 -2
- package/src/sap/fe/macros/messagebundle_ja.properties +13 -5
- package/src/sap/fe/macros/messagebundle_kk.properties +15 -7
- package/src/sap/fe/macros/messagebundle_ko.properties +10 -2
- package/src/sap/fe/macros/messagebundle_lt.properties +11 -3
- package/src/sap/fe/macros/messagebundle_lv.properties +12 -4
- package/src/sap/fe/macros/messagebundle_mk.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ms.properties +14 -6
- package/src/sap/fe/macros/messagebundle_nl.properties +13 -5
- package/src/sap/fe/macros/messagebundle_no.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_pt.properties +13 -5
- package/src/sap/fe/macros/messagebundle_pt_PT.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ro.properties +12 -4
- package/src/sap/fe/macros/messagebundle_ru.properties +13 -5
- package/src/sap/fe/macros/messagebundle_sh.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sk.properties +11 -3
- package/src/sap/fe/macros/messagebundle_sl.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sr.properties +12 -4
- package/src/sap/fe/macros/messagebundle_sv.properties +11 -3
- package/src/sap/fe/macros/messagebundle_th.properties +11 -3
- package/src/sap/fe/macros/messagebundle_tr.properties +10 -2
- package/src/sap/fe/macros/messagebundle_uk.properties +17 -9
- package/src/sap/fe/macros/messagebundle_vi.properties +12 -4
- package/src/sap/fe/macros/messagebundle_zh_CN.properties +11 -3
- package/src/sap/fe/macros/messagebundle_zh_TW.properties +12 -4
- package/src/sap/fe/macros/messages/MessageButton.js +55 -36
- package/src/sap/fe/macros/messages/MessageButton.ts +64 -39
- package/src/sap/fe/macros/messages/MessagePopover.js +2 -2
- package/src/sap/fe/macros/messages/MessagePopover.ts +4 -4
- package/src/sap/fe/macros/microchart/MicroChartContainer.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartContainer.ts +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.js +1 -2
- package/src/sap/fe/macros/microchart/MicroChartHelper.tsx +0 -1
- package/src/sap/fe/macros/share/ShareAPI.js +4 -29
- package/src/sap/fe/macros/share/ShareAPI.ts +1 -32
- package/src/sap/fe/macros/situations/SituationsPopover.js +3 -1
- package/src/sap/fe/macros/situations/SituationsPopover.ts +2 -0
- package/src/sap/fe/macros/table/Action.js +24 -2
- package/src/sap/fe/macros/table/Action.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroup.js +24 -2
- package/src/sap/fe/macros/table/ActionGroup.ts +13 -0
- package/src/sap/fe/macros/table/ActionGroupOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionGroupOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionOverride.js +24 -2
- package/src/sap/fe/macros/table/ActionOverride.ts +13 -0
- package/src/sap/fe/macros/table/ActionsTemplating.js +73 -12
- package/src/sap/fe/macros/table/ActionsTemplating.tsx +69 -13
- package/src/sap/fe/macros/table/Column.js +3 -3
- package/src/sap/fe/macros/table/Column.ts +2 -2
- package/src/sap/fe/macros/table/MdcTableTemplate.js +20 -8
- package/src/sap/fe/macros/table/MdcTableTemplate.tsx +36 -7
- package/src/sap/fe/macros/table/QuickFilterSelector.js +35 -14
- package/src/sap/fe/macros/table/QuickFilterSelector.tsx +22 -3
- package/src/sap/fe/macros/table/Table.block.js +137 -108
- package/src/sap/fe/macros/table/Table.block.tsx +29 -2
- package/src/sap/fe/macros/table/TableAPI.js +143 -133
- package/src/sap/fe/macros/table/TableAPI.ts +5 -1
- package/src/sap/fe/macros/table/TableDefinition.js +4 -2
- package/src/sap/fe/macros/table/TableDefinition.ts +3 -1
- package/src/sap/fe/macros/table/TableHelper.js +1 -2
- package/src/sap/fe/macros/table/TableHelper.ts +0 -1
- package/src/sap/fe/macros/table/TableRuntime.js +26 -7
- package/src/sap/fe/macros/table/TableRuntime.ts +33 -5
- package/src/sap/fe/macros/table/Utils.js +6 -2
- package/src/sap/fe/macros/table/Utils.ts +5 -1
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/ALPTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/delegates/TableDelegate.js +25 -20
- package/src/sap/fe/macros/table/delegates/TableDelegate.ts +25 -24
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.js +1 -2
- package/src/sap/fe/macros/table/delegates/TreeTableDelegate.ts +0 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.js +3 -1
- package/src/sap/fe/macros/table/designtime/Table.designtime.ts +2 -0
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.js +3 -1
- package/src/sap/fe/macros/table/massEdit/designtime/MassEdit.designtime.ts +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.js +2 -1
- package/src/sap/fe/macros/table/mixin/ContextMenuHandler.ts +1 -0
- package/src/sap/fe/macros/table/mixin/TableHierarchy.js +8 -1
- package/src/sap/fe/macros/table/mixin/TableHierarchy.ts +10 -0
- package/src/sap/fe/macros/table/mixin/TableSharing.js +3 -2
- package/src/sap/fe/macros/table/mixin/TableSharing.ts +9 -1
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.js +20 -6
- package/src/sap/fe/macros/valuehelp/ValueHelpDelegate.ts +36 -14
- package/src/sap/fe/macros/visualfilters/VisualFilter.js +95 -7
- package/src/sap/fe/macros/visualfilters/VisualFilter.tsx +93 -3
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.js +16 -5
- package/src/sap/fe/macros/visualfilters/VisualFilterRuntime.ts +18 -4
|
@@ -2,7 +2,7 @@ import Log from "sap/base/Log";
|
|
|
2
2
|
import type { BindingToolkitExpression, CompiledBindingToolkitExpression, EmbeddedUI5BindingExpression } from "sap/fe/base/BindingToolkit";
|
|
3
3
|
import { and, compileExpression, constant, isConstant, not, or, resolveBindingString } from "sap/fe/base/BindingToolkit";
|
|
4
4
|
import type { PropertiesOf } from "sap/fe/base/ClassSupport";
|
|
5
|
-
import { aggregation, defineReference, defineUI5Class, property } from "sap/fe/base/ClassSupport";
|
|
5
|
+
import { aggregation, defineReference, defineUI5Class, implementInterface, property } from "sap/fe/base/ClassSupport";
|
|
6
6
|
import type { Ref } from "sap/fe/base/jsx-runtime/jsx";
|
|
7
7
|
import type AppComponent from "sap/fe/core/AppComponent";
|
|
8
8
|
import CommonUtils from "sap/fe/core/CommonUtils";
|
|
@@ -31,10 +31,14 @@ import {
|
|
|
31
31
|
PRINT_ICON
|
|
32
32
|
} from "sap/fe/core/converters/controls/Common/Action";
|
|
33
33
|
import FPMHelper from "sap/fe/core/helpers/FPMHelper";
|
|
34
|
+
import { getResourceModel } from "sap/fe/core/helpers/ResourceModelHelper";
|
|
34
35
|
import type { ViewData } from "sap/fe/core/services/TemplatedViewServiceFactory";
|
|
35
36
|
import ShareOptions from "sap/fe/macros/share/ShareOptions";
|
|
37
|
+
import OverflowToolbarLayoutData from "sap/m/OverflowToolbarLayoutData";
|
|
36
38
|
import OverflowToolbarMenuButton from "sap/m/OverflowToolbarMenuButton";
|
|
39
|
+
import { OverflowToolbarPriority } from "sap/m/library";
|
|
37
40
|
import BindingInfo from "sap/ui/base/BindingInfo";
|
|
41
|
+
import type Control from "sap/ui/core/Control";
|
|
38
42
|
import type { $ControlSettings } from "sap/ui/core/Control";
|
|
39
43
|
import MsTeamsOptions from "./share/MsTeamsOptions";
|
|
40
44
|
import ShareAPI from "./share/ShareAPI";
|
|
@@ -99,6 +103,9 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
99
103
|
@property({ type: "string" })
|
|
100
104
|
public shareAPIId?: string;
|
|
101
105
|
|
|
106
|
+
@implementInterface("sap.m.IOverflowToolbarContent")
|
|
107
|
+
__implements__sap_m_IOverflowToolbarContent = true;
|
|
108
|
+
|
|
102
109
|
/**
|
|
103
110
|
* Supported Share options {@link sap.fe.macros.share.ShareOptions}.
|
|
104
111
|
* @public
|
|
@@ -110,6 +117,12 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
110
117
|
})
|
|
111
118
|
public shareOptions?: ShareOptions;
|
|
112
119
|
|
|
120
|
+
@property({
|
|
121
|
+
type: "string",
|
|
122
|
+
defaultValue: OverflowToolbarPriority.High
|
|
123
|
+
})
|
|
124
|
+
priority?: string;
|
|
125
|
+
|
|
113
126
|
/**
|
|
114
127
|
* Supported Microsoft Teams options.
|
|
115
128
|
*/
|
|
@@ -927,6 +940,34 @@ export default class Share extends BuildingBlock<ShareAPI> {
|
|
|
927
940
|
this.isInitialized = this._initializeMenuItems(this.getPageController().getView(), appComponent).catch((error) => {
|
|
928
941
|
Log.error(error as string);
|
|
929
942
|
});
|
|
943
|
+
|
|
944
|
+
this.setLayoutData(
|
|
945
|
+
new OverflowToolbarLayoutData({
|
|
946
|
+
priority: this.priority
|
|
947
|
+
})
|
|
948
|
+
);
|
|
930
949
|
return menuButton;
|
|
931
950
|
}
|
|
951
|
+
|
|
952
|
+
/**
|
|
953
|
+
* Returns properties for the interface IOverflowToolbarContent.
|
|
954
|
+
* @returns Returns the configuration of IOverflowToolbarContent
|
|
955
|
+
*/
|
|
956
|
+
getOverflowToolbarConfig(): object {
|
|
957
|
+
return {
|
|
958
|
+
canOverflow: true,
|
|
959
|
+
onBeforeEnterOverflow: function (oControl: Share): void {
|
|
960
|
+
(oControl?.getContent()?.getContent() as OverflowToolbarMenuButton).getText = function (): string {
|
|
961
|
+
const resourceModel = getResourceModel(oControl as Control);
|
|
962
|
+
return resourceModel.getText("M_COMMON_SAPFE_ACTION_SHARE");
|
|
963
|
+
};
|
|
964
|
+
},
|
|
965
|
+
onAfterExitOverflow: function (oControl: Share): void {
|
|
966
|
+
(oControl?.getContent()?.getContent() as OverflowToolbarMenuButton).getText = function (): string {
|
|
967
|
+
return "";
|
|
968
|
+
};
|
|
969
|
+
},
|
|
970
|
+
priority: this.priority
|
|
971
|
+
};
|
|
972
|
+
}
|
|
932
973
|
}
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* SAP UI development toolkit for HTML5 (SAPUI5)
|
|
3
|
+
* (c) Copyright 2009-2025 SAP SE. All rights reserved
|
|
4
|
+
*/
|
|
5
|
+
sap.ui.define(["sap/fe/base/ClassSupport", "sap/fe/core/buildingBlocks/BuildingBlock", "sap/fe/core/helpers/StableIdHelper", "sap/fe/core/helpers/TypeGuards", "sap/fe/core/templating/CriticalityFormatters", "sap/fe/core/templating/DataModelPathHelper", "sap/fe/macros/field/FieldTemplating", "sap/m/ObjectStatus", "sap/fe/base/jsx-runtime/jsx"], function (ClassSupport, BuildingBlock, StableIdHelper, TypeGuards, CriticalityFormatters, DataModelPathHelper, FieldTemplating, MObjectStatus, _jsx) {
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _class, _class2, _descriptor, _descriptor2, _descriptor3, _descriptor4, _descriptor5, _descriptor6, _descriptor7;
|
|
9
|
+
var _exports = {};
|
|
10
|
+
var getVisibleExpression = FieldTemplating.getVisibleExpression;
|
|
11
|
+
var getTextBinding = FieldTemplating.getTextBinding;
|
|
12
|
+
var enhanceDataModelPath = DataModelPathHelper.enhanceDataModelPath;
|
|
13
|
+
var buildExpressionForCriticalityIcon = CriticalityFormatters.buildExpressionForCriticalityIcon;
|
|
14
|
+
var buildExpressionForCriticalityColor = CriticalityFormatters.buildExpressionForCriticalityColor;
|
|
15
|
+
var isProperty = TypeGuards.isProperty;
|
|
16
|
+
var generate = StableIdHelper.generate;
|
|
17
|
+
var property = ClassSupport.property;
|
|
18
|
+
var implementInterface = ClassSupport.implementInterface;
|
|
19
|
+
var event = ClassSupport.event;
|
|
20
|
+
var defineUI5Class = ClassSupport.defineUI5Class;
|
|
21
|
+
function _initializerDefineProperty(e, i, r, l) { r && Object.defineProperty(e, i, { enumerable: r.enumerable, configurable: r.configurable, writable: r.writable, value: r.initializer ? r.initializer.call(l) : void 0 }); }
|
|
22
|
+
function _inheritsLoose(t, o) { t.prototype = Object.create(o.prototype), t.prototype.constructor = t, _setPrototypeOf(t, o); }
|
|
23
|
+
function _setPrototypeOf(t, e) { return _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function (t, e) { return t.__proto__ = e, t; }, _setPrototypeOf(t, e); }
|
|
24
|
+
function _applyDecoratedDescriptor(i, e, r, n, l) { var a = {}; return Object.keys(n).forEach(function (i) { a[i] = n[i]; }), a.enumerable = !!a.enumerable, a.configurable = !!a.configurable, ("value" in a || a.initializer) && (a.writable = !0), a = r.slice().reverse().reduce(function (r, n) { return n(i, e, r) || r; }, a), l && void 0 !== a.initializer && (a.value = a.initializer ? a.initializer.call(l) : void 0, a.initializer = void 0), void 0 === a.initializer ? (Object.defineProperty(i, e, a), null) : a; }
|
|
25
|
+
function _initializerWarningHelper(r, e) { throw Error("Decorating class property failed. Please ensure that transform-class-properties is enabled and runs after the decorators transform."); }
|
|
26
|
+
/**
|
|
27
|
+
* Building block for displaying object status with criticality in inverted mode.
|
|
28
|
+
*/
|
|
29
|
+
let Status = (_dec = defineUI5Class("sap.fe.macros.Status"), _dec2 = implementInterface("sap.ui.core.IFormContent"), _dec3 = property({
|
|
30
|
+
type: "string",
|
|
31
|
+
required: true
|
|
32
|
+
}), _dec4 = property({
|
|
33
|
+
type: "string"
|
|
34
|
+
}), _dec5 = property({
|
|
35
|
+
type: "string",
|
|
36
|
+
allowedValues: ["Inline", "Overlay"]
|
|
37
|
+
}), _dec6 = property({
|
|
38
|
+
type: "boolean"
|
|
39
|
+
}), _dec7 = property({
|
|
40
|
+
type: "boolean"
|
|
41
|
+
}), _dec8 = event(), _dec(_class = (_class2 = /*#__PURE__*/function (_BuildingBlock) {
|
|
42
|
+
/**
|
|
43
|
+
* Internal property to store the data model path
|
|
44
|
+
*/
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Constructor for the Status building block.
|
|
48
|
+
* @param properties The properties object containing Status-specific settings and base control settings
|
|
49
|
+
* @param [others] Additional control settings that may be applied to the building block
|
|
50
|
+
*/
|
|
51
|
+
function Status(properties, others) {
|
|
52
|
+
var _this;
|
|
53
|
+
_this = _BuildingBlock.call(this, properties, others) || this;
|
|
54
|
+
_initializerDefineProperty(_this, "__implements__sap_ui_core_IFormContent", _descriptor, _this);
|
|
55
|
+
/**
|
|
56
|
+
* Metadata path to the DataField annotation or property.
|
|
57
|
+
* @public
|
|
58
|
+
*/
|
|
59
|
+
_initializerDefineProperty(_this, "metaPath", _descriptor2, _this);
|
|
60
|
+
/**
|
|
61
|
+
* Context path for the binding context.
|
|
62
|
+
* @public
|
|
63
|
+
*/
|
|
64
|
+
_initializerDefineProperty(_this, "contextPath", _descriptor3, _this);
|
|
65
|
+
/**
|
|
66
|
+
* When the Status is clickable, it defines the size of the reactive area of the clickable element:
|
|
67
|
+
*
|
|
68
|
+
* - ReactiveAreaMode.Inline - The Status is displayed as part of a sentence.
|
|
69
|
+
* - ReactiveAreaMode.Overlay - The Status is displayed as an overlay on top of other interactive parts of the page.
|
|
70
|
+
* Note: It is designed to make the clickable element easier to activate and helps meet the WCAG 2.2 Target Size requirement. It is applicable only for the SAP Horizon themes. Note: The size of the reactive area is sufficiently large to help users avoid accidentally selecting (clicking or tapping) unintended UI elements. UI elements positioned over other parts of the page may need an invisible active touch area. This ensures that no elements beneath are activated accidentally when the user tries to interact with the overlay element.
|
|
71
|
+
* @public
|
|
72
|
+
*/
|
|
73
|
+
_initializerDefineProperty(_this, "reactiveAreaMode", _descriptor4, _this);
|
|
74
|
+
/**
|
|
75
|
+
* Indicates whether the ObjectStatus should be displayed in large design mode.
|
|
76
|
+
* @public
|
|
77
|
+
*/
|
|
78
|
+
_initializerDefineProperty(_this, "largeDesign", _descriptor5, _this);
|
|
79
|
+
_initializerDefineProperty(_this, "hideIcon", _descriptor6, _this);
|
|
80
|
+
/**
|
|
81
|
+
* Press event fired when the ObjectStatus is clicked.
|
|
82
|
+
* @param event The press event
|
|
83
|
+
* @public
|
|
84
|
+
*/
|
|
85
|
+
_initializerDefineProperty(_this, "press", _descriptor7, _this);
|
|
86
|
+
return _this;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Handler for the onMetadataAvailable event.
|
|
91
|
+
*/
|
|
92
|
+
_exports = Status;
|
|
93
|
+
_inheritsLoose(Status, _BuildingBlock);
|
|
94
|
+
var _proto = Status.prototype;
|
|
95
|
+
_proto.onMetadataAvailable = function onMetadataAvailable() {
|
|
96
|
+
this.getTemplatingObjects();
|
|
97
|
+
if (!this.dataModelPath && !this.valueDataModelPath) {
|
|
98
|
+
// there cannot be a static value and no datafield or datapoint
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if (!this.content) {
|
|
102
|
+
this.content = this.createContent();
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* Function to get the templating objects and prepare data model paths.
|
|
108
|
+
*/;
|
|
109
|
+
_proto.getTemplatingObjects = function getTemplatingObjects() {
|
|
110
|
+
// Try to get as DataField first, then as DataPoint, then as Property
|
|
111
|
+
const internalDataModelPath = this.getDataModelObjectForMetaPath(this.metaPath, this.contextPath);
|
|
112
|
+
const targetObject = internalDataModelPath?.targetObject;
|
|
113
|
+
if (!internalDataModelPath) {
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
if (isProperty(targetObject)) {
|
|
117
|
+
if (targetObject?.annotations?.UI?.DataFieldDefault !== undefined) {
|
|
118
|
+
this.dataModelPath = this.getDataModelObjectForMetaPath(`${this.metaPath}@${"com.sap.vocabularies.UI.v1.DataFieldDefault"}`, this.contextPath);
|
|
119
|
+
}
|
|
120
|
+
this.valueDataModelPath = internalDataModelPath;
|
|
121
|
+
} else {
|
|
122
|
+
this.dataModelPath = internalDataModelPath;
|
|
123
|
+
if (this.dataModelPath?.targetObject?.Value?.path) {
|
|
124
|
+
this.valueDataModelPath = enhanceDataModelPath(internalDataModelPath, this.dataModelPath.targetObject.Value.path);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Gets the criticality expression for the ObjectStatus.
|
|
131
|
+
* @returns The compiled binding expression for criticality color, or undefined if no criticality is available
|
|
132
|
+
*/;
|
|
133
|
+
_proto.getCriticalityExpression = function getCriticalityExpression() {
|
|
134
|
+
return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityColor(this.dataModelPath, this.dataModelPath);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Gets the criticality icon expression for the ObjectStatus.
|
|
139
|
+
* @returns The compiled binding expression for criticality icon, or undefined if no criticality is available
|
|
140
|
+
*/;
|
|
141
|
+
_proto.getCriticalityIconExpression = function getCriticalityIconExpression() {
|
|
142
|
+
return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityIcon(this.dataModelPath, this.dataModelPath);
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* Gets the text binding expression for the ObjectStatus.
|
|
147
|
+
* @returns The compiled binding expression for the ObjectStatus text content
|
|
148
|
+
*/;
|
|
149
|
+
_proto.getObjectStatusTextBinding = function getObjectStatusTextBinding() {
|
|
150
|
+
const propertyOrDataFieldDataModelObjectPath = this.valueDataModelPath ?? this.dataModelPath;
|
|
151
|
+
return getTextBinding(propertyOrDataFieldDataModelObjectPath, {});
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Creates the ObjectStatus control content.
|
|
156
|
+
* @returns The configured ObjectStatus control ready for rendering
|
|
157
|
+
*/;
|
|
158
|
+
_proto.createContent = function createContent() {
|
|
159
|
+
const dataFieldOrPropertyDataModelObjectPath = this.dataModelPath ?? this.valueDataModelPath;
|
|
160
|
+
const visible = getVisibleExpression(dataFieldOrPropertyDataModelObjectPath);
|
|
161
|
+
const criticalityExpression = this.getCriticalityExpression();
|
|
162
|
+
const criticalityIconExpression = this.getCriticalityIconExpression();
|
|
163
|
+
const textBinding = this.getObjectStatusTextBinding();
|
|
164
|
+
const isActive = !!this.press;
|
|
165
|
+
return _jsx(MObjectStatus, {
|
|
166
|
+
id: generate([this.getId(), "ObjectStatus"]),
|
|
167
|
+
inverted: true,
|
|
168
|
+
class: this.largeDesign ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined,
|
|
169
|
+
state: criticalityExpression,
|
|
170
|
+
icon: this.hideIcon ? undefined : criticalityIconExpression,
|
|
171
|
+
text: textBinding,
|
|
172
|
+
visible: visible,
|
|
173
|
+
active: isActive,
|
|
174
|
+
reactiveAreaMode: this.reactiveAreaMode,
|
|
175
|
+
press: pressEvent => {
|
|
176
|
+
this.fireEvent("press", pressEvent);
|
|
177
|
+
}
|
|
178
|
+
});
|
|
179
|
+
};
|
|
180
|
+
return Status;
|
|
181
|
+
}(BuildingBlock), _descriptor = _applyDecoratedDescriptor(_class2.prototype, "__implements__sap_ui_core_IFormContent", [_dec2], {
|
|
182
|
+
configurable: true,
|
|
183
|
+
enumerable: true,
|
|
184
|
+
writable: true,
|
|
185
|
+
initializer: function () {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
}), _descriptor2 = _applyDecoratedDescriptor(_class2.prototype, "metaPath", [_dec3], {
|
|
189
|
+
configurable: true,
|
|
190
|
+
enumerable: true,
|
|
191
|
+
writable: true,
|
|
192
|
+
initializer: null
|
|
193
|
+
}), _descriptor3 = _applyDecoratedDescriptor(_class2.prototype, "contextPath", [_dec4], {
|
|
194
|
+
configurable: true,
|
|
195
|
+
enumerable: true,
|
|
196
|
+
writable: true,
|
|
197
|
+
initializer: null
|
|
198
|
+
}), _descriptor4 = _applyDecoratedDescriptor(_class2.prototype, "reactiveAreaMode", [_dec5], {
|
|
199
|
+
configurable: true,
|
|
200
|
+
enumerable: true,
|
|
201
|
+
writable: true,
|
|
202
|
+
initializer: null
|
|
203
|
+
}), _descriptor5 = _applyDecoratedDescriptor(_class2.prototype, "largeDesign", [_dec6], {
|
|
204
|
+
configurable: true,
|
|
205
|
+
enumerable: true,
|
|
206
|
+
writable: true,
|
|
207
|
+
initializer: function () {
|
|
208
|
+
return false;
|
|
209
|
+
}
|
|
210
|
+
}), _descriptor6 = _applyDecoratedDescriptor(_class2.prototype, "hideIcon", [_dec7], {
|
|
211
|
+
configurable: true,
|
|
212
|
+
enumerable: true,
|
|
213
|
+
writable: true,
|
|
214
|
+
initializer: function () {
|
|
215
|
+
return false;
|
|
216
|
+
}
|
|
217
|
+
}), _descriptor7 = _applyDecoratedDescriptor(_class2.prototype, "press", [_dec8], {
|
|
218
|
+
configurable: true,
|
|
219
|
+
enumerable: true,
|
|
220
|
+
writable: true,
|
|
221
|
+
initializer: null
|
|
222
|
+
}), _class2)) || _class);
|
|
223
|
+
_exports = Status;
|
|
224
|
+
return _exports;
|
|
225
|
+
}, false);
|
|
226
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTdGF0dXMiLCJfZGVjIiwiZGVmaW5lVUk1Q2xhc3MiLCJfZGVjMiIsImltcGxlbWVudEludGVyZmFjZSIsIl9kZWMzIiwicHJvcGVydHkiLCJ0eXBlIiwicmVxdWlyZWQiLCJfZGVjNCIsIl9kZWM1IiwiYWxsb3dlZFZhbHVlcyIsIl9kZWM2IiwiX2RlYzciLCJfZGVjOCIsImV2ZW50IiwiX2NsYXNzIiwiX2NsYXNzMiIsIl9CdWlsZGluZ0Jsb2NrIiwicHJvcGVydGllcyIsIm90aGVycyIsIl90aGlzIiwiY2FsbCIsIl9pbml0aWFsaXplckRlZmluZVByb3BlcnR5IiwiX2Rlc2NyaXB0b3IiLCJfZGVzY3JpcHRvcjIiLCJfZGVzY3JpcHRvcjMiLCJfZGVzY3JpcHRvcjQiLCJfZGVzY3JpcHRvcjUiLCJfZGVzY3JpcHRvcjYiLCJfZGVzY3JpcHRvcjciLCJfZXhwb3J0cyIsIl9pbmhlcml0c0xvb3NlIiwiX3Byb3RvIiwicHJvdG90eXBlIiwib25NZXRhZGF0YUF2YWlsYWJsZSIsImdldFRlbXBsYXRpbmdPYmplY3RzIiwiZGF0YU1vZGVsUGF0aCIsInZhbHVlRGF0YU1vZGVsUGF0aCIsImNvbnRlbnQiLCJjcmVhdGVDb250ZW50IiwiaW50ZXJuYWxEYXRhTW9kZWxQYXRoIiwiZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGgiLCJtZXRhUGF0aCIsImNvbnRleHRQYXRoIiwidGFyZ2V0T2JqZWN0IiwiaXNQcm9wZXJ0eSIsImFubm90YXRpb25zIiwiVUkiLCJEYXRhRmllbGREZWZhdWx0IiwidW5kZWZpbmVkIiwiVmFsdWUiLCJwYXRoIiwiZW5oYW5jZURhdGFNb2RlbFBhdGgiLCJnZXRDcml0aWNhbGl0eUV4cHJlc3Npb24iLCJidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yIiwiZ2V0Q3JpdGljYWxpdHlJY29uRXhwcmVzc2lvbiIsImJ1aWxkRXhwcmVzc2lvbkZvckNyaXRpY2FsaXR5SWNvbiIsImdldE9iamVjdFN0YXR1c1RleHRCaW5kaW5nIiwicHJvcGVydHlPckRhdGFGaWVsZERhdGFNb2RlbE9iamVjdFBhdGgiLCJnZXRUZXh0QmluZGluZyIsImRhdGFGaWVsZE9yUHJvcGVydHlEYXRhTW9kZWxPYmplY3RQYXRoIiwidmlzaWJsZSIsImdldFZpc2libGVFeHByZXNzaW9uIiwiY3JpdGljYWxpdHlFeHByZXNzaW9uIiwiY3JpdGljYWxpdHlJY29uRXhwcmVzc2lvbiIsInRleHRCaW5kaW5nIiwiaXNBY3RpdmUiLCJwcmVzcyIsIl9qc3giLCJNT2JqZWN0U3RhdHVzIiwiaWQiLCJnZW5lcmF0ZSIsImdldElkIiwiaW52ZXJ0ZWQiLCJjbGFzcyIsImxhcmdlRGVzaWduIiwic3RhdGUiLCJpY29uIiwiaGlkZUljb24iLCJ0ZXh0IiwiYWN0aXZlIiwicmVhY3RpdmVBcmVhTW9kZSIsInByZXNzRXZlbnQiLCJmaXJlRXZlbnQiLCJCdWlsZGluZ0Jsb2NrIiwiX2FwcGx5RGVjb3JhdGVkRGVzY3JpcHRvciIsImNvbmZpZ3VyYWJsZSIsImVudW1lcmFibGUiLCJ3cml0YWJsZSIsImluaXRpYWxpemVyIl0sInNvdXJjZVJvb3QiOiIuIiwic291cmNlcyI6WyJTdGF0dXMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUHJvcGVydHkgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YUZpZWxkLCBEYXRhUG9pbnRUeXBlIH0gZnJvbSBcIkBzYXAtdXgvdm9jYWJ1bGFyaWVzLXR5cGVzL3ZvY2FidWxhcmllcy9VSVwiO1xuaW1wb3J0IHsgVUlBbm5vdGF0aW9uVGVybXMgfSBmcm9tIFwiQHNhcC11eC92b2NhYnVsYXJpZXMtdHlwZXMvdm9jYWJ1bGFyaWVzL1VJXCI7XG5pbXBvcnQgdHlwZSB7IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9iYXNlL0JpbmRpbmdUb29sa2l0XCI7XG5pbXBvcnQgeyBkZWZpbmVVSTVDbGFzcywgZXZlbnQsIGltcGxlbWVudEludGVyZmFjZSwgcHJvcGVydHksIHR5cGUgUHJvcGVydGllc09mIH0gZnJvbSBcInNhcC9mZS9iYXNlL0NsYXNzU3VwcG9ydFwiO1xuaW1wb3J0IEJ1aWxkaW5nQmxvY2sgZnJvbSBcInNhcC9mZS9jb3JlL2J1aWxkaW5nQmxvY2tzL0J1aWxkaW5nQmxvY2tcIjtcbmltcG9ydCB7IGdlbmVyYXRlIH0gZnJvbSBcInNhcC9mZS9jb3JlL2hlbHBlcnMvU3RhYmxlSWRIZWxwZXJcIjtcbmltcG9ydCB7IGlzUHJvcGVydHkgfSBmcm9tIFwic2FwL2ZlL2NvcmUvaGVscGVycy9UeXBlR3VhcmRzXCI7XG5pbXBvcnQgeyBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yLCBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUljb24gfSBmcm9tIFwic2FwL2ZlL2NvcmUvdGVtcGxhdGluZy9Dcml0aWNhbGl0eUZvcm1hdHRlcnNcIjtcbmltcG9ydCB0eXBlIHsgRGF0YU1vZGVsT2JqZWN0UGF0aCB9IGZyb20gXCJzYXAvZmUvY29yZS90ZW1wbGF0aW5nL0RhdGFNb2RlbFBhdGhIZWxwZXJcIjtcbmltcG9ydCB7IGVuaGFuY2VEYXRhTW9kZWxQYXRoIH0gZnJvbSBcInNhcC9mZS9jb3JlL3RlbXBsYXRpbmcvRGF0YU1vZGVsUGF0aEhlbHBlclwiO1xuaW1wb3J0IHsgZ2V0VGV4dEJpbmRpbmcsIGdldFZpc2libGVFeHByZXNzaW9uIH0gZnJvbSBcInNhcC9mZS9tYWNyb3MvZmllbGQvRmllbGRUZW1wbGF0aW5nXCI7XG5pbXBvcnQgdHlwZSB7IE9iamVjdFN0YXR1cyRQcmVzc0V2ZW50IH0gZnJvbSBcInNhcC9tL09iamVjdFN0YXR1c1wiO1xuaW1wb3J0IE1PYmplY3RTdGF0dXMgZnJvbSBcInNhcC9tL09iamVjdFN0YXR1c1wiO1xuaW1wb3J0IHR5cGUgeyAkQ29udHJvbFNldHRpbmdzIH0gZnJvbSBcInNhcC91aS9jb3JlL0NvbnRyb2xcIjtcbmltcG9ydCB0eXBlIHsgSUZvcm1Db250ZW50IH0gZnJvbSBcInNhcC91aS9jb3JlL2xpYnJhcnlcIjtcblxuLyoqXG4gKiBCdWlsZGluZyBibG9jayBmb3IgZGlzcGxheWluZyBvYmplY3Qgc3RhdHVzIHdpdGggY3JpdGljYWxpdHkgaW4gaW52ZXJ0ZWQgbW9kZS5cbiAqL1xuQGRlZmluZVVJNUNsYXNzKFwic2FwLmZlLm1hY3Jvcy5TdGF0dXNcIilcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFN0YXR1cyBleHRlbmRzIEJ1aWxkaW5nQmxvY2s8TU9iamVjdFN0YXR1cz4gaW1wbGVtZW50cyBJRm9ybUNvbnRlbnQge1xuXHRAaW1wbGVtZW50SW50ZXJmYWNlKFwic2FwLnVpLmNvcmUuSUZvcm1Db250ZW50XCIpXG5cdF9faW1wbGVtZW50c19fc2FwX3VpX2NvcmVfSUZvcm1Db250ZW50ID0gdHJ1ZTtcblxuXHQvKipcblx0ICogTWV0YWRhdGEgcGF0aCB0byB0aGUgRGF0YUZpZWxkIGFubm90YXRpb24gb3IgcHJvcGVydHkuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7XG5cdFx0dHlwZTogXCJzdHJpbmdcIixcblx0XHRyZXF1aXJlZDogdHJ1ZVxuXHR9KVxuXHRwdWJsaWMgbWV0YVBhdGghOiBzdHJpbmc7XG5cblx0LyoqXG5cdCAqIENvbnRleHQgcGF0aCBmb3IgdGhlIGJpbmRpbmcgY29udGV4dC5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHtcblx0XHR0eXBlOiBcInN0cmluZ1wiXG5cdH0pXG5cdHB1YmxpYyBjb250ZXh0UGF0aD86IHN0cmluZztcblxuXHQvKipcblx0ICogIFdoZW4gdGhlIFN0YXR1cyBpcyBjbGlja2FibGUsIGl0IGRlZmluZXMgdGhlIHNpemUgb2YgdGhlIHJlYWN0aXZlIGFyZWEgb2YgdGhlIGNsaWNrYWJsZSBlbGVtZW50OlxuXHQgKlxuXHQgKiAtIFJlYWN0aXZlQXJlYU1vZGUuSW5saW5lIC0gVGhlIFN0YXR1cyBpcyBkaXNwbGF5ZWQgYXMgcGFydCBvZiBhIHNlbnRlbmNlLlxuXHQgKiAtIFJlYWN0aXZlQXJlYU1vZGUuT3ZlcmxheSAtIFRoZSBTdGF0dXMgaXMgZGlzcGxheWVkIGFzIGFuIG92ZXJsYXkgb24gdG9wIG9mIG90aGVyIGludGVyYWN0aXZlIHBhcnRzIG9mIHRoZSBwYWdlLlxuXHQgKiBOb3RlOiBJdCBpcyBkZXNpZ25lZCB0byBtYWtlIHRoZSBjbGlja2FibGUgZWxlbWVudCBlYXNpZXIgdG8gYWN0aXZhdGUgYW5kIGhlbHBzIG1lZXQgdGhlIFdDQUcgMi4yIFRhcmdldCBTaXplIHJlcXVpcmVtZW50LiBJdCBpcyBhcHBsaWNhYmxlIG9ubHkgZm9yIHRoZSBTQVAgSG9yaXpvbiB0aGVtZXMuIE5vdGU6IFRoZSBzaXplIG9mIHRoZSByZWFjdGl2ZSBhcmVhIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBoZWxwIHVzZXJzIGF2b2lkIGFjY2lkZW50YWxseSBzZWxlY3RpbmcgKGNsaWNraW5nIG9yIHRhcHBpbmcpIHVuaW50ZW5kZWQgVUkgZWxlbWVudHMuIFVJIGVsZW1lbnRzIHBvc2l0aW9uZWQgb3ZlciBvdGhlciBwYXJ0cyBvZiB0aGUgcGFnZSBtYXkgbmVlZCBhbiBpbnZpc2libGUgYWN0aXZlIHRvdWNoIGFyZWEuIFRoaXMgZW5zdXJlcyB0aGF0IG5vIGVsZW1lbnRzIGJlbmVhdGggYXJlIGFjdGl2YXRlZCBhY2NpZGVudGFsbHkgd2hlbiB0aGUgdXNlciB0cmllcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBvdmVybGF5IGVsZW1lbnQuXG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBwcm9wZXJ0eSh7IHR5cGU6IFwic3RyaW5nXCIsIGFsbG93ZWRWYWx1ZXM6IFtcIklubGluZVwiLCBcIk92ZXJsYXlcIl0gfSlcblx0cHVibGljIHJlYWN0aXZlQXJlYU1vZGU/OiBcIklubGluZVwiIHwgXCJPdmVybGF5XCI7XG5cblx0LyoqXG5cdCAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBPYmplY3RTdGF0dXMgc2hvdWxkIGJlIGRpc3BsYXllZCBpbiBsYXJnZSBkZXNpZ24gbW9kZS5cblx0ICogQHB1YmxpY1xuXHQgKi9cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cHVibGljIGxhcmdlRGVzaWduID0gZmFsc2U7XG5cblx0QHByb3BlcnR5KHsgdHlwZTogXCJib29sZWFuXCIgfSlcblx0cHVibGljIGhpZGVJY29uID0gZmFsc2U7XG5cblx0LyoqXG5cdCAqIFByZXNzIGV2ZW50IGZpcmVkIHdoZW4gdGhlIE9iamVjdFN0YXR1cyBpcyBjbGlja2VkLlxuXHQgKiBAcGFyYW0gZXZlbnQgVGhlIHByZXNzIGV2ZW50XG5cdCAqIEBwdWJsaWNcblx0ICovXG5cdEBldmVudCgpXG5cdHB1YmxpYyBwcmVzcz86IChldmVudDogT2JqZWN0U3RhdHVzJFByZXNzRXZlbnQpID0+IHZvaWQ7XG5cblx0LyoqXG5cdCAqIEludGVybmFsIHByb3BlcnR5IHRvIHN0b3JlIHRoZSBkYXRhIG1vZGVsIHBhdGhcblx0ICovXG5cdHByaXZhdGUgZGF0YU1vZGVsUGF0aD86IERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkIHwgRGF0YVBvaW50VHlwZT47XG5cblx0cHJpdmF0ZSB2YWx1ZURhdGFNb2RlbFBhdGg/OiBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5PjtcblxuXHQvKipcblx0ICogQ29uc3RydWN0b3IgZm9yIHRoZSBTdGF0dXMgYnVpbGRpbmcgYmxvY2suXG5cdCAqIEBwYXJhbSBwcm9wZXJ0aWVzIFRoZSBwcm9wZXJ0aWVzIG9iamVjdCBjb250YWluaW5nIFN0YXR1cy1zcGVjaWZpYyBzZXR0aW5ncyBhbmQgYmFzZSBjb250cm9sIHNldHRpbmdzXG5cdCAqIEBwYXJhbSBbb3RoZXJzXSBBZGRpdGlvbmFsIGNvbnRyb2wgc2V0dGluZ3MgdGhhdCBtYXkgYmUgYXBwbGllZCB0byB0aGUgYnVpbGRpbmcgYmxvY2tcblx0ICovXG5cdGNvbnN0cnVjdG9yKHByb3BlcnRpZXM6ICRDb250cm9sU2V0dGluZ3MgJiBQcm9wZXJ0aWVzT2Y8U3RhdHVzPiwgb3RoZXJzPzogJENvbnRyb2xTZXR0aW5ncykge1xuXHRcdHN1cGVyKHByb3BlcnRpZXMsIG90aGVycyk7XG5cdH1cblxuXHQvKipcblx0ICogSGFuZGxlciBmb3IgdGhlIG9uTWV0YWRhdGFBdmFpbGFibGUgZXZlbnQuXG5cdCAqL1xuXHRvbk1ldGFkYXRhQXZhaWxhYmxlKCk6IHZvaWQge1xuXHRcdHRoaXMuZ2V0VGVtcGxhdGluZ09iamVjdHMoKTtcblx0XHRpZiAoIXRoaXMuZGF0YU1vZGVsUGF0aCAmJiAhdGhpcy52YWx1ZURhdGFNb2RlbFBhdGgpIHtcblx0XHRcdC8vIHRoZXJlIGNhbm5vdCBiZSBhIHN0YXRpYyB2YWx1ZSBhbmQgbm8gZGF0YWZpZWxkIG9yIGRhdGFwb2ludFxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRpZiAoIXRoaXMuY29udGVudCkge1xuXHRcdFx0dGhpcy5jb250ZW50ID0gdGhpcy5jcmVhdGVDb250ZW50KCk7XG5cdFx0fVxuXHR9XG5cblx0LyoqXG5cdCAqIEZ1bmN0aW9uIHRvIGdldCB0aGUgdGVtcGxhdGluZyBvYmplY3RzIGFuZCBwcmVwYXJlIGRhdGEgbW9kZWwgcGF0aHMuXG5cdCAqL1xuXHRwcml2YXRlIGdldFRlbXBsYXRpbmdPYmplY3RzKCk6IHZvaWQge1xuXHRcdC8vIFRyeSB0byBnZXQgYXMgRGF0YUZpZWxkIGZpcnN0LCB0aGVuIGFzIERhdGFQb2ludCwgdGhlbiBhcyBQcm9wZXJ0eVxuXHRcdGNvbnN0IGludGVybmFsRGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RGF0YUZpZWxkIHwgRGF0YVBvaW50VHlwZSB8IFByb3BlcnR5Pihcblx0XHRcdHRoaXMubWV0YVBhdGgsXG5cdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0KTtcblx0XHRjb25zdCB0YXJnZXRPYmplY3QgPSBpbnRlcm5hbERhdGFNb2RlbFBhdGg/LnRhcmdldE9iamVjdDtcblxuXHRcdGlmICghaW50ZXJuYWxEYXRhTW9kZWxQYXRoKSB7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmIChpc1Byb3BlcnR5KHRhcmdldE9iamVjdCkpIHtcblx0XHRcdGlmICh0YXJnZXRPYmplY3Q/LmFubm90YXRpb25zPy5VST8uRGF0YUZpZWxkRGVmYXVsdCAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0XHRcdHRoaXMuZGF0YU1vZGVsUGF0aCA9IHRoaXMuZ2V0RGF0YU1vZGVsT2JqZWN0Rm9yTWV0YVBhdGg8RGF0YUZpZWxkPihcblx0XHRcdFx0XHRgJHt0aGlzLm1ldGFQYXRofUAke1VJQW5ub3RhdGlvblRlcm1zLkRhdGFGaWVsZERlZmF1bHR9YCxcblx0XHRcdFx0XHR0aGlzLmNvbnRleHRQYXRoXG5cdFx0XHRcdCk7XG5cdFx0XHR9XG5cdFx0XHR0aGlzLnZhbHVlRGF0YU1vZGVsUGF0aCA9IGludGVybmFsRGF0YU1vZGVsUGF0aCBhcyBEYXRhTW9kZWxPYmplY3RQYXRoPFByb3BlcnR5Pjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dGhpcy5kYXRhTW9kZWxQYXRoID0gaW50ZXJuYWxEYXRhTW9kZWxQYXRoIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8RGF0YUZpZWxkIHwgRGF0YVBvaW50VHlwZT47XG5cdFx0XHRpZiAodGhpcy5kYXRhTW9kZWxQYXRoPy50YXJnZXRPYmplY3Q/LlZhbHVlPy5wYXRoKSB7XG5cdFx0XHRcdHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoID0gZW5oYW5jZURhdGFNb2RlbFBhdGg8UHJvcGVydHk+KGludGVybmFsRGF0YU1vZGVsUGF0aCwgdGhpcy5kYXRhTW9kZWxQYXRoLnRhcmdldE9iamVjdC5WYWx1ZS5wYXRoKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHQvKipcblx0ICogR2V0cyB0aGUgY3JpdGljYWxpdHkgZXhwcmVzc2lvbiBmb3IgdGhlIE9iamVjdFN0YXR1cy5cblx0ICogQHJldHVybnMgVGhlIGNvbXBpbGVkIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgY3JpdGljYWxpdHkgY29sb3IsIG9yIHVuZGVmaW5lZCBpZiBubyBjcml0aWNhbGl0eSBpcyBhdmFpbGFibGVcblx0ICovXG5cdHByaXZhdGUgZ2V0Q3JpdGljYWxpdHlFeHByZXNzaW9uKCk6IENvbXBpbGVkQmluZGluZ1Rvb2xraXRFeHByZXNzaW9uIHwgdW5kZWZpbmVkIHtcblx0XHRyZXR1cm4gdGhpcy5kYXRhTW9kZWxQYXRoID09PSB1bmRlZmluZWQgPyB1bmRlZmluZWQgOiBidWlsZEV4cHJlc3Npb25Gb3JDcml0aWNhbGl0eUNvbG9yKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSBjcml0aWNhbGl0eSBpY29uIGV4cHJlc3Npb24gZm9yIHRoZSBPYmplY3RTdGF0dXMuXG5cdCAqIEByZXR1cm5zIFRoZSBjb21waWxlZCBiaW5kaW5nIGV4cHJlc3Npb24gZm9yIGNyaXRpY2FsaXR5IGljb24sIG9yIHVuZGVmaW5lZCBpZiBubyBjcml0aWNhbGl0eSBpcyBhdmFpbGFibGVcblx0ICovXG5cdHByaXZhdGUgZ2V0Q3JpdGljYWxpdHlJY29uRXhwcmVzc2lvbigpOiBDb21waWxlZEJpbmRpbmdUb29sa2l0RXhwcmVzc2lvbiB8IHVuZGVmaW5lZCB7XG5cdFx0cmV0dXJuIHRoaXMuZGF0YU1vZGVsUGF0aCA9PT0gdW5kZWZpbmVkID8gdW5kZWZpbmVkIDogYnVpbGRFeHByZXNzaW9uRm9yQ3JpdGljYWxpdHlJY29uKHRoaXMuZGF0YU1vZGVsUGF0aCwgdGhpcy5kYXRhTW9kZWxQYXRoKTtcblx0fVxuXG5cdC8qKlxuXHQgKiBHZXRzIHRoZSB0ZXh0IGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIE9iamVjdFN0YXR1cy5cblx0ICogQHJldHVybnMgVGhlIGNvbXBpbGVkIGJpbmRpbmcgZXhwcmVzc2lvbiBmb3IgdGhlIE9iamVjdFN0YXR1cyB0ZXh0IGNvbnRlbnRcblx0ICovXG5cdHByaXZhdGUgZ2V0T2JqZWN0U3RhdHVzVGV4dEJpbmRpbmcoKTogQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb24ge1xuXHRcdGNvbnN0IHByb3BlcnR5T3JEYXRhRmllbGREYXRhTW9kZWxPYmplY3RQYXRoID0gKHRoaXMudmFsdWVEYXRhTW9kZWxQYXRoID8/IHRoaXMuZGF0YU1vZGVsUGF0aCkgYXMgRGF0YU1vZGVsT2JqZWN0UGF0aDxcblx0XHRcdFByb3BlcnR5IHwgRGF0YUZpZWxkIHwgRGF0YVBvaW50VHlwZVxuXHRcdD47XG5cdFx0cmV0dXJuIGdldFRleHRCaW5kaW5nKHByb3BlcnR5T3JEYXRhRmllbGREYXRhTW9kZWxPYmplY3RQYXRoLCB7fSkgYXMgQ29tcGlsZWRCaW5kaW5nVG9vbGtpdEV4cHJlc3Npb247XG5cdH1cblxuXHQvKipcblx0ICogQ3JlYXRlcyB0aGUgT2JqZWN0U3RhdHVzIGNvbnRyb2wgY29udGVudC5cblx0ICogQHJldHVybnMgVGhlIGNvbmZpZ3VyZWQgT2JqZWN0U3RhdHVzIGNvbnRyb2wgcmVhZHkgZm9yIHJlbmRlcmluZ1xuXHQgKi9cblx0Y3JlYXRlQ29udGVudCgpOiBNT2JqZWN0U3RhdHVzIHtcblx0XHRjb25zdCBkYXRhRmllbGRPclByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCA9ICh0aGlzLmRhdGFNb2RlbFBhdGggPz8gdGhpcy52YWx1ZURhdGFNb2RlbFBhdGgpIGFzIERhdGFNb2RlbE9iamVjdFBhdGg8XG5cdFx0XHRQcm9wZXJ0eSB8IERhdGFGaWVsZCB8IERhdGFQb2ludFR5cGVcblx0XHQ+O1xuXHRcdGNvbnN0IHZpc2libGUgPSBnZXRWaXNpYmxlRXhwcmVzc2lvbihkYXRhRmllbGRPclByb3BlcnR5RGF0YU1vZGVsT2JqZWN0UGF0aCk7XG5cdFx0Y29uc3QgY3JpdGljYWxpdHlFeHByZXNzaW9uID0gdGhpcy5nZXRDcml0aWNhbGl0eUV4cHJlc3Npb24oKTtcblx0XHRjb25zdCBjcml0aWNhbGl0eUljb25FeHByZXNzaW9uID0gdGhpcy5nZXRDcml0aWNhbGl0eUljb25FeHByZXNzaW9uKCk7XG5cdFx0Y29uc3QgdGV4dEJpbmRpbmcgPSB0aGlzLmdldE9iamVjdFN0YXR1c1RleHRCaW5kaW5nKCk7XG5cdFx0Y29uc3QgaXNBY3RpdmUgPSAhIXRoaXMucHJlc3M7XG5cblx0XHRyZXR1cm4gKFxuXHRcdFx0PE1PYmplY3RTdGF0dXNcblx0XHRcdFx0aWQ9e2dlbmVyYXRlKFt0aGlzLmdldElkKCksIFwiT2JqZWN0U3RhdHVzXCJdKX1cblx0XHRcdFx0aW52ZXJ0ZWQ9e3RydWV9XG5cdFx0XHRcdGNsYXNzPXt0aGlzLmxhcmdlRGVzaWduID8gXCJzYXBNT2JqZWN0U3RhdHVzTGFyZ2Ugc2FwTU9iamVjdFN0YXR1c0xvbmdUZXh0XCIgOiB1bmRlZmluZWR9XG5cdFx0XHRcdHN0YXRlPXtjcml0aWNhbGl0eUV4cHJlc3Npb259XG5cdFx0XHRcdGljb249e3RoaXMuaGlkZUljb24gPyB1bmRlZmluZWQgOiBjcml0aWNhbGl0eUljb25FeHByZXNzaW9ufVxuXHRcdFx0XHR0ZXh0PXt0ZXh0QmluZGluZ31cblx0XHRcdFx0dmlzaWJsZT17dmlzaWJsZX1cblx0XHRcdFx0YWN0aXZlPXtpc0FjdGl2ZX1cblx0XHRcdFx0cmVhY3RpdmVBcmVhTW9kZT17dGhpcy5yZWFjdGl2ZUFyZWFNb2RlfVxuXHRcdFx0XHRwcmVzcz17KHByZXNzRXZlbnQ6IE9iamVjdFN0YXR1cyRQcmVzc0V2ZW50KTogdm9pZCA9PiB7XG5cdFx0XHRcdFx0dGhpcy5maXJlRXZlbnQoXCJwcmVzc1wiLCBwcmVzc0V2ZW50KTtcblx0XHRcdFx0fX1cblx0XHRcdC8+XG5cdFx0KTtcblx0fVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBaUJBO0FBQ0E7QUFDQTtFQUZBLElBSXFCQSxNQUFNLElBQUFDLElBQUEsR0FEMUJDLGNBQWMsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFBQyxLQUFBLEdBRXJDQyxrQkFBa0IsQ0FBQywwQkFBMEIsQ0FBQyxFQUFBQyxLQUFBLEdBTzlDQyxRQUFRLENBQUM7SUFDVEMs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
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import type { Property } from "@sap-ux/vocabularies-types";
|
|
2
|
+
import type { DataField, DataPointType } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
3
|
+
import { UIAnnotationTerms } from "@sap-ux/vocabularies-types/vocabularies/UI";
|
|
4
|
+
import type { CompiledBindingToolkitExpression } from "sap/fe/base/BindingToolkit";
|
|
5
|
+
import { defineUI5Class, event, implementInterface, property, type PropertiesOf } from "sap/fe/base/ClassSupport";
|
|
6
|
+
import BuildingBlock from "sap/fe/core/buildingBlocks/BuildingBlock";
|
|
7
|
+
import { generate } from "sap/fe/core/helpers/StableIdHelper";
|
|
8
|
+
import { isProperty } from "sap/fe/core/helpers/TypeGuards";
|
|
9
|
+
import { buildExpressionForCriticalityColor, buildExpressionForCriticalityIcon } from "sap/fe/core/templating/CriticalityFormatters";
|
|
10
|
+
import type { DataModelObjectPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
11
|
+
import { enhanceDataModelPath } from "sap/fe/core/templating/DataModelPathHelper";
|
|
12
|
+
import { getTextBinding, getVisibleExpression } from "sap/fe/macros/field/FieldTemplating";
|
|
13
|
+
import type { ObjectStatus$PressEvent } from "sap/m/ObjectStatus";
|
|
14
|
+
import MObjectStatus from "sap/m/ObjectStatus";
|
|
15
|
+
import type { $ControlSettings } from "sap/ui/core/Control";
|
|
16
|
+
import type { IFormContent } from "sap/ui/core/library";
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Building block for displaying object status with criticality in inverted mode.
|
|
20
|
+
*/
|
|
21
|
+
@defineUI5Class("sap.fe.macros.Status")
|
|
22
|
+
export default class Status extends BuildingBlock<MObjectStatus> implements IFormContent {
|
|
23
|
+
@implementInterface("sap.ui.core.IFormContent")
|
|
24
|
+
__implements__sap_ui_core_IFormContent = true;
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Metadata path to the DataField annotation or property.
|
|
28
|
+
* @public
|
|
29
|
+
*/
|
|
30
|
+
@property({
|
|
31
|
+
type: "string",
|
|
32
|
+
required: true
|
|
33
|
+
})
|
|
34
|
+
public metaPath!: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Context path for the binding context.
|
|
38
|
+
* @public
|
|
39
|
+
*/
|
|
40
|
+
@property({
|
|
41
|
+
type: "string"
|
|
42
|
+
})
|
|
43
|
+
public contextPath?: string;
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* When the Status is clickable, it defines the size of the reactive area of the clickable element:
|
|
47
|
+
*
|
|
48
|
+
* - ReactiveAreaMode.Inline - The Status is displayed as part of a sentence.
|
|
49
|
+
* - ReactiveAreaMode.Overlay - The Status is displayed as an overlay on top of other interactive parts of the page.
|
|
50
|
+
* Note: It is designed to make the clickable element easier to activate and helps meet the WCAG 2.2 Target Size requirement. It is applicable only for the SAP Horizon themes. Note: The size of the reactive area is sufficiently large to help users avoid accidentally selecting (clicking or tapping) unintended UI elements. UI elements positioned over other parts of the page may need an invisible active touch area. This ensures that no elements beneath are activated accidentally when the user tries to interact with the overlay element.
|
|
51
|
+
* @public
|
|
52
|
+
*/
|
|
53
|
+
@property({ type: "string", allowedValues: ["Inline", "Overlay"] })
|
|
54
|
+
public reactiveAreaMode?: "Inline" | "Overlay";
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Indicates whether the ObjectStatus should be displayed in large design mode.
|
|
58
|
+
* @public
|
|
59
|
+
*/
|
|
60
|
+
@property({ type: "boolean" })
|
|
61
|
+
public largeDesign = false;
|
|
62
|
+
|
|
63
|
+
@property({ type: "boolean" })
|
|
64
|
+
public hideIcon = false;
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Press event fired when the ObjectStatus is clicked.
|
|
68
|
+
* @param event The press event
|
|
69
|
+
* @public
|
|
70
|
+
*/
|
|
71
|
+
@event()
|
|
72
|
+
public press?: (event: ObjectStatus$PressEvent) => void;
|
|
73
|
+
|
|
74
|
+
/**
|
|
75
|
+
* Internal property to store the data model path
|
|
76
|
+
*/
|
|
77
|
+
private dataModelPath?: DataModelObjectPath<DataField | DataPointType>;
|
|
78
|
+
|
|
79
|
+
private valueDataModelPath?: DataModelObjectPath<Property>;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* Constructor for the Status building block.
|
|
83
|
+
* @param properties The properties object containing Status-specific settings and base control settings
|
|
84
|
+
* @param [others] Additional control settings that may be applied to the building block
|
|
85
|
+
*/
|
|
86
|
+
constructor(properties: $ControlSettings & PropertiesOf<Status>, others?: $ControlSettings) {
|
|
87
|
+
super(properties, others);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Handler for the onMetadataAvailable event.
|
|
92
|
+
*/
|
|
93
|
+
onMetadataAvailable(): void {
|
|
94
|
+
this.getTemplatingObjects();
|
|
95
|
+
if (!this.dataModelPath && !this.valueDataModelPath) {
|
|
96
|
+
// there cannot be a static value and no datafield or datapoint
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
if (!this.content) {
|
|
100
|
+
this.content = this.createContent();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Function to get the templating objects and prepare data model paths.
|
|
106
|
+
*/
|
|
107
|
+
private getTemplatingObjects(): void {
|
|
108
|
+
// Try to get as DataField first, then as DataPoint, then as Property
|
|
109
|
+
const internalDataModelPath = this.getDataModelObjectForMetaPath<DataField | DataPointType | Property>(
|
|
110
|
+
this.metaPath,
|
|
111
|
+
this.contextPath
|
|
112
|
+
);
|
|
113
|
+
const targetObject = internalDataModelPath?.targetObject;
|
|
114
|
+
|
|
115
|
+
if (!internalDataModelPath) {
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (isProperty(targetObject)) {
|
|
119
|
+
if (targetObject?.annotations?.UI?.DataFieldDefault !== undefined) {
|
|
120
|
+
this.dataModelPath = this.getDataModelObjectForMetaPath<DataField>(
|
|
121
|
+
`${this.metaPath}@${UIAnnotationTerms.DataFieldDefault}`,
|
|
122
|
+
this.contextPath
|
|
123
|
+
);
|
|
124
|
+
}
|
|
125
|
+
this.valueDataModelPath = internalDataModelPath as DataModelObjectPath<Property>;
|
|
126
|
+
} else {
|
|
127
|
+
this.dataModelPath = internalDataModelPath as DataModelObjectPath<DataField | DataPointType>;
|
|
128
|
+
if (this.dataModelPath?.targetObject?.Value?.path) {
|
|
129
|
+
this.valueDataModelPath = enhanceDataModelPath<Property>(internalDataModelPath, this.dataModelPath.targetObject.Value.path);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Gets the criticality expression for the ObjectStatus.
|
|
136
|
+
* @returns The compiled binding expression for criticality color, or undefined if no criticality is available
|
|
137
|
+
*/
|
|
138
|
+
private getCriticalityExpression(): CompiledBindingToolkitExpression | undefined {
|
|
139
|
+
return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityColor(this.dataModelPath, this.dataModelPath);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
/**
|
|
143
|
+
* Gets the criticality icon expression for the ObjectStatus.
|
|
144
|
+
* @returns The compiled binding expression for criticality icon, or undefined if no criticality is available
|
|
145
|
+
*/
|
|
146
|
+
private getCriticalityIconExpression(): CompiledBindingToolkitExpression | undefined {
|
|
147
|
+
return this.dataModelPath === undefined ? undefined : buildExpressionForCriticalityIcon(this.dataModelPath, this.dataModelPath);
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* Gets the text binding expression for the ObjectStatus.
|
|
152
|
+
* @returns The compiled binding expression for the ObjectStatus text content
|
|
153
|
+
*/
|
|
154
|
+
private getObjectStatusTextBinding(): CompiledBindingToolkitExpression {
|
|
155
|
+
const propertyOrDataFieldDataModelObjectPath = (this.valueDataModelPath ?? this.dataModelPath) as DataModelObjectPath<
|
|
156
|
+
Property | DataField | DataPointType
|
|
157
|
+
>;
|
|
158
|
+
return getTextBinding(propertyOrDataFieldDataModelObjectPath, {}) as CompiledBindingToolkitExpression;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* Creates the ObjectStatus control content.
|
|
163
|
+
* @returns The configured ObjectStatus control ready for rendering
|
|
164
|
+
*/
|
|
165
|
+
createContent(): MObjectStatus {
|
|
166
|
+
const dataFieldOrPropertyDataModelObjectPath = (this.dataModelPath ?? this.valueDataModelPath) as DataModelObjectPath<
|
|
167
|
+
Property | DataField | DataPointType
|
|
168
|
+
>;
|
|
169
|
+
const visible = getVisibleExpression(dataFieldOrPropertyDataModelObjectPath);
|
|
170
|
+
const criticalityExpression = this.getCriticalityExpression();
|
|
171
|
+
const criticalityIconExpression = this.getCriticalityIconExpression();
|
|
172
|
+
const textBinding = this.getObjectStatusTextBinding();
|
|
173
|
+
const isActive = !!this.press;
|
|
174
|
+
|
|
175
|
+
return (
|
|
176
|
+
<MObjectStatus
|
|
177
|
+
id={generate([this.getId(), "ObjectStatus"])}
|
|
178
|
+
inverted={true}
|
|
179
|
+
class={this.largeDesign ? "sapMObjectStatusLarge sapMObjectStatusLongText" : undefined}
|
|
180
|
+
state={criticalityExpression}
|
|
181
|
+
icon={this.hideIcon ? undefined : criticalityIconExpression}
|
|
182
|
+
text={textBinding}
|
|
183
|
+
visible={visible}
|
|
184
|
+
active={isActive}
|
|
185
|
+
reactiveAreaMode={this.reactiveAreaMode}
|
|
186
|
+
press={(pressEvent: ObjectStatus$PressEvent): void => {
|
|
187
|
+
this.fireEvent("press", pressEvent);
|
|
188
|
+
}}
|
|
189
|
+
/>
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
}
|