wickes-css2 2.102.0-lg-788-improve-mini-basket.6 → 2.103.0-gift-cards.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/Readme.md +1 -3
  2. package/build/css/category-main.css +1 -1
  3. package/build/css/components/card-product-banner.css +1 -1
  4. package/build/css/components/checkout-payment-details-v2.css +1 -1
  5. package/build/css/homepage-main.css +1 -1
  6. package/build/css/kitchen-plp-main.css +1 -1
  7. package/build/css/main.css +1 -1
  8. package/build/css/my-account-main-v2.css +1 -1
  9. package/build/css/my-account-main.css +1 -1
  10. package/build/css/pages/my-account-v2.css +1 -1
  11. package/build/css/pages/page_checkout_delivery-new.css +1 -1
  12. package/build/css/pages/page_products-list-combined.css +1 -1
  13. package/build/css/pages/page_products-list.css +1 -1
  14. package/build/css/pdp-main-before-combine.css +1 -1
  15. package/build/css/pdp-main-non-critical.css +1 -1
  16. package/build/css/pdp-main.css +1 -1
  17. package/build/css/plp-main.css +1 -1
  18. package/build/css/store-locator-main.css +1 -1
  19. package/build/img/giftcard.svg +28 -0
  20. package/build/js/account-members.min.js +1 -1
  21. package/build/js/basket.min.js +2 -2
  22. package/build/js/bundle.min.js +1 -1
  23. package/build/js/checkout.min.js +2 -2
  24. package/build/js/emulation.min.js +76 -1024
  25. package/build/js/general.bundle.min.js +1 -1
  26. package/build/js/gift-cards.min.js +1 -0
  27. package/build/js/merged-checkout.min.js +2 -2
  28. package/build/js/page/basket-v2.js +244 -138
  29. package/build/js/page/components/discounts.js +6 -6
  30. package/build/js/page/components/gift-cards.js +610 -0
  31. package/build/js/page/components/toggle-password-visibility.js +22 -0
  32. package/build/js/page/plp-cards-v2.js +6 -15
  33. package/build/js/page/plp-load-more.js +1 -1
  34. package/build/js/page/utils/gift-cards-utils.js +43 -0
  35. package/build/js/page/utils/show-hide-input.js +28 -0
  36. package/build/js/pdp.bundle.min.js +1 -1
  37. package/build/js/plp.bundle.min.js +1 -1
  38. package/build/js/project-list.min.js +1 -1
  39. package/build/js/toggle-password-visibility.min.js +1 -0
  40. package/package.json +2 -2
  41. package/src/components/card_product_v2.hbs +5 -10
  42. package/src/components/checkout-payment-details-v2.hbs +2 -1
  43. package/src/components/gift-cards-hint.hbs +9 -0
  44. package/src/components/gift-cards.hbs +89 -0
  45. package/src/components/giftcard-chip.hbs +23 -0
  46. package/src/components/injected-content.hbs +1 -1
  47. package/src/components/mini-basket/mini-basket-empty.hbs +13 -3
  48. package/src/components/mini-basket/mini-basket.hbs +13 -32
  49. package/src/components/mini-basket/product-item.hbs +16 -37
  50. package/src/data/data_confirmation-summary.json +2 -4
  51. package/src/data/data_mini-basket.json +80 -4
  52. package/src/data/data_search-results_v2.json +141 -56
  53. package/src/data/my-account/data_my-account.json +6 -0
  54. package/src/elements/form-row.hbs +1 -1
  55. package/src/elements/input.hbs +31 -2
  56. package/src/img/giftcard.svg +28 -0
  57. package/src/js/components/general/cart-slider.js +0 -3
  58. package/src/js/components/general/create-popup-slider.js +1 -4
  59. package/src/js/components/general/mini-basket-slider.js +8 -0
  60. package/src/js/components/product-banner.js +148 -0
  61. package/src/js/emulation/checkout-data.js +35 -0
  62. package/src/js/emulation/checkout-payment-details.js +23 -14
  63. package/src/js/emulation/custom-slider-emulation.js +10 -4
  64. package/src/js/emulation/forms.js +7 -2
  65. package/src/js/page/basket-v2.js +244 -138
  66. package/src/js/page/components/discounts.js +6 -6
  67. package/src/js/page/components/gift-cards.js +610 -0
  68. package/src/js/page/components/toggle-password-visibility.js +22 -0
  69. package/src/js/page/plp-cards-v2.js +6 -15
  70. package/src/js/page/plp-load-more.js +1 -1
  71. package/src/js/page/utils/gift-cards-utils.js +43 -0
  72. package/src/js/page/utils/show-hide-input.js +28 -0
  73. package/src/layouts/base.hbs +6 -0
  74. package/src/page_my-account_change-password.html +1 -0
  75. package/src/page_payment-details-with-gift-card.html +2 -1
  76. package/src/page_plp_v2.html +6 -16
  77. package/src/page_search-results.html +2 -12
  78. package/src/page_tradePro_rewards_home_installer_message.html +56 -0
  79. package/src/page_tradePro_rewards_instore_installer_message.html +77 -0
  80. package/src/partials/scripts.hbs +0 -1
  81. package/src/scss/components/_custom-slider.scss +3 -125
  82. package/src/scss/components/_gift-cards.scss +357 -0
  83. package/src/scss/components/_popover-mini-basket.scss +4 -0
  84. package/src/scss/components/card-product-banner.scss +3 -91
  85. package/src/scss/components/checkout-payment-details-v2.scss +2 -0
  86. package/src/scss/pages/my-account-v2.scss +29 -0
  87. package/src/scss/pages/page_checkout_delivery-new.scss +19 -0
  88. package/src/scss/pages/page_products-list-combined.scss +0 -11
  89. package/src/scss/pages/page_products-list.scss +0 -8
  90. package/src/sitemap.html +8 -0
  91. package/build/js/mini-basket-slider.min.js +0 -1
  92. package/build/js/page/basket/basket-update-cart-action.js +0 -60
  93. package/build/js/page/basket/basket-update-cart.js +0 -29
  94. package/build/js/page/basket/basket-utils.js +0 -50
  95. package/build/js/page/basket/mini-basket-total.js +0 -97
  96. package/build/js/page/basket/quantity-change-handler.js +0 -56
  97. package/build/js/page/basket/update-quantity-operation.js +0 -37
  98. package/build/js/page/basket/update-quantity.js +0 -65
  99. package/build/js/page/components/mini-basket-slider.js +0 -535
  100. package/src/components/card_sponsor_banner.hbs +0 -8
  101. package/src/components/card_sponsor_product.hbs +0 -6
  102. package/src/components/mini-basket/mini-basket-order-item.hbs +0 -73
  103. package/src/js/components/banner-placement-manager.js +0 -258
  104. package/src/js/components/toggle-password-visibility.js +0 -58
  105. package/src/js/emulation/banner-placement-manager.js +0 -53
  106. package/src/js/emulation/mini-basket-data.js +0 -949
  107. package/src/js/page/basket/basket-update-cart-action.js +0 -60
  108. package/src/js/page/basket/basket-update-cart.js +0 -29
  109. package/src/js/page/basket/basket-utils.js +0 -50
  110. package/src/js/page/basket/mini-basket-total.js +0 -97
  111. package/src/js/page/basket/quantity-change-handler.js +0 -56
  112. package/src/js/page/basket/update-quantity-operation.js +0 -37
  113. package/src/js/page/basket/update-quantity.js +0 -65
  114. package/src/js/page/components/mini-basket-slider.js +0 -535
@@ -0,0 +1,43 @@
1
+ const SUMMARY_SELECTORS = {
2
+ subTotal: { item: '.checkout-widget__item-bold', value: '.checkout-widget__item-value', title: 'Items subtotal:' },
3
+ vat: { item: '.checkout-widget__item-vat', value: '.checkout-widget__item-value', title: 'VAT:' },
4
+ clickAndCollectCost: { item: '.checkout-widget__item-cc', value: '.checkout-widget__item-value', title: 'Click & Collect:' },
5
+ deliveryCost: { item: '.checkout-widget__item-delivery', value: '.checkout-widget__item-value', title: 'Delivery:' },
6
+ charityPrice: { item: '.checkout-widget__item-charity', value: '.checkout-widget__item-value', title: 'Charity donation:' },
7
+ discountTotal: { item: '.checkout-widget__details-discount', value: '.checkout-widget__detail-value' },
8
+ total: { item: '.checkout-widget__total', value: '.checkout-widget__total-value' },
9
+ giftCardApplied: { item: '.checkout-widget__gift-card', value: '.checkout-widget__total-value', title: 'Gift Card:' },
10
+ };
11
+
12
+ export function formatGc16(raw) {
13
+ const digits = String(raw || '').replace(/\D/g, '').slice(0, 16);
14
+ return digits.replace(/(\d{4})(?=\d)/g, '$1-');
15
+ }
16
+
17
+ export function buildHintContext(count, limit) {
18
+ const max = count >= limit;
19
+ return {
20
+ canAdd: !max,
21
+ max,
22
+ hintClass: `giftcard-summary__hint${max ? ' giftcard-summary__hint--max' : ''}`,
23
+ };
24
+ }
25
+
26
+ export function buildChipData($root, numberSelector) {
27
+ const digits = String($root.find(numberSelector).val() || '').replace(/\D/g, '');
28
+ const last5 = digits.slice(-5);
29
+ const id= `giftcard_${Date.now()}`;
30
+ const $giftcard = $root.closest('.giftcard');
31
+ const currency = $giftcard.data('currency') || '£';
32
+ const amount= ($giftcard.data('amount') != null ? $giftcard.data('amount') : '100.00');
33
+ return { id, last5, currency, amount };
34
+ }
35
+
36
+ export function buildSummaryEqualMap(data) {
37
+ return Object.entries(SUMMARY_SELECTORS).map(([key, d]) => ({
38
+ item: d.item,
39
+ itemValue: d.value,
40
+ dataValue: data[key],
41
+ ...(d.title ? { title: d.title } : {}),
42
+ }));
43
+ }
@@ -0,0 +1,28 @@
1
+ export function initializeInputToggle($container) {
2
+ const $input = $container.find('input');
3
+ const $toggle = $container.find('.toggle-show');
4
+
5
+ if (!$input.length || !$toggle.length) return;
6
+
7
+ const handleToggleClick = (e) => {
8
+ e.preventDefault();
9
+
10
+ const isPassword = String($input.attr('type')) === 'password';
11
+ $input.attr('type', isPassword ? 'text' : 'password');
12
+ const $icon = $toggle.find('svg, i').first();
13
+
14
+ if ($icon.length) {
15
+ $icon.removeClass('fa-eye fa-eye-slash').addClass(isPassword ? 'fa-eye' : 'fa-eye-slash');
16
+ }
17
+ };
18
+
19
+ const updateToggleVisibility = () => {
20
+ $toggle.toggle(($input.val() || '').length > 0);
21
+ };
22
+
23
+ $toggle.off('click.passwordToggle mousedown.passwordToggle')
24
+ .on('mousedown.passwordToggle', handleToggleClick);
25
+
26
+ $input.off('input.passwordToggle').on('input.passwordToggle', updateToggleVisibility);
27
+ updateToggleVisibility();
28
+ }
@@ -39,6 +39,12 @@
39
39
  {{> footer }}
40
40
  {{/block}}
41
41
 
42
+ {{#if miniBasketEmpty}}
43
+ {{> mini-basket/mini-basket-empty }}
44
+ {{else}}
45
+ {{> mini-basket/mini-basket }}
46
+ {{/if}}
47
+
42
48
  {{#block "foot"}}
43
49
  {{> scripts }}
44
50
  {{/block}}
@@ -62,5 +62,6 @@
62
62
  }}
63
63
  <script src="./js/pstrength.min.js"></script>
64
64
  <script src="./js/change-password.min.js"></script>
65
+ <script src="./js/toggle-password-visibility.min.js"></script>
65
66
  {{/content}}
66
67
  {{/extend}}
@@ -61,7 +61,8 @@
61
61
  <script defer src="./js/page/checkout-payment-details.js"></script>
62
62
  <script defer src="./js/page/klarna-modal-scroll-disable.js"></script>
63
63
  <script defer src="./js/page/billie-business-type.js"></script>
64
+ <script defer src="./js/gift-cards.min.js"></script>
64
65
  {{> checkout-terms-and-conditions-modal }}
65
- {{> payment-loader hidden=true spinnerTypes=(array "billie-logo" "clearpay-logo" "paypal-logo")}}
66
+ {{> loader hidden=true modifier="page-loader"}}
66
67
  {{/content}}
67
68
  {{/extend}}
@@ -1,4 +1,4 @@
1
- {{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page retail-media" title="Products list" globalSearchV2="true" pagePlp=true}}
1
+ {{#extend "base" hybrisClass="hybris-class" pageClass="products-list-page" title="Products list" globalSearchV2="true" pagePlp=true}}
2
2
  {{#content "head" mode="append" pagePlp=true}}
3
3
  <link type="text/css" rel="stylesheet" href="./css/components/global-search.css">
4
4
  {{/content}}
@@ -32,23 +32,13 @@
32
32
  </div>
33
33
 
34
34
  <div class="products-list products-list-v2">
35
- {{#each search-result_v2.products}}
36
- {{>card_product_v2}}
35
+ {{#each plp_load-more.results}}
36
+ {{>card_product_v2}}
37
37
  {{/each}}
38
38
  {{#if search-result_v2.product-banner}}
39
- {{#each search-result_v2.product-banner}}
40
- {{>card_product_banner_v2}}
41
- {{/each}}
42
- {{/if}}
43
- {{#if search-result_v2.sponsor-banner}}
44
- {{#each search-result_v2.sponsor-banner}}
45
- {{>card_sponsor_banner}}
46
- {{/each}}
47
- {{/if}}
48
- {{#if search-result_v2.sponsor-product}}
49
- {{#each search-result_v2.sponsor-product}}
50
- {{>card_sponsor_product}}
51
- {{/each}}
39
+ {{#each search-result_v2.product-banner}}
40
+ {{>card_product_banner_v2}}
41
+ {{/each}}
52
42
  {{/if}}
53
43
  </div>
54
44
  <div class="load-more-wrap">
@@ -42,19 +42,9 @@
42
42
  </div>
43
43
 
44
44
  <div class="products-list products-list-v2">
45
- {{#each search-result_v2.products}}
46
- {{>card_product_v2}}
45
+ {{#each plp_energy-efficiency.products}}
46
+ {{> card_product_v2}}
47
47
  {{/each}}
48
- {{#if search-result_v2.sponsor-banner}}
49
- {{#each search-result_v2.sponsor-banner}}
50
- {{>card_sponsor_banner}}
51
- {{/each}}
52
- {{/if}}
53
- {{#if search-result_v2.sponsor-product}}
54
- {{#each search-result_v2.sponsor-product}}
55
- {{>card_sponsor_product}}
56
- {{/each}}
57
- {{/if}}
58
48
  </div>
59
49
 
60
50
  <div class="sort-products-list">
@@ -0,0 +1,56 @@
1
+ {{#extend "my-account-v2"
2
+ pageClass="page_tradePro-rewards my-account"
3
+ title="TradePro Rewards (Installer message)"
4
+ logo-tp=true
5
+ tradepro-nav=true
6
+ pageMyAcc=true
7
+ myAccV2=true
8
+ isLoggedIn=true
9
+ mainClass="pt-0"
10
+ dataBreadcrumbs=my_account.tradeProRewards.breadcrumbsHomePage
11
+ }}
12
+ {{#content "head" mode="append"}}
13
+ <link type="text/css" rel="stylesheet" href="./css/pages/tradePro-rewards.css">
14
+ {{/content}}
15
+ {{#content "main"}}
16
+ <div class="container">
17
+ <div class="row">
18
+ <div class="col-12">
19
+ {{> my-account/mobile-nav
20
+ menu=my_account.tradepro.menu
21
+ active-index=4
22
+ page-name=my_account.tradepro.menu.[4].title
23
+ }}
24
+ </div>
25
+ </div>
26
+ </div>
27
+
28
+ <div class="my-account__banner-wrapper my-account__banner-wrapper--background">
29
+ <div class="container">
30
+ <div class="row">
31
+ <div class="col-12">
32
+ {{> notifications my_account.tradepro.banner withCloseBtn="true"}}
33
+ </div>
34
+ </div>
35
+ </div>
36
+ </div>
37
+
38
+ {{#extend "cards-slider"
39
+ title="TradePro Rewards"
40
+ }}
41
+ {{#content "cards"}}
42
+ {{#each page_tradePro_cards.reward_cards}}
43
+ {{> reward_card
44
+ modificator="swiper-slide"
45
+ imgSrc=imgSrc
46
+ title=title
47
+ description=description
48
+ btnText=btnText
49
+ btnUrl=btnUrl
50
+ }}
51
+ {{/each}}
52
+ {{/content}}
53
+ {{/extend}}
54
+
55
+ {{/content}}
56
+ {{/extend}}
@@ -0,0 +1,77 @@
1
+ {{#extend
2
+ "my-account-v2"
3
+ pageClass="page_tradePro-rewards my-account"
4
+ title="TradePro Rewards (Installer message)"
5
+ logo-tp=true
6
+ tradepro-nav=true
7
+ pageMyAcc=true
8
+ myAccV2=true
9
+ isLoggedIn=true
10
+ mainClass="pt-0"
11
+ dataBreadcrumbs=my_account.tradeProRewards.breadcrumbsDetailsPage
12
+ }}
13
+ {{#content "head" mode="append"}}
14
+ <link type="text/css" rel="stylesheet" href="./css/pages/tradePro-rewards.css">
15
+ {{/content}}
16
+ {{#content "main"}}
17
+ <div class="container">
18
+ <div class="row">
19
+ <div class="col-12">
20
+ {{> my-account/mobile-nav
21
+ menu=my_account.tradepro.menu
22
+ active-index=4
23
+ page-name=my_account.tradepro.menu.[4].title
24
+ }}
25
+ </div>
26
+ </div>
27
+ </div>
28
+
29
+ <div class="my-account__banner-wrapper">
30
+ <div class="container">
31
+ <div class="row">
32
+ <div class="col-12">
33
+ {{> notifications my_account.tradepro.banner withCloseBtn="true"}}
34
+ </div>
35
+ </div>
36
+ </div>
37
+ </div>
38
+
39
+ <div class="container top-indent">
40
+ <div class="row">
41
+ <div class="col-12">
42
+ {{#with page_tradePro_vouchers.instore}}
43
+ <h1 class="text-start">{{title}}</h1>
44
+ {{> voucher
45
+ mod="mb-1"
46
+ }}
47
+ {{/with}}
48
+ {{#extend "accordion" header=page_tradePro_vouchers.terms.title collapsed="accordion_collapsed voucher--terms" hidden="hidden-state"}}
49
+ {{#content "content"}}{{page_tradePro_vouchers.terms.text}}{{/content}}
50
+ {{/extend}}
51
+ </div>
52
+ </div>
53
+ </div>
54
+
55
+ {{#extend "cards-slider"
56
+ title="Other TradePro Rewards"
57
+ secondary=true
58
+ }}
59
+ {{#content "cards"}}
60
+ {{#each page_tradePro_cards.reward_cards}}
61
+ {{> reward_card
62
+ modificator="swiper-slide"
63
+ imgSrc=imgSrc
64
+ title=title
65
+ description=description
66
+ btnText=btnText
67
+ btnUrl=btnUrl
68
+ }}
69
+ {{/each}}
70
+ {{/content}}
71
+ {{/extend}}
72
+
73
+ {{/content}}
74
+ {{#content "foot" mode="append"}}
75
+ <script defer src="./js/tradePro-rewards.min.js"></script>
76
+ {{/content}}
77
+ {{/extend}}
@@ -14,7 +14,6 @@
14
14
  <script src="./js/basket.min.js"></script>
15
15
  {{/ifCond}}
16
16
  {{!-- BUNDLES END --}}
17
- <script src="./js/mini-basket-slider.min.js"></script>
18
17
  <script src="./js/emulation.min.js"></script>
19
18
  <script defer src="https://kit.fontawesome.com/b73abc6840.js" crossorigin="anonymous"></script>
20
19
  {{#if pagePdp}}
@@ -80,19 +80,6 @@
80
80
  }
81
81
  }
82
82
 
83
- &__notifications {
84
- &:has(.notification) {
85
- margin-top: 16px;
86
- }
87
-
88
- .notification:only-child {
89
- @include font-size(14);
90
- @include line-height(24);
91
- margin-bottom: 0;
92
- border-bottom: none;
93
- }
94
- }
95
-
96
83
  &__message {
97
84
  margin-top: 8px;
98
85
  display: flex;
@@ -172,32 +159,6 @@
172
159
  &__details {
173
160
  flex: 1;
174
161
 
175
- &-header {
176
- display: flex;
177
- align-items: flex-start;
178
- justify-content: space-between;
179
- grid-gap: 8px;
180
-
181
- .btn--remove {
182
- min-width: 24px;
183
- padding: 4px;
184
- background: 0 0;
185
- border: none;
186
- display: flex;
187
- align-items: center;
188
- justify-content: center;
189
-
190
- .remove-icon {
191
- color: $blue;
192
- font-size: 1rem;
193
- }
194
- }
195
- }
196
-
197
- &-body {
198
- margin-top: 4px;
199
- }
200
-
201
162
  .item,
202
163
  .price {
203
164
  margin-bottom: 0;
@@ -229,8 +190,8 @@
229
190
  }
230
191
 
231
192
  .price {
232
- @include font-size(16);
233
- @include line-height(20);
193
+ @include font-size(18);
194
+ @include line-height(24);
234
195
  margin-top: 8px;
235
196
  font-weight: 700;
236
197
  color: $blue-dark;
@@ -245,54 +206,6 @@
245
206
  &.product-card__content {
246
207
  margin-top: 0;
247
208
  padding: 0;
248
- height: 100%;
249
- display: flex;
250
- flex-direction: column;
251
- }
252
- }
253
-
254
- &__quantity-control {
255
- display: flex;
256
- align-items: center;
257
- margin-top: 8px;
258
-
259
- .quantity {
260
- margin-bottom: 0;
261
- min-width: 40px;
262
- text-align: center;
263
- padding: 0 5px;
264
-
265
- .product-card__quantity-value {
266
- margin: 0;
267
- font-weight: 400;
268
- }
269
- }
270
-
271
- .btn--quantity {
272
- background: none;
273
- padding: 0;
274
- width: 24px;
275
- min-height: 24px;
276
- display: inline-flex;
277
- align-items: center;
278
- justify-content: center;
279
-
280
- .quantity-cta-icon {
281
- font-size: 1.35rem;
282
- color: $blue;
283
- }
284
-
285
- &[disabled] {
286
- border: none;
287
- opacity: 0.6;
288
- }
289
- }
290
- }
291
-
292
- .btn--remove,
293
- .btn--quantity {
294
- &:hover {
295
- opacity: 0.7;
296
209
  }
297
210
  }
298
211
 
@@ -305,17 +218,6 @@
305
218
  }
306
219
  }
307
220
  }
308
-
309
- &__offers {
310
- margin-top: 4px;
311
-
312
- .products__promo {
313
- @include font-size(12);
314
- @include line-height(16);
315
- color: $red;
316
- font-weight: 400;
317
- }
318
- }
319
221
  }
320
222
 
321
223
  &__footer {
@@ -422,7 +324,7 @@
422
324
  font-weight: 500;
423
325
  }
424
326
 
425
- &-value {
327
+ .value {
426
328
  @include font-size(18);
427
329
  @include line-height(24);
428
330
  font-weight: 700;
@@ -552,30 +454,6 @@
552
454
  }
553
455
  }
554
456
 
555
- @include media-breakpoint-up(sm) {
556
- .custom-slider {
557
- .products__details {
558
- .price {
559
- @include font-size(18);
560
- @include line-height(24);
561
-
562
- .inc {
563
- @include font-size(12);
564
- @include line-height(16);
565
- font-weight: 500;
566
- }
567
- }
568
-
569
- &-footer {
570
- display: flex;
571
- align-items: center;
572
- justify-content: space-between;
573
- margin-top: auto;
574
- }
575
- }
576
- }
577
- }
578
-
579
457
  @include media-breakpoint-up(sm) {
580
458
  .custom-slider {
581
459
  &__wrap {