Meet Suraj and Vijay from IPG
Globally connected, locally empowered
In 2024, we shared how IPG leverages its international network to serve customers in the Netherlands more efficiently and intelligently. A lot has happened since then. Our team in India has grown and now plays an integral role in both technical and commercial support.
Sales engineer Suraj Sonawane has become a familiar face within our team, and as of July, we’re proud to welcome Vijay Sharma as our new product specialist.
Together, they provide fast technical support, smart calculations, and act as a true extension of our Dutch team all with the same IPG mindset: down-to-earth, reliable, and always focused on the customer.
HOW DOES OUR INTERNATIONAL COLLABORATION WORK?
To support our customers in the best possible way, IPG operates with a core team in the Netherlands and an extended technical team at our international office in India. This setup allows us to respond to email inquiries more quickly during business days – even outside Dutch office hours.
From India, our sales engineers assist with pump selection, preparing quotations, processing requests, and handling the technical preparation of projects.
This collaboration is seamlessly integrated into our processes: customers experience the same high level of service and quality, while benefiting from faster turnaround times, specialized knowledge, and a team that truly works together across the globe.
MEET SURAJ SONAWANE
Suraj has been working as a Sales Engineer for IPG for two years from our international office in India. In his role, he combines technical analysis with customer-focused advice – a combination he greatly enjoys:
"What I enjoy most about my work as a Sales Engineer at IPG is the blend of technical problem-solving and customer interaction. I am able to build long-term relationships with clients while also staying close to engineering – it keeps my work both challenging and rewarding. I also get exposure to multiple pump brands such as Xylem, KSB, Sulzer, Ebara, Grundfos, etc."
A typical day for Suraj involves processing customer inquiries, preparing technical and commercial quotations, and coordinating with suppliers and colleagues. He plays a key role in connecting customer needs with technical execution:
"It’s a good mix of technical analysis, customer interaction, and project follow-up."
According to Suraj, the collaboration with the Dutch team is particularly strong:
"The collaboration with the team in the Netherlands is effective because of the open communication, clear roles, and shared technical understanding. There’s a strong culture of support and accountability, with mutual respect and a shared focus on quality solutions."
WELCOME VIJAY SHARMA
Since June 2025, Vijay Sharma has joined IPG as a Sales Engineer (Product Specialist). He brings solid experience in sales support within water utility domain i.e. water and wastewater treatment, smart cities and industrial applications. His decision to join IPG is a deliberate step toward further specialization.
"I chose pumps due to my growing interest and experience in this field. What attracted me to IPG is the opportunity to work with a diverse range of pump technologies and after sales service which will allow me to gain exposure to global markets and products from multiple OEMs."
Vijay’s first impressions of the team are very positive:
"All team members, including the management, are approachable and supportive. Even though we function as individual contributors, the team often collaborates and supports one another like a close-knit family."
At IPG, he aims to deepen his knowledge of centrifugal pumps and their applications in areas such as industrial, building, mining and water & wastewater treatment:
"These segments offer a wide range of technical challenges and learning opportunities that align well with my interests and career goals."
International collaboration with substance
With the addition of Suraj and Vijay, IPG demonstrates that international collaboration goes far beyond being available in a different time zone. It’s about technical expertise, dedication, and reliable service – no matter where in the world.
Our colleagues in India are not just an extension, but an integral part of the team. Their support enables us to respond faster, handle more complex requests, and serve our customers more effectively – without compromising on quality or personal attention.
At IPG, we continue to build a strong and flexible team that helps our customers move forward: today, tomorrow, and in the future.
Error executing template "Designs/IPG_generated/Paragraph/CTAParagraph.cshtml" System.NullReferenceException: Object reference not set to an instance of an object. at Bluedesk.DynamicWeb.ItemTypes.CTAButton.GetLink(PageView pv, String navigationtag) at CompiledRazorTemplates.Dynamic.RazorEngine_c50251d32b2142d487b36f6561ded986.Execute() in D:\dynamicweb.net\Solutions\IPG\Production\files\Templates\Designs\IPG_generated\Paragraph\CTAParagraph.cshtml:line 19 at RazorEngine.Templating.TemplateBase.RazorEngine.Templating.ITemplate.Run(ExecuteContext context, TextWriter reader) at RazorEngine.Templating.RazorEngineService.RunCompile(ITemplateKey key, TextWriter writer, Type modelType, Object model, DynamicViewBag viewBag) at RazorEngine.Templating.RazorEngineServiceExtensions.<>c__DisplayClass16_0.<RunCompile>b__0(TextWriter writer) at RazorEngine.Templating.RazorEngineServiceExtensions.WithWriter(Action`1 withWriter) at Dynamicweb.Rendering.RazorTemplateRenderingProvider.Render(Template template) at Dynamicweb.Rendering.TemplateRenderingService.Render(Template template) at Dynamicweb.Rendering.Template.RenderRazorTemplate()
1 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 2 @using Dynamicweb; 3 @using Dynamicweb.Content.Items; 4 @using Bluedesk.DynamicWeb.ItemTypes; 5 6 7 @{ 8 var paragraphID = Pageview.CurrentParagraph.ID; 9 CTAParagraph _data = Dynamicweb.Services.Items.GetItem("CTAParagraph", Pageview.CurrentParagraph.ItemId).ToCodeFirstItem<CTAParagraph>() ?? new CTAParagraph(); 10 11 List<string> BackgroundConfigIdList = ((List<string>)Dynamicweb.Context.Current.Items["BackgroundConfigIdList"]) ?? new List<string>(); 12 BackgroundConfigIdList.Add(_data.BackgroundConfigurationID); 13 Dynamicweb.Context.Current.Items["BackgroundConfigIdList"] = BackgroundConfigIdList; 14 15 string contentRightClass = _data.ImagePosition.Equals("right") ? "image-right" : "image-left"; 16 17 string newWindow = _data.Button.NewWindow ? "target='_blank'" : ""; 18 string ariaLabel = !string.IsNullOrWhiteSpace(_data.Button.ButtonAriaLabel) ? "aria-label='" + _data.Button.ButtonAriaLabel + "'" : ""; 19 bool clickableBlock = !string.IsNullOrWhiteSpace(_data.Button.GetLink(Pageview)) && _data.Clickable; 20 string clickableClass = clickableBlock ? "cta-paragraph__container--clickable" : ""; 21 string ctaHasBackgroundImageClass = _data.ImageAsBackground ? "cta-paragraph--hasbackgroundimg" : ""; 22 23 bool hasContent = !string.IsNullOrWhiteSpace(_data.Button.ButtonText) || !string.IsNullOrWhiteSpace(_data.Content.Text) || !string.IsNullOrWhiteSpace(_data.Header.HeaderFormatted()); 24 double ColumnWidthSize = hasContent ? 0.5 : 1; 25 26 // string backgroundClass = getbackgroundclass(_data.BackgroundConfiguration.BackgroundClass); 27 28 string AnimateDirection = !string.IsNullOrWhiteSpace(_data.AnimateDirection) ? _data.AnimateDirection : ""; 29 bool AnimateHalfBlock = false; 30 int AnimationDuration = _data.AnimateDuration; 31 string DataAosValue = ""; 32 33 switch (AnimateDirection) 34 { 35 case "left": 36 DataAosValue = "fade-left"; 37 break; 38 39 case "right": 40 DataAosValue = "fade-right"; 41 break; 42 43 case "up": 44 DataAosValue = "fade-up"; 45 break; 46 47 case "down": 48 DataAosValue = "fade-down"; 49 break; 50 51 case "center": 52 AnimateHalfBlock = true; 53 break; 54 55 case "": 56 case "none": 57 // No action // 58 break; 59 } 60 61 string ParagraphHeight = _data.Height == 0 ? "auto" : _data.Height + "px"; 62 63 } 64 65 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 66 @using Dynamicweb; 67 @using Dynamicweb.Content.Items; 68 @using Bluedesk.DynamicWeb.ItemTypes; 69 70 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 71 @using Dynamicweb; 72 @using Dynamicweb.Content.Items; 73 @using Bluedesk.DynamicWeb.ItemTypes; 74 75 @functions { 76 77 Dictionary<string, string> GetFontConfiguration(string TextColor, FontConfigurationItemTab FontConfiguration) 78 { 79 var colorService = new ColorSwatchService(); 80 TextColor = !string.IsNullOrWhiteSpace(TextColor) ? TextColor : "" ; 81 TextColor = !TextColor.Contains("#") ? colorService.GetHexColor(Pageview.AreaID, TextColor) : TextColor; 82 Dictionary<string, string> FontConfig = new Dictionary<string, string>() { 83 { "textColor" , TextColor }, 84 { "fontSize" , FontConfiguration.FontSize }, 85 { "lineHeight", FontConfiguration.LineHeight}, 86 { "fontFamily" , FontConfiguration.FontConfiguration.FontFamily }, 87 { "fontWeight" , FontConfiguration.FontWeight }, 88 { "fontStyle" , FontConfiguration.FontStyle } 89 }; 90 return FontConfig; 91 } 92 93 public string GenerateButtonConfigVariables(ButtonConfiguration BC, MasterConfig mc, int areaId) 94 { 95 string ButtonLabelAlignment = BC.ButtonLabelAlignment; 96 switch (ButtonLabelAlignment) 97 { 98 case "align-left": 99 ButtonLabelAlignment = "flex-start"; 100 break; 101 case "align-center": 102 ButtonLabelAlignment = "center"; 103 break; 104 case "align-right": 105 ButtonLabelAlignment = "flex-end"; 106 break; 107 case "align-full": 108 ButtonLabelAlignment = "space-between"; 109 break; 110 default: 111 ButtonLabelAlignment = "flex-start"; 112 break; 113 } 114 115 var btnStyleBlock = new System.Text.StringBuilder(); 116 117 // General Config 118 btnStyleBlock.Append(GenerateCssVar("btn-min-height", $"{mc.GeneralConfiguration.ButtonHeight}px")); 119 btnStyleBlock.Append(GenerateCssVar("btn-border-radius", $"{mc.GeneralConfiguration.RoundedCornerValue}px")); 120 121 // Button Config 122 btnStyleBlock.Append(GenerateCssVar("btn-border-width", $"{BC.BorderSize.ToString()}px")); 123 btnStyleBlock.Append(GenerateCssVar("btn-label-alignment", ButtonLabelAlignment)); 124 125 // Button Config Tab 126 btnStyleBlock.Append(GenerateCssVar("btn-bg-color", BC.ButtonColorConfiguration.BackgroundColor.GetColorCode(areaId))); 127 btnStyleBlock.Append(GenerateCssVar("btn-font-color", BC.ButtonColorConfiguration.FontColor.GetColorCode(areaId))); 128 btnStyleBlock.Append(GenerateCssVar("btn-border-color", BC.ButtonColorConfiguration.BorderColor.GetColorCode(areaId))); 129 130 // Button Config Hover tab 131 btnStyleBlock.Append(GenerateCssVar("btn-bg-color-hover", BC.ButtonHoverColorConfiguration.BackgroundColor.GetColorCode(areaId))); 132 btnStyleBlock.Append(GenerateCssVar("btn-font-color-hover", BC.ButtonHoverColorConfiguration.FontColor.GetColorCode(areaId))); 133 btnStyleBlock.Append(GenerateCssVar("btn-border-color-hover", BC.ButtonHoverColorConfiguration.BorderColor.GetColorCode(areaId))); 134 135 // Button Config Font Config 136 btnStyleBlock.Append(GenerateCssVar("btn-font-size", BC.FontConfiguration.FontSize)); 137 btnStyleBlock.Append(GenerateCssVar("btn-font-config-color", BC.FontConfiguration.Color.GetColorCode(areaId))); 138 btnStyleBlock.Append(GenerateCssVar("btn-font-line-height", BC.FontConfiguration.LineHeight)); 139 btnStyleBlock.Append(GenerateCssVar("btn-font-family", BC.FontConfiguration.FontConfiguration.FontFamily)); 140 btnStyleBlock.Append(GenerateCssVar("btn-font-weight", BC.FontConfiguration.FontWeight)); 141 btnStyleBlock.Append(GenerateCssVar("btn-font-transform", BC.FontConfiguration.FontStyle)); 142 143 return btnStyleBlock.ToString(); 144 } 145 146 public string GenerateCssVar(string name, string value) 147 { 148 if (!string.IsNullOrWhiteSpace(value)) { 149 return $"--{name}: {value};"; 150 } else { 151 return ""; 152 } 153 } 154 } 155 156 157 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 158 @using Dynamicweb; 159 @using Dynamicweb.Content.Items; 160 @using Bluedesk.DynamicWeb.ItemTypes; 161 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 162 163 164 @inherits Dynamicweb.Rendering.RazorTemplateBase<Dynamicweb.Rendering.RazorTemplateModel<Dynamicweb.Rendering.Template>> 165 @using Dynamicweb; 166 @using Dynamicweb.Content.Items; 167 @using Bluedesk.DynamicWeb.ItemTypes; 168 @using Bluedesk.DynamicWeb.ItemTypes.Extensions; 169 @using Bluedesk.DynamicWeb.ItemTypes.Configuration; 170 @using Bluedesk.DynamicWeb.ItemTypes.Settings.Configuration; 171 @using Dynamicweb; 172 @using Dynamicweb.Frontend 173 @using Bluedesk.DynamicWeb.ItemTypes.BaseSolution; 174 175 @helper RenderButton(CTAButton button, PageView Pageview) 176 { 177 178 if (!string.IsNullOrWhiteSpace(button.GetLink(Pageview))) 179 { 180 string Template = button.GetButtonTemplate().Replace("{{ ButtonLink }}", button.GetLink(Pageview)); 181 @Template; 182 } 183 } 184 185 186 @{ 187 188 var colorService = new ColorSwatchService(); 189 190 string fullWidthContainerClass = _data.Fullwidth ? "" : "container"; 191 192 string backgroundClass = !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundClass) ? string.Format("bg-{0}", _data.BackgroundConfiguration.BackgroundClass) : ""; 193 string backgroundStyle = !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundColor) ? $"background-color: {_data.BackgroundConfiguration.BackgroundColor}; " : ""; 194 backgroundStyle += !string.IsNullOrWhiteSpace(_data.BackgroundConfiguration.BackgroundImage) ? $"background-image: url({_data.BackgroundConfiguration.BackgroundImage}); " : ""; 195 196 // string backgroundClass = "null"; 197 // string backgroundStyle = ""; 198 } 199 200 201 @functions { 202 //string getbackgroundclass(string backgroundClass) 203 //{ 204 // return !string.IsNullOrWhiteSpace(backgroundClass) ? string.Format("bg-{0}", backgroundClass) : ""; 205 //} 206 } 207 208 @helper CTAParagraphImage( 209 ParagraphImageResizable Image, 210 bool hasContent, 211 bool ImageAsBackground, 212 string ImagePosition, 213 bool ParallaxImage, 214 bool Fullwidth, 215 string imagesHeight, 216 double ColumnWidthSize, 217 int AnimationDuration = 300, 218 bool AnimateHalfBlock = false 219 ) 220 { 221 if (!string.IsNullOrWhiteSpace(Image.Image)) 222 { 223 224 string image = !string.IsNullOrWhiteSpace(Image.Image) ? Image.Image : null; 225 imagesHeight = hasContent ? imagesHeight : "100%"; 226 imagesHeight = !string.IsNullOrWhiteSpace(imagesHeight) ? "height: " + imagesHeight + ";" : ""; 227 228 string imageParrallax = ParallaxImage ? "rellax" : ""; 229 string imageAsBackground = ImageAsBackground ? "cta-paragraph__image--is-background" : ""; 230 double imageWidth = 2000; 231 232 imageWidth = Fullwidth ? imageWidth : 1200; 233 imageWidth = !ImageAsBackground ? imageWidth * ColumnWidthSize : imageWidth; 234 235 string strImageWidth = imageWidth + "px"; 236 string strImageWidthSize = imageWidth + "w"; 237 238 string ImageUrl; 239 if (image.EndsWith(".gif")) 240 { 241 ImageUrl = image; 242 } 243 else 244 { 245 ImageUrl = "/Admin/Public/GetImage.ashx?Image=" + image + "&Crop=7&Format=webp&Quality=90&Compression=80"; 246 ImageUrl = ImageUrl.Replace("?x", "&x"); 247 } 248 249 string animationDirection = AnimateHalfBlock ? ImagePosition.Equals("right") ? "fade-left" : "fade-right" : ""; 250 251 if (!string.IsNullOrWhiteSpace(Image.Image)) 252 { 253 254 <figure class="cta-paragraph__image-container @imageAsBackground @Image.PositionY @Image.PositionX" style="@imagesHeight" data-aos="@animationDirection" data-aos-duration="@AnimationDuration"> 255 256 <picture class="cta-paragraph__image @Image.BackgroundSize @imageParrallax"> 257 @if (ImageUrl.EndsWith(".gif")) 258 { 259 <source media="(max-width: 400px)" srcset="@ImageUrl&Width=400"> 260 <source media="(max-width: 994px)" srcset="@ImageUrl&Width=994"> 261 <img src="@ImageUrl" loading="lazy" alt="@Image.ImageAlt" class="cta-paragraph__image @Image.BackgroundSize @imageParrallax" width="1980" height="500"> 262 } 263 else 264 { 265 <source media="(max-width: 400px)" srcset="@ImageUrl&Width=400"> 266 <source media="(max-width: 994px)" srcset="@ImageUrl&Width=994"> 267 <img src="@ImageUrl&Width=@imageWidth" loading="lazy" alt="@Image.ImageAlt" class="cta-paragraph__image @Image.BackgroundSize @imageParrallax" width="1980" height="500"> 268 } 269 </picture> 270 271 </figure> 272 } 273 } 274 } 275 276 @helper CTAParagraphContent( 277 int paragraphID, 278 ParagraphHeader Header, 279 ParagraphHeader SubHeader, 280 ParagraphContent Content, 281 CTAButton Button, 282 CTAButton ExtraButton, 283 ParagraphImage Image, 284 bool strCenterVertical, 285 string ImagePosition = "", 286 int AnimationDuration = 300, 287 bool AnimateHalfBlock = false 288 ) 289 { 290 291 bool hasImage = !string.IsNullOrWhiteSpace(Image.Image) ? true : false; 292 string noImageClass = hasImage ? "" : "no-image"; 293 294 string centerTextClass = strCenterVertical ? "text-center" : ""; 295 string centerContent = !string.IsNullOrWhiteSpace(Image.Image) ? "" : "cta-paragraph__content--center"; 296 297 string paragraphInstanceClass = "cta-paragraph__content--" + paragraphID; 298 299 string animationDirection = (AnimateHalfBlock && hasImage) ? ImagePosition.Equals("right") ? "fade-right" : "fade-left" : ""; 300 301 if (!string.IsNullOrWhiteSpace(Button.ButtonText) || !string.IsNullOrWhiteSpace(Content.Text) || !string.IsNullOrWhiteSpace(Header.HeaderFormatted("cta-paragraph__header"))) 302 { 303 304 <section class="cta-paragraph__content @paragraphInstanceClass @centerContent @noImageClass" data-aos="@animationDirection" data-aos-duration="@AnimationDuration"> 305 306 <article class="cta-paragraph__content-container @noImageClass"> 307 308 @if (!string.IsNullOrWhiteSpace(Header.HeaderFormatted("cta-paragraph__header"))) 309 { 310 <header class="cta-paragraph__header @centerTextClass"> 311 @if (SubHeader != null) 312 { 313 @SubHeader.HeaderFormatted("cta-paragraph__subheader") 314 } 315 @Header.HeaderFormatted("cta-paragraph__header") 316 </header> 317 } 318 319 @if (!string.IsNullOrWhiteSpace(Content.Text)) 320 { 321 <div class="cta-paragraph__text @centerTextClass">@Content.Text</div> 322 } 323 324 @if (!string.IsNullOrWhiteSpace(Button.GetLink(Pageview)) && !string.IsNullOrWhiteSpace(Button.ButtonText)) 325 { 326 <nav class="cta-paragraph__btn-navigation @centerTextClass"> 327 @RenderButton(Button, Pageview) 328 @RenderButton(ExtraButton, Pageview) 329 </nav> 330 } 331 332 </article> 333 </section> 334 335 } 336 337 } 338 339 @helper CTAParagraphVideo(ParagraphVideo Video, string imagesHeight) 340 { 341 if (!string.IsNullOrWhiteSpace(Video.YoutubeLink) || !string.IsNullOrWhiteSpace(Video.VimeoLink)) 342 { 343 string YoutubeID = Video.YoutubeId; 344 string YoutubeLink = Video.YoutubeLink; 345 346 string VimeoID = Video.VimeoId; 347 string VimeoLink = Video.VimeoLink; 348 349 int CleanVideo = Video.Clean ? 1 : 0; 350 int ShowControls = Video.ShowControls ? 1 : 0; 351 int AutoPlay = Video.AutoPlay ? 1 : 0; 352 int LoopVideo = Video.LoopVideo ? 1 : 0; 353 int MuteAudio = Video.MuteAudio ? 1 : 0; 354 string hideControlsClass = Video.ShowControls ? "video-player-wrapper--hidecontrols" : ""; 355 string origin = Dynamicweb.Environment.Helpers.LinkHelper.GetHttpDomain(); 356 imagesHeight = !string.IsNullOrWhiteSpace(imagesHeight) ? "height: " + imagesHeight + ";" : ""; 357 358 if (!string.IsNullOrWhiteSpace(YoutubeLink)) 359 { 360 if(AutoPlay == 1) 361 { 362 <section class="cta-paragraph__video-container" style="@imagesHeight"> 363 <div class=""> 364 <div class="video-player-wrapper @hideControlsClass"> 365 <iframe class="video-player" loading="lazy" data-video="@YoutubeID" frameborder="0" allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="YouTube video player" src="https://www.youtube-nocookie.com/embed/@YoutubeID?autoplay=@AutoPlay&controls=@ShowControls&loop=@LoopVideo&playlist=@YoutubeID&playsinline=1&modestbranding=@CleanVideo&mute=@MuteAudio&rel=0&enablejsapi=1&origin=@origin&disablekb=0"></iframe> 366 </div> 367 </div> 368 </section> 369 } 370 else 371 { 372 <lite-youtube videoid="@YoutubeID" params="controls=@ShowControls&loop=@LoopVideo&playlist=@YoutubeID&playsinline=1&modestbranding=@CleanVideo&mute=@MuteAudio&rel=0&enablejsapi=1&origin=@origin&disablekb=0"></lite-youtube> 373 } 374 } 375 if (!string.IsNullOrWhiteSpace(VimeoLink)) 376 { 377 <section class="cta-paragraph__video-container" style="@imagesHeight"> 378 <div class=""> 379 <div class="video-player-wrapper"> 380 <iframe class="video-player" loading="lazy" data-video="@VimeoID" frameborder="0" allowfullscreen allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" title="Vimeo video player" src="https://player.vimeo.com/video/@VimeoID?title=0&byline=0&portrait=0&autoplay=@AutoPlay&controls=@ShowControls&loop=@LoopVideo&muted=@MuteAudio"></iframe> 381 </div> 382 </div> 383 </section> 384 } 385 } 386 } 387 388 @helper CTAParagraphIcon(ParagraphIcon Icon, bool strCenterVertical) 389 { 390 if (!string.IsNullOrWhiteSpace(Icon.FaIcon)) 391 { 392 string centerIconClass = strCenterVertical ? "justify-center" : "justify-start"; 393 string iconSizeClass = string.Format("cta-paragraph__icon--{0}", Icon.FaIconSize); 394 395 <div class="cta-paragraph__icon-container"> 396 <div class="cta-paragraph__icon-inner-container @centerIconClass"> 397 <span class="cta-paragraph__icon @iconSizeClass">@Icon.FaIcon</span> 398 </div> 399 </div> 400 } 401 } 402 403 @helper RenderContentAlignment(BackgroundConfiguration data) 404 { 405 406 switch (data.ContentElementAlign) 407 { 408 case "align-left": 409 <text> 410 align-items: flex-start; 411 text-align: left; 412 </text> 413 break; 414 case "align-center": 415 <text> 416 align-items: center; 417 text-align: center; 418 </text> 419 break; 420 case "align-right": 421 <text> 422 align-items: flex-end; 423 text-align: right; 424 </text> 425 break; 426 case "align-full": 427 <text> 428 align-items: flex-start; 429 text-align: justify; 430 </text> 431 break; 432 } 433 434 } 435 436 437 <style> 438 439 @@media screen and (min-width: 991px) { 440 .cta-paragraph__container--@paragraphID { 441 height: @ParagraphHeight !important; 442 } 443 } 444 445 </style> 446 447 @if (_data != null) 448 { 449 450 string BackgroundPadding = _data.BackgroundConfiguration.backgroundPadding; 451 452 bool Containerfit = _data.BackgroundConfiguration.ContainerFit == "Fit" ? true : false; 453 if (!string.IsNullOrWhiteSpace(contentRightClass)) 454 { 455 contentRightClass = Containerfit ? "" : contentRightClass; 456 } 457 458 string backgroundImageRepeatClass = _data.BackgroundConfiguration.BackgroundImageRepeat; 459 string backgroundImageSizeClass = ""; 460 461 string BackgroundImagePositionX = _data.BackgroundConfiguration.BackgroundImagePositionX; 462 string BackgroundImagePositionY = _data.BackgroundConfiguration.BackgroundImagePositionY; 463 464 465 string BackgroundImagePositionClass = ""; 466 467 if (backgroundImageRepeatClass == "no-repeat") 468 { 469 BackgroundImagePositionClass = BackgroundImagePositionY + "-" + BackgroundImagePositionX; 470 backgroundImageSizeClass = _data.BackgroundConfiguration.BackgroundImageSize; 471 } 472 473 string shadowClass = _data.BackgroundConfiguration.contentShadow ? "contentShadow" : ""; 474 475 <section class="cta-paragraph cta-paragraph--@paragraphID config--@_data.BackgroundConfigurationID @backgroundClass @_data.CssClass @backgroundImageRepeatClass @BackgroundImagePositionClass @backgroundImageSizeClass @BackgroundPadding @ctaHasBackgroundImageClass" style="@backgroundStyle" data-paragraphid="@paragraphID" id="@paragraphID" data-aos="@DataAosValue" data-aos-duration="@AnimationDuration"> 476 477 <div class="cta-paragraph__container cta-paragraph__container--@paragraphID @fullWidthContainerClass @clickableClass @contentRightClass @shadowClass"> 478 479 <style> 480 481 .cta-paragraph--@paragraphID .cta-paragraph__content { 482 @if (Containerfit) 483 { 484 <text> 485 flex-grow: 0; 486 </text> 487 } 488 } 489 490 .cta-paragraph--@paragraphID .cta-paragraph__image-container { 491 @if (Containerfit) 492 { 493 <text> 494 position: absolute; 495 top: 0; 496 left: 0; 497 right: 0; 498 bottom: 0; 499 </text> 500 } 501 } 502 503 </style> 504 505 @CTAParagraphImage( 506 _data.Image, 507 true, 508 _data.ImageAsBackground, 509 _data.ImagePosition, 510 _data.ParallaxImage, 511 _data.Fullwidth, 512 "", 513 ColumnWidthSize, 514 AnimationDuration, 515 AnimateHalfBlock 516 ) 517 @CTAParagraphContent( 518 paragraphID, 519 _data.Header, 520 _data.SubHeader, 521 _data.Content, 522 _data.Button, 523 _data.ExtraButton, 524 _data.Image, 525 _data.CenterVertical, 526 _data.ImagePosition, 527 AnimationDuration, 528 AnimateHalfBlock 529 ) 530 531 @if (clickableBlock) 532 { 533 <a href="@_data.Button.GetLink(Pageview)" class="cta-paragraph__clickable" @newWindow @ariaLabel></a> 534 } 535 536 </div> 537 538 </section> 539 } 540