Error compiling template "Designs/Swift/Paragraph/Swift_ProductVariantSelector.cshtml"
Line 793: 'VariantOptionViewModel' does not contain a definition for 'OptionImage' and no accessible extension method 'OptionImage' accepting a first argument of type 'VariantOptionViewModel' could be found (are you missing a using directive or an assembly reference?)
1 //------------------------------------------------------------------------------
2 // <auto-generated>
3 // This code was generated by a tool.
4 // Runtime Version:4.0.30319.42000
5 //
6 // Changes to this file may cause incorrect behavior and will be lost if
7 // the code is regenerated.
8 // </auto-generated>
9 //------------------------------------------------------------------------------
10
11 namespace CompiledRazorTemplates.Dynamic {
12 using System;
13
14 #line 2 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
15 using System.Collections.Generic;
16
17 #line default
18 #line hidden
19
20 #line 3 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
21 using System.Linq;
22
23 #line default
24 #line hidden
25
26 #line 4 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
27 using Dynamicweb.Ecommerce.ProductCatalog;
28
29 #line default
30 #line hidden
31
32 #line 5 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
33 using Dynamicweb.Ecommerce.Variants;
34
35 #line default
36 #line hidden
37
38
39 public class RazorEngine_04d83aa5380b407b91f3c9fb8afaa94e : Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel> {
40
41 #line hidden
42
43 #line 7 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
44
45 //Find contrast color (white, black)
46 public static string GetContrastColor(string hexString)
47 {
48 System.Drawing.Color bg = System.Drawing.ColorTranslator.FromHtml(hexString);
49
50 int nThreshold = 105;
51 int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) +
52 (bg.B * 0.114));
53
54 string foreColor = (255 - bgDelta < nThreshold) ? "#333" : "#fff";
55 return foreColor;
56 }
57
58 public string GetLayoutForVariantGroup(string variantGroupId)
59 {
60 string showVariantGroups = !string.IsNullOrEmpty(Model.Item.GetString("ShowVariantGroupOptions")) ? Model.Item.GetString("ShowVariantGroupOptions") : "all";
61 string defaultVariantGroupLayout = Model.Item.GetRawValueString("DefaultVariantGroupLayout", "button");
62 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>();
63
64 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return defaultVariantGroupLayout;
65
66 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList)
67 {
68 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(',');
69 if (variantGroups.Any(s => s.Equals(variantGroupId))) return selectedVariantGroupListItem.GetRawValueString("VariantGroupLayout");
70 }
71
72 return defaultVariantGroupLayout;
73 }
74
75 //Collect all variant images
76 public static Dictionary<string, string> GetVariantImages(List<VariantInfoViewModel> variantInfo, Dictionary<string, string> list)
77 {
78 foreach (var variantGroup in variantInfo)
79 {
80 if (variantGroup.Image?.Value != null && !list.ContainsKey(variantGroup.OptionID)) {
81 list.Add(variantGroup.OptionID, variantGroup.Image.Value);
82 }
83
84 if (variantGroup.VariantInfo != null) {
85 GetVariantImages(variantGroup.VariantInfo, list);
86 }
87 }
88
89 return list;
90 }
91
92 private string GetDefaultOrVariantGroupValue(string variantGroupId, string itemField, string itemFieldDefaultValue, Dictionary<string, string> fieldValueMapping)
93 {
94 string horizontalTextAlign = Model.Item.GetRawValueString(itemField, itemFieldDefaultValue);
95 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign;
96
97 // If no variantGroup (i.e. Visual Editor), return default value
98 if (string.IsNullOrEmpty(variantGroupId)) return horizontalTextAlign;
99
100 string showVariantGroups = Model.Item.GetString("ShowVariantGroupOptions", "all");
101 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>();
102 // If no exceptions or settings are all the same, return default value
103 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return horizontalTextAlign;
104
105 // Get specific value for variant group
106 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList)
107 {
108 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(',');
109 if (!variantGroups.Any(s => s.Equals(variantGroupId))) continue;
110
111 horizontalTextAlign = selectedVariantGroupListItem.GetRawValueString(itemField, itemFieldDefaultValue);
112 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign;
113 }
114
115 return horizontalTextAlign;
116 }
117
118 #line default
119 #line hidden
120
121
122 public RazorEngine_04d83aa5380b407b91f3c9fb8afaa94e() {
123 }
124
125 public override void Execute() {
126 WriteLiteral("\r\n");
127
128 WriteLiteral("\r\n");
129
130
131 #line 82 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
132
133 ProductViewModel product = new ProductViewModel();
134
135 ProductViewModelSettings productSetting = new ProductViewModelSettings
136 {
137 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID,
138 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code,
139 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2,
140 ShopId = Pageview.Area.EcomShopId
141 };
142
143 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails"))
144 {
145 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"];
146 }
147 else if (Pageview.Item["DummyProduct"] != null)
148 {
149
150 string dummyProductId = "";
151 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page);
152 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel();
153 if (productList.Products != null)
154 {
155 foreach (var p in productList.Products) { dummyProductId = p.Id; }
156 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel();
157 product = dummyProduct;
158 }
159 else
160 {
161 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id);
162 }
163 }
164 else if (Pageview.Item["DummyProduct"] == null)
165 {
166 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id);
167 }
168
169 bool hideGroupHeaders = Model.Item.GetBoolean("HideGroupHeaders");
170
171
172 #line default
173 #line hidden
174 WriteLiteral("\r\n\r\n");
175
176
177 #line 122 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
178 if (product.Id != null)
179 {
180 var productVariantGroups = product.VariantGroups();
181
182 if (productVariantGroups.Any())
183 {
184 string[] variantId = product.VariantId.Split('.');
185 int groupNumber = 1;
186
187 string baseUrl = $"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}";
188 string variantUrl = "";
189 if (!string.IsNullOrEmpty(product.VariantId))
190 {
191 variantUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}&VariantID={product.VariantId}");
192 }
193
194 Dictionary<string, string> variantImages = new Dictionary<string, string>();
195 variantImages = GetVariantImages(product.VariantInfo.VariantInfo, variantImages);
196
197
198
199 #line default
200 #line hidden
201 WriteLiteral("\t\t<form");
202
203 WriteAttribute("class", Tuple.Create(" class=\"", 6597), Tuple.Create("\"", 6687)
204 , Tuple.Create(Tuple.Create("", 6605), Tuple.Create("d-flex", 6605), true)
205 , Tuple.Create(Tuple.Create(" ", 6611), Tuple.Create("flex-column", 6612), true)
206 , Tuple.Create(Tuple.Create(" ", 6623), Tuple.Create("gap-2", 6624), true)
207 , Tuple.Create(Tuple.Create(" ", 6629), Tuple.Create("js-variant-selector", 6630), true)
208 , Tuple.Create(Tuple.Create(" ", 6649), Tuple.Create("item_", 6650), true)
209
210 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
211 , Tuple.Create(Tuple.Create("", 6655), Tuple.Create<System.Object, System.Int32>(Model.Item.SystemName.ToLower()
212
213 #line default
214 #line hidden
215 , 6655), false)
216 );
217
218 WriteLiteral(" data-combinations=\"");
219
220
221 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
222 Write(string.Join(",", product.VariantCombinations()));
223
224
225 #line default
226 #line hidden
227 WriteLiteral("\"");
228
229 WriteLiteral(" data-base-url=\"");
230
231
232 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
233 Write(baseUrl);
234
235
236 #line default
237 #line hidden
238 WriteLiteral("\"");
239
240 WriteLiteral(" data-friendly-url=\"");
241
242
243 #line 141 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
244 Write(variantUrl);
245
246
247 #line default
248 #line hidden
249 WriteLiteral("\"");
250
251 WriteLiteral(" >\r\n");
252
253
254 #line 142 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
255
256
257 #line default
258 #line hidden
259
260 #line 142 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
261 foreach (var variantGroup in productVariantGroups)
262 {
263 VariantGroupViewModel group = variantGroup;
264 string variantGroupLayout = GetLayoutForVariantGroup(variantGroup.Id);
265 string horizontalAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } });
266 string horizontalTextAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } });
267
268
269
270 #line default
271 #line hidden
272 WriteLiteral("\t\t\t <div>\r\n");
273
274
275 #line 150 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
276
277
278 #line default
279 #line hidden
280
281 #line 150 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
282 if (!hideGroupHeaders)
283 {
284
285
286 #line default
287 #line hidden
288 WriteLiteral("\t\t\t <h3");
289
290 WriteAttribute("class", Tuple.Create(" class=\"", 7553), Tuple.Create("\"", 7584)
291 , Tuple.Create(Tuple.Create("", 7561), Tuple.Create("h6", 7561), true)
292
293 #line 152 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
294 , Tuple.Create(Tuple.Create(" ", 7563), Tuple.Create<System.Object, System.Int32>(horizontalTextAlign
295
296 #line default
297 #line hidden
298 , 7564), false)
299 );
300
301 WriteLiteral(">");
302
303
304 #line 152 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
305 Write(group.Name);
306
307
308 #line default
309 #line hidden
310 WriteLiteral("</h3>\r\n");
311
312
313 #line 153 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
314 }
315
316
317 #line default
318 #line hidden
319 WriteLiteral("\t\t\t <div");
320
321 WriteAttribute("class", Tuple.Create(" class=\"", 7633), Tuple.Create("\"", 7697)
322 , Tuple.Create(Tuple.Create("", 7641), Tuple.Create("d-flex", 7641), true)
323 , Tuple.Create(Tuple.Create(" ", 7647), Tuple.Create("gap-2", 7648), true)
324
325 #line 154 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
326 , Tuple.Create(Tuple.Create(" ", 7653), Tuple.Create<System.Object, System.Int32>(horizontalAlign
327
328 #line default
329 #line hidden
330 , 7654), false)
331 , Tuple.Create(Tuple.Create(" ", 7670), Tuple.Create("flex-wrap", 7671), true)
332 , Tuple.Create(Tuple.Create(" ", 7680), Tuple.Create("js-variant-group", 7681), true)
333 );
334
335 WriteLiteral(" data-group-id=\"");
336
337
338 #line 154 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
339 Write(groupNumber);
340
341
342 #line default
343 #line hidden
344 WriteLiteral("\"");
345
346 WriteLiteral(">\r\n");
347
348
349 #line 155 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
350
351
352 #line default
353 #line hidden
354
355 #line 155 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
356 if (variantGroupLayout == "button")
357 {
358 foreach (var option in group.Options)
359 {
360 string active = variantId != null && variantId.Contains(option.Id) ? "active" : "";
361 string buttonId = $"{product.Id}_{option.Id}_{Pageview.CurrentParagraph.ID}";
362 string contrastColor = string.Empty;
363 string optionLayout = optionLayout = GetDefaultOrVariantGroupValue(variantGroup.Id, "ButtonLayout", "rounded-circle", new Dictionary<string, string> { { "round", "rounded-circle" }, { "square", "" } });
364 var displayType = group.DisplayType;
365
366 switch (displayType)
367 {
368 case VariantGroupDisplayType.VariantColor:
369 contrastColor = GetContrastColor(option.Color);
370
371
372 #line default
373 #line hidden
374 WriteLiteral("\t\t\t\t\t\t\t\t\t\t<button");
375
376 WriteLiteral(" type=\"button\"");
377
378 WriteAttribute("class", Tuple.Create(" class=\"", 8518), Tuple.Create("\"", 8615)
379 , Tuple.Create(Tuple.Create("", 8526), Tuple.Create("btn", 8526), true)
380 , Tuple.Create(Tuple.Create(" ", 8529), Tuple.Create("colorbox", 8530), true)
381
382 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
383 , Tuple.Create(Tuple.Create(" ", 8538), Tuple.Create<System.Object, System.Int32>(optionLayout
384
385 #line default
386 #line hidden
387 , 8539), false)
388 , Tuple.Create(Tuple.Create(" ", 8552), Tuple.Create("d-inline-block", 8553), true)
389 , Tuple.Create(Tuple.Create(" ", 8567), Tuple.Create("variant-option", 8568), true)
390 , Tuple.Create(Tuple.Create(" ", 8582), Tuple.Create("border", 8583), true)
391 , Tuple.Create(Tuple.Create(" ", 8589), Tuple.Create("js-variant-option", 8590), true)
392
393 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
394 , Tuple.Create(Tuple.Create(" ", 8607), Tuple.Create<System.Object, System.Int32>(active
395
396 #line default
397 #line hidden
398 , 8608), false)
399 );
400
401 WriteAttribute("style", Tuple.Create(" style=\"", 8616), Tuple.Create("\"", 8701)
402 , Tuple.Create(Tuple.Create("", 8624), Tuple.Create("background-color:", 8624), true)
403
404 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
405 , Tuple.Create(Tuple.Create(" ", 8641), Tuple.Create<System.Object, System.Int32>(option.Color
406
407 #line default
408 #line hidden
409 , 8642), false)
410 , Tuple.Create(Tuple.Create("", 8655), Tuple.Create(";", 8655), true)
411 , Tuple.Create(Tuple.Create(" ", 8656), Tuple.Create("--variantoption-check-color:", 8658), true)
412
413 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
414 , Tuple.Create(Tuple.Create(" ", 8686), Tuple.Create<System.Object, System.Int32>(contrastColor
415
416 #line default
417 #line hidden
418 , 8687), false)
419 );
420
421 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
422
423 WriteLiteral(" data-variant-id=\"");
424
425
426 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
427 Write(option.Id);
428
429
430 #line default
431 #line hidden
432 WriteLiteral("\"");
433
434 WriteAttribute("id", Tuple.Create(" id=\"", 8782), Tuple.Create("\"", 8796)
435
436 #line 169 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
437 , Tuple.Create(Tuple.Create("", 8787), Tuple.Create<System.Object, System.Int32>(buttonId
438
439 #line default
440 #line hidden
441 , 8787), false)
442 );
443
444 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t<span");
445
446 WriteLiteral(" class=\"visually-hidden\"");
447
448 WriteLiteral(">");
449
450
451 #line 170 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
452 Write(option.Color);
453
454
455 #line default
456 #line hidden
457 WriteLiteral("</span>\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n");
458
459
460 #line 172 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
461 break;
462 case VariantGroupDisplayType.VariantImage:
463 string variantImage = string.Empty;
464 if (variantImages.TryGetValue(option.Id, out variantImage))
465 {
466
467
468 #line default
469 #line hidden
470 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button");
471
472 WriteLiteral(" type=\"button\"");
473
474 WriteAttribute("class", Tuple.Create(" class=\"", 9120), Tuple.Create("\"", 9205)
475 , Tuple.Create(Tuple.Create("", 9128), Tuple.Create("btn", 9128), true)
476 , Tuple.Create(Tuple.Create(" ", 9131), Tuple.Create("p-0", 9132), true)
477 , Tuple.Create(Tuple.Create(" ", 9135), Tuple.Create("d-inline-block", 9136), true)
478
479 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
480 , Tuple.Create(Tuple.Create(" ", 9150), Tuple.Create<System.Object, System.Int32>(optionLayout
481
482 #line default
483 #line hidden
484 , 9151), false)
485 , Tuple.Create(Tuple.Create(" ", 9164), Tuple.Create("variant-option", 9165), true)
486 , Tuple.Create(Tuple.Create(" ", 9179), Tuple.Create("js-variant-option", 9180), true)
487
488 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
489 , Tuple.Create(Tuple.Create(" ", 9197), Tuple.Create<System.Object, System.Int32>(active
490
491 #line default
492 #line hidden
493 , 9198), false)
494 );
495
496 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
497
498 WriteLiteral(" data-variant-id=\"");
499
500
501 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
502 Write(option.Id);
503
504
505 #line default
506 #line hidden
507 WriteLiteral("\"");
508
509 WriteAttribute("id", Tuple.Create(" id=\"", 9286), Tuple.Create("\"", 9347)
510
511 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
512 , Tuple.Create(Tuple.Create("", 9291), Tuple.Create<System.Object, System.Int32>(product.Id
513
514 #line default
515 #line hidden
516 , 9291), false)
517 , Tuple.Create(Tuple.Create("", 9304), Tuple.Create("_", 9304), true)
518
519 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
520 , Tuple.Create(Tuple.Create("", 9305), Tuple.Create<System.Object, System.Int32>(option.Id
521
522 #line default
523 #line hidden
524 , 9305), false)
525 , Tuple.Create(Tuple.Create("", 9317), Tuple.Create("_", 9317), true)
526
527 #line 177 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
528 , Tuple.Create(Tuple.Create("", 9318), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
529
530 #line default
531 #line hidden
532 , 9318), false)
533 );
534
535 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<img");
536
537 WriteAttribute("class", Tuple.Create(" class=\"", 9367), Tuple.Create("\"", 9388)
538
539 #line 178 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
540 , Tuple.Create(Tuple.Create("", 9375), Tuple.Create<System.Object, System.Int32>(optionLayout
541
542 #line default
543 #line hidden
544 , 9375), false)
545 );
546
547 WriteAttribute("src", Tuple.Create(" src=\"", 9389), Tuple.Create("\"", 9476)
548 , Tuple.Create(Tuple.Create("", 9395), Tuple.Create("/Admin/Public/GetImage.ashx?image=", 9395), true)
549
550 #line 178 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
551 , Tuple.Create(Tuple.Create("", 9429), Tuple.Create<System.Object, System.Int32>(variantImage
552
553 #line default
554 #line hidden
555 , 9429), false)
556 , Tuple.Create(Tuple.Create("", 9444), Tuple.Create("&width=42&Format=WebP&Quality=70", 9444), true)
557 );
558
559 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n");
560
561
562 #line 180 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
563 } else {
564
565
566 #line default
567 #line hidden
568 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button");
569
570 WriteLiteral(" type=\"button\"");
571
572 WriteAttribute("class", Tuple.Create(" class=\"", 9555), Tuple.Create("\"", 9636)
573 , Tuple.Create(Tuple.Create("", 9563), Tuple.Create("btn", 9563), true)
574 , Tuple.Create(Tuple.Create(" ", 9566), Tuple.Create("btn-secondary", 9567), true)
575 , Tuple.Create(Tuple.Create(" ", 9580), Tuple.Create("d-inline-block", 9581), true)
576 , Tuple.Create(Tuple.Create(" ", 9595), Tuple.Create("variant-option", 9596), true)
577 , Tuple.Create(Tuple.Create(" ", 9610), Tuple.Create("js-variant-option", 9611), true)
578
579 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
580 , Tuple.Create(Tuple.Create(" ", 9628), Tuple.Create<System.Object, System.Int32>(active
581
582 #line default
583 #line hidden
584 , 9629), false)
585 );
586
587 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
588
589 WriteLiteral(" data-variant-id=\"");
590
591
592 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
593 Write(option.Id);
594
595
596 #line default
597 #line hidden
598 WriteLiteral("\"");
599
600 WriteAttribute("id", Tuple.Create(" id=\"", 9717), Tuple.Create("\"", 9778)
601
602 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
603 , Tuple.Create(Tuple.Create("", 9722), Tuple.Create<System.Object, System.Int32>(product.Id
604
605 #line default
606 #line hidden
607 , 9722), false)
608 , Tuple.Create(Tuple.Create("", 9735), Tuple.Create("_", 9735), true)
609
610 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
611 , Tuple.Create(Tuple.Create("", 9736), Tuple.Create<System.Object, System.Int32>(option.Id
612
613 #line default
614 #line hidden
615 , 9736), false)
616 , Tuple.Create(Tuple.Create("", 9748), Tuple.Create("_", 9748), true)
617
618 #line 181 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
619 , Tuple.Create(Tuple.Create("", 9749), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
620
621 #line default
622 #line hidden
623 , 9749), false)
624 );
625
626 WriteLiteral(">\r\n");
627
628 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t\t");
629
630
631 #line 182 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
632 Write(option.Name);
633
634
635 #line default
636 #line hidden
637 WriteLiteral("\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n");
638
639
640 #line 184 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
641 }
642
643 break;
644 case VariantGroupDisplayType.VariantName:
645
646
647 #line default
648 #line hidden
649 WriteLiteral("\t\t\t\t\t\t\t\t\t\t<button");
650
651 WriteLiteral(" type=\"button\"");
652
653 WriteAttribute("class", Tuple.Create(" class=\"", 9946), Tuple.Create("\"", 10027)
654 , Tuple.Create(Tuple.Create("", 9954), Tuple.Create("btn", 9954), true)
655 , Tuple.Create(Tuple.Create(" ", 9957), Tuple.Create("btn-secondary", 9958), true)
656 , Tuple.Create(Tuple.Create(" ", 9971), Tuple.Create("d-inline-block", 9972), true)
657 , Tuple.Create(Tuple.Create(" ", 9986), Tuple.Create("variant-option", 9987), true)
658 , Tuple.Create(Tuple.Create(" ", 10001), Tuple.Create("js-variant-option", 10002), true)
659
660 #line 188 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
661 , Tuple.Create(Tuple.Create(" ", 10019), Tuple.Create<System.Object, System.Int32>(active
662
663 #line default
664 #line hidden
665 , 10020), false)
666 );
667
668 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
669
670 WriteLiteral(" data-variant-id=\"");
671
672
673 #line 188 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
674 Write(option.Id);
675
676
677 #line default
678 #line hidden
679 WriteLiteral("\"");
680
681 WriteAttribute("id", Tuple.Create(" id=\"", 10108), Tuple.Create("\"", 10122)
682
683 #line 188 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
684 , Tuple.Create(Tuple.Create("", 10113), Tuple.Create<System.Object, System.Int32>(buttonId
685
686 #line default
687 #line hidden
688 , 10113), false)
689 );
690
691 WriteLiteral(">\r\n");
692
693 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t");
694
695
696 #line 189 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
697 Write(option.Name);
698
699
700 #line default
701 #line hidden
702 WriteLiteral("\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n");
703
704
705 #line 191 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
706 break;
707 case VariantGroupDisplayType.VariantOptionImage:
708
709
710 #line default
711 #line hidden
712 WriteLiteral("\t\t\t\t\t\t\t\t\t\t<button");
713
714 WriteLiteral(" type=\"button\"");
715
716 WriteAttribute("class", Tuple.Create(" class=\"", 10280), Tuple.Create("\"", 10365)
717 , Tuple.Create(Tuple.Create("", 10288), Tuple.Create("btn", 10288), true)
718 , Tuple.Create(Tuple.Create(" ", 10291), Tuple.Create("p-0", 10292), true)
719 , Tuple.Create(Tuple.Create(" ", 10295), Tuple.Create("d-inline-block", 10296), true)
720
721 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
722 , Tuple.Create(Tuple.Create(" ", 10310), Tuple.Create<System.Object, System.Int32>(optionLayout
723
724 #line default
725 #line hidden
726 , 10311), false)
727 , Tuple.Create(Tuple.Create(" ", 10324), Tuple.Create("variant-option", 10325), true)
728 , Tuple.Create(Tuple.Create(" ", 10339), Tuple.Create("js-variant-option", 10340), true)
729
730 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
731 , Tuple.Create(Tuple.Create(" ", 10357), Tuple.Create<System.Object, System.Int32>(active
732
733 #line default
734 #line hidden
735 , 10358), false)
736 );
737
738 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
739
740 WriteLiteral(" data-variant-id=\"");
741
742
743 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
744 Write(option.Id);
745
746
747 #line default
748 #line hidden
749 WriteLiteral("\"");
750
751 WriteAttribute("id", Tuple.Create(" id=\"", 10446), Tuple.Create("\"", 10507)
752
753 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
754 , Tuple.Create(Tuple.Create("", 10451), Tuple.Create<System.Object, System.Int32>(product.Id
755
756 #line default
757 #line hidden
758 , 10451), false)
759 , Tuple.Create(Tuple.Create("", 10464), Tuple.Create("_", 10464), true)
760
761 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
762 , Tuple.Create(Tuple.Create("", 10465), Tuple.Create<System.Object, System.Int32>(option.Id
763
764 #line default
765 #line hidden
766 , 10465), false)
767 , Tuple.Create(Tuple.Create("", 10477), Tuple.Create("_", 10477), true)
768
769 #line 193 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
770 , Tuple.Create(Tuple.Create("", 10478), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
771
772 #line default
773 #line hidden
774 , 10478), false)
775 );
776
777 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t<img");
778
779 WriteAttribute("class", Tuple.Create(" class=\"", 10526), Tuple.Create("\"", 10547)
780
781 #line 194 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
782 , Tuple.Create(Tuple.Create("", 10534), Tuple.Create<System.Object, System.Int32>(optionLayout
783
784 #line default
785 #line hidden
786 , 10534), false)
787 );
788
789 WriteAttribute("src", Tuple.Create(" src=\"", 10548), Tuple.Create("\"", 10647)
790 , Tuple.Create(Tuple.Create("", 10554), Tuple.Create("/Admin/Public/GetImage.ashx?image=", 10554), true)
791
792 #line 194 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
793 , Tuple.Create(Tuple.Create("", 10588), Tuple.Create<System.Object, System.Int32>(option.OptionImage.Value
794
795 #line default
796 #line hidden
797 , 10588), false)
798 , Tuple.Create(Tuple.Create("", 10615), Tuple.Create("&width=42&Format=WebP&Quality=70", 10615), true)
799 );
800
801 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t</button>\r\n");
802
803
804 #line 196 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
805 break;
806 default:
807 if (!string.IsNullOrEmpty(option.Color))
808 {
809 contrastColor = GetContrastColor(option.Color);
810
811
812 #line default
813 #line hidden
814 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button");
815
816 WriteLiteral(" type=\"button\"");
817
818 WriteAttribute("class", Tuple.Create(" class=\"", 10866), Tuple.Create("\"", 10963)
819 , Tuple.Create(Tuple.Create("", 10874), Tuple.Create("btn", 10874), true)
820 , Tuple.Create(Tuple.Create(" ", 10877), Tuple.Create("colorbox", 10878), true)
821
822 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
823 , Tuple.Create(Tuple.Create(" ", 10886), Tuple.Create<System.Object, System.Int32>(optionLayout
824
825 #line default
826 #line hidden
827 , 10887), false)
828 , Tuple.Create(Tuple.Create(" ", 10900), Tuple.Create("d-inline-block", 10901), true)
829 , Tuple.Create(Tuple.Create(" ", 10915), Tuple.Create("variant-option", 10916), true)
830 , Tuple.Create(Tuple.Create(" ", 10930), Tuple.Create("border", 10931), true)
831 , Tuple.Create(Tuple.Create(" ", 10937), Tuple.Create("js-variant-option", 10938), true)
832
833 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
834 , Tuple.Create(Tuple.Create(" ", 10955), Tuple.Create<System.Object, System.Int32>(active
835
836 #line default
837 #line hidden
838 , 10956), false)
839 );
840
841 WriteAttribute("style", Tuple.Create(" style=\"", 10964), Tuple.Create("\"", 11049)
842 , Tuple.Create(Tuple.Create("", 10972), Tuple.Create("background-color:", 10972), true)
843
844 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
845 , Tuple.Create(Tuple.Create(" ", 10989), Tuple.Create<System.Object, System.Int32>(option.Color
846
847 #line default
848 #line hidden
849 , 10990), false)
850 , Tuple.Create(Tuple.Create("", 11003), Tuple.Create(";", 11003), true)
851 , Tuple.Create(Tuple.Create(" ", 11004), Tuple.Create("--variantoption-check-color:", 11006), true)
852
853 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
854 , Tuple.Create(Tuple.Create(" ", 11034), Tuple.Create<System.Object, System.Int32>(contrastColor
855
856 #line default
857 #line hidden
858 , 11035), false)
859 );
860
861 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
862
863 WriteLiteral(" data-variant-id=\"");
864
865
866 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
867 Write(option.Id);
868
869
870 #line default
871 #line hidden
872 WriteLiteral("\"");
873
874 WriteAttribute("id", Tuple.Create(" id=\"", 11130), Tuple.Create("\"", 11144)
875
876 #line 201 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
877 , Tuple.Create(Tuple.Create("", 11135), Tuple.Create<System.Object, System.Int32>(buttonId
878
879 #line default
880 #line hidden
881 , 11135), false)
882 );
883
884 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<span");
885
886 WriteLiteral(" class=\"visually-hidden\"");
887
888 WriteLiteral(">");
889
890
891 #line 202 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
892 Write(option.Color);
893
894
895 #line default
896 #line hidden
897 WriteLiteral("</span>\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n");
898
899
900 #line 204 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
901 }
902 else if (!string.IsNullOrEmpty(option.Color) && !string.IsNullOrEmpty(option.Image.Value))
903 {
904
905
906 #line default
907 #line hidden
908 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button");
909
910 WriteLiteral(" type=\"button\"");
911
912 WriteAttribute("class", Tuple.Create(" class=\"", 11394), Tuple.Create("\"", 11479)
913 , Tuple.Create(Tuple.Create("", 11402), Tuple.Create("btn", 11402), true)
914 , Tuple.Create(Tuple.Create(" ", 11405), Tuple.Create("p-0", 11406), true)
915 , Tuple.Create(Tuple.Create(" ", 11409), Tuple.Create("d-inline-block", 11410), true)
916
917 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
918 , Tuple.Create(Tuple.Create(" ", 11424), Tuple.Create<System.Object, System.Int32>(optionLayout
919
920 #line default
921 #line hidden
922 , 11425), false)
923 , Tuple.Create(Tuple.Create(" ", 11438), Tuple.Create("variant-option", 11439), true)
924 , Tuple.Create(Tuple.Create(" ", 11453), Tuple.Create("js-variant-option", 11454), true)
925
926 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
927 , Tuple.Create(Tuple.Create(" ", 11471), Tuple.Create<System.Object, System.Int32>(active
928
929 #line default
930 #line hidden
931 , 11472), false)
932 );
933
934 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
935
936 WriteLiteral(" data-variant-id=\"");
937
938
939 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
940 Write(option.Id);
941
942
943 #line default
944 #line hidden
945 WriteLiteral("\"");
946
947 WriteAttribute("id", Tuple.Create(" id=\"", 11560), Tuple.Create("\"", 11574)
948
949 #line 207 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
950 , Tuple.Create(Tuple.Create("", 11565), Tuple.Create<System.Object, System.Int32>(buttonId
951
952 #line default
953 #line hidden
954 , 11565), false)
955 );
956
957 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t\t<img");
958
959 WriteAttribute("src", Tuple.Create(" src=\"", 11594), Tuple.Create("\"", 11687)
960 , Tuple.Create(Tuple.Create("", 11600), Tuple.Create("/Admin/Public/GetImage.ashx?image=", 11600), true)
961
962 #line 208 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
963 , Tuple.Create(Tuple.Create("", 11634), Tuple.Create<System.Object, System.Int32>(option.Image.Value
964
965 #line default
966 #line hidden
967 , 11634), false)
968 , Tuple.Create(Tuple.Create("", 11655), Tuple.Create("&width=42&Format=WebP&Quality=70", 11655), true)
969 );
970
971 WriteLiteral(">\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n");
972
973
974 #line 210 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
975 }
976 else
977 {
978
979
980 #line default
981 #line hidden
982 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t<button");
983
984 WriteLiteral(" type=\"button\"");
985
986 WriteAttribute("class", Tuple.Create(" class=\"", 11787), Tuple.Create("\"", 11868)
987 , Tuple.Create(Tuple.Create("", 11795), Tuple.Create("btn", 11795), true)
988 , Tuple.Create(Tuple.Create(" ", 11798), Tuple.Create("btn-secondary", 11799), true)
989 , Tuple.Create(Tuple.Create(" ", 11812), Tuple.Create("d-inline-block", 11813), true)
990 , Tuple.Create(Tuple.Create(" ", 11827), Tuple.Create("variant-option", 11828), true)
991 , Tuple.Create(Tuple.Create(" ", 11842), Tuple.Create("js-variant-option", 11843), true)
992
993 #line 213 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
994 , Tuple.Create(Tuple.Create(" ", 11860), Tuple.Create<System.Object, System.Int32>(active
995
996 #line default
997 #line hidden
998 , 11861), false)
999 );
1000
1001 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
1002
1003 WriteLiteral(" data-variant-id=\"");
1004
1005
1006 #line 213 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1007 Write(option.Id);
1008
1009
1010 #line default
1011 #line hidden
1012 WriteLiteral("\"");
1013
1014 WriteAttribute("id", Tuple.Create(" id=\"", 11949), Tuple.Create("\"", 11963)
1015
1016 #line 213 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1017 , Tuple.Create(Tuple.Create("", 11954), Tuple.Create<System.Object, System.Int32>(buttonId
1018
1019 #line default
1020 #line hidden
1021 , 11954), false)
1022 );
1023
1024 WriteLiteral(">\r\n");
1025
1026 WriteLiteral("\t\t\t\t\t\t\t\t\t\t\t\t");
1027
1028
1029 #line 214 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1030 Write(option.Name);
1031
1032
1033 #line default
1034 #line hidden
1035 WriteLiteral("\r\n\t\t\t\t\t\t\t\t\t\t\t</button>\r\n");
1036
1037
1038 #line 216 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1039 }
1040 break;
1041 }
1042 }
1043 }
1044 else
1045 {
1046
1047
1048 #line default
1049 #line hidden
1050 WriteLiteral("\t\t\t <select");
1051
1052 WriteLiteral(" class=\"form-select\"");
1053
1054 WriteAttribute("id", Tuple.Create(" id=\"", 12182), Tuple.Create("\"", 12219)
1055 , Tuple.Create(Tuple.Create("", 12187), Tuple.Create("VariantDropdown_", 12187), true)
1056
1057 #line 223 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1058 , Tuple.Create(Tuple.Create("", 12203), Tuple.Create<System.Object, System.Int32>(variantGroup.Id
1059
1060 #line default
1061 #line hidden
1062 , 12203), false)
1063 );
1064
1065 WriteAttribute("aria-label", Tuple.Create(" aria-label=\"", 12220), Tuple.Create("\"", 12251)
1066
1067 #line 223 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1068 , Tuple.Create(Tuple.Create("", 12233), Tuple.Create<System.Object, System.Int32>(variantGroup.Name
1069
1070 #line default
1071 #line hidden
1072 , 12233), false)
1073 );
1074
1075 WriteLiteral(" onchange=\"swift.VariantSelector.OptionClick(event)\"");
1076
1077 WriteLiteral(">\r\n");
1078
1079
1080 #line 224 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1081
1082
1083 #line default
1084 #line hidden
1085
1086 #line 224 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1087 foreach (var option in variantGroup.Options)
1088 {
1089 string active = variantId != null && variantId.Contains(option.Id) ? "active" : "";
1090 var selected = variantId != null && variantId.Contains(option.Id) ? "selected" : "";
1091 var value = $"{product.Id}_{option.Id}";
1092
1093
1094
1095 #line default
1096 #line hidden
1097 WriteLiteral("\t\t\t <option");
1098
1099 WriteAttribute("value", Tuple.Create(" value=\"", 12751), Tuple.Create("\"", 12767)
1100
1101 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1102 , Tuple.Create(Tuple.Create("", 12759), Tuple.Create<System.Object, System.Int32>(value
1103
1104 #line default
1105 #line hidden
1106 , 12759), false)
1107 );
1108
1109 WriteAttribute("class", Tuple.Create(" class=\"", 12768), Tuple.Create("\"", 12816)
1110 , Tuple.Create(Tuple.Create("", 12776), Tuple.Create("variant-option", 12776), true)
1111 , Tuple.Create(Tuple.Create(" ", 12790), Tuple.Create("js-variant-option", 12791), true)
1112
1113 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1114 , Tuple.Create(Tuple.Create(" ", 12808), Tuple.Create<System.Object, System.Int32>(active
1115
1116 #line default
1117 #line hidden
1118 , 12809), false)
1119 );
1120
1121 WriteLiteral(" data-variant-id=\"");
1122
1123
1124 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1125 Write(option.Id);
1126
1127
1128 #line default
1129 #line hidden
1130 WriteLiteral("\"");
1131
1132 WriteAttribute("id", Tuple.Create(" id=\"", 12846), Tuple.Create("\"", 12891)
1133
1134 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1135 , Tuple.Create(Tuple.Create("", 12851), Tuple.Create<System.Object, System.Int32>(value
1136
1137 #line default
1138 #line hidden
1139 , 12851), false)
1140 , Tuple.Create(Tuple.Create("", 12859), Tuple.Create("_", 12859), true)
1141
1142 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1143 , Tuple.Create(Tuple.Create("", 12860), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
1144
1145 #line default
1146 #line hidden
1147 , 12860), false)
1148 );
1149
1150 WriteLiteral(" ");
1151
1152
1153 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1154 Write(selected);
1155
1156
1157 #line default
1158 #line hidden
1159 WriteLiteral(">");
1160
1161
1162 #line 230 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1163 Write(option.Name);
1164
1165
1166 #line default
1167 #line hidden
1168 WriteLiteral("</option>\r\n");
1169
1170
1171 #line 231 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1172 }
1173
1174
1175 #line default
1176 #line hidden
1177 WriteLiteral("\t\t\t </select>\r\n");
1178
1179
1180 #line 233 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1181 }
1182
1183
1184 #line default
1185 #line hidden
1186 WriteLiteral("\t\t\t </div>\r\n\t\t\t </div>\r\n");
1187
1188
1189 #line 236 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1190
1191
1192 groupNumber++;
1193 }
1194
1195
1196 #line default
1197 #line hidden
1198 WriteLiteral("\t\t</form>\r\n");
1199
1200
1201 #line 241 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1202
1203
1204
1205 #line default
1206 #line hidden
1207 WriteLiteral(" <script");
1208
1209 WriteLiteral(" type=\"module\"");
1210
1211 WriteLiteral(">\r\n swift.VariantSelector.init();\r\n </script>\r\n");
1212
1213
1214 #line 245 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1215 }
1216 else if (Pageview.IsVisualEditorMode)
1217 {
1218 string horizontalAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } });
1219 string horizontalTextAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } });
1220
1221
1222
1223 #line default
1224 #line hidden
1225 WriteLiteral(" <form");
1226
1227 WriteAttribute("class", Tuple.Create(" class=\"", 13634), Tuple.Create("\"", 13718)
1228 , Tuple.Create(Tuple.Create("", 13642), Tuple.Create("d-flex", 13642), true)
1229 , Tuple.Create(Tuple.Create(" ", 13648), Tuple.Create("flex-column", 13649), true)
1230 , Tuple.Create(Tuple.Create(" ", 13660), Tuple.Create("js-variant-selector", 13661), true)
1231 , Tuple.Create(Tuple.Create(" ", 13680), Tuple.Create("item_", 13681), true)
1232
1233 #line 251 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1234 , Tuple.Create(Tuple.Create("", 13686), Tuple.Create<System.Object, System.Int32>(Model.Item.SystemName.ToLower()
1235
1236 #line default
1237 #line hidden
1238 , 13686), false)
1239 );
1240
1241 WriteLiteral(" data-combinations=\"VO1,VO2,VO3,VO4\"");
1242
1243 WriteLiteral(">\r\n <div>\r\n");
1244
1245
1246 #line 253 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1247
1248
1249 #line default
1250 #line hidden
1251
1252 #line 253 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1253 if (!hideGroupHeaders)
1254 {
1255
1256
1257 #line default
1258 #line hidden
1259 WriteLiteral(" <h3");
1260
1261 WriteAttribute("class", Tuple.Create(" class=\"", 13860), Tuple.Create("\"", 13891)
1262 , Tuple.Create(Tuple.Create("", 13868), Tuple.Create("h6", 13868), true)
1263
1264 #line 255 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1265 , Tuple.Create(Tuple.Create(" ", 13870), Tuple.Create<System.Object, System.Int32>(horizontalTextAlign
1266
1267 #line default
1268 #line hidden
1269 , 13871), false)
1270 );
1271
1272 WriteLiteral(">");
1273
1274
1275 #line 255 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1276 Write(Translate("Sizes"));
1277
1278
1279 #line default
1280 #line hidden
1281 WriteLiteral("</h3>\r\n");
1282
1283
1284 #line 256 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1285 }
1286
1287
1288 #line default
1289 #line hidden
1290 WriteLiteral(" <div");
1291
1292 WriteAttribute("class", Tuple.Create(" class=\"", 13958), Tuple.Create("\"", 14004)
1293 , Tuple.Create(Tuple.Create("", 13966), Tuple.Create("mb-3", 13966), true)
1294
1295 #line 257 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1296 , Tuple.Create(Tuple.Create(" ", 13970), Tuple.Create<System.Object, System.Int32>(horizontalAlign
1297
1298 #line default
1299 #line hidden
1300 , 13971), false)
1301 , Tuple.Create(Tuple.Create(" ", 13987), Tuple.Create("js-variant-group", 13988), true)
1302 );
1303
1304 WriteLiteral(" data-group-id=\"0\"");
1305
1306 WriteLiteral(">\r\n <button");
1307
1308 WriteLiteral(" type=\"button\"");
1309
1310 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\"");
1311
1312 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
1313
1314 WriteLiteral(" data-variant-id=\"VO1\"");
1315
1316 WriteAttribute("id", Tuple.Create(" id=\"", 14219), Tuple.Create("\"", 14271)
1317
1318 #line 258 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1319 , Tuple.Create(Tuple.Create("", 14224), Tuple.Create<System.Object, System.Int32>(product.Id
1320
1321 #line default
1322 #line hidden
1323 , 14224), false)
1324 , Tuple.Create(Tuple.Create("", 14237), Tuple.Create("_VO1_", 14237), true)
1325
1326 #line 258 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1327 , Tuple.Create(Tuple.Create("", 14242), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
1328
1329 #line default
1330 #line hidden
1331 , 14242), false)
1332 );
1333
1334 WriteLiteral(">S</button>\r\n <button");
1335
1336 WriteLiteral(" type=\"button\"");
1337
1338 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\"");
1339
1340 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
1341
1342 WriteLiteral(" data-variant-id=\"VO2\"");
1343
1344 WriteAttribute("id", Tuple.Create(" id=\"", 14478), Tuple.Create("\"", 14530)
1345
1346 #line 259 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1347 , Tuple.Create(Tuple.Create("", 14483), Tuple.Create<System.Object, System.Int32>(product.Id
1348
1349 #line default
1350 #line hidden
1351 , 14483), false)
1352 , Tuple.Create(Tuple.Create("", 14496), Tuple.Create("_VO2_", 14496), true)
1353
1354 #line 259 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1355 , Tuple.Create(Tuple.Create("", 14501), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
1356
1357 #line default
1358 #line hidden
1359 , 14501), false)
1360 );
1361
1362 WriteLiteral(">M</button>\r\n <button");
1363
1364 WriteLiteral(" type=\"button\"");
1365
1366 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\"");
1367
1368 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
1369
1370 WriteLiteral(" data-variant-id=\"VO3\"");
1371
1372 WriteAttribute("id", Tuple.Create(" id=\"", 14737), Tuple.Create("\"", 14789)
1373
1374 #line 260 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1375 , Tuple.Create(Tuple.Create("", 14742), Tuple.Create<System.Object, System.Int32>(product.Id
1376
1377 #line default
1378 #line hidden
1379 , 14742), false)
1380 , Tuple.Create(Tuple.Create("", 14755), Tuple.Create("_VO3_", 14755), true)
1381
1382 #line 260 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1383 , Tuple.Create(Tuple.Create("", 14760), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
1384
1385 #line default
1386 #line hidden
1387 , 14760), false)
1388 );
1389
1390 WriteLiteral(">L</button>\r\n <button");
1391
1392 WriteLiteral(" type=\"button\"");
1393
1394 WriteLiteral(" class=\"btn btn-secondary d-inline-block mb-2 variant-option js-variant-option\"");
1395
1396 WriteLiteral(" onclick=\"swift.VariantSelector.OptionClick(event)\"");
1397
1398 WriteLiteral(" data-variant-id=\"VO4\"");
1399
1400 WriteAttribute("id", Tuple.Create(" id=\"", 14996), Tuple.Create("\"", 15048)
1401
1402 #line 261 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1403 , Tuple.Create(Tuple.Create("", 15001), Tuple.Create<System.Object, System.Int32>(product.Id
1404
1405 #line default
1406 #line hidden
1407 , 15001), false)
1408 , Tuple.Create(Tuple.Create("", 15014), Tuple.Create("_VO4_", 15014), true)
1409
1410 #line 261 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1411 , Tuple.Create(Tuple.Create("", 15019), Tuple.Create<System.Object, System.Int32>(Pageview.CurrentParagraph.ID
1412
1413 #line default
1414 #line hidden
1415 , 15019), false)
1416 );
1417
1418 WriteLiteral(">XL</button>\r\n </div>\r\n </div>\r\n </form>\r\n");
1419
1420
1421 #line 265 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1422
1423
1424
1425 #line default
1426 #line hidden
1427 WriteLiteral("\t <script");
1428
1429 WriteLiteral(" type=\"module\"");
1430
1431 WriteLiteral(">\r\n swift.VariantSelector.init();\r\n </script>\r\n");
1432
1433
1434 #line 269 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1435 }
1436 }
1437 else if (Pageview.IsVisualEditorMode)
1438 {
1439
1440
1441 #line default
1442 #line hidden
1443 WriteLiteral(" <div");
1444
1445 WriteLiteral(" class=\"alert alert-dark m-0\"");
1446
1447 WriteLiteral(" role=\"alert\"");
1448
1449 WriteLiteral(">\r\n <span>");
1450
1451
1452 #line 274 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1453 Write(Translate("No products available"));
1454
1455
1456 #line default
1457 #line hidden
1458 WriteLiteral("</span>\r\n </div>\r\n");
1459
1460
1461 #line 276 "F:\Domains\Sites\swiftdemo19.mydwsite4.com\Files\Templates\Designs\Swift\Paragraph\Swift_ProductVariantSelector.cshtml"
1462 }
1463
1464
1465 #line default
1466 #line hidden
1467 }
1468 }
1469 }
1470
1 @inherits Dynamicweb.Rendering.ViewModelTemplate<Dynamicweb.Frontend.ParagraphViewModel>
2 @using System.Collections.Generic
3 @using System.Linq
4 @using Dynamicweb.Ecommerce.ProductCatalog
5 @using Dynamicweb.Ecommerce.Variants
6
7 @functions {
8 //Find contrast color (white, black)
9 public static string GetContrastColor(string hexString)
10 {
11 System.Drawing.Color bg = System.Drawing.ColorTranslator.FromHtml(hexString);
12
13 int nThreshold = 105;
14 int bgDelta = Convert.ToInt32((bg.R * 0.299) + (bg.G * 0.587) +
15 (bg.B * 0.114));
16
17 string foreColor = (255 - bgDelta < nThreshold) ? "#333" : "#fff";
18 return foreColor;
19 }
20
21 public string GetLayoutForVariantGroup(string variantGroupId)
22 {
23 string showVariantGroups = !string.IsNullOrEmpty(Model.Item.GetString("ShowVariantGroupOptions")) ? Model.Item.GetString("ShowVariantGroupOptions") : "all";
24 string defaultVariantGroupLayout = Model.Item.GetRawValueString("DefaultVariantGroupLayout", "button");
25 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>();
26
27 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return defaultVariantGroupLayout;
28
29 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList)
30 {
31 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(',');
32 if (variantGroups.Any(s => s.Equals(variantGroupId))) return selectedVariantGroupListItem.GetRawValueString("VariantGroupLayout");
33 }
34
35 return defaultVariantGroupLayout;
36 }
37
38 //Collect all variant images
39 public static Dictionary<string, string> GetVariantImages(List<VariantInfoViewModel> variantInfo, Dictionary<string, string> list)
40 {
41 foreach (var variantGroup in variantInfo)
42 {
43 if (variantGroup.Image?.Value != null && !list.ContainsKey(variantGroup.OptionID)) {
44 list.Add(variantGroup.OptionID, variantGroup.Image.Value);
45 }
46
47 if (variantGroup.VariantInfo != null) {
48 GetVariantImages(variantGroup.VariantInfo, list);
49 }
50 }
51
52 return list;
53 }
54
55 private string GetDefaultOrVariantGroupValue(string variantGroupId, string itemField, string itemFieldDefaultValue, Dictionary<string, string> fieldValueMapping)
56 {
57 string horizontalTextAlign = Model.Item.GetRawValueString(itemField, itemFieldDefaultValue);
58 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign;
59
60 // If no variantGroup (i.e. Visual Editor), return default value
61 if (string.IsNullOrEmpty(variantGroupId)) return horizontalTextAlign;
62
63 string showVariantGroups = Model.Item.GetString("ShowVariantGroupOptions", "all");
64 var selectedVariantGroupsList = !string.IsNullOrEmpty(Model.Item.GetRawValueString("VariantGroups")) ? Model.Item.GetItems("VariantGroups") : new List<Dynamicweb.Frontend.ItemViewModel>();
65 // If no exceptions or settings are all the same, return default value
66 if (showVariantGroups == "all" || selectedVariantGroupsList == null || !selectedVariantGroupsList.Any()) return horizontalTextAlign;
67
68 // Get specific value for variant group
69 foreach (var selectedVariantGroupListItem in selectedVariantGroupsList)
70 {
71 var variantGroups = selectedVariantGroupListItem.GetRawValueString("VariantGroups").Split(',');
72 if (!variantGroups.Any(s => s.Equals(variantGroupId))) continue;
73
74 horizontalTextAlign = selectedVariantGroupListItem.GetRawValueString(itemField, itemFieldDefaultValue);
75 horizontalTextAlign = fieldValueMapping.ContainsKey(horizontalTextAlign) ? fieldValueMapping[horizontalTextAlign] : horizontalTextAlign;
76 }
77
78 return horizontalTextAlign;
79 }
80 }
81
82 @{
83 ProductViewModel product = new ProductViewModel();
84
85 ProductViewModelSettings productSetting = new ProductViewModelSettings
86 {
87 LanguageId = Dynamicweb.Ecommerce.Common.Context.LanguageID,
88 CurrencyCode = Dynamicweb.Ecommerce.Common.Context.Currency.Code,
89 CountryCode = Dynamicweb.Ecommerce.Common.Context.Country.Code2,
90 ShopId = Pageview.Area.EcomShopId
91 };
92
93 if (Dynamicweb.Context.Current.Items.Contains("ProductDetails"))
94 {
95 product = (ProductViewModel)Dynamicweb.Context.Current.Items["ProductDetails"];
96 }
97 else if (Pageview.Item["DummyProduct"] != null)
98 {
99
100 string dummyProductId = "";
101 var pageViewModel = Dynamicweb.Frontend.ContentViewModelFactory.CreatePageInfoViewModel(Pageview.Page);
102 ProductListViewModel productList = pageViewModel.Item.GetValue("DummyProduct") != null ? pageViewModel.Item.GetValue("DummyProduct") as ProductListViewModel : new ProductListViewModel();
103 if (productList.Products != null)
104 {
105 foreach (var p in productList.Products) { dummyProductId = p.Id; }
106 ProductViewModel dummyProduct = dummyProductId != "" ? ViewModelFactory.CreateView(productSetting, dummyProductId) : new ProductViewModel();
107 product = dummyProduct;
108 }
109 else
110 {
111 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id);
112 }
113 }
114 else if (Pageview.Item["DummyProduct"] == null)
115 {
116 product = ViewModelFactory.CreateView(productSetting, Dynamicweb.Ecommerce.Services.Products.GetLastActiveProducts(1, Dynamicweb.Ecommerce.Common.Context.LanguageID, false).FirstOrDefault()?.Id);
117 }
118
119 bool hideGroupHeaders = Model.Item.GetBoolean("HideGroupHeaders");
120 }
121
122 @if (product.Id != null)
123 {
124 var productVariantGroups = product.VariantGroups();
125
126 if (productVariantGroups.Any())
127 {
128 string[] variantId = product.VariantId.Split('.');
129 int groupNumber = 1;
130
131 string baseUrl = $"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}";
132 string variantUrl = "";
133 if (!string.IsNullOrEmpty(product.VariantId))
134 {
135 variantUrl = Dynamicweb.Frontend.SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={GetPageIdByNavigationTag("Shop")}&GroupID={product.PrimaryOrDefaultGroup.Id}&ProductID={product.Id}&VariantID={product.VariantId}");
136 }
137
138 Dictionary<string, string> variantImages = new Dictionary<string, string>();
139 variantImages = GetVariantImages(product.VariantInfo.VariantInfo, variantImages);
140
141 <form class="d-flex flex-column gap-2 js-variant-selector item_@Model.Item.SystemName.ToLower()" data-combinations="@string.Join(",", product.VariantCombinations())" data-base-url="@baseUrl" data-friendly-url="@variantUrl" >
142 @foreach (var variantGroup in productVariantGroups)
143 {
144 VariantGroupViewModel group = variantGroup;
145 string variantGroupLayout = GetLayoutForVariantGroup(variantGroup.Id);
146 string horizontalAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } });
147 string horizontalTextAlign = GetDefaultOrVariantGroupValue(variantGroup.Id, "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } });
148
149 <div>
150 @if (!hideGroupHeaders)
151 {
152 <h3 class="h6 @horizontalTextAlign">@group.Name</h3>
153 }
154 <div class="d-flex gap-2 @horizontalAlign flex-wrap js-variant-group" data-group-id="@groupNumber">
155 @if (variantGroupLayout == "button")
156 {
157 foreach (var option in group.Options)
158 {
159 string active = variantId != null && variantId.Contains(option.Id) ? "active" : "";
160 string buttonId = $"{product.Id}_{option.Id}_{Pageview.CurrentParagraph.ID}";
161 string contrastColor = string.Empty;
162 string optionLayout = optionLayout = GetDefaultOrVariantGroupValue(variantGroup.Id, "ButtonLayout", "rounded-circle", new Dictionary<string, string> { { "round", "rounded-circle" }, { "square", "" } });
163 var displayType = group.DisplayType;
164
165 switch (displayType)
166 {
167 case VariantGroupDisplayType.VariantColor:
168 contrastColor = GetContrastColor(option.Color);
169 <button type="button" class="btn colorbox @optionLayout d-inline-block variant-option border js-variant-option @active" style="background-color: @option.Color; --variantoption-check-color: @contrastColor" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId">
170 <span class="visually-hidden">@option.Color</span>
171 </button>
172 break;
173 case VariantGroupDisplayType.VariantImage:
174 string variantImage = string.Empty;
175 if (variantImages.TryGetValue(option.Id, out variantImage))
176 {
177 <button type="button" class="btn p-0 d-inline-block @optionLayout variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@(product.Id)_@(option.Id)_@Pageview.CurrentParagraph.ID">
178 <img class="@optionLayout" src="/Admin/Public/GetImage.ashx?image=@(variantImage)&width=42&Format=WebP&Quality=70">
179 </button>
180 } else {
181 <button type="button" class="btn btn-secondary d-inline-block variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@(product.Id)_@(option.Id)_@Pageview.CurrentParagraph.ID">
182 @option.Name
183 </button>
184 }
185
186 break;
187 case VariantGroupDisplayType.VariantName:
188 <button type="button" class="btn btn-secondary d-inline-block variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId">
189 @option.Name
190 </button>
191 break;
192 case VariantGroupDisplayType.VariantOptionImage:
193 <button type="button" class="btn p-0 d-inline-block @optionLayout variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@(product.Id)_@(option.Id)_@Pageview.CurrentParagraph.ID">
194 <img class="@optionLayout" src="/Admin/Public/GetImage.ashx?image=@(option.OptionImage.Value)&width=42&Format=WebP&Quality=70">
195 </button>
196 break;
197 default:
198 if (!string.IsNullOrEmpty(option.Color))
199 {
200 contrastColor = GetContrastColor(option.Color);
201 <button type="button" class="btn colorbox @optionLayout d-inline-block variant-option border js-variant-option @active" style="background-color: @option.Color; --variantoption-check-color: @contrastColor" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId">
202 <span class="visually-hidden">@option.Color</span>
203 </button>
204 }
205 else if (!string.IsNullOrEmpty(option.Color) && !string.IsNullOrEmpty(option.Image.Value))
206 {
207 <button type="button" class="btn p-0 d-inline-block @optionLayout variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId">
208 <img src="/Admin/Public/GetImage.ashx?image=@(option.Image.Value)&width=42&Format=WebP&Quality=70">
209 </button>
210 }
211 else
212 {
213 <button type="button" class="btn btn-secondary d-inline-block variant-option js-variant-option @active" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="@option.Id" id="@buttonId">
214 @option.Name
215 </button>
216 }
217 break;
218 }
219 }
220 }
221 else
222 {
223 <select class="form-select" id="VariantDropdown_@variantGroup.Id" aria-label="@variantGroup.Name" onchange="swift.VariantSelector.OptionClick(event)">
224 @foreach (var option in variantGroup.Options)
225 {
226 string active = variantId != null && variantId.Contains(option.Id) ? "active" : "";
227 var selected = variantId != null && variantId.Contains(option.Id) ? "selected" : "";
228 var value = $"{product.Id}_{option.Id}";
229
230 <option value="@(value)" class="variant-option js-variant-option @active" data-variant-id="@option.Id" id="@(value)_@(Pageview.CurrentParagraph.ID)" @selected>@option.Name</option>
231 }
232 </select>
233 }
234 </div>
235 </div>
236
237
238 groupNumber++;
239 }
240 </form>
241
242 <script type="module">
243 swift.VariantSelector.init();
244 </script>
245 }
246 else if (Pageview.IsVisualEditorMode)
247 {
248 string horizontalAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "justify-content-center" }, { "end", "justify-content-end" } });
249 string horizontalTextAlign = GetDefaultOrVariantGroupValue("", "HorizontalAlignment", "", new Dictionary<string, string> { { "center", "text-center" }, { "end", "text-end" } });
250
251 <form class="d-flex flex-column js-variant-selector item_@Model.Item.SystemName.ToLower()" data-combinations="VO1,VO2,VO3,VO4">
252 <div>
253 @if (!hideGroupHeaders)
254 {
255 <h3 class="h6 @horizontalTextAlign">@Translate("Sizes")</h3>
256 }
257 <div class="mb-3 @horizontalAlign js-variant-group" data-group-id="0">
258 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO1" id="@(product.Id)_VO1_@Pageview.CurrentParagraph.ID">S</button>
259 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO2" id="@(product.Id)_VO2_@Pageview.CurrentParagraph.ID">M</button>
260 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO3" id="@(product.Id)_VO3_@Pageview.CurrentParagraph.ID">L</button>
261 <button type="button" class="btn btn-secondary d-inline-block mb-2 variant-option js-variant-option" onclick="swift.VariantSelector.OptionClick(event)" data-variant-id="VO4" id="@(product.Id)_VO4_@Pageview.CurrentParagraph.ID">XL</button>
262 </div>
263 </div>
264 </form>
265
266 <script type="module">
267 swift.VariantSelector.init();
268 </script>
269 }
270 }
271 else if (Pageview.IsVisualEditorMode)
272 {
273 <div class="alert alert-dark m-0" role="alert">
274 <span>@Translate("No products available")</span>
275 </div>
276 }
277