Jakker

Error compiling template "Designs/identity_v2/QueryPublisher/id-relewise-productlist-with-facets.cshtml"
Line 71: The type or namespace name 'ProductListService' does not exist in the namespace 'Co3.ID.Dw.Relewise.Services' (are you missing an assembly reference?)
Line 125: The type or namespace name 'ProductQuery' could not be found (are you missing a using directive or an assembly reference?)
Line 125: The type or namespace name 'ProductQuery' could not be found (are you missing a using directive or an assembly reference?)
Line 136: The type or namespace name 'RelewiseProductList' could not be found (are you missing a using directive or an assembly reference?)
Line 653: The type or namespace name 'RelewiseProductListProduct' could not 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 using System.Collections.Generic; 14 using System.Linq; 15 16 #line 2 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 17 using System.Collections.Specialized; 18 19 #line default 20 #line hidden 21 22 #line 3 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 23 using System.Text.Json; 24 25 #line default 26 #line hidden 27 28 #line 4 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 29 using Co3.ID.Dw.Models.Frontend.Ecommerce; 30 31 #line default 32 #line hidden 33 34 #line 5 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 35 using Co3.ID.Dw.Relewise.Models; 36 37 #line default 38 #line hidden 39 40 #line 6 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 41 using Co3.ID.Dw.Services; 42 43 #line default 44 #line hidden 45 46 #line 7 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 47 using Dynamicweb; 48 49 #line default 50 #line hidden 51 52 #line 8 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 53 using Dynamicweb.Ecommerce.ProductCatalog; 54 55 #line default 56 #line hidden 57 58 #line 9 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 59 using Dynamicweb.Frontend; 60 61 #line default 62 #line hidden 63 64 #line 10 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 65 using Relewise.Client.DataTypes; 66 67 #line default 68 #line hidden 69 70 #line 11 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 71 using ProductListService = Co3.ID.Dw.Relewise.Services.ProductListService; 72 73 #line default 74 #line hidden 75 76 #line 12 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 77 using RenderingService = Co3.Espresso.Website.Services.RenderingService; 78 79 #line default 80 #line hidden 81 82 83 public class RazorEngine_7de2e0ee2cde44c2a885b2824ed5b7fa : Co3.Espresso.Website.TemplateBases.Paragraphs.Module { 84 85 #line hidden 86 87 public RazorEngine_7de2e0ee2cde44c2a885b2824ed5b7fa() { 88 } 89 90 public override void Execute() { 91 WriteLiteral("\r\n\r\n"); 92 93 94 #line 15 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 95 96 int pageId = PageView.Current().Page.ID; 97 NameValueCollection query = Context.Current.Request.QueryString; 98 99 string sortBy = query["sortBy"] ?? "relevance"; 100 101 int.TryParse(query["pageNum"] ?? "1", out int pageNum); 102 int.TryParse(query["pageSize"] ?? "14", out int pageSize); 103 104 Dictionary<string, List<string>> filters = ProductListService.Instance.GetFiltersFromQuery(query); 105 106 Dictionary<string, string> sortOptions = new Dictionary<string, string>() 107 { 108 { 109 "relevance", "Relevance" 110 }, 111 { 112 "popularity", "Popularity" 113 }, 114 { 115 "name-asc", "Navn (A-Å)" 116 }, 117 { 118 "name-desc", "Navn (Å-A)" 119 } 120 }; 121 122 bool isCategoryPage = (bool)(PageView.Current().Page.Item["RelewiseCategory"] != null ? PageView.Current().Page.Item["RelewiseCategory"] : false); 123 string categoryId = isCategoryPage ? pageId.ToString() : string.Empty; 124 125 ProductQuery productQuery = new ProductQuery() 126 { 127 CategoryId = categoryId, 128 PageId = pageId, 129 PageNum = pageNum, 130 PageSize = pageSize, 131 SortBy = sortBy, 132 Filters = filters, 133 GetCategories = true 134 }; 135 136 RelewiseProductList result = ProductListService.Instance.GetProductListProducts(productQuery); 137 138 139 140 #line default 141 #line hidden 142 WriteLiteral(" <script>console.log( \'%cInitial Relewise Query\',\r\n \'background: re" + 143 "beccapurple; color: white\', "); 144 145 146 #line 59 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 147 Write(Newtonsoft.Json.JsonConvert.SerializeObject(productQuery)); 148 149 150 #line default 151 #line hidden 152 WriteLiteral(");</script>\r\n"); 153 154 WriteLiteral(" <script>console.log( \'%cInitial Relewise Result\',\r\n \'background: r" + 155 "ebeccapurple; color: white\', "); 156 157 158 #line 61 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 159 Write(Newtonsoft.Json.JsonConvert.SerializeObject(result)); 160 161 162 #line default 163 #line hidden 164 WriteLiteral(");</script>\r\n"); 165 166 167 #line 62 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 168 169 int currentCount = Math.Min(productQuery.PageNum * productQuery.PageSize, result.TotalProducts); 170 bool isLoadMoreDisabled = (productQuery.PageNum * productQuery.PageSize) >= result.TotalProducts; 171 bool showLoadMore = productQuery.PageNum == 1 && !isLoadMoreDisabled; 172 173 int productSkeletonCount = ( productQuery.PageSize * productQuery.PageNum ) - productQuery.PageSize; 174 int previousPageNum = 1; 175 int productCounter = 1; 176 int serverRenderedProductCounter = 1; 177 178 ScriptService.Instance.AddScript("identity.productlist"); 179 180 181 #line default 182 #line hidden 183 WriteLiteral("\r\n\r\n<product-list\r\n id=\"product-list-root\"\r\n class=\"e-productlist\"\r\n pag" + 184 "e-id=\""); 185 186 187 #line 78 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 188 Write(productQuery.PageId); 189 190 191 #line default 192 #line hidden 193 WriteLiteral("\"\r\n page-num=\""); 194 195 196 #line 79 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 197 Write(productQuery.PageNum); 198 199 200 #line default 201 #line hidden 202 WriteLiteral("\"\r\n page-size=\""); 203 204 205 #line 80 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 206 Write(productQuery.PageSize); 207 208 209 #line default 210 #line hidden 211 WriteLiteral("\"\r\n category=\""); 212 213 214 #line 81 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 215 Write(categoryId); 216 217 218 #line default 219 #line hidden 220 WriteLiteral("\"\r\n aria-busy=\"false\">\r\n\r\n <div"); 221 222 WriteLiteral(" class=\"row\""); 223 224 WriteLiteral(">\r\n <div"); 225 226 WriteLiteral(" class=\"col-12\""); 227 228 WriteLiteral(">\r\n <div"); 229 230 WriteLiteral(" class=\"row\""); 231 232 WriteLiteral(">\r\n <div"); 233 234 WriteLiteral(" class=\"col-12\""); 235 236 WriteLiteral(">\r\n <div"); 237 238 WriteLiteral(" class=\"border-bottom w-100 mb-1 pb-1\""); 239 240 WriteLiteral(">\r\n <product-list-selected-filters"); 241 242 WriteLiteral(" class=\"d-flex small\""); 243 244 WriteLiteral(">\r\n"); 245 246 WriteLiteral(" "); 247 248 249 #line 90 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 250 Write(RenderingService.Instance.PartialView("QueryPublisher/partials/relewise-custom-productlist--selected-filters.cshtml", result.SelectedFilters)); 251 252 253 #line default 254 #line hidden 255 WriteLiteral("\r\n </product-list-selected-filters>\r\n <" + 256 "/div>\r\n\r\n </div>\r\n\r\n <div"); 257 258 WriteLiteral(" class=\"col-12\""); 259 260 WriteLiteral(">\r\n <div"); 261 262 WriteLiteral(" class=\"border-bottom w-100 mb-1 pb-1\""); 263 264 WriteLiteral(">\r\n <product-list-filters"); 265 266 WriteLiteral(" class=\"d-flex\""); 267 268 WriteLiteral(" style=\"gap: 1em;\""); 269 270 WriteLiteral(">\r\n"); 271 272 WriteLiteral(" "); 273 274 275 #line 99 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 276 Write(RenderingService.Instance.PartialView("QueryPublisher/partials/relewise-custom-productlist--facets.cshtml", result.Facets)); 277 278 279 #line default 280 #line hidden 281 WriteLiteral("\r\n </product-list-filters>\r\n </div>\r\n " + 282 " </div>\r\n </div>\r\n </div>\r\n <div"); 283 284 WriteLiteral(" class=\"col-12 col-md-3\""); 285 286 WriteLiteral(">\r\n <p"); 287 288 WriteLiteral(" class=\"e-productlist-filters-group-header small mb-0 py-1\""); 289 290 WriteLiteral(">\r\n <span"); 291 292 WriteLiteral(" class=\"e-productlist-filters-group-name h3 m-0\""); 293 294 WriteLiteral(">Katagorier</span>\r\n </p>\r\n <product-list-categories"); 295 296 WriteLiteral(" class=\"e-productlist-filters-group-options small mt-1\""); 297 298 WriteLiteral(">\r\n <div"); 299 300 WriteLiteral(" class=\"e-nav-local e-nav-local-vertical mb-2\""); 301 302 WriteLiteral(">\r\n <nav"); 303 304 WriteLiteral(" class=\"e-nav-local-container\""); 305 306 WriteLiteral(">\r\n <div"); 307 308 WriteLiteral(" class=\"nav flex-column\""); 309 310 WriteLiteral(">\r\n"); 311 312 313 #line 113 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 314 315 316 #line default 317 #line hidden 318 319 #line 113 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 320 foreach (ProductCategoryResult category in result.Categories) 321 { 322 bool isActive = pageId.ToString().Equals(category.CategoryId, StringComparison.InvariantCultureIgnoreCase); 323 string categoryLink = SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={category.CategoryId}"); 324 325 326 #line default 327 #line hidden 328 WriteLiteral(" <li"); 329 330 WriteAttribute("class", Tuple.Create(" class=\"", 4993), Tuple.Create("\"", 5060) 331 , Tuple.Create(Tuple.Create("", 5001), Tuple.Create("nav-item", 5001), true) 332 333 #line 117 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 334 , Tuple.Create(Tuple.Create(" ", 5009), Tuple.Create<System.Object, System.Int32>(isActive ? "is-inpath is-active" : string.Empty 335 336 #line default 337 #line hidden 338 , 5010), false) 339 ); 340 341 WriteLiteral(">\r\n <a"); 342 343 WriteAttribute("href", Tuple.Create(" href=\"", 5102), Tuple.Create("\"", 5122) 344 345 #line 118 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 346 , Tuple.Create(Tuple.Create("", 5109), Tuple.Create<System.Object, System.Int32>(categoryLink 347 348 #line default 349 #line hidden 350 , 5109), false) 351 ); 352 353 WriteAttribute("class", Tuple.Create("\r\n class=\"", 5123), Tuple.Create("\"", 5230) 354 , Tuple.Create(Tuple.Create("", 5171), Tuple.Create("nav-link", 5171), true) 355 356 #line 119 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 357 , Tuple.Create(Tuple.Create(" ", 5179), Tuple.Create<System.Object, System.Int32>(isActive ? "is-inpath is-active" : string.Empty 358 359 #line default 360 #line hidden 361 , 5180), false) 362 ); 363 364 WriteLiteral(">\r\n"); 365 366 WriteLiteral(" "); 367 368 369 #line 120 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 370 Write(category.DisplayName); 371 372 373 #line default 374 #line hidden 375 WriteLiteral("\r\n </a>\r\n </li>" + 376 "\r\n"); 377 378 379 #line 123 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 380 } 381 382 383 #line default 384 #line hidden 385 WriteLiteral(" </div>\r\n </nav>\r\n </div" + 386 ">\r\n </product-list-categories>\r\n </div>\r\n <div"); 387 388 WriteLiteral(" class=\"col-12 col-md-9\""); 389 390 WriteLiteral(">\r\n <div"); 391 392 WriteLiteral(" class=\"row \""); 393 394 WriteLiteral(">\r\n\r\n <div"); 395 396 WriteLiteral(" class=\"col-12\""); 397 398 WriteLiteral(">\r\n <div"); 399 400 WriteLiteral(" class=\"d-flex justify-content-between align-items-center mb-1\""); 401 402 WriteLiteral(">\r\n <product-list-count"); 403 404 WriteLiteral(" class=\"mb-0 small\""); 405 406 WriteAttribute("current-count", Tuple.Create(" current-count=\"", 5812), Tuple.Create("\"", 5841) 407 408 #line 134 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 409 , Tuple.Create(Tuple.Create("", 5828), Tuple.Create<System.Object, System.Int32>(currentCount 410 411 #line default 412 #line hidden 413 , 5828), false) 414 ); 415 416 WriteAttribute("total-count", Tuple.Create("\r\n total-count=\"", 5842), Tuple.Create("\"", 5922) 417 418 #line 135 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 419 , Tuple.Create(Tuple.Create("", 5901), Tuple.Create<System.Object, System.Int32>(result.TotalProducts 420 421 #line default 422 #line hidden 423 , 5901), false) 424 ); 425 426 WriteLiteral(">\r\n <div"); 427 428 WriteLiteral(" class=\"d-flex\""); 429 430 WriteLiteral(" style=\"gap:5px;\""); 431 432 WriteLiteral(">\r\n <span>\r\n <s" + 433 "pan"); 434 435 WriteLiteral(" class=\"product-list-current-count\""); 436 437 WriteLiteral(">"); 438 439 440 #line 138 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 441 Write(currentCount); 442 443 444 #line default 445 #line hidden 446 WriteLiteral("</span> / <span\r\n class=\"product-list-tota" + 447 "l-count\">"); 448 449 450 #line 139 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 451 Write(result.TotalProducts); 452 453 454 #line default 455 #line hidden 456 WriteLiteral("</span>\r\n </span>\r\n " + 457 " Produkter\r\n </div>\r\n </produc" + 458 "t-list-count>\r\n <product-list-sort"); 459 460 WriteLiteral(" class=\"mb-0 small\""); 461 462 WriteLiteral(">\r\n <select"); 463 464 WriteLiteral(" class=\"custom-select custom-select-sm custom-select-id-sort\""); 465 466 WriteLiteral(">\r\n"); 467 468 469 #line 146 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 470 471 472 #line default 473 #line hidden 474 475 #line 146 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 476 foreach (KeyValuePair<string, string> sortOption in sortOptions) 477 { 478 479 480 #line default 481 #line hidden 482 WriteLiteral(" <option"); 483 484 WriteAttribute("value", Tuple.Create(" value=\"", 6750), Tuple.Create("\"", 6773) 485 486 #line 148 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 487 , Tuple.Create(Tuple.Create("", 6758), Tuple.Create<System.Object, System.Int32>(sortOption.Key 488 489 #line default 490 #line hidden 491 , 6758), false) 492 ); 493 494 WriteLiteral("\r\n "); 495 496 497 #line 149 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 498 Write(sortBy == sortOption.Key ? "selected" : string.Empty); 499 500 501 #line default 502 #line hidden 503 WriteLiteral(">"); 504 505 506 #line 149 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 507 Write(sortOption.Value); 508 509 510 #line default 511 #line hidden 512 WriteLiteral("</option>\r\n"); 513 514 515 #line 150 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 516 } 517 518 519 #line default 520 #line hidden 521 WriteLiteral(" </select>\r\n </product-list-sor" + 522 "t>\r\n </div>\r\n\r\n </div>\r\n </div>\r\n " + 523 " <div"); 524 525 WriteLiteral(" class=\"row\""); 526 527 WriteLiteral(">\r\n <div"); 528 529 WriteLiteral(" class=\"col-12\""); 530 531 WriteLiteral(">\r\n <product-list-products"); 532 533 WriteLiteral(" class=\"e-productlist row no-gutters\""); 534 535 WriteLiteral(">\r\n\r\n"); 536 537 538 #line 161 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 539 540 541 #line default 542 #line hidden 543 544 #line 161 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 545 if ( productSkeletonCount > 0 && productQuery.PageNum > 1 ) 546 { 547 int productsPerPageCounter = 0; 548 string isObservable = string.Empty; 549 550 for ( int i = 0; i < productSkeletonCount; i++ ) 551 { 552 553 554 555 #line default 556 #line hidden 557 WriteLiteral(" <div"); 558 559 WriteLiteral(" class=\"col-6 col-sm-6 col-md-6 col-lg-3 col-xl-3 d-flex e-productlist-skeleton\""); 560 561 WriteLiteral(">\r\n <div"); 562 563 WriteAttribute("class", Tuple.Create(" class=\"", 7762), Tuple.Create("\"", 7842) 564 , Tuple.Create(Tuple.Create("", 7770), Tuple.Create("e-productlist-skeleton-item", 7770), true) 565 , Tuple.Create(Tuple.Create(" ", 7797), Tuple.Create("js-e-productlist-skeleton-item", 7798), true) 566 567 #line 170 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 568 , Tuple.Create(Tuple.Create(" ", 7828), Tuple.Create<System.Object, System.Int32>(isObservable 569 570 #line default 571 #line hidden 572 , 7829), false) 573 ); 574 575 WriteLiteral(" data-page=\""); 576 577 578 #line 170 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 579 Write(previousPageNum); 580 581 582 #line default 583 #line hidden 584 WriteLiteral("\""); 585 586 WriteLiteral(" data-index=\""); 587 588 589 #line 170 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 590 Write(productsPerPageCounter); 591 592 593 #line default 594 #line hidden 595 WriteLiteral("\""); 596 597 WriteLiteral("></div>\r\n </div>\r\n"); 598 599 600 #line 172 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 601 602 if ( productCounter == 10 ) 603 { 604 605 606 #line default 607 #line hidden 608 609 #line 175 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 610 Write(RenderingService.Instance.PartialView( "ecom/productlist/partials/identity-productlist-cta.cshtml" )); 611 612 613 #line default 614 #line hidden 615 616 #line 175 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 617 618 } 619 620 if ( productCounter % productQuery.PageSize == 0 ) 621 { 622 previousPageNum++; 623 } 624 productCounter++; 625 productsPerPageCounter++; 626 if ( productsPerPageCounter % productQuery.PageSize == ( productQuery.PageSize - 1 ) ) 627 { 628 isObservable = "is-observable"; 629 } 630 else if ( ( productsPerPageCounter + 1 ) > productQuery.PageSize ) 631 { 632 productsPerPageCounter = 0; 633 isObservable = string.Empty; 634 } 635 } 636 637 serverRenderedProductCounter = productCounter; 638 } 639 640 641 #line default 642 #line hidden 643 WriteLiteral("\r\n"); 644 645 646 #line 198 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 647 648 649 #line default 650 #line hidden 651 652 #line 198 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 653 foreach (RelewiseProductListProduct product in result.Products) 654 { 655 656 657 #line default 658 #line hidden 659 WriteLiteral(" <div"); 660 661 WriteLiteral(" class=\"col-6 col-sm-6 col-md-6 col-lg-3 col-xl-3 d-flex\""); 662 663 WriteLiteral(">\r\n"); 664 665 WriteLiteral(" "); 666 667 668 #line 201 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 669 Write(product.ListItemHtml); 670 671 672 #line default 673 #line hidden 674 WriteLiteral("\r\n </div>\r\n"); 675 676 677 #line 203 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 678 679 if ( serverRenderedProductCounter == 10) 680 { 681 682 683 #line default 684 #line hidden 685 686 #line 206 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 687 Write(RenderingService.Instance.PartialView( "ecom/productlist/partials/identity-productlist-cta.cshtml" )); 688 689 690 #line default 691 #line hidden 692 693 #line 206 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 694 695 } 696 697 serverRenderedProductCounter++; 698 } 699 700 701 #line default 702 #line hidden 703 WriteLiteral(" </product-list-products>\r\n <div"); 704 705 WriteLiteral(" class=\"row\""); 706 707 WriteLiteral(">\r\n <div"); 708 709 WriteLiteral(" class=\"col-12 py-2 col-lg-4 col-xl-4 offset-lg-4\""); 710 711 WriteLiteral(">\r\n <product-list-load-more"); 712 713 WriteAttribute("is-lazyloading", Tuple.Create(" is-lazyloading=\"", 10154), Tuple.Create("\"", 10205) 714 715 #line 214 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 716 , Tuple.Create(Tuple.Create("", 10171), Tuple.Create<System.Object, System.Int32>(showLoadMore ? "false" : "true" 717 718 #line default 719 #line hidden 720 , 10171), false) 721 ); 722 723 WriteAttribute("is-disabled", Tuple.Create("\r\n is-disabled=\"", 10206), Tuple.Create("\"", 10313) 724 725 #line 215 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 726 , Tuple.Create(Tuple.Create("", 10273), Tuple.Create<System.Object, System.Int32>(isLoadMoreDisabled ? "true" : "false" 727 728 #line default 729 #line hidden 730 , 10273), false) 731 ); 732 733 WriteLiteral(">\r\n <button"); 734 735 WriteLiteral(" type=\"button\""); 736 737 WriteLiteral("\r\n class=\"btn btn-block btn-primary e-prod" + 738 "uctlist-load-more-products-btn relewise-productlist-loadmore-btn\""); 739 740 WriteLiteral(">\r\n"); 741 742 WriteLiteral(" "); 743 744 745 #line 218 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 746 Write(Translate("eCom Productlist - Load More Products - Button", "Hent flere produkter")); 747 748 749 #line default 750 #line hidden 751 WriteLiteral(" <span\r\n class=\"material-icons\">keyboard_a" + 752 "rrow_down</span>\r\n </button>\r\n " + 753 " <div"); 754 755 WriteLiteral(" class=\"relewise-productlist-loadmore-spinner mt-4 position-relative text-center\"" + 756 ""); 757 758 WriteLiteral(">\r\n"); 759 760 WriteLiteral(" "); 761 762 763 #line 222 "D:\dynamicweb.net\Solutions\staging-id.espresso4.dk-e5\Files\Templates\Designs\identity_v2\QueryPublisher\id-relewise-productlist-with-facets.cshtml" 764 Write(RenderingService.Instance.PartialView("_partials/loading-spinner.cshtml")); 765 766 767 #line default 768 #line hidden 769 WriteLiteral("\r\n </div>\r\n </product-l" + 770 "ist-load-more>\r\n </div>\r\n </div>\r\n " + 771 " <!-- Load More -->\r\n\r\n </div>\r\n </div>" + 772 "\r\n </div>\r\n </div>\r\n\r\n</product-list>\r\n\r\n\r\n<style scoped>\r\n product" + 773 "-list-load-more[is-disabled=\"true\"] {\r\n .relewise-productlist-loadmore-bt" + 774 "n, .relewise-productlist-loadmore-spinner {\r\n display: none;\r\n " + 775 " }\r\n }\r\n\r\n product-list-load-more[is-disabled=\"false\"] {\r\n &[is-laz" + 776 "yloading=\"false\"] {\r\n .relewise-productlist-loadmore-btn {\r\n " + 777 " display: block;\r\n }\r\n\r\n .relewise-productlist-loadm" + 778 "ore-spinner {\r\n display: none;\r\n }\r\n }\r\n\r\n " + 779 " &[is-lazyloading=\"true\"] {\r\n .relewise-productlist-loadmore-btn {\r" + 780 "\n display: none;\r\n }\r\n\r\n .relewise-productl" + 781 "ist-loadmore-spinner {\r\n display: block;\r\n }\r\n " + 782 "}\r\n }\r\n\r\n .custom-dropdown { display: inline-block; position: relative; }\r" + 783 "\n\r\n .custom-dropdown .custom-dropdown-toggle {\r\n padding: 1rem;\r\n " + 784 " background: #f5f5f5;\r\n color: #212121;\r\n border-radius: 0;\r\n " + 785 " cursor: pointer;\r\n border: .125em solid transparent;\r\n border" + 786 "-bottom-width: 2px;\r\n display: flex;\r\n justify-content: space-betw" + 787 "een;\r\n align-items: center;\r\n text-align: center;\r\n vertica" + 788 "l-align: middle;\r\n line-height: 1.25;\r\n font-size: .875em;\r\n\r\n " + 789 " .trigger-icon {\r\n transition: all .3s ease;\r\n font-siz" + 790 "e: 1.5em;\r\n line-height: 0;\r\n color: #616161;\r\n }\r\n" + 791 " }\r\n\r\n .custom-dropdown .custom-dropdown-menu {\r\n min-width: 180px;" + 792 "\r\n background: #fff;\r\n border: 1px solid #ccc;\r\n border-rad" + 793 "ius: 0.25rem;\r\n box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.05);\r\n " + 794 " padding: 0.5em 0;\r\n display: none;\r\n position: absolute;\r\n " + 795 " z-index: 1000;\r\n }\r\n\r\n .custom-dropdown .custom-dropdown-menu.show {\r\n " + 796 " display: block;\r\n }\r\n\r\n .custom-dropdown .custom-dropdown-item {\r\n " + 797 " display: block;\r\n width: 100%;\r\n padding: 0.375em 1em;\r\n " + 798 " color: #333;\r\n text-decoration: none;\r\n background: none;\r\n " + 799 " border: 0;\r\n position: relative;\r\n\r\n &.disabled {\r\n " + 800 " opacity: .5;\r\n pointer-events: none;\r\n }\r\n\r\n .custom-" + 801 "dropdown-item-check {\r\n position: absolute;\r\n top: 0;\r\n " + 802 " left: 0;\r\n width: 100%;\r\n height: 100%;\r\n " + 803 " display: flex;\r\n align-items: center;\r\n justify-conten" + 804 "t: center;\r\n padding-top: 35%;\r\n text-align: center;\r\n " + 805 " }\r\n\r\n /*\r\n input{\r\n opacity: 0;\r\n positi" + 806 "on: absolute;\r\n + label{\r\n cursor: pointer;\r\n " + 807 " width: 100%;\r\n height: 100%;\r\n display: fle" + 808 "x;\r\n align-items: center;\r\n justify-content: cente" + 809 "r;\r\n background: transparent;\r\n font-size: .6em;\r\n" + 810 " white-space: nowrap;\r\n }\r\n &:checked + lab" + 811 "el{\r\n background: #f1f1f1;\r\n }\r\n }*/\r\n }\r\n\r\n" + 812 " .custom-dropdown .custom-dropdown-item:hover,\r\n .custom-dropdown .custom-" + 813 "dropdown-item:focus {\r\n background: #f6f6f6;\r\n color: #16181b;\r\n " + 814 " outline: none;\r\n }\r\n\r\n product-list[aria-busy=\"true\"] {\r\n poi" + 815 "nter-events: none;\r\n }\r\n product-list[aria-busy=\"true\"] .e-productlist-ite" + 816 "m {\r\n opacity: .6;\r\n filter: saturate(.85) contrast(.98);\r\n " + 817 " transition: opacity .2 ease;\r\n }\r\n \r\n</style>"); 818 819 } 820 } 821 } 822

1 @inherits Co3.Espresso.Website.TemplateBases.Paragraphs.Module 2 @using System.Collections.Specialized 3 @using System.Text.Json 4 @using Co3.ID.Dw.Models.Frontend.Ecommerce 5 @using Co3.ID.Dw.Relewise.Models 6 @using Co3.ID.Dw.Services 7 @using Dynamicweb 8 @using Dynamicweb.Ecommerce.ProductCatalog 9 @using Dynamicweb.Frontend 10 @using Relewise.Client.DataTypes 11 @using ProductListService = Co3.ID.Dw.Relewise.Services.ProductListService 12 @using RenderingService = Co3.Espresso.Website.Services.RenderingService 13 14 15 @{ 16 int pageId = PageView.Current().Page.ID; 17 NameValueCollection query = Context.Current.Request.QueryString; 18 19 string sortBy = query["sortBy"] ?? "relevance"; 20 21 int.TryParse(query["pageNum"] ?? "1", out int pageNum); 22 int.TryParse(query["pageSize"] ?? "14", out int pageSize); 23 24 Dictionary<string, List<string>> filters = ProductListService.Instance.GetFiltersFromQuery(query); 25 26 Dictionary<string, string> sortOptions = new Dictionary<string, string>() 27 { 28 { 29 "relevance", "Relevance" 30 }, 31 { 32 "popularity", "Popularity" 33 }, 34 { 35 "name-asc", "Navn (A-Å)" 36 }, 37 { 38 "name-desc", "Navn (Å-A)" 39 } 40 }; 41 42 bool isCategoryPage = (bool)(PageView.Current().Page.Item["RelewiseCategory"] != null ? PageView.Current().Page.Item["RelewiseCategory"] : false); 43 string categoryId = isCategoryPage ? pageId.ToString() : string.Empty; 44 45 ProductQuery productQuery = new ProductQuery() 46 { 47 CategoryId = categoryId, 48 PageId = pageId, 49 PageNum = pageNum, 50 PageSize = pageSize, 51 SortBy = sortBy, 52 Filters = filters, 53 GetCategories = true 54 }; 55 56 RelewiseProductList result = ProductListService.Instance.GetProductListProducts(productQuery); 57 58 <script>console.log( '%cInitial Relewise Query', 59 'background: rebeccapurple; color: white', @Newtonsoft.Json.JsonConvert.SerializeObject(productQuery));</script> 60 <script>console.log( '%cInitial Relewise Result', 61 'background: rebeccapurple; color: white', @Newtonsoft.Json.JsonConvert.SerializeObject(result));</script> 62 63 int currentCount = Math.Min(productQuery.PageNum * productQuery.PageSize, result.TotalProducts); 64 bool isLoadMoreDisabled = (productQuery.PageNum * productQuery.PageSize) >= result.TotalProducts; 65 bool showLoadMore = productQuery.PageNum == 1 && !isLoadMoreDisabled; 66 67 int productSkeletonCount = ( productQuery.PageSize * productQuery.PageNum ) - productQuery.PageSize; 68 int previousPageNum = 1; 69 int productCounter = 1; 70 int serverRenderedProductCounter = 1; 71 72 ScriptService.Instance.AddScript("identity.productlist"); 73 } 74 75 <product-list 76 id="product-list-root" 77 class="e-productlist" 78 page-id="@productQuery.PageId" 79 page-num="@productQuery.PageNum" 80 page-size="@productQuery.PageSize" 81 category="@categoryId" 82 aria-busy="false"> 83 84 <div class="row"> 85 <div class="col-12"> 86 <div class="row"> 87 <div class="col-12"> 88 <div class="border-bottom w-100 mb-1 pb-1"> 89 <product-list-selected-filters class="d-flex small"> 90 @RenderingService.Instance.PartialView("QueryPublisher/partials/relewise-custom-productlist--selected-filters.cshtml", result.SelectedFilters) 91 </product-list-selected-filters> 92 </div> 93 94 </div> 95 96 <div class="col-12"> 97 <div class="border-bottom w-100 mb-1 pb-1"> 98 <product-list-filters class="d-flex" style="gap: 1em;"> 99 @RenderingService.Instance.PartialView("QueryPublisher/partials/relewise-custom-productlist--facets.cshtml", result.Facets) 100 </product-list-filters> 101 </div> 102 </div> 103 </div> 104 </div> 105 <div class="col-12 col-md-3"> 106 <p class="e-productlist-filters-group-header small mb-0 py-1"> 107 <span class="e-productlist-filters-group-name h3 m-0">Katagorier</span> 108 </p> 109 <product-list-categories class="e-productlist-filters-group-options small mt-1"> 110 <div class="e-nav-local e-nav-local-vertical mb-2"> 111 <nav class="e-nav-local-container"> 112 <div class="nav flex-column"> 113 @foreach (ProductCategoryResult category in result.Categories) 114 { 115 bool isActive = pageId.ToString().Equals(category.CategoryId, StringComparison.InvariantCultureIgnoreCase); 116 string categoryLink = SearchEngineFriendlyURLs.GetFriendlyUrl($"Default.aspx?ID={category.CategoryId}"); 117 <li class="nav-item @(isActive ? "is-inpath is-active" : string.Empty)"> 118 <a href="@categoryLink" 119 class="nav-link @(isActive ? "is-inpath is-active" : string.Empty)"> 120 @category.DisplayName 121 </a> 122 </li> 123 } 124 </div> 125 </nav> 126 </div> 127 </product-list-categories> 128 </div> 129 <div class="col-12 col-md-9"> 130 <div class="row "> 131 132 <div class="col-12"> 133 <div class="d-flex justify-content-between align-items-center mb-1"> 134 <product-list-count class="mb-0 small" current-count="@currentCount" 135 total-count="@result.TotalProducts"> 136 <div class="d-flex" style="gap:5px;"> 137 <span> 138 <span class="product-list-current-count">@currentCount</span> / <span 139 class="product-list-total-count">@result.TotalProducts</span> 140 </span> 141 Produkter 142 </div> 143 </product-list-count> 144 <product-list-sort class="mb-0 small"> 145 <select class="custom-select custom-select-sm custom-select-id-sort"> 146 @foreach (KeyValuePair<string, string> sortOption in sortOptions) 147 { 148 <option value="@sortOption.Key" 149 @(sortBy == sortOption.Key ? "selected" : string.Empty)>@sortOption.Value</option> 150 } 151 </select> 152 </product-list-sort> 153 </div> 154 155 </div> 156 </div> 157 <div class="row"> 158 <div class="col-12"> 159 <product-list-products class="e-productlist row no-gutters"> 160 161 @if ( productSkeletonCount > 0 && productQuery.PageNum > 1 ) 162 { 163 int productsPerPageCounter = 0; 164 string isObservable = string.Empty; 165 166 for ( int i = 0; i < productSkeletonCount; i++ ) 167 { 168 169 <div class="col-6 col-sm-6 col-md-6 col-lg-3 col-xl-3 d-flex e-productlist-skeleton"> 170 <div class="e-productlist-skeleton-item js-e-productlist-skeleton-item @isObservable" data-page="@previousPageNum" data-index="@productsPerPageCounter"></div> 171 </div> 172 173 if ( productCounter == 10 ) 174 { 175 @RenderingService.Instance.PartialView( "ecom/productlist/partials/identity-productlist-cta.cshtml" ) 176 } 177 178 if ( productCounter % productQuery.PageSize == 0 ) 179 { 180 previousPageNum++; 181 } 182 productCounter++; 183 productsPerPageCounter++; 184 if ( productsPerPageCounter % productQuery.PageSize == ( productQuery.PageSize - 1 ) ) 185 { 186 isObservable = "is-observable"; 187 } 188 else if ( ( productsPerPageCounter + 1 ) > productQuery.PageSize ) 189 { 190 productsPerPageCounter = 0; 191 isObservable = string.Empty; 192 } 193 } 194 195 serverRenderedProductCounter = productCounter; 196 } 197 198 @foreach (RelewiseProductListProduct product in result.Products) 199 { 200 <div class="col-6 col-sm-6 col-md-6 col-lg-3 col-xl-3 d-flex"> 201 @product.ListItemHtml 202 </div> 203 204 if ( serverRenderedProductCounter == 10) 205 { 206 @RenderingService.Instance.PartialView( "ecom/productlist/partials/identity-productlist-cta.cshtml" ) 207 } 208 209 serverRenderedProductCounter++; 210 } 211 </product-list-products> 212 <div class="row"> 213 <div class="col-12 py-2 col-lg-4 col-xl-4 offset-lg-4"> 214 <product-list-load-more is-lazyloading="@(showLoadMore ? "false" : "true")" 215 is-disabled="@(isLoadMoreDisabled ? "true" : "false")"> 216 <button type="button" 217 class="btn btn-block btn-primary e-productlist-load-more-products-btn relewise-productlist-loadmore-btn"> 218 @Translate("eCom Productlist - Load More Products - Button", "Hent flere produkter") <span 219 class="material-icons">keyboard_arrow_down</span> 220 </button> 221 <div class="relewise-productlist-loadmore-spinner mt-4 position-relative text-center"> 222 @RenderingService.Instance.PartialView("_partials/loading-spinner.cshtml") 223 </div> 224 </product-list-load-more> 225 </div> 226 </div> 227 <!-- Load More --> 228 229 </div> 230 </div> 231 </div> 232 </div> 233 234 </product-list> 235 236 237 <style scoped> 238 product-list-load-more[is-disabled="true"] { 239 .relewise-productlist-loadmore-btn, .relewise-productlist-loadmore-spinner { 240 display: none; 241 } 242 } 243 244 product-list-load-more[is-disabled="false"] { 245 &[is-lazyloading="false"] { 246 .relewise-productlist-loadmore-btn { 247 display: block; 248 } 249 250 .relewise-productlist-loadmore-spinner { 251 display: none; 252 } 253 } 254 255 &[is-lazyloading="true"] { 256 .relewise-productlist-loadmore-btn { 257 display: none; 258 } 259 260 .relewise-productlist-loadmore-spinner { 261 display: block; 262 } 263 } 264 } 265 266 .custom-dropdown { display: inline-block; position: relative; } 267 268 .custom-dropdown .custom-dropdown-toggle { 269 padding: 1rem; 270 background: #f5f5f5; 271 color: #212121; 272 border-radius: 0; 273 cursor: pointer; 274 border: .125em solid transparent; 275 border-bottom-width: 2px; 276 display: flex; 277 justify-content: space-between; 278 align-items: center; 279 text-align: center; 280 vertical-align: middle; 281 line-height: 1.25; 282 font-size: .875em; 283 284 .trigger-icon { 285 transition: all .3s ease; 286 font-size: 1.5em; 287 line-height: 0; 288 color: #616161; 289 } 290 } 291 292 .custom-dropdown .custom-dropdown-menu { 293 min-width: 180px; 294 background: #fff; 295 border: 1px solid #ccc; 296 border-radius: 0.25rem; 297 box-shadow: 0 0.25rem 0.5rem rgba(0, 0, 0, 0.05); 298 padding: 0.5em 0; 299 display: none; 300 position: absolute; 301 z-index: 1000; 302 } 303 304 .custom-dropdown .custom-dropdown-menu.show { 305 display: block; 306 } 307 308 .custom-dropdown .custom-dropdown-item { 309 display: block; 310 width: 100%; 311 padding: 0.375em 1em; 312 color: #333; 313 text-decoration: none; 314 background: none; 315 border: 0; 316 position: relative; 317 318 &.disabled { 319 opacity: .5; 320 pointer-events: none; 321 } 322 323 .custom-dropdown-item-check { 324 position: absolute; 325 top: 0; 326 left: 0; 327 width: 100%; 328 height: 100%; 329 display: flex; 330 align-items: center; 331 justify-content: center; 332 padding-top: 35%; 333 text-align: center; 334 } 335 336 /* 337 input{ 338 opacity: 0; 339 position: absolute; 340 + label{ 341 cursor: pointer; 342 width: 100%; 343 height: 100%; 344 display: flex; 345 align-items: center; 346 justify-content: center; 347 background: transparent; 348 font-size: .6em; 349 white-space: nowrap; 350 } 351 &:checked + label{ 352 background: #f1f1f1; 353 } 354 }*/ 355 } 356 357 .custom-dropdown .custom-dropdown-item:hover, 358 .custom-dropdown .custom-dropdown-item:focus { 359 background: #f6f6f6; 360 color: #16181b; 361 outline: none; 362 } 363 364 product-list[aria-busy="true"] { 365 pointer-events: none; 366 } 367 product-list[aria-busy="true"] .e-productlist-item { 368 opacity: .6; 369 filter: saturate(.85) contrast(.98); 370 transition: opacity .2 ease; 371 } 372 373 </style>

Corporate wear

More than sportswear

Passion for shirts

Made to last

Tidløst Corporate Wear

Corporate Wear med et klassisk
og tidløst design forfinet
siden 1983

Fælles identitet

Tøj der understreger en fælles
identitet og styrker
fællesskabet

Find jeres farve

Vælg mellem mere end 60+
farver - der er også en
farve til jer

Ingen kompromiser

Skabt til at kunne bruges igen
og igen - holder pasform
og farve

keyboard_arrow_up