@sapui5/sap.suite.ui.commons 1.141.0 → 1.142.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.
Files changed (61) hide show
  1. package/package.json +1 -1
  2. package/src/sap/suite/ui/commons/.library +1 -1
  3. package/src/sap/suite/ui/commons/AriaProperties.js +1 -1
  4. package/src/sap/suite/ui/commons/CalculationBuilder.js +18 -12
  5. package/src/sap/suite/ui/commons/CalculationBuilderExpression.js +11 -7
  6. package/src/sap/suite/ui/commons/CalculationBuilderFunction.js +1 -1
  7. package/src/sap/suite/ui/commons/CalculationBuilderGroup.js +1 -1
  8. package/src/sap/suite/ui/commons/CalculationBuilderInput.js +5 -5
  9. package/src/sap/suite/ui/commons/CalculationBuilderItem.js +26 -7
  10. package/src/sap/suite/ui/commons/CalculationBuilderValidationResult.js +1 -1
  11. package/src/sap/suite/ui/commons/CalculationBuilderVariable.js +1 -1
  12. package/src/sap/suite/ui/commons/CloudFilePicker.js +21 -21
  13. package/src/sap/suite/ui/commons/MicroProcessFlow.js +2 -2
  14. package/src/sap/suite/ui/commons/MicroProcessFlowItem.js +7 -9
  15. package/src/sap/suite/ui/commons/Timeline.js +22 -24
  16. package/src/sap/suite/ui/commons/TimelineItemRenderer.js +12 -2
  17. package/src/sap/suite/ui/commons/collaboration/ServiceContainer.js +18 -2
  18. package/src/sap/suite/ui/commons/collaboration/TeamsHelperService.js +152 -3
  19. package/src/sap/suite/ui/commons/collaboration/UniversalCollaborationBar.js +366 -0
  20. package/src/sap/suite/ui/commons/collaboration/flpplugins/msplugin/Component-preload.js +5 -2
  21. package/src/sap/suite/ui/commons/flexibility/changeHandler/PropertyChangeMapper.js +1 -1
  22. package/src/sap/suite/ui/commons/imageeditor/CropCustomShapeHistoryItem.js +1 -1
  23. package/src/sap/suite/ui/commons/imageeditor/CropEllipseHistoryItem.js +1 -1
  24. package/src/sap/suite/ui/commons/imageeditor/CropRectangleHistoryItem.js +1 -1
  25. package/src/sap/suite/ui/commons/imageeditor/CustomSizeItem.js +1 -1
  26. package/src/sap/suite/ui/commons/imageeditor/FilterHistoryItem.js +1 -1
  27. package/src/sap/suite/ui/commons/imageeditor/FlipHistoryItem.js +1 -1
  28. package/src/sap/suite/ui/commons/imageeditor/HistoryItem.js +1 -1
  29. package/src/sap/suite/ui/commons/imageeditor/ImageEditor.js +1 -1
  30. package/src/sap/suite/ui/commons/imageeditor/ImageEditorContainer.js +1 -1
  31. package/src/sap/suite/ui/commons/imageeditor/ImageEditorResponsiveContainer.js +1 -1
  32. package/src/sap/suite/ui/commons/imageeditor/ResizeHistoryItem.js +1 -1
  33. package/src/sap/suite/ui/commons/imageeditor/RotateHistoryItem.js +1 -1
  34. package/src/sap/suite/ui/commons/library.js +1 -1
  35. package/src/sap/suite/ui/commons/messagebundle.properties +16 -1
  36. package/src/sap/suite/ui/commons/messagebundle_en.properties +3 -0
  37. package/src/sap/suite/ui/commons/networkgraph/Graph.js +105 -5
  38. package/src/sap/suite/ui/commons/networkgraph/Node.js +33 -11
  39. package/src/sap/suite/ui/commons/networkgraph/util/DragDropManager.js +197 -0
  40. package/src/sap/suite/ui/commons/statusindicator/Circle.js +1 -1
  41. package/src/sap/suite/ui/commons/statusindicator/CustomShape.js +1 -1
  42. package/src/sap/suite/ui/commons/statusindicator/DiscreteThreshold.js +1 -1
  43. package/src/sap/suite/ui/commons/statusindicator/FillingOption.js +1 -1
  44. package/src/sap/suite/ui/commons/statusindicator/LibraryShape.js +1 -1
  45. package/src/sap/suite/ui/commons/statusindicator/Path.js +1 -1
  46. package/src/sap/suite/ui/commons/statusindicator/PropertyThreshold.js +1 -1
  47. package/src/sap/suite/ui/commons/statusindicator/Rectangle.js +1 -1
  48. package/src/sap/suite/ui/commons/statusindicator/Shape.js +1 -1
  49. package/src/sap/suite/ui/commons/statusindicator/ShapeGroup.js +1 -1
  50. package/src/sap/suite/ui/commons/statusindicator/SimpleShape.js +1 -1
  51. package/src/sap/suite/ui/commons/statusindicator/StatusIndicator.js +1 -1
  52. package/src/sap/suite/ui/commons/taccount/TAccount.js +1 -1
  53. package/src/sap/suite/ui/commons/taccount/TAccountGroup.js +1 -1
  54. package/src/sap/suite/ui/commons/taccount/TAccountItem.js +1 -1
  55. package/src/sap/suite/ui/commons/taccount/TAccountItemProperty.js +1 -1
  56. package/src/sap/suite/ui/commons/taccount/TAccountPanel.js +1 -1
  57. package/src/sap/suite/ui/commons/themes/base/CalculationBuilderItem.less +11 -3
  58. package/src/sap/suite/ui/commons/themes/base/CollaborationPopover.less +29 -1
  59. package/src/sap/suite/ui/commons/themes/base/NetworkGraph.less +5 -0
  60. package/src/sap/suite/ui/commons/windowmessages/CollaborationMessageBroker.js +3 -3
  61. package/src/sap/suite/ui/commons/windowmessages/CollaborationMessageConsumer.js +5 -4
@@ -21,10 +21,13 @@ sap.ui.require.preload({
21
21
  sap.ui.define(["sap/ui/core/mvc/Controller","sap/ui/core/Fragment","sap/ui/model/json/JSONModel","sap/m/library","sap/ui/core/Lib","sap/ui/core/Core","sap/ui/model/resource/ResourceModel","./CollaborationContactInfoHelper","sap/ui/performance/trace/FESRHelper","sap/ui/core/Element"],function(e,t,a,o,s,i,n,r,c,l){var u=s.getResourceBundleFor("sap.suite.ui.commons");return e.extend("sap.suite.ui.commons.collaboration.ContactHelper",{constructor:function(){},getFullProfileByEmail:async function(e){var t=await r.fetchContact(e);if(t&&t.mail===""){return t}if(t&&t.data!=""){t.photo="data:image/png;base64,"+t.data}t=this.determineContactStatus(t);return t},getTeamsContactOptions:function(){var e=this;return Promise.resolve([{key:"chat",icon:"sap-icon://discussion",tooltip:u.getText("CHAT_BUTTON_TOOLTIP"),fesrStepName:"MST:ContactAction",callBackHandler:function(t){e.handleMSTeamsPress(t)}},{key:"call",icon:"sap-icon://call",tooltip:u.getText("CALL_BUTTON_TOOLTIP"),fesrStepName:"MST:ContactAction",callBackHandler:function(t){e.handleMSTeamsPress(t)}},{key:"videoCall",icon:"sap-icon://video",tooltip:u.getText("VIDEOCALL_BUTTON_TOOLTIP"),fesrStepName:"MST:ContactAction",callBackHandler:function(t){e.handleMSTeamsPress(t)}}])},getTeamsContactStatus:async function(e){let t={calendar:[]};if(e){const a=await Promise.all([r.fetchContact(e),r.fetchContactCalendar(e)]);t=a[0];t.calendar=a[1]}const a=this.determineContactStatus(t);return[{key:"profileStatus",badgeIcon:a.badgeIcon,badgeValueState:a.badgeValueState,badgeTooltip:a.badgeTooltip,fesrStepName:"MST:ContactAction",calendar:a.calendar}]},handleMSTeamsPress:function(e){var t=e.getSource().data("email");var a=e.getSource().data("type");var s="";switch(a){case"chat":s="https://teams.microsoft.com/l/chat/0/0?users="+t;break;case"call":s="https://teams.microsoft.com/l/call/0/0?users="+t;break;case"videoCall":s="https://teams.microsoft.com/l/call/0/0?users="+t+"&withVideo=true";break;default:break}o.URLHelper.redirect(s,true)},formatUri:function(e,t){var a=/^\w+[\w-+\.]*\@\w+([-\.]\w+)*\.[a-zA-Z]{2,}$/;if(a.test(e)){return"mailto:"+e+(t&&t.subject?"?subject="+t.subject:"")+(t&&t.body?"&body="+t.body:"")}else{return"tel:"+e}},loadContactPopover:function(e,o,s){this.afterClose();return t.load({name:"sap.suite.ui.commons.collaboration.ContactPopover",controller:this,type:"XML"}).then(function(t){c.setSemanticStepname(t,"afterClose","MST:ContactDetails");this._oContactPopover=t;this.sEmail=e;this.oParams=o;t.setBusy(true);var i={setFamily:"tnt",setURI:sap.ui.require.toUrl("sap/tnt/themes/base/illustrations")};sap.m.IllustrationPool.registerIllustrationSet(i,false);var n=new a({isUserExistsInTeams:true});this._oContactPopover.setModel(n,"userData");this.isDirectCommunicationEnabled=s;this._oContactPopover.setModel(new sap.ui.model.resource.ResourceModel({bundle:u}),"i18n");return t}.bind(this))},loadMinimalContactPopover:function(e,o){this.afterClose();var s=new a({mail:e,params:o});return t.load({name:"sap.suite.ui.commons.collaboration.MinimalContactPopover",controller:this,type:"XML"}).then(function(e){this._oMinContactPopover=e;c.setSemanticStepname(e,"afterClose","MST:ContactDetails");e.setModel(s,"userData");e.setModel(new sap.ui.model.resource.ResourceModel({bundle:u}),"i18n");return e}.bind(this))},afterClose:function(){if(this._oContactPopover){this._oContactPopover.destroy()}if(this._oMinContactPopover){this._oMinContactPopover.destroy()}},afterOpen:function(){var e=this;this.getFullProfileByEmail(this.sEmail).then(function(t){e._oContactPopover.setBusy(false);if(t&&t.mail===""){t.isUserExistsInTeams=false;t.mail=e.sEmail;t.params=e.oParams;e._oContactPopover.setInitialFocus(l.getElementById("mail"))}else{t.isUserExistsInTeams=true;t.isDirectCommunicationEnabled=!!e.isDirectCommunicationEnabled;e._oContactPopover.setInitialFocus(l.getElementById("avatar"))}var o=new a(t);o.setData(t);e._oContactPopover.setModel(o,"userData");c.setSemanticStepname(e._oContactPopover,"afterClose","MST:ContactDetails")})},afterContinue:function(){var e=this.formatUri(this.sEmail,this.oParams);o.URLHelper.redirect(e,true)},determineContactStatus:function(e){const t=new Map([["OOO",{badgeValueState:"Information",badgeIcon:"sap-icon://offsite-work"}],["BUSYOOO",{badgeValueState:"Error",badgeIcon:"sap-icon://circle-task"}],["ONLINEOOO",{badgeValueState:"Success",badgeIcon:"sap-icon://sys-enter"}],["AVAILABLE",{badgeValueState:"Success",badgeIcon:"sap-icon://sys-enter-2"}],["AWAY",{badgeValueState:"Warning",badgeIcon:"sap-icon://pending"}],["BUSY",{badgeValueState:"Error",badgeIcon:"sap-icon://circle-task-2"}],["PRESENTING",{badgeValueState:"Error",badgeIcon:"sap-icon://sys-minus"}],["OFFLINE",{badgeValueState:"Error",badgeIcon:"sap-icon://message-error"}]]);const a=new Map([["Available","AVAILABLE"],["Away","AWAY"],["Inactive","AWAY"],["Busy","BUSY"],["DoNotDisturb","PRESENTING"],["InACall","BUSY"],["InAMeeting","BUSY"],["Presenting","PRESENTING"],["BeRightBack","AWAY"],["OffWork","OFFLINE"],["Offline","OFFLINE"]]);let o={};if(!!e.isoutofoffice){if(e.activity==="Available"){o=t.get("ONLINEOOO");o.badgeTooltip=`${u.getText("AVAILABLE")}, ${u.getText("OOO")}`}else if(e.activity==="Busy"){o=t.get("BUSYOOO");o.badgeTooltip=`${u.getText("BUSY")}, ${u.getText("OOO")}`}else if(e.activity==="DoNotDisturb"){o=t.get("PRESENTING");o.badgeTooltip=`${u.getText("DONOTDISTURB")}, ${u.getText("OOO")}`}else{o=t.get("OOO");o.badgeTooltip=u.getText("OOO")}}else{const s=e.activity?a.get(e.activity):"OFFLINE";o=t.get(s);o.badgeTooltip=u.getText(e.activity.toUpperCase())}Object.assign(e,o);return e}})});
22
22
  },
23
23
  "sap/suite/ui/commons/collaboration/ServiceContainer.js":function(){
24
- sap.ui.define(["sap/base/Log","./BaseHelperService","./TeamsHelperService","./CollaborationManagerService","../windowmessages/CollaborationMessageBroker","../windowmessages/CollaborationMessageConsumer","./CollaborationHelper","sap/ui/core/Element"],function(e,r,n,i,o,t,a,s){var l=e.getLogger("sap.suite.ui.commons.collaboration.ServiceContainer");var c;var u;function v(){var e;if(c&&Object.keys(c).length){var i=c.sProvider;var o=c.oProviderConfig;if(i==="COLLABORATION_MSTEAMS"){e=new n(o)}u=Promise.resolve(e);return u}e=new r({});l.info("Collaboration provider is not activated on the tenant");return Promise.resolve(e)}function f(){}var g=new f;g.getServiceAsync=async function(){const e=sap.ui.require("sap/ushell/Container");if(u){return u}if(e&&e.inAppRuntime()){c=await t.getProviderConfiguration()}return v()};g.getCollaborationServices=async function(){var e=await g.getServiceAsync();var r={oTeamsHelperService:e,oCMHelperService:new i};return Promise.resolve(r)};g.hidePluginsInMSTeams=async function(){try{const e=await a.isTeamsModeActive();if(e){let e=0;const r=1*1e3;const n={chatButton:true,"sap.das.webclientplugin.s4.shellitem":true};const i=setInterval(()=>{e++;if(e>10){clearInterval(i);return}Object.keys(n).forEach(e=>{const r=s.getElementById(e);if(r?.getVisible()===true){r.setVisible(false);n[e]=false}});const r=Object.values(n).every(e=>!e);if(r){clearInterval(i)}},r)}}catch(e){l.error("Error hiding the plugins in MS Teams",e)}};g.setCollaborationType=function(e,r){l.info("Collaboration properties are now configured");g.hidePluginsInMSTeams();c={sProvider:e,oProviderConfig:r};v();o.startInstance(c)};return g},true);
24
+ sap.ui.define(["sap/base/Log","./BaseHelperService","./TeamsHelperService","./CollaborationManagerService","../windowmessages/CollaborationMessageBroker","../windowmessages/CollaborationMessageConsumer","./CollaborationHelper","sap/ui/core/Element"],function(e,r,o,n,t,i,a,s){var c=e.getLogger("sap.suite.ui.commons.collaboration.ServiceContainer");var l;var u;function v(){var e;if(l&&Object.keys(l).length){var n=l.sProvider;var t=l.oProviderConfig;if(n==="COLLABORATION_MSTEAMS"){e=new o(t)}u=Promise.resolve(e);return u}e=new r({});c.info("Collaboration provider is not activated on the tenant");return Promise.resolve(e)}function f(){}var g=new f;g.getServiceAsync=async function(){const e=sap.ui.require("sap/ushell/Container");if(u){return u}if(e&&e.inAppRuntime()){try{let e=false;try{if(window.location.host===top.window.location.host){l={};e=true}}catch(e){c.info("Cannot access parent window")}if(!e){l=await i.getProviderConfiguration()}}catch(e){c.error("Error while getting the provider configuration from the parent window",e);l={}}}return v()};g.getCollaborationServices=async function(){var e=await g.getServiceAsync();var r={oTeamsHelperService:e,oCMHelperService:new n};return Promise.resolve(r)};g.hidePluginsInMSTeams=async function(){try{const e=await a.isTeamsModeActive();if(e){let e=0;const r=1*1e3;const o={chatButton:true,"sap.das.webclientplugin.s4.shellitem":true};const n=setInterval(()=>{e++;if(e>10){clearInterval(n);return}Object.keys(o).forEach(e=>{const r=s.getElementById(e);if(r?.getVisible()===true){r.setVisible(false);o[e]=false}});const r=Object.values(o).every(e=>!e);if(r){clearInterval(n)}},r)}}catch(e){c.error("Error hiding the plugins in MS Teams",e)}};g.setCollaborationType=function(e,r){c.info("Collaboration properties are now configured");g.hidePluginsInMSTeams();l={sProvider:e,oProviderConfig:r};v();t.startInstance(l)};return g},true);
25
25
  },
26
26
  "sap/suite/ui/commons/collaboration/TeamsHelperService.js":function(){
27
- sap.ui.define(["sap/base/Log","sap/ui/core/Core","sap/base/security/URLListValidator","./CollaborationHelper","./BaseHelperService","sap/ui/core/Element","./ContactHelper","sap/ui/Device","./CollaborationCardHelper","sap/ui/core/Fragment","sap/m/MessageBox","sap/ui/core/Lib","sap/m/Popover","sap/m/HBox","sap/m/VBox","sap/m/MessageStrip","sap/m/Button","./CollaborationContactInfoHelper","sap/m/library","sap/m/FlexBox","sap/base/i18n/Localization","./CollaborationManagerService","sap/m/FlexItemData"],function(e,t,a,i,r,o,n,s,l,p,d,c,h,u,f,C,m,A,T,S,g,b,v){var _=r.extend("sap.suite.ui.commons.collaboration.TeamsHelperService",{constructor:function(e){this._providerConfig=e;this._providerConfig.shareAsLinkUrl="https://teams.microsoft.com/share";this._getShareAsTabUrl().then(function(e){this._providerConfig.shareAsTabUrl=e}.bind(this))}});var y="db5b69c6-0430-4ae1-8d6e-a65c2220b50c";var O=e.getLogger("sap.suite.ui.commons.collaboration.TeamsHelperService");var L="https://saps4hana.azure-api.net/bot/redirect?target-url=";var E=c.getResourceBundleFor("sap.suite.ui.commons");var M="info";var I;let B;const R=60*1e3;var x={};var U="width=720,height=720";_.prototype.getOptions=function(e){x={isShareAsLinkEnabled:e&&typeof e.isShareAsLinkEnabled!=="undefined"?e.isShareAsLinkEnabled:true,isShareAsTabEnabled:e&&typeof e.isShareAsTabEnabled!=="undefined"?e.isShareAsTabEnabled:true,isShareAsCardEnabled:e&&typeof e.isShareAsCardEnabled!=="undefined"?e.isShareAsCardEnabled:false};var t=[];var a=[];if(s.system.desktop){if(x.isShareAsLinkEnabled){if(this._providerConfig.isShareAsLinkEnabled==="X"){t.push({text:E.getText("COLLABORATION_MSTEAMS_CHAT"),key:"COLLABORATION_MSTEAMS_CHAT",icon:"sap-icon://post",fesrStepName:"MST:ShareAsLink"})}else{O.info("Share as Chat option is not enabled in the tenant")}}else{O.info("Consumer disable Share as Chat option")}}else{O.info("Share as Chat option is not supported in Phone and Tablet")}if(s.system.desktop){if(x.isShareAsTabEnabled){if(this._providerConfig.isShareAsTabEnabled==="X"){t.push({text:E.getText("COLLABORATION_MSTEAMS_TAB"),key:"COLLABORATION_MSTEAMS_TAB",icon:"sap-icon://image-viewer",fesrStepName:"MST:ShareAsTab"})}else{O.info("Share as Tab option is not enabled in the tenant")}}else{O.info("Consumer disable Share as Tab option")}}else{O.info("Share as Tab option is not supported in Phone and Tablet")}if(s.system.desktop){if(x.isShareAsCardEnabled){const e=this._providerConfig.isShareAsCardEnabled;const a=this._providerConfig.isShareAsTabEnabled==="X";const i={text:E.getText("COLLABORATION_MSTEAMS_CARD"),key:"COLLABORATION_MSTEAMS_CARD",icon:"sap-icon://ui-notifications",fesrStepName:"MST:ShareAsCard"};switch(e){case"DISABLED":O.info("Share as Card option is not enabled in the tenant");break;case"ENABLED":case"AUTHENABLE":t.push(i);break;case"":case undefined:if(a){t.push(i)}else{O.info("Share as Card option is not enabled in the tenant")}break;default:O.info("Share as Card option is not enabled in the tenant");break}}else{O.info("Consumer disable Share as Card option")}}else{O.info("Share as Card option is not supported in Phone and Tablet")}if(t.length===1){a=t;if(a[0].key==="COLLABORATION_MSTEAMS_CHAT"){a[0].text=E.getText("COLLABORATION_MSTEAMS_CHAT_SINGLE")}else if(a[0].key==="COLLABORATION_MSTEAMS_TAB"){a[0].text=E.getText("COLLABORATION_MSTEAMS_TAB_SINGLE")}else if(a[0].key==="COLLABORATION_MSTEAMS_CARD"){a[0].text=E.getText("COLLABORATION_MSTEAMS_CARD_SINGLE")}return a}if(t.length>1){a.push({type:"microsoft",text:E.getText("COLLABORATION_MSTEAMS_SHARE"),icon:"sap-icon://collaborate",subOptions:t})}return a};_.prototype.share=function(e,t){if(!t.url){O.error("url is not supplied in object so terminating Click");return}if(!a.validate(t.url)){O.error("Invalid URL supplied");return}if(e.key==="COLLABORATION_MSTEAMS_CHAT"){this._shareAsChat(t);return}if(e.key==="COLLABORATION_MSTEAMS_TAB"){this._shareAsTab(t);return}if(e.key==="COLLABORATION_MSTEAMS_CARD"){this._shareAsCard(t);return}};_.prototype._shareAsChat=function(e){var t=window.open("","_blank",U);var a=e.appTitle;if(e.subTitle.length>0){a+=": "+e.subTitle}t.opener=null;if(e.minifyUrlForChat){i.compactHash(e.url,[]).then(async function(i){var r=await this._modifyUrlForNavigationContext(e.url,i.url);t.location=this._providerConfig.shareAsLinkUrl+"?msgText="+encodeURIComponent(a)+"&preview=false"+"&href="+encodeURIComponent(r)}.bind(this))}else{t.location=this._providerConfig.shareAsLinkUrl+"?msgText="+encodeURIComponent(a)+"&preview=false"+"&href="+encodeURIComponent(e.url)}};_.prototype._modifyUrlForShareAsTab=async function(e,t){var a=e;var i=a.indexOf("#");if(i!==-1){var r=a.substring(0,i);var o=r.indexOf("?",0);var n="sap-ushell-config=lean&sap-collaboration-teams=true&sap-ui-fesr-env="+t;if(o!==-1){r=r.substring(0,o+1)+n+"&"+r.substring(o+1)}else{r+="?"+n}a=r+a.substring(i);a=await this._addNavmodeInUrl(a,"explace")}return a};_.prototype._shareAsTab=async function(e){var t=await this._modifyUrlForShareAsTab(e.url,"MST:T");var a={subEntityId:{url:t,appTitle:e.appTitle,subTitle:e.subTitle,mode:"tab"}};if(e.minifyUrlForChat){i.compactHash(t,[]).then(async function(e){var i=await this._modifyUrlForNavigationContext(t,e.url);a.subEntityId.url=await this._addNavmodeInUrl(i,"explace");var r=this._providerConfig.shareAsTabUrl+"?&context="+encodeURIComponent(JSON.stringify(a));sap.m.URLHelper.redirect(r,true)}.bind(this))}else{var r=this._providerConfig.shareAsTabUrl+"?&context="+encodeURIComponent(JSON.stringify(a));sap.m.URLHelper.redirect(r,true)}};_.prototype._addNavmodeInUrl=function(e,t){const a=sap.ui.require("sap/ushell/Container");return a&&a.getServiceAsync("URLParsing").then(function(a){var i=e;var r=i.indexOf("#");var o=a.parseShellHash(i.substring(r));o.params["sap-ushell-navmode"]=t;o.params["sap-ushell-next-navmode"]=t;var n=a.constructShellHash(o);i=i.substring(0,r)+"#"+n;return Promise.resolve(i)})};_.prototype._modifyUrlForNavigationContext=function(e,t){if(e===t){return Promise.resolve(t)}const a=sap.ui.require("sap/ushell/Container");return a&&a.getServiceAsync("URLParsing").then(function(a){var i=e;var r=i.indexOf("#");var o=a.parseShellHash(i.substring(r));var n=Object.keys(o.params).length;var s=new URL(t);if(n>0){if(!s.searchParams.has("sap-collaboration-teams")){s.searchParams.set("sap-collaboration-teams","true")}else{s.searchParams.delete("sap-collaboration-teams")}}return Promise.resolve(s.toString())})};_.prototype._shareAsCard=function(e){if(e.cardId&&e.cardId.length>0&&e.cardManifest&&this.isFeatureFlagEnabled()){e.cardManifest["rtl"]=g.getRTL();p.load({name:"sap.suite.ui.commons.collaboration.CollaborationBusyDialog",controller:this,type:"XML"}).then(function(t){I=t;I.open();B=setTimeout(function(){I.close();I.destroy()},R);l.postCard(e.cardId,e.cardManifest).then(function(t){var a=true;var i={cardId:t.card_id,version:t.version};if(t.error){if(t.error.code==="APS_UI_MSG/001"){a=true;i.cardId=e.cardId;if(t.error.message.length>0){try{var r=JSON.parse(atob(t.error.message)).version;i.version=r}catch(e){a=false}}}else{a=false}}if(a){this._updateUrl(e,i)}else{d.error(E.getText("SAVE_CARD_ERROR"));this._closeBusyDailog()}}.bind(this))}.bind(this))}else{this._updateUrl(e,{})}};_.prototype._updateUrl=async function(e,t){if(e.minifyUrlForChat){i.compactHash(e.url,[]).then(async function(a){var r=await this._modifyUrlForNavigationContext(e.url,a.url);if(x.isShareAsTabEnabled&&this._providerConfig.isShareAsTabEnabled){var o=await this._modifyUrlForShareAsTab(e.url,"MST:C");var n=await i.compactHash(o,[]);var s=n.url.split("sap-url-hash=")[1];if(s){r+=`,${s}`}else{o=await this._modifyUrlForShareAsTab(r,"MST:C");r=await this._addNavmodeInUrl(o,"inplace")}this._closeBusyDialogAndOpenTeamsDialog(r,e,t)}else{this._closeBusyDialogAndOpenTeamsDialog(r,e,t)}}.bind(this))}else{var a=e.url;if(x.isShareAsTabEnabled&&this._providerConfig.isShareAsTabEnabled){var r=await this._modifyUrlForShareAsTab(a,"MST:C");a=await this._addNavmodeInUrl(r,"inplace")}this._closeBusyDialogAndOpenTeamsDialog(a,e,t)}};_.prototype._closeBusyDailog=function(){if(I){I.close();I.destroy();clearTimeout(B)}};_.prototype._closeBusyDialogAndOpenTeamsDialog=function(e,t,a){this._closeBusyDailog();var i=window.open("","_blank",U);i.opener=null;i.location=this._addCardParamsInUrl(e,t.appTitle,a)};_.prototype._addCardParamsInUrl=function(e,t,a){var i=[a.cardId||"",a.version||"",encodeURIComponent(t)].filter(Boolean);e+=`&${M}=${i.join(",")}`;return`${this._providerConfig.shareAsLinkUrl}?href=${encodeURIComponent(L+e)}`};_.prototype._getShareAsTabUrl=function(){return this._getApplicationID().then(function(e){return"https://teams.microsoft.com/l/entity/"+e+"/tab"})};_.prototype._getApplicationID=function(){const e=sap.ui.require("sap/ushell/Container");return e&&e.getServiceAsync("URLParsing").then(function(e){return i._getCurrentUrl().then(function(t){var a=t.split("#")[0];if(a.indexOf("?")!==-1){var i=e&&e.parseParameters(a.substring(a.indexOf("?")));if(i&&i["sap-collaboration-xx-TeamsAppId"]&&i["sap-collaboration-xx-TeamsAppId"][0]&&i["sap-collaboration-xx-TeamsAppId"][0].length>0){return Promise.resolve(i["sap-collaboration-xx-TeamsAppId"][0])}return Promise.resolve(y)}else{return Promise.resolve(y)}})})};_.prototype.isFeatureFlagEnabled=function(){const e=this._providerConfig.isShareAsCardEnabled;return e==="AUTHENABLE"};_.prototype.isContactsCollaborationSupported=function(){return true};_.prototype.enableContactsCollaboration=async function(e,t){const a=await i.isTeamsModeActive();const r=await A.fetchServiceStatus();if(e&&r.value&&r.value&&r.value[0].FetchContacts==="Active"){if(!this.oContactHelper){this.oContactHelper=new n}if(this._providerConfig.isDirectCommunicationEnabled==="ENABLED"){return this.oContactHelper.loadContactPopover(e,t,true)}else{return this.oContactHelper.loadContactPopover(e,t)}}else if(a||!e||this._providerConfig.isDirectCommunicationEnabled!=="ENABLED"){return Promise.reject()}else{if(!this.oContactHelper){this.oContactHelper=new n}return this.oContactHelper.loadMinimalContactPopover(e,t)}};_.prototype.getTeamsContactCollabOptions=async function(){const e=await i.isTeamsModeActive();if(e||this._providerConfig.isDirectCommunicationEnabled!=="ENABLED"){return Promise.reject()}if(!this.oContactHelper){this.oContactHelper=new n}return this.oContactHelper.getTeamsContactOptions()};_.prototype.getTeamsContactStatus=async function(e){const t=await i.isTeamsModeActive();if(t){return Promise.reject()}if(!this.oContactHelper){this.oContactHelper=new n}return this.oContactHelper.getTeamsContactStatus(e)};_.prototype.getCollaborationPopover=function(e,t,a,i,r){if(t.data===undefined||t.data.trim()===""){O.error("Popover cannnot be opened without data");return}var o={isShareAsLinkEnabled:e&&typeof e.isShareAsLinkEnabled!=="undefined"?e.isShareAsLinkEnabled:true};var r={shareToTeams:r&&typeof r.shareToTeams!=="undefined"?r.shareToTeams:true,shareToEmail:r&&typeof r.shareToEmail!=="undefined"?r.shareToEmail:true,shareToCM:r&&typeof r.shareToCM!=="undefined"?r.shareToCM:false};var n=[];if(s.system.desktop){if(o.isShareAsLinkEnabled){if(this._providerConfig.isShareAsLinkEnabled==="X"&&r.shareToTeams){n.push({text:E.getText("COLLABORATION_POPOVER_TEAMS"),icon:"sap-icon://discussion",key:"COLLABORATION_POPOVER_TEAMS"})}else{O.info("Share as Chat option is not enabled in the tenant")}}else{O.info("Consumer disable Share as Chat option")}}else{O.info("Share as Chat option is not supported in Phone and Tablet")}if(r.shareToEmail){n.push({text:E.getText("COLLABORATION_POPOVER_MAIL"),icon:"sap-icon://email",key:"COLLABORATION_POPOVER_MAIL"})}this.oCollaborationManager=new b;var l=this.oCollaborationManager.getOptions();if(l&&r.shareToCM){n.push({text:l.text,icon:l.icon,key:"COLLABORATION_POPOVER_CM"})}if(n.length===1&&!i&&n[0].key==="COLLABORATION_POPOVER_MAIL"){this._shareData(t,n[0],i);return}var p=this._getPopover(t,n,i);p.openBy(a)};_.prototype._getPopover=function(e,t,a){var i=new h({showHeader:false,placement:e.placement?e.placement:"Auto",verticalScrolling:false,horizontalScrolling:false,content:this._getPopoverContent(e,t,a)});return i};_.prototype._getPopoverContent=function(e,t,a){var i=new S({items:[],direction:T.FlexDirection.Column});var r=new S({direction:e.sFormat==="Vertical"?T.FlexDirection.Column:T.FlexDirection.Row,justifyContent:T.FlexJustifyContent.SpaceAround,items:[]});t.forEach(o=>{var n=new m({text:o.text,icon:o.icon,width:e.sFormat==="Horizontal"&&t.length===3?"120px":"180px",press:t=>{t.getSource().getParent().getParent().getParent().close();this._shareData(e,o,a)}}).addStyleClass("sapUiTinyMarginTop").addStyleClass("sapUiTinyMarginBegin");if(o.key==="COLLABORATION_POPOVER_TEAMS"){n.addStyleClass("sapSuiteUiCollaborationBarMSTeamsButton"+(e.sFormat?e.sFormat:"Horizontal"))}else if(o.key==="COLLABORATION_POPOVER_CM"){n.addStyleClass("sapSuiteUiCollaborationBarCMButton"+(e.sFormat?e.sFormat:"Horizontal"))}else{n.addStyleClass("sapSuiteUiCollaborationBarEmailButton"+(e.sFormat?e.sFormat:"Horizontal"))}r.addItem(n);i.addItem(r)});if(a){var o=new S({justifyContent:e.sFormat==="Vertical"?T.FlexJustifyContent.Center:T.FlexJustifyContent.SpaceBetween,alignItems:T.FlexAlignItems.Center,items:[new m({text:E.getText("COLLABORATION_POPOVER_COPYURL_BUTTON"),width:e.sFormat==="Vertical"?"150px":"",press:async()=>{await this._writeToClipBoard(e.data)}}).addStyleClass("sapUiTinyMarginBeginEnd")]});if(e.sFormat==="Horizontal"||e.sFormat===undefined){o.insertItem(new C({text:E.getText("COLLABORATION_POPOVER_MSGSTRIP"),showIcon:true}).addStyleClass("sapUiTinyMarginBeginEnd").addStyleClass("sapSuiteCollaborationBarMsgStrip"),0);o.addStyleClass("sapSuiteUiCollaborationBarMsgStripHBox")}o.addStyleClass("sapUiTinyMarginBeginEnd").addStyleClass("sapUiTinyMarginTopBottom");i.addItem(o)}if(e.sFormat==="Vertical"){r.setHeight(t.length>1?t.length*50+50+"px":"80px");r.addStyleClass("sapUiSmallMarginBottom").addStyleClass("sapUiTinyMarginEnd")}else{r.setHeight("110px");r.addStyleClass("sapUiTinyMarginEnd")}return i};_.prototype._writeToClipBoard=async function(e){try{await navigator.clipboard.writeText(e)}catch(e){O.info(e)}};_.prototype._shareData=function(e,t,a){if(t.key==="COLLABORATION_POPOVER_TEAMS"){if(a){var i={url:e.data,appTitle:e.title?e.title:"",subTitle:"",minifyUrlForChat:true};this._shareAsChat(i)}else{var i={appTitle:e.title?e.title:"",message:e.data,showPreview:typeof e.showPreview!==undefined?e.showPreview:true};this._shareSummary(i)}}else if(t.key==="COLLABORATION_POPOVER_MAIL"){sap.m.URLHelper.triggerEmail(null,e.title&&e.title.trim()!==""?e.title:null,e.data)}else if(t.key==="COLLABORATION_POPOVER_CM"){this.oCollaborationManager.triggerH2HChat(e.title,e.data)}};_.prototype._shareSummary=function(e){var t={subEntityId:{appTitle:e.appTitle,mode:"summary",message:e.message,showPreview:e.showPreview}};var a=this._providerConfig.shareAsTabUrl+"?&context="+encodeURIComponent(JSON.stringify(t));sap.m.URLHelper.redirect(a,true)};return _});
27
+ sap.ui.define(["sap/base/Log","sap/ui/core/Core","sap/base/security/URLListValidator","./CollaborationHelper","./BaseHelperService","sap/ui/core/Element","./ContactHelper","sap/ui/Device","./CollaborationCardHelper","sap/ui/core/Fragment","sap/m/MessageBox","sap/ui/core/Lib","sap/m/Popover","sap/m/HBox","sap/m/VBox","sap/m/MessageStrip","sap/m/Button","./CollaborationContactInfoHelper","sap/m/library","sap/m/FlexBox","sap/base/i18n/Localization","./CollaborationManagerService","sap/m/FlexItemData"],function(e,t,a,r,o,i,n,s,l,p,c,d,h,u,f,C,m,g,T,y,A,S,_){var b=o.extend("sap.suite.ui.commons.collaboration.TeamsHelperService",{constructor:function(e){this._providerConfig=e;this._providerConfig.shareAsLinkUrl="https://teams.microsoft.com/share";this._getShareAsTabUrl().then(function(e){this._providerConfig.shareAsTabUrl=e}.bind(this))}});const O="db5b69c6-0430-4ae1-8d6e-a65c2220b50c";const v=e.getLogger("sap.suite.ui.commons.collaboration.TeamsHelperService");const L="https://saps4hana.azure-api.net/bot/redirect?target-url=";const U=d.getResourceBundleFor("sap.suite.ui.commons");const E="info";let w;let I;const M=60*1e3;let R={};const x="width=720,height=720";const B=["*.s4hana.ondemand.com","*.*.s4hana.ondemand.com","*.*.*.s4hana.ondemand.com","*.cloud.sap","*.*.cloud.sap","*.*.*.cloud.sap","*.sapcloud.cn","*.*.sapcloud.cn","*.*.*.sapcloud.cn","*.saps4hanacloud.cn","*.*.saps4hanacloud.cn","*.*.*.saps4hanacloud.cn","*.sap.com"];b.prototype.getOptions=function(e){R={isShareAsLinkEnabled:e&&typeof e.isShareAsLinkEnabled!=="undefined"?e.isShareAsLinkEnabled:true,isShareAsTabEnabled:e&&typeof e.isShareAsTabEnabled!=="undefined"?e.isShareAsTabEnabled:true,isShareAsCardEnabled:e&&typeof e.isShareAsCardEnabled!=="undefined"?e.isShareAsCardEnabled:false};var t=[];var a=[];if(s.system.desktop){if(R.isShareAsLinkEnabled){if(this._providerConfig.isShareAsLinkEnabled==="X"){t.push({text:U.getText("COLLABORATION_MSTEAMS_CHAT"),key:"COLLABORATION_MSTEAMS_CHAT",icon:"sap-icon://post",fesrStepName:"MST:ShareAsLink"})}else{v.info("Share as Chat option is not enabled in the tenant")}}else{v.info("Consumer disable Share as Chat option")}}else{v.info("Share as Chat option is not supported in Phone and Tablet")}if(s.system.desktop){if(R.isShareAsTabEnabled){if(this._providerConfig.isShareAsTabEnabled==="X"){t.push({text:U.getText("COLLABORATION_MSTEAMS_TAB"),key:"COLLABORATION_MSTEAMS_TAB",icon:"sap-icon://image-viewer",fesrStepName:"MST:ShareAsTab"})}else{v.info("Share as Tab option is not enabled in the tenant")}}else{v.info("Consumer disable Share as Tab option")}}else{v.info("Share as Tab option is not supported in Phone and Tablet")}if(s.system.desktop){if(R.isShareAsCardEnabled){const e=this._providerConfig.isShareAsCardEnabled;const a={text:U.getText("COLLABORATION_MSTEAMS_CARD"),key:"COLLABORATION_MSTEAMS_CARD",icon:"sap-icon://ui-notifications",fesrStepName:"MST:ShareAsCard"};switch(e){case"DISABLED":v.info("Share as Card option is not enabled in the tenant");break;case"ENABLED":case"AUTHENABLE":t.push(a);break;default:v.info("Share as Card option is not enabled in the tenant");break}}else{v.info("Consumer disable Share as Card option")}}else{v.info("Share as Card option is not supported in Phone and Tablet")}if(t.length===1){a=t;if(a[0].key==="COLLABORATION_MSTEAMS_CHAT"){a[0].text=U.getText("COLLABORATION_MSTEAMS_CHAT_SINGLE")}else if(a[0].key==="COLLABORATION_MSTEAMS_TAB"){a[0].text=U.getText("COLLABORATION_MSTEAMS_TAB_SINGLE")}else if(a[0].key==="COLLABORATION_MSTEAMS_CARD"){a[0].text=U.getText("COLLABORATION_MSTEAMS_CARD_SINGLE")}return a}if(t.length>1){a.push({type:"microsoft",text:U.getText("COLLABORATION_MSTEAMS_SHARE"),icon:"sap-icon://collaborate",subOptions:t})}return a};b.prototype.share=function(e,t){if(!t.url){v.error("url is not supplied in object so terminating Click");return}if(!a.validate(t.url)){v.error("Invalid URL supplied");return}if(e.key==="COLLABORATION_MSTEAMS_CHAT"){this._shareAsChat(t);return}if(e.key==="COLLABORATION_MSTEAMS_TAB"){this._shareAsTab(t);return}if(e.key==="COLLABORATION_MSTEAMS_CARD"){this._shareAsCard(t);return}};b.prototype._shareAsChat=function(e){var t=window.open("","_blank",x);var a=e.appTitle;if(e.subTitle.length>0){a+=": "+e.subTitle}t.opener=null;if(e.minifyUrlForChat){r.compactHash(e.url,[]).then(async function(r){var o=await this._modifyUrlForNavigationContext(e.url,r.url);t.location=this._providerConfig.shareAsLinkUrl+"?msgText="+encodeURIComponent(a)+"&preview=false"+"&href="+encodeURIComponent(o)}.bind(this))}else{t.location=this._providerConfig.shareAsLinkUrl+"?msgText="+encodeURIComponent(a)+"&preview=false"+"&href="+encodeURIComponent(e.url)}};b.prototype._modifyUrlForShareAsTab=async function(e,t){var a=e;var r=a.indexOf("#");if(r!==-1){var o=a.substring(0,r);var i=o.indexOf("?",0);var n="sap-ushell-config=lean&sap-collaboration-teams=true&sap-ui-fesr-env="+t;if(i!==-1){o=o.substring(0,i+1)+n+"&"+o.substring(i+1)}else{o+="?"+n}a=o+a.substring(r);a=await this._addNavmodeInUrl(a,"explace")}return a};b.prototype._shareAsTab=async function(e){var t=await this._modifyUrlForShareAsTab(e.url,"MST:T");var a={subEntityId:{url:t,appTitle:e.appTitle,subTitle:e.subTitle,mode:"tab"}};if(e.minifyUrlForChat){r.compactHash(t,[]).then(async function(e){var r=await this._modifyUrlForNavigationContext(t,e.url);a.subEntityId.url=await this._addNavmodeInUrl(r,"explace");var o=this._providerConfig.shareAsTabUrl+"?&context="+encodeURIComponent(JSON.stringify(a));sap.m.URLHelper.redirect(o,true)}.bind(this))}else{var o=this._providerConfig.shareAsTabUrl+"?&context="+encodeURIComponent(JSON.stringify(a));sap.m.URLHelper.redirect(o,true)}};b.prototype._addNavmodeInUrl=function(e,t){const a=sap.ui.require("sap/ushell/Container");return a&&a.getServiceAsync("URLParsing").then(function(a){var r=e;var o=r.indexOf("#");var i=a.parseShellHash(r.substring(o));i.params["sap-ushell-navmode"]=t;i.params["sap-ushell-next-navmode"]=t;var n=a.constructShellHash(i);r=r.substring(0,o)+"#"+n;return Promise.resolve(r)})};b.prototype._modifyUrlForNavigationContext=function(e,t){if(e===t){return Promise.resolve(t)}const a=sap.ui.require("sap/ushell/Container");return a&&a.getServiceAsync("URLParsing").then(function(a){var r=e;var o=r.indexOf("#");var i=a.parseShellHash(r.substring(o));var n=Object.keys(i.params).length;var s=new URL(t);if(n>0){if(!s.searchParams.has("sap-collaboration-teams")){s.searchParams.set("sap-collaboration-teams","true")}else{s.searchParams.delete("sap-collaboration-teams")}}return Promise.resolve(s.toString())})};b.prototype._shareAsCard=async function(e){if(!e?.cardId||!e.cardId.length||!e.cardManifest||!this.isFeatureFlagEnabled()){this._updateUrl(e,{});return}let t={};try{try{const e=await p.load({name:"sap.suite.ui.commons.collaboration.CollaborationBusyDialog",controller:this,type:"XML"});w=e;w.open();I=setTimeout(()=>{w.close();w.destroy()},M)}catch(e){v.error("Fragment load failed: "+e.message)}t=await this._buildCardInfo(e)}catch(e){v.error("buildCardInfo failed: "+e.message)}finally{if(t&&Object.keys(t).length===0){v.warn("Card info could not be saved.")}this._updateUrl(e,t)}};b.prototype._buildCardInfo=async function(e){e.cardManifest.rtl=A.getRTL();const t=await l.postCard(e.cardId,e.cardManifest);let a={cardId:t.card_id,version:t.version};if(t.error){if(t.error.code==="APS_UI_MSG/001"){a.cardId=e.cardId;if(t.error.message.length>0){try{const e=JSON.parse(atob(t.error.message)).version;a.version=e}catch(e){a={}}}}else{a={}}}return a};b.prototype._updateUrl=async function(e,t){let a=e?.url||window.location.href;try{if(e.minifyUrlForChat){a=await this._getModifiedUrlForSharing(e)}else if(R.isShareAsTabEnabled&&this._providerConfig.isShareAsTabEnabled){const e=await this._modifyUrlForShareAsTab(a,"MST:C");a=await this._addNavmodeInUrl(e,"inplace")}}catch(e){v.error("Error while modifying URL for sharing: "+e.message)}finally{this._closeBusyDialogAndOpenTeamsDialog(a,e,t)}};b.prototype._getModifiedUrlForSharing=async function(e){const t=await r.compactHash(e.url,[]);let a=await this._modifyUrlForNavigationContext(e.url,t.url);let o=await this._modifyUrlForShareAsTab(e.url,"MST:C");const i=await r.compactHash(o,[]);const n=i.url.split("sap-url-hash=")[1];if(n){a+=`,${n}`}else{o=await this._modifyUrlForShareAsTab(a,"MST:C");a=await this._addNavmodeInUrl(o,"inplace")}return a};b.prototype._closeBusyDialog=function(){if(w){w.close();w.destroy();clearTimeout(I)}};b.prototype._closeBusyDialogAndOpenTeamsDialog=function(e,t,a){this._closeBusyDialog();const r=window.open("","_blank",x);r.opener=null;r.location=this._generateShareAsCardUrl(e,t.appTitle,a)};b.prototype._wildcardToRegExp=function(e){return new RegExp("^"+e.split("*").map(function(e){return e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")}).join("[^.]+")+"$","i")};b.prototype._isValidDomain=function(e){try{const t=new URL(e).hostname;return B.some(e=>this._wildcardToRegExp(e).test(t))}catch(e){return false}};b.prototype._getCardInfoUrl=function(e,t,a){const r=this._isValidDomain(e);const o=t?.appTitle;if(r){return this._generateCardUnfurlingUrl(e,a,{appTitle:o})}else{return this._generateShareAsCardUrl(e,o,a)}};b.prototype._generateShareAsCardUrl=function(e,t,a){const r=this._generateCardUnfurlingUrl(e,a,{appTitle:t});return`${this._providerConfig.shareAsLinkUrl}?href=${encodeURIComponent(L+encodeURIComponent(r))}`};b.prototype._generateCardUnfurlingUrl=function(e,t,a){const r=[t.cardId||"",t.version||"",encodeURIComponent(a.appTitle||"")].filter(Boolean);return`${e}&${E}=${r.join(",")}`};b.prototype._getShareAsTabUrl=function(){return this._getApplicationID().then(function(e){return"https://teams.microsoft.com/l/entity/"+e+"/tab"})};b.prototype._getApplicationID=function(){const e=sap.ui.require("sap/ushell/Container");return e&&e.getServiceAsync("URLParsing").then(function(e){return r._getCurrentUrl().then(function(t){var a=t.split("#")[0];if(a.indexOf("?")!==-1){var r=e&&e.parseParameters(a.substring(a.indexOf("?")));if(r&&r["sap-collaboration-xx-TeamsAppId"]&&r["sap-collaboration-xx-TeamsAppId"][0]&&r["sap-collaboration-xx-TeamsAppId"][0].length>0){return Promise.resolve(r["sap-collaboration-xx-TeamsAppId"][0])}return Promise.resolve(O)}else{return Promise.resolve(O)}})})};b.prototype.isFeatureFlagEnabled=function(){const e=this._providerConfig.isShareAsCardEnabled;return e==="AUTHENABLE"};b.prototype.isContactsCollaborationSupported=function(){return true};b.prototype.enableContactsCollaboration=async function(e,t){const a=await r.isTeamsModeActive();const o=await g.fetchServiceStatus();if(e&&o.value&&o.value&&o.value[0].FetchContacts==="Active"){if(!this.oContactHelper){this.oContactHelper=new n}if(this._providerConfig.isDirectCommunicationEnabled==="ENABLED"){return this.oContactHelper.loadContactPopover(e,t,true)}else{return this.oContactHelper.loadContactPopover(e,t)}}else if(a||!e||this._providerConfig.isDirectCommunicationEnabled!=="ENABLED"){return Promise.reject()}else{if(!this.oContactHelper){this.oContactHelper=new n}return this.oContactHelper.loadMinimalContactPopover(e,t)}};b.prototype.getTeamsContactCollabOptions=async function(){const e=await r.isTeamsModeActive();if(e||this._providerConfig.isDirectCommunicationEnabled!=="ENABLED"){return Promise.reject()}if(!this.oContactHelper){this.oContactHelper=new n}return this.oContactHelper.getTeamsContactOptions()};b.prototype.getTeamsContactStatus=async function(e){const t=await r.isTeamsModeActive();if(t){return Promise.reject()}if(!this.oContactHelper){this.oContactHelper=new n}return this.oContactHelper.getTeamsContactStatus(e)};b.prototype.getCollaborationPopover=function(e,t,a,r,o){if(t.data===undefined||t.data.trim()===""){v.error("Popover cannnot be opened without data");return}var i={isShareAsLinkEnabled:e&&typeof e.isShareAsLinkEnabled!=="undefined"?e.isShareAsLinkEnabled:true};var n={shareToTeams:o&&typeof o.shareToTeams!=="undefined"?o.shareToTeams:true,shareToEmail:o&&typeof o.shareToEmail!=="undefined"?o.shareToEmail:true,shareToCM:o&&typeof o.shareToCM!=="undefined"?o.shareToCM:false};var l=[];if(s.system.desktop){if(i.isShareAsLinkEnabled){if(this._providerConfig.isShareAsLinkEnabled==="X"&&n.shareToTeams){l.push({text:U.getText("COLLABORATION_POPOVER_TEAMS"),icon:"sap-icon://discussion",key:"COLLABORATION_POPOVER_TEAMS"})}else{v.info("Share as Chat option is not enabled in the tenant")}}else{v.info("Consumer disable Share as Chat option")}}else{v.info("Share as Chat option is not supported in Phone and Tablet")}if(n.shareToEmail){l.push({text:U.getText("COLLABORATION_POPOVER_MAIL"),icon:"sap-icon://email",key:"COLLABORATION_POPOVER_MAIL"})}this.oCollaborationManager=new S;var p=this.oCollaborationManager.getOptions();if(p&&n.shareToCM){l.push({text:p.text,icon:p.icon,key:"COLLABORATION_POPOVER_CM"})}if(l.length===1&&!r&&l[0].key==="COLLABORATION_POPOVER_MAIL"){this._shareData(t,l[0],r);return}var c=this._getPopover(t,l,r);c.openBy(a)};b.prototype._getPopover=function(e,t,a){var r=new h({showHeader:false,placement:e.placement?e.placement:"Auto",verticalScrolling:false,horizontalScrolling:false,content:this._getPopoverContent(e,t,a)});return r};b.prototype._getPopoverContent=function(e,t,a){var r=new y({items:[],direction:T.FlexDirection.Column});var o=new y({direction:e.sFormat==="Vertical"?T.FlexDirection.Column:T.FlexDirection.Row,justifyContent:T.FlexJustifyContent.SpaceAround,items:[]});t.forEach(i=>{var n=new m({text:i.text,icon:i.icon,width:e.sFormat==="Horizontal"&&t.length===3?"120px":"180px",press:t=>{t.getSource().getParent().getParent().getParent().close();this._shareData(e,i,a)}}).addStyleClass("sapUiTinyMarginTop").addStyleClass("sapUiTinyMarginBegin");if(i.key==="COLLABORATION_POPOVER_TEAMS"){n.addStyleClass("sapSuiteUiCollaborationBarMSTeamsButton"+(e.sFormat?e.sFormat:"Horizontal"))}else if(i.key==="COLLABORATION_POPOVER_CM"){n.addStyleClass("sapSuiteUiCollaborationBarCMButton"+(e.sFormat?e.sFormat:"Horizontal"))}else{n.addStyleClass("sapSuiteUiCollaborationBarEmailButton"+(e.sFormat?e.sFormat:"Horizontal"))}o.addItem(n);r.addItem(o)});if(a){var i=new y({justifyContent:e.sFormat==="Vertical"?T.FlexJustifyContent.Center:T.FlexJustifyContent.SpaceBetween,alignItems:T.FlexAlignItems.Center,items:[new m({text:U.getText("COLLABORATION_POPOVER_COPYURL_BUTTON"),width:e.sFormat==="Vertical"?"150px":"",press:async()=>{await this._writeToClipBoard(e.data)}}).addStyleClass("sapUiTinyMarginBeginEnd")]});if(e.sFormat==="Horizontal"||e.sFormat===undefined){i.insertItem(new C({text:U.getText("COLLABORATION_POPOVER_MSGSTRIP"),showIcon:true}).addStyleClass("sapUiTinyMarginBeginEnd").addStyleClass("sapSuiteCollaborationBarMsgStrip"),0);i.addStyleClass("sapSuiteUiCollaborationBarMsgStripHBox")}i.addStyleClass("sapUiTinyMarginBeginEnd").addStyleClass("sapUiTinyMarginTopBottom");r.addItem(i)}if(e.sFormat==="Vertical"){o.setHeight(t.length>1?t.length*50+50+"px":"80px");o.addStyleClass("sapUiSmallMarginBottom").addStyleClass("sapUiTinyMarginEnd")}else{o.setHeight("110px");o.addStyleClass("sapUiTinyMarginEnd")}return r};b.prototype._writeToClipBoard=async function(e){try{await window.navigator.clipboard.writeText(e)}catch(e){v.info(e)}};b.prototype._shareData=function(e,t,a){if(t.key==="COLLABORATION_POPOVER_TEAMS"){if(a){var r={url:e.data,appTitle:e.title?e.title:"",subTitle:"",minifyUrlForChat:true};this._shareAsChat(r)}else{var o={appTitle:e.title?e.title:"",message:e.data,showPreview:typeof e.showPreview!=="undefined"?e.showPreview:true};this._shareSummary(o)}}else if(t.key==="COLLABORATION_POPOVER_MAIL"){sap.m.URLHelper.triggerEmail(null,e.title&&e.title.trim()!==""?e.title:null,e.data)}else if(t.key==="COLLABORATION_POPOVER_CM"){this.oCollaborationManager.triggerH2HChat(e.title,e.data)}};b.prototype._shareSummary=function(e){var t={subEntityId:{appTitle:e.appTitle,mode:"summary",message:e.message,showPreview:e.showPreview}};var a=this._providerConfig.shareAsTabUrl+"?&context="+encodeURIComponent(JSON.stringify(t));sap.m.URLHelper.redirect(a,true)};b.prototype._shareToEmail=async function(e){let t=e?.url||window.location.href;try{t=await this._getUnfurlingUrl(e)}catch(e){v.error("getUnfurlingUrl failed: "+e.message)}const a=e?.appTitle?.trim()?e.appTitle:null;sap.m.URLHelper.triggerEmail(null,a,t)};b.prototype._shareAsChatFromCollabBar=async function(e){try{await this._shareAsCard(e)}catch(e){v.error("Failed to share card from collaboration bar: "+e.message)}};b.prototype._copyLink=async function(e){let t=e?.url||window.location.href;try{t=await this._getUnfurlingUrl(e)}catch(e){v.error("getUnfurlingUrl failed: "+e.message)}this._copyCardUrlToClipboard(t)};b.prototype._copyCardUrlToClipboard=async function(e){try{if(typeof window.navigator!=="undefined"&&window.navigator.clipboard&&typeof window.navigator.clipboard.writeText==="function"){try{await window.navigator.clipboard.writeText(e);v.info("Card URL copied to clipboard successfully.");sap.m.MessageToast.show(U.getText("COLLABORATION_POPOVER_MSGSTRIP_SUCCESS"))}catch(e){v.error("Clipboard write failed: "+e.message)}}else{v.error("Clipboard API is not available.")}}catch(e){v.error("Failed to generate or copy Card URL",e)}};b.prototype._getUnfurlingUrl=async function(e){if(!e?.cardId||!e.cardId.length||!e.cardManifest||!this.isFeatureFlagEnabled()){return this._generateUnfurlingUrl(e,{})}let t="";let a={};try{try{const e=await p.load({name:"sap.suite.ui.commons.collaboration.CollaborationBusyDialog",controller:this,type:"XML"});w=e;w.open();I=setTimeout(()=>{w.close();w.destroy()},M)}catch(e){v.error("Fragment load failed: "+e.message)}a=await this._buildCardInfo(e)}catch(e){v.error("buildCardInfo failed: "+e.message)}finally{if(a&&Object.keys(a).length===0){v.warn("Card info could not be saved.")}t=this._generateUnfurlingUrl(e,a);this._closeBusyDialog()}return t};b.prototype._generateUnfurlingUrl=async function(e,t){let a=e?.url||window.location.href;try{if(e?.minifyUrlForChat){a=await this._getModifiedUrlForSharing(e)}else if(R.isShareAsTabEnabled&&this._providerConfig.isShareAsTabEnabled){const e=await this._modifyUrlForShareAsTab(a,"MST:C");a=await this._addNavmodeInUrl(e,"inplace")}}catch(e){v.error("Error while modifying URL for sharing: "+e.message)}return this._getCardInfoUrl(a,e,t)};return b});
28
+ },
29
+ "sap/suite/ui/commons/collaboration/UniversalCollaborationBar.js":function(){
30
+ sap.ui.define(["sap/base/Log","sap/ui/Device","sap/ui/core/Lib","sap/m/Menu","sap/m/MenuItem","sap/ui/performance/trace/FESRHelper"],function(e,t,a,s,n,o){const i="COLLABORATION_POPOVER_MAIL";const r="COLLABORATION_MSTEAMS_SHARE";const l="COLLABORATION_POPOVER_CHAT";const u="COLLABORATION_POPOVER_TAB";const c="COLLABORATION_POPOVER_MANAGER";const p="COLLABORATION_POPOVER_COPYURL_BUTTON";var h=s.extend("sap.suite.ui.commons.collaboration.UniversalCollaborationBar",{metadata:{properties:{shareToEmailEnabled:{type:"boolean",defaultValue:true},shareAsChatEnabled:{type:"boolean",defaultValue:false},shareAsTabEnabled:{type:"boolean",defaultValue:false},shareToCollaborationManagerEnabled:{type:"boolean",defaultValue:false},copyLinkEnabled:{type:"boolean",defaultValue:true}},events:{shareToChatSelected:{},shareToTabSelected:{},copyLinkSelected:{},shareToEmailSelected:{},shareToCollaborationManagerSelected:{}}},init:function(){sap.m.Menu.prototype.init.apply(this,arguments);this._mActionHandlers={[i]:(...e)=>{if(this.hasListeners("shareToEmailSelected")){this.fireShareToEmailSelected({args:e})}else{this._shareToEmail(...e)}},[l]:()=>this.fireShareToChatSelected(),[u]:()=>this.fireShareToTabSelected(),[c]:()=>this.fireShareToCollaborationManagerSelected(),[p]:(...e)=>{if(this.hasListeners("copyLinkSelected")){this.fireCopyLinkSelected({args:e})}else{this._toCopyUrl(...e)}}};this._oLogger=e.getLogger("sap.suite.ui.commons.collaboration.UniversalCollaborationBar");this._oResourceBundle=a.getResourceBundleFor("sap.suite.ui.commons");this.addStyleClass("sapSuiteCollaborationBarMenu")},openBy:function(){if(!this.getItems().length){this._renderMenuItems()}return sap.m.Menu.prototype.openBy.apply(this,arguments)},_renderMenuItems:async function(){const e=await this._getCollaborationPopoverOptions();const t=this._getMenuItems(e);t.forEach(e=>this.addItem(e))},_getTeamsHelperService:async function(){if(!this._oTeamsHelperService){const e=sap.ui.require("sap/suite/ui/commons/collaboration/ServiceContainer");this._oTeamsHelperService=await e.getServiceAsync()}return this._oTeamsHelperService},_getMenuItems:function(e){const t=[];e.forEach(e=>{const a=this._createMenuItem(e.icon,e.text,e.key,e.fesrStepName,e.styleClass);(e.subOptions||[]).forEach(e=>{const t=this._createMenuItem(e.icon,e.text,e.key,e.fesrStepName,e.styleClass);a.addItem(t)});t.push(a)});return t},_createMenuItem:function(e,t,a,s,i){const r={icon:e,text:t,key:a};const l=new n(r);l.attachPress(()=>{const e=this._mActionHandlers[a];if(e){e()}});if(s){o.setSemanticStepname(l,"press",s)}l.addEventDelegate({onAfterRendering:()=>{const e=l.getDomRef();if(e&&i){e.classList.add(i)}}});return l},_createOption:function(e,t,a,{fesrStepName:s="",subOptions:n=[]}={}){const o={text:this._oResourceBundle.getText(e),icon:t,key:e,styleClass:a};if(s){o.fesrStepName=s}if(n.length>0){o.subOptions=n}return o},_getCollaborationPopoverOptions:async function(){const e={isShareAsChatEnabled:this.getShareAsChatEnabled(),isShareAsTabEnabled:this.getShareAsTabEnabled(),isCopyLinkEnabled:this.getCopyLinkEnabled(),isShareToEmailEnabled:this.getShareToEmailEnabled(),isShareToCMEnabled:this.getShareToCollaborationManagerEnabled()};let t={};try{const e=await this._getTeamsHelperService();t=e._providerConfig}catch(e){this._oLogger.error("Error fetching TeamsHelperService:",e)}const a=[];let s=[];const n=[{key:i,icon:"sap-icon://email",styleClass:"sapSuiteUiCommonsCollaborationMail",consumerEnabled:e.isShareToEmailEnabled,providerEnabled:true,fesrStep:"",featureName:"Email",group:"menu"},{key:l,icon:"sap-icon://discussion",styleClass:"sapSuiteUiCommonsCollaborationChat",consumerEnabled:e.isShareAsChatEnabled,providerEnabled:t.isShareAsLinkEnabled==="X",fesrStep:"MST:ShareAsLink",featureName:"Share as Chat",desktopOnly:true,group:"subMenu"},{key:u,icon:"sap-icon://image-viewer",styleClass:"sapSuiteUiCommonsCollaborationTab",consumerEnabled:e.isShareAsTabEnabled,providerEnabled:t.isShareAsTabEnabled==="X",fesrStep:"MST:ShareAsTab",featureName:"Share as Tab",desktopOnly:true,group:"subMenu"},{key:r,icon:"sap-icon://citizen-connect",styleClass:"sapSuiteUiCommonsCollaborationMSTeamsShare",consumerEnabled:true,providerEnabled:true,isParentOfGroup:"subMenu",group:"menu"},{key:c,icon:"sap-icon://collaborate",styleClass:"sapSuiteUiCommonsCollaborationManager",consumerEnabled:e.isShareToCMEnabled,providerEnabled:true,fesrStep:"",featureName:"Collaboration Manager",group:"menu"},{key:p,icon:"sap-icon://chain-link",styleClass:"sapSuiteUiCommonsCollaborationLink",consumerEnabled:e.isCopyLinkEnabled,providerEnabled:true,fesrStep:"",featureName:"Copy link",desktopOnly:true,group:"menu"}];n.forEach(e=>{if(e.group==="subMenu"){const t=this._createOptionIfEnabled(e);if(t){s.push(t)}return}if(e.isParentOfGroup==="subMenu"){if(s.length>0){e.subOptions=s;s=[]}}const t=this._createOptionIfEnabled(e);if(t){a.push(t)}});return a},_createOptionIfEnabled:function(e){if(e.desktopOnly&&!t.system.desktop){this._oLogger.info(`${e.featureName} option is not supported in Phone and Tablet`);return null}if(!e.consumerEnabled){this._oLogger.info(`Consumer disabled ${e.featureName} option`);return null}if(!e.providerEnabled){this._oLogger.info(`${e.featureName} option is not enabled in the tenant`);return null}return this._createOption(e.key,e.icon,e.styleClass,{fesrStepName:e.fesrStep,subOptions:e.subOptions})},_shareToEmail:async function(){const e=await this._getTeamsHelperService();e._shareToEmail()},_toCopyUrl:async function(){const e=await this._getTeamsHelperService();e._copyLink()}});return h});
28
31
  },
29
32
  "sap/suite/ui/commons/collaboration/channels/MessageChannel.js":function(){
30
33
  sap.ui.define(["sap/ui/base/Object"],function(e){var n;var s=e.extend("sap.suite.ui.commons.collaboration.channels.MessageChannel",{postMessage:function(e,n){window.parent.postMessage({...e,_fromMessageChannel:true},n||"*")},subscribe:function(e){window.addEventListener("message",function(n){if(n?.data?._fromMessageChannel&&typeof e==="function"){e(n)}})}});return{getInstance:function(){if(!n){n=new s}return Promise.resolve(n)}}});
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  *
23
23
  * @constructor
24
24
  * @alias sap.suite.ui.commons.flexibility.changeHandler.PropertyChangeMapper
25
- * @version 1.141.0
25
+ * @version 1.142.1
26
26
  * @since 1.50
27
27
  * @private
28
28
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.141.0
31
+ * @version 1.142.1
32
32
  * @since 1.67.0
33
33
  *
34
34
  * @constructor
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
31
31
  *
32
32
  * @author SAP SE
33
- * @version 1.141.0
33
+ * @version 1.142.1
34
34
  * @since 1.66.0
35
35
  *
36
36
  * @constructor
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.141.0
31
+ * @version 1.142.1
32
32
  * @since 1.66.0
33
33
  *
34
34
  * @constructor
@@ -22,7 +22,7 @@ sap.ui.define([
22
22
  * @extends sap.ui.core.Element
23
23
  *
24
24
  * @author SAP SE
25
- * @version 1.141.0
25
+ * @version 1.142.1
26
26
  * @since 1.66.0
27
27
  *
28
28
  * @constructor
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
29
29
  *
30
30
  * @author SAP SE
31
- * @version 1.141.0
31
+ * @version 1.142.1
32
32
  * @since 1.66.0
33
33
  *
34
34
  * @constructor
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
26
26
  *
27
27
  * @author SAP SE
28
- * @version 1.141.0
28
+ * @version 1.142.1
29
29
  * @since 1.66.0
30
30
  *
31
31
  * @constructor
@@ -17,7 +17,7 @@ sap.ui.define([
17
17
  * @extends sap.ui.base.Object
18
18
  *
19
19
  * @author SAP SE
20
- * @version 1.141.0
20
+ * @version 1.142.1
21
21
  * @since 1.66.0
22
22
  *
23
23
  * @abstract
@@ -50,7 +50,7 @@ sap.ui.define([
50
50
  * @extends sap.ui.core.Control
51
51
  *
52
52
  * @author SAP SE
53
- * @version 1.141.0
53
+ * @version 1.142.1
54
54
  * @since 1.66.0
55
55
  *
56
56
  * @constructor
@@ -162,7 +162,7 @@ sap.ui.define([
162
162
  * @extends sap.ui.core.Control
163
163
  *
164
164
  * @author SAP SE
165
- * @version 1.141.0
165
+ * @version 1.142.1
166
166
  * @since 1.66.0
167
167
  *
168
168
  * @constructor
@@ -34,7 +34,7 @@ sap.ui.define([
34
34
  * @extends sap.suite.ui.commons.imageeditor.ImageEditorContainer
35
35
  *
36
36
  * @author SAP SE
37
- * @version 1.141.0
37
+ * @version 1.142.1
38
38
  * @since 1.68.0
39
39
  *
40
40
  * @constructor
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
30
30
  *
31
31
  * @author SAP SE
32
- * @version 1.141.0
32
+ * @version 1.142.1
33
33
  * @since 1.66.0
34
34
  *
35
35
  * @constructor
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @extends sap.suite.ui.commons.imageeditor.HistoryItem
24
24
  *
25
25
  * @author SAP SE
26
- * @version 1.141.0
26
+ * @version 1.142.1
27
27
  * @since 1.66.0
28
28
  *
29
29
  * @constructor
@@ -195,7 +195,7 @@ sap.ui.define([
195
195
  "sap.suite.ui.commons.TargetFilterMeasureColumn",
196
196
  "sap.suite.ui.commons.AriaProperties"
197
197
  ],
198
- version: "1.141.0",
198
+ version: "1.142.1",
199
199
  extensions: {
200
200
  flChangeHandlers: {
201
201
  "sap.suite.ui.commons.Timeline": "sap/suite/ui/commons/flexibility/Timeline"
@@ -493,6 +493,8 @@ NETWORK_GRAPH_WRONGDATA=Network graph data is not consistent. Check the console
493
493
  NETWORK_GRAPH_COLLAPSED=Collapsed
494
494
  #XACT: Title for expanded icon.
495
495
  NETWORK_GRAPH_EXPANDED=Expanded
496
+ #XACT: Title for collapsed icon.
497
+ NETWORK_GRAPH_PARTIAL=Partially Expanded
496
498
  #XACT: No Data title
497
499
  NETWORK_GRAPH_NO_DATA=No data found.
498
500
  #XACT: Title for group details
@@ -543,7 +545,8 @@ MICRO_PROCESS_FLOW_ERROR=Error
543
545
  MICRO_PROCESS_FLOW_INFORMATION=Information
544
546
  #XACT: Text for ARIA text
545
547
  MICRO_PROCESS_FLOW_ITEM=Item
546
-
548
+ #XBUT: Text for confirm button
549
+ MICRO_PROCESS_FLOW_ITEM_ACC_BUTTON=Button {0} of {1}. To move to an item press the Arrow keys.
547
550
 
548
551
  #YINS: Placeholder text for search variable field
549
552
  CALCULATION_BUILDER_SEARCH_VARIABLE=Search...
@@ -701,6 +704,10 @@ CALCULATION_BUILDER_LOGICAL_DISJUNCTION_TOOLTIP=Logical disjunction
701
704
  CALCULATION_BUILDER_EXCLUSIVE_DISJUNCTION_TOOLTIP=Exclusive disjunction
702
705
  #XCAP: Tooltip for negation operator
703
706
  CALCULATION_BUILDER_NEGATION_TOOLTIP=Negation
707
+ #XCAP: CalculationBuilder Negative Action Tutor message
708
+ CALCULATION_BUILDER_NEGATIVE_ACTION=Negative Action.
709
+ #XCAP: CalculationBuilder Navigation Tutor message
710
+ CALCULATION_BUILDER_NAVIGATION=Use arrow keys to navigate
704
711
 
705
712
  #XCAP: T Account title
706
713
  TACCOUNT_TITLE=T Account
@@ -1005,10 +1012,18 @@ COLLABORATION_MSTEAMS_CHAT_SINGLE=Chat in Microsoft Teams
1005
1012
  COLLABORATION_MSTEAMS_CARD_SINGLE=Card in Microsoft Teams
1006
1013
  #XTXT: Text for Collaboration popover teams option
1007
1014
  COLLABORATION_POPOVER_TEAMS = Microsoft Teams Chat
1015
+ #XTXT: Text for Universal collaboration bar Chat option
1016
+ COLLABORATION_POPOVER_CHAT=Chat
1017
+ #XTXT: Text for Universal collaboration bar Tab option
1018
+ COLLABORATION_POPOVER_TAB=Tab
1019
+ #XTXT: Text for Universal collaboration bar Collaboration Manager option
1020
+ COLLABORATION_POPOVER_MANAGER=Collaboration Manager
1008
1021
  #XTXT: Text for Collaboration popover Mail option
1009
1022
  COLLABORATION_POPOVER_MAIL = Email
1010
1023
  #XTXT: Message strip text for copy link
1011
1024
  COLLABORATION_POPOVER_MSGSTRIP = Click to copy the link for later use
1025
+ #XTXT: Message text for copy link successfully
1026
+ COLLABORATION_POPOVER_MSGSTRIP_SUCCESS = Link copied successfully
1012
1027
  #XTXT: Text for Collaboration popover Copy URL Button
1013
1028
  COLLABORATION_POPOVER_COPYURL_BUTTON = Copy Link
1014
1029
  #XTXT: Text for Share to Collaboration Manager
@@ -520,9 +520,12 @@ COLLABORATION_MSTEAMS_TAB_SINGLE=Tab to Microsoft Teams
520
520
  COLLABORATION_MSTEAMS_CHAT_SINGLE=Chat in Microsoft Teams
521
521
  COLLABORATION_MSTEAMS_CARD_SINGLE=Card in Microsoft Teams
522
522
  COLLABORATION_POPOVER_TEAMS=Microsoft Teams Chat
523
+ COLLABORATION_POPOVER_CHAT=Chat
524
+ COLLABORATION_POPOVER_TAB=Tab
523
525
  COLLABORATION_POPOVER_MAIL=Email
524
526
  COLLABORATION_POPOVER_MSGSTRIP=Click to copy the link for later use
525
527
  COLLABORATION_POPOVER_COPYURL_BUTTON=Copy Link
528
+ COLLABORATION_POPOVER_MANAGER=Collaboration Manager
526
529
  COLLABORATION_MANGER=Collaboration Manager
527
530
  SAVE_CARD_ERROR=The card couldn't be shared. Please try again later.
528
531
 
@@ -42,7 +42,8 @@ sap.ui.define([
42
42
  "sap/ui/core/RenderManager",
43
43
  "sap/ui/core/Theming",
44
44
  'sap/ui/core/InvisibleText',
45
- "./GraphRenderer"
45
+ "./GraphRenderer",
46
+ "./util/DragDropManager"
46
47
  ], function (
47
48
  library,
48
49
  jQuery,
@@ -80,7 +81,8 @@ sap.ui.define([
80
81
  RenderManager,
81
82
  Theming,
82
83
  InvisibleText,
83
- GraphRenderer
84
+ GraphRenderer,
85
+ DragDropManager
84
86
  ) {
85
87
  "use strict";
86
88
 
@@ -98,7 +100,8 @@ sap.ui.define([
98
100
  var ZOOM_MILESTONES = [0.05, 0.1, 0.25, 0.33, 0.50, 0.67, 0.75, 0.80, 0.90, 1, 1.1, 1.25, 1.5, 1.75, 2, 2.5, 3, 4, 5],
99
101
  DEFAULT_ZOOM_MILESTONE = 1,
100
102
  ZOOM_OUT_RATING = 0.4,
101
- SUGGESTION_ITEMS_LIMIT = 100;
103
+ SUGGESTION_ITEMS_LIMIT = 100,
104
+ MOVING_THRESHOLD = 20;
102
105
 
103
106
  var SUGGESTIONS = {
104
107
  Group: "group",
@@ -136,6 +139,7 @@ sap.ui.define([
136
139
  var Graph = SvgBase.extend("sap.suite.ui.commons.networkgraph.Graph", {
137
140
  metadata: {
138
141
  library: "sap.suite.ui.commons",
142
+ dnd: { draggable: false, droppable: true },
139
143
  properties: {
140
144
  /**
141
145
  * The height of the graph. If this property is set to 'auto', the network graph will be resized to fit the height of its content, regardless of the height of the parent control.
@@ -210,10 +214,19 @@ sap.ui.define([
210
214
  * Only works when enableWheelZoom is set to true or 'ctrl' key is pressed while wheel scrolling.
211
215
  * Add delay in milliseconds.
212
216
  *
213
- * @private since 1.125
217
+ * @private
214
218
  */
215
219
  _smoothWheelZoom: {
216
220
  type: "int", group: "Behavior", defaultValue: 125, visibility: "hidden"
221
+ },
222
+ /**
223
+ * Enables the drag and drop of nodes. This property is ignored if the layout property is not set to noop.
224
+ * If set to <code>true</code>, nodes can be dragged and dropped within the graph.
225
+ *
226
+ * @private
227
+ */
228
+ enableDragAndDrop: {
229
+ type: "boolean", group: "Behavior", defaultValue: false, visibility: "hidden"
217
230
  }
218
231
  },
219
232
  aggregations: {
@@ -327,7 +340,28 @@ sap.ui.define([
327
340
  term: { type: "string" },
328
341
  key: { type: "string" }
329
342
  }
330
- }
343
+ },
344
+ /**
345
+ * This event is fired when a user drops a node in the graph. This event is available only for the noop layout.
346
+ * @private
347
+ */
348
+ nodeDropped: {
349
+ parameters: {
350
+ /**
351
+ * The node that was moved.
352
+ */
353
+ node: { type: "sap.suite.ui.commons.networkgraph.Node" },
354
+ /**
355
+ * The new x coordinate of the node.
356
+ */
357
+ newX: { type: "float" },
358
+ /**
359
+ * The new y coordinate of the node.
360
+ */
361
+ newY: { type: "float" }
362
+ },
363
+ visibility: "hidden"
364
+ },
331
365
  }
332
366
  }
333
367
  });
@@ -408,6 +442,17 @@ sap.ui.define([
408
442
 
409
443
  this._createToolbar();
410
444
 
445
+ /**
446
+ * Attach drag and drop events
447
+ */
448
+ if (this.getDragDropConfig().length === 0) {
449
+ try {
450
+ DragDropManager.injectDnD(this);
451
+ } catch (error) {
452
+ Log.error("Graph DnD: ", error);
453
+ }
454
+ }
455
+
411
456
  };
412
457
 
413
458
  Graph.prototype.onBeforeRendering = function () {
@@ -553,6 +598,7 @@ sap.ui.define([
553
598
  if (this._oFullScreenUtil) {
554
599
  this._oFullScreenUtil.cleanUpFullScreen(this);
555
600
  }
601
+ DragDropManager.removeDnD(this);
556
602
  };
557
603
  /* =========================================================== */
558
604
  /* Pseudo events and event triggers */
@@ -864,6 +910,20 @@ sap.ui.define([
864
910
  this.$().find("." + this.FOCUS_CLASS).removeClass(this.FOCUS_CLASS);
865
911
  };
866
912
 
913
+ /**
914
+ * @private
915
+ */
916
+ Graph.prototype.setEnableDragAndDrop = function (bEnabled) {
917
+ this.setProperty("enableDragAndDrop", bEnabled, true);
918
+ };
919
+
920
+ /**
921
+ * @private
922
+ */
923
+ Graph.prototype.getEnableDragAndDrop = function () {
924
+ return this.getProperty("enableDragAndDrop");
925
+ };
926
+
867
927
  /**
868
928
  * Sets focus of the graph. Since one element at max can be focused at one time, handling of this belongs to the graph itself.
869
929
  * @param {object} oFocus Element (and optionally button) to focus
@@ -1029,6 +1089,14 @@ sap.ui.define([
1029
1089
  return this.getNodes().concat(this.getGroups());
1030
1090
  };
1031
1091
 
1092
+ Graph.prototype._isNoopLayout = function () {
1093
+ return this._getLayoutAlgorithm().isA("sap.suite.ui.commons.networkgraph.layout.NoopLayout");
1094
+ };
1095
+
1096
+ Graph.prototype._isDnDEnabled = function() {
1097
+ return this._isNoopLayout() && this.getEnableDragAndDrop();
1098
+ };
1099
+
1032
1100
  Graph.prototype._render = function () {
1033
1101
  this._beforeRender();
1034
1102
 
@@ -1092,6 +1160,10 @@ sap.ui.define([
1092
1160
 
1093
1161
  if (!this._isSwimLane() && !this._isTwoColumnsLayout()) {
1094
1162
  this.$("innerscroller").addClass(" sapSuiteUiCommonsNetworkGraphInnerScrollerCenter ");
1163
+ if (this._isDnDEnabled()) {
1164
+ // If NoopLayout is used, users must set certain styles to ensure precise coordinates setting.
1165
+ this.$("innerscroller").addClass("sapSuiteUiCommonsNetworkGraphInnerScrollerNoMargin");
1166
+ }
1095
1167
  }
1096
1168
  };
1097
1169
 
@@ -2161,6 +2233,34 @@ sap.ui.define([
2161
2233
  $wrapper.on("touchmove", function (oEvent) {
2162
2234
  fnTouchMove(oEvent);
2163
2235
  });
2236
+
2237
+ this.getDomRef("wrapper").addEventListener("keydown",(oEvent) => {
2238
+ var oScroller = this.$scroller[0];
2239
+ setTimeout(() => {
2240
+ // Check whether the focus is not on childElements
2241
+ if (!document.querySelector(".sapSuiteUiCommonsNetworkElementFocus")) {
2242
+ var iX = 0;
2243
+ var iY = 0;
2244
+
2245
+ // Handle horizontal movement
2246
+ if (oEvent.key === "ArrowLeft") {
2247
+ iX = -MOVING_THRESHOLD;
2248
+ } else if (oEvent.key === "ArrowRight") {
2249
+ iX = MOVING_THRESHOLD;
2250
+ }
2251
+
2252
+ // Handle vertical movement
2253
+ if (oEvent.key === "ArrowUp") {
2254
+ iY = -MOVING_THRESHOLD;
2255
+ } else if (oEvent.key === "ArrowDown") {
2256
+ iY = MOVING_THRESHOLD;
2257
+ }
2258
+
2259
+ oScroller.scrollTop = oScroller.scrollTop + iY;
2260
+ oScroller.scrollLeft = oScroller.scrollLeft + iX;
2261
+ }
2262
+ }, 0);
2263
+ });
2164
2264
  this._bEventsAdded = true;
2165
2265
  }
2166
2266
 
@@ -20,8 +20,10 @@ sap.ui.define([
20
20
  "sap/ui/core/Core",
21
21
  "sap/ui/core/Theming",
22
22
  "sap/ui/core/Lib",
23
- "./Utils"
24
- ], function(jQuery, library, ElementBase, ElementAttribute, IconPool, Device, encodeXML, sanitizeHTML, CheckBox, Text, NodeRenderer, Core, Theming, CoreLib, Utils) {
23
+ "./Utils",
24
+ "sap/base/Log",
25
+ "./util/DragDropManager"
26
+ ], function(jQuery, library, ElementBase, ElementAttribute, IconPool, Device, encodeXML, sanitizeHTML, CheckBox, Text, NodeRenderer, Core, Theming, CoreLib, Utils, Log, DragDropManager) {
25
27
  "use strict";
26
28
 
27
29
  var Shape = library.networkgraph.NodeShape,
@@ -116,6 +118,7 @@ sap.ui.define([
116
118
  var Node = ElementBase.extend("sap.suite.ui.commons.networkgraph.Node", {
117
119
  metadata: {
118
120
  library: "sap.suite.ui.commons",
121
+ dnd : { draggable: true, droppable: false },
119
122
  properties: {
120
123
  /**
121
124
  * Defines if the Header checkbox should be displayed and whether it should be selected or not. By default, the checkbox is hidden. Available only for box nodes.
@@ -338,6 +341,13 @@ sap.ui.define([
338
341
  }
339
342
  },
340
343
  onAfterRendering: function() {
344
+ if (this.getDragDropConfig().length === 0) {
345
+ try {
346
+ DragDropManager.injectDnD(this);
347
+ } catch (error) {
348
+ Log.error("Node DnD: ", error);
349
+ }
350
+ }
341
351
  this._afterRenderingBase();
342
352
  }
343
353
  });
@@ -453,6 +463,10 @@ sap.ui.define([
453
463
  }
454
464
  };
455
465
 
466
+ Node.prototype.exit = function () {
467
+ DragDropManager.removeDnD(this);
468
+ };
469
+
456
470
  Node.prototype._isInteractiveNode = function() {
457
471
  var bIsShowExpandButton = this.getShowExpandButton() && this._hasVisibleChildren(),
458
472
  bIsShowDetailButton = this.getShowDetailButton() && (this._hasDetailData() || this.getTitle()),
@@ -615,9 +629,7 @@ sap.ui.define([
615
629
  "class": "sapSuiteUiCommonsNetworkNodeActionCollapseIcon",
616
630
  icon: this._getExpandIcon(true),
617
631
  enable: this._hasVisibleChildren(),
618
- title: this._oExpandState === ExpandState.EXPANDED ?
619
- oResourceBundle.getText("NETWORK_GRAPH_EXPANDED") :
620
- oResourceBundle.getText("NETWORK_GRAPH_COLLAPSED"),
632
+ title: this._getExpandStateTitle(),
621
633
  id: this._getDomId("actionCollapse"),
622
634
  click: this._expandClick.bind(this)
623
635
  }, $right);
@@ -723,6 +735,7 @@ sap.ui.define([
723
735
  id: sId,
724
736
  "data-sap-ui": sId,
725
737
  "class": sNodeClass,
738
+ "draggable": !!(this.getParent()._isDnDEnabled())
726
739
  };
727
740
 
728
741
  if (sNodeClass.includes("sapSuiteUiCommonsNetworkBox") && this.getTooltip_AsString()) {
@@ -2041,6 +2054,19 @@ sap.ui.define([
2041
2054
  }
2042
2055
  };
2043
2056
 
2057
+ Node.prototype._getExpandStateTitle = function () {
2058
+ switch (this._oExpandState) {
2059
+ case ExpandState.PARTIAL:
2060
+ return oResourceBundle.getText("NETWORK_GRAPH_PARTIAL");
2061
+ case ExpandState.EXPANDED:
2062
+ return oResourceBundle.getText("NETWORK_GRAPH_EXPANDED");
2063
+ case ExpandState.COLLAPSED:
2064
+ return oResourceBundle.getText("NETWORK_GRAPH_COLLAPSED");
2065
+ default:
2066
+ return oResourceBundle.getText("NETWORK_GRAPH_EXPANDED");
2067
+ }
2068
+ };
2069
+
2044
2070
  Node.prototype._createLineText = function(sText, iWidth, oText, iMaxLines) {
2045
2071
  var aLines = [[]],
2046
2072
  iLine = 0, sRest,
@@ -3158,9 +3184,7 @@ sap.ui.define([
3158
3184
  icon: this._getExpandIcon(true),
3159
3185
  "class": "sapSuiteUiCommonsNetworkNodeActionCollapseIcon",
3160
3186
  enable: this._hasVisibleChildren(),
3161
- title: this._oExpandState === ExpandState.EXPANDED ?
3162
- oResourceBundle.getText("NETWORK_GRAPH_EXPANDED") :
3163
- oResourceBundle.getText("NETWORK_GRAPH_COLLAPSED"),
3187
+ title: this._getExpandStateTitle(),
3164
3188
  id: this._getDomId("actionCollapse"),
3165
3189
  click: this._expandClick.bind(this)
3166
3190
  });
@@ -3413,9 +3437,7 @@ sap.ui.define([
3413
3437
  if ($icon[0]) {
3414
3438
  $icon[0].textContent = this._getExpandIcon();
3415
3439
  if ($iconParent && $iconParent.title) {
3416
- $iconParent.title = this._oExpandState === ExpandState.EXPANDED ?
3417
- oResourceBundle.getText("NETWORK_GRAPH_EXPANDED") :
3418
- oResourceBundle.getText("NETWORK_GRAPH_COLLAPSED")
3440
+ $iconParent.title = this._getExpandStateTitle();
3419
3441
  }
3420
3442
  }
3421
3443