www.ftballoffici.com
Open in
urlscan Pro
2606:4700::6811:f677
Public Scan
Submitted URL: http://ftballoffici.com/collections/mlfcfb
Effective URL: https://www.ftballoffici.com/collections/manchester-united
Submission: On October 31 via api from US — Scanned from CA
Effective URL: https://www.ftballoffici.com/collections/manchester-united
Submission: On October 31 via api from US — Scanned from CA
Form analysis
11 forms found in the DOMGET
<form id="app-smart-search-form-3" class="smart-search-form" method="GET" is="spz-form" @submit="app-smart-search-3.handleSearchSubmit(value=event.q);">
<div class="smart-search-input-content">
<svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
<path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
fill="currentColor"></path>
</svg>
<input class="smart-search-input" type="search" name="q" spz-if="${data.isOpenAutoThink}" @input-debounced="app-smart-search-3.handleFormInput(keyword=event.value);" autocorrect="off" autocomplete="off" autocapitalize="off" spellcheck="false">
<input class="smart-search-input" type="search" name="q" spz-else="">
<ljs-carousel class="hot-keyword-carousel" spz-if="${data.isOpenFindKeyword}" layout="container" loop="" autoplay="" delay="3000" direct="vertical" @slideend="app-smart-search-3.handleFindKeyword(index=event.index);">
<span class="hot-keyword line-clamp-1" spz-for="(item,index) in data.findKeywordList" key="index">${item}</span>
</ljs-carousel>
<button class="smart-search-reset-btn" type="reset" @tap="app-smart-search-form-3.clear();app-smart-search-3.handleFormInput(keyword='');">
<svg class="icon_header_input_close icon-smart-search-reset" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
<path
d="M2.746 1.992a.2.2 0 0 0-.283 0l-.471.471a.2.2 0 0 0 0 .283L5.245 6 1.992 9.25a.2.2 0 0 0 0 .283l.471.472a.2.2 0 0 0 .283 0L6 6.753l3.252 3.253a.2.2 0 0 0 .283 0l.472-.472a.2.2 0 0 0 0-.283L6.753 6l3.253-3.253a.2.2 0 0 0 0-.283l-.472-.471a.2.2 0 0 0-.283 0L6 5.245 2.746 1.992z"
fill="currentColor"></path>
</svg>
</button>
</div>
<button type="submit" class="smart-search-submit-btn button-primary tw-primary-btn tw-primary-light-btn">
<svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
<path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
fill="currentColor"></path>
</svg>
</button>
</form>
GET /search
<form action="/search" method="get" class="tw-max-w-[250px] tw-mr-11">
<div tabindex="-1" class="tw-flex tw-relative header__search">
<input autocomplete="off" name="q" type="text"
class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global tw-border-none tw-placeholder-current header__search-input" placeholder="Search...">
<button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg></button>
<button type="button"
class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close lg:tw-absolute lg:tw--right-11 lg:tw-h-full "><svg class=""
width="14" height="14" xmlns="http://www.w3.org/2000/svg">
<path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
</svg></button>
</div>
</form>
GET
<form id="app-smart-search-form-70" class="smart-search-form" method="GET" is="spz-form" @submit="app-smart-search-70.handleSearchSubmit(value=event.q);">
<div class="smart-search-input-content">
<svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
<path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
fill="currentColor"></path>
</svg>
<input class="smart-search-input" type="search" name="q" spz-if="${data.isOpenAutoThink}" @input-debounced="app-smart-search-70.handleFormInput(keyword=event.value);" autocorrect="off" autocomplete="off" autocapitalize="off" spellcheck="false">
<input class="smart-search-input" type="search" name="q" spz-else="">
<ljs-carousel class="hot-keyword-carousel" spz-if="${data.isOpenFindKeyword}" layout="container" loop="" autoplay="" delay="3000" direct="vertical" @slideend="app-smart-search-70.handleFindKeyword(index=event.index);">
<span class="hot-keyword line-clamp-1" spz-for="(item,index) in data.findKeywordList" key="index">${item}</span>
</ljs-carousel>
<button class="smart-search-reset-btn" type="reset" @tap="app-smart-search-form-70.clear();app-smart-search-70.handleFormInput(keyword='');">
<svg class="icon_header_input_close icon-smart-search-reset" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
<path
d="M2.746 1.992a.2.2 0 0 0-.283 0l-.471.471a.2.2 0 0 0 0 .283L5.245 6 1.992 9.25a.2.2 0 0 0 0 .283l.471.472a.2.2 0 0 0 .283 0L6 6.753l3.252 3.253a.2.2 0 0 0 .283 0l.472-.472a.2.2 0 0 0 0-.283L6.753 6l3.253-3.253a.2.2 0 0 0 0-.283l-.472-.471a.2.2 0 0 0-.283 0L6 5.245 2.746 1.992z"
fill="currentColor"></path>
</svg>
</button>
</div>
<button type="submit" class="smart-search-submit-btn button-primary tw-primary-btn tw-primary-light-btn">
<svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
<path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
fill="currentColor"></path>
</svg>
</button>
</form>
GET /search
<form action="/search" method="get" class="">
<div tabindex="-1" class="tw-flex tw-relative header__search">
<input autocomplete="off" name="q" type="text"
class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global tw-border-none tw-placeholder-current header__search-input" placeholder="Search...">
<button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg></button>
<button type="button"
class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close lg:tw-absolute lg:tw--right-11 lg:tw-h-full "><svg class=""
width="14" height="14" xmlns="http://www.w3.org/2000/svg">
<path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
</svg></button>
</div>
</form>
GET
<form id="app-smart-search-form-966" class="smart-search-form" method="GET" is="spz-form" @submit="app-smart-search-966.handleSearchSubmit(value=event.q);">
<div class="smart-search-input-content">
<svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
<path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
fill="currentColor"></path>
</svg>
<input class="smart-search-input" type="search" name="q" spz-if="${data.isOpenAutoThink}" @input-debounced="app-smart-search-966.handleFormInput(keyword=event.value);" autocorrect="off" autocomplete="off" autocapitalize="off" spellcheck="false">
<input class="smart-search-input" type="search" name="q" spz-else="">
<ljs-carousel class="hot-keyword-carousel" spz-if="${data.isOpenFindKeyword}" layout="container" loop="" autoplay="" delay="3000" direct="vertical" @slideend="app-smart-search-966.handleFindKeyword(index=event.index);">
<span class="hot-keyword line-clamp-1" spz-for="(item,index) in data.findKeywordList" key="index">${item}</span>
</ljs-carousel>
<button class="smart-search-reset-btn" type="reset" @tap="app-smart-search-form-966.clear();app-smart-search-966.handleFormInput(keyword='');">
<svg class="icon_header_input_close icon-smart-search-reset" width="12" height="12" xmlns="http://www.w3.org/2000/svg">
<path
d="M2.746 1.992a.2.2 0 0 0-.283 0l-.471.471a.2.2 0 0 0 0 .283L5.245 6 1.992 9.25a.2.2 0 0 0 0 .283l.471.472a.2.2 0 0 0 .283 0L6 6.753l3.252 3.253a.2.2 0 0 0 .283 0l.472-.472a.2.2 0 0 0 0-.283L6.753 6l3.253-3.253a.2.2 0 0 0 0-.283l-.472-.471a.2.2 0 0 0-.283 0L6 5.245 2.746 1.992z"
fill="currentColor"></path>
</svg>
</button>
</div>
<button type="submit" class="smart-search-submit-btn button-primary tw-primary-btn tw-primary-light-btn">
<svg class="icon-search " width="18" height="18" xmlns="http://www.w3.org/2000/svg">
<path opacity=".01" fill="currentColor" d="M0 0h18v18H0z"></path>
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.41 13.885a6.923 6.923 0 1 1 .839-.728l3.412 3.413a.554.554 0 0 1-.783.783l-3.462-3.462a.383.383 0 0 1-.006-.006Zm1.713-5.577a5.815 5.815 0 1 1-11.63 0 5.815 5.815 0 0 1 11.63 0Z"
fill="currentColor"></path>
</svg>
</button>
</form>
GET /search
<form action="/search" method="get" class="">
<div tabindex="-1" class="tw-flex tw-relative header__search">
<input autocomplete="off" name="q" type="text"
class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global tw-border-none tw-placeholder-current header__search-input" placeholder="Search...">
<button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg></button>
<button type="button"
class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close lg:tw-absolute lg:tw--right-11 lg:tw-h-full "><svg class=""
width="14" height="14" xmlns="http://www.w3.org/2000/svg">
<path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
</svg></button>
</div>
</form>
GET /search
<form action="/search" method="get" class="">
<div tabindex="-1" class="tw-flex tw-relative header__search">
<input autocomplete="off" name="q" type="text"
class="tw-w-full tw-flex-1 tw-h-10 tw-py-0 tw-pl-[14px] tw-pr-13 tw-bg-header-search tw-text-current tw-text-sm tw-leading-none tw-rounded-global tw-border-none tw-placeholder-current header__search-input" placeholder="Search...">
<button type="submit" class="tw-flex tw-items-center tw-px-[14px] tw-m-0 tw-bg-transparent tw-text-current tw-border-none tw-outline-none tw-cursor-pointer tw-h-full tw-absolute tw-right-0 header__search-icon" tabindex="-1"><svg class=""
width="24" height="24" xmlns="http://www.w3.org/2000/svg">
<path d="M11.16 1a9.16 9.16 0 1 1 0 18.322A9.16 9.16 0 0 1 11.16 1zm0 1.629a7.532 7.532 0 1 0 0 15.064 7.532 7.532 0 0 0 0-15.064zm5.465 14.148 1.152-1.152L23 20.848 21.848 22l-5.223-5.223z" fill="currentColor"></path>
</svg></button>
<button type="button" class="tw-hidden tw-justify-center tw-items-center tw-pr-2 tw-pl-6 tw-m-0 tw-bg-transparent tw-text-header-color tw-border-none tw-outline-none tw-cursor-pointer header__search-close "><svg class="" width="14" height="14"
xmlns="http://www.w3.org/2000/svg">
<path d="m3 3 8.485 8.485m0-8.485L3 11.485" stroke="currentColor" stroke-width="1.6" stroke-linecap="square"></path>
</svg></button>
</div>
</form>
<form class="collection_filter collection__form collection__form_pc collection__form_wrap lg:tw-w-[200px] lg:tw-mr-[56px] tw-flex-shrink-0 collection_filter_form md:tw-hidden tw-pb-14 lg:tw-pb-20">
<div class="tw-sticky tw-top-[100px] tw-max-h-[80vh] tw-overflow-auto collection_filter_list hide-scrollbar">
<div class="tw-body-plus-2 tw-leading-1.2 tw-font-bold">Filter</div>
<div class="collection__filter_actives collection__filter_actives_pc tw-flex tw-flex-wrap tw-items-center tw-pb-6 ">
<a class="collection__filter_actived_wrap collection__filter_clear_all tw-mt-3 tw-py-1 tw-body-plus-2 tw-leading-none tw-cursor-pointer">
Clear all
</a>
</div>
<div class="tw-relative collection__filter_item_wrap collection__filter_item-0 collection__filter_list collection_dropdown-0" data-reset-wrap="filter.v.availability">
<div class="collection__collapsible-wrapper tw-pb-[14px] tw-relative tw-w-full tw-border-solid tw-border-0 tw-select-none">
<header class="tw-cursor-pointer tw-pt-6 tw-pb-4 tw-m-0 collapsible_header tw-body-plus-1 lg:tw-body-plus-2 tw-leading-none tw-flex tw-items-center lg:tw-mt-0 ">
<span class="collapsible_header-label tw-max-w-[175px] tw-flex-grow tw-pr-1 tw-capitalize tw-font-medium tw-break-words"> availability </span><svg
class="collapsible_header-down-icon tw-ml-3 flex-shrink-0 tw-transform tw- tw-transition-all tw-duration-150 tw-scale-[1.3] tw-rotate-180" width="12" height="8" xmlns="http://www.w3.org/2000/svg">
<path d="M11.394 1.505a.7.7 0 0 1 .074.903l-.074.087-4.95 4.95a.697.697 0 0 1-.387.197l-.107.008a.698.698 0 0 1-.408-.131l-.087-.074-4.95-4.95a.7.7 0 0 1 .903-1.064l.087.074 4.454 4.454 4.456-4.454a.7.7 0 0 1 .99 0z" fill="currentColor">
</path>
</svg>
</header>
<div class="collapsible_content tw-pb-4">
<ul class="tw-p-0 tw-m-0 tw-transition-all lg:tw-space-y-3 tw-list-none ">
<li>
<input type="checkbox" name="filter.v.availability" value="1" id="filter-filter.v.availability-1" class="tw-hidden">
<label class="tw-relative tw-flex tw-items-center tw-cursor-pointer" for="filter-filter.v.availability-1">
<span class="tw-body-plus-2 tw-leading-1.4 tw-break-words filter_value_content tw-max-w-[calc(100%-28px)] tw-capitalize "> In stock <span data-filter-value-id="filter_1">(72)</span>
</span>
<i class="tw-absolute tw-flex tw-items-center tw-justify-center tw-w-5 tw-h-5">
<svg class="tw-text-text-color" width="17" height="17" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.306 3.702a.768.768 0 0 1 .14 1.096l-7 8.782a.811.811 0 0 1-1.197.073l-4.5-4.391a.767.767 0 0 1 0-1.104.814.814 0 0 1 1.131 0l3.86 3.766 6.443-8.085a.813.813 0 0 1 1.123-.137z" fill="currentColor"></path></svg>
</i>
</label>
</li>
<li>
<input type="checkbox" name="filter.v.availability" value="0" id="filter-filter.v.availability-2" class="tw-hidden" disabled="">
<label class="tw-relative tw-flex tw-items-center tw-cursor-pointer" for="filter-filter.v.availability-2">
<span class="tw-body-plus-2 tw-leading-1.4 tw-break-words filter_value_content tw-max-w-[calc(100%-28px)] tw-opacity-[0.15] tw-capitalize "> Out of stock <span data-filter-value-id="filter_0">(0)</span>
</span>
<i class="tw-absolute tw-flex tw-items-center tw-justify-center tw-w-5 tw-h-5">
<svg class="tw-text-text-color" width="17" height="17" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.306 3.702a.768.768 0 0 1 .14 1.096l-7 8.782a.811.811 0 0 1-1.197.073l-4.5-4.391a.767.767 0 0 1 0-1.104.814.814 0 0 1 1.131 0l3.86 3.766 6.443-8.085a.813.813 0 0 1 1.123-.137z" fill="currentColor"></path></svg>
</i>
</label>
</li>
</ul>
</div>
</div>
</div>
<div class="tw-relative collection__filter_item_wrap collection__filter_item-1 collection__filter_price collection_dropdown-1" data-reset-wrap="filter.v.price">
<div class="collection__collapsible-wrapper tw-pb-[14px] tw-relative tw-w-full tw-border-solid tw-border-0 tw-select-none">
<header class="tw-cursor-pointer tw-pt-6 tw-pb-4 tw-m-0 collapsible_header tw-body-plus-1 lg:tw-body-plus-2 tw-leading-none tw-flex tw-items-center lg:tw-mt-0 ">
<span class="collapsible_header-label tw-max-w-[175px] tw-flex-grow tw-pr-1 tw-capitalize tw-font-medium tw-break-words"> price </span><svg
class="collapsible_header-down-icon tw-ml-3 flex-shrink-0 tw-transform tw- tw-transition-all tw-duration-150 tw-scale-[1.3] tw-rotate-180" width="12" height="8" xmlns="http://www.w3.org/2000/svg">
<path d="M11.394 1.505a.7.7 0 0 1 .074.903l-.074.087-4.95 4.95a.697.697 0 0 1-.387.197l-.107.008a.698.698 0 0 1-.408-.131l-.087-.074-4.95-4.95a.7.7 0 0 1 .903-1.064l.087.074 4.454 4.454 4.456-4.454a.7.7 0 0 1 .99 0z" fill="currentColor">
</path>
</svg>
</header>
<div class="collapsible_content tw-pb-4">
<ul class="tw-p-0 tw-m-0 tw-transition-all lg:tw-space-y-3 tw-list-none ">
<li class="tw-flex tw-flex-col tw-justify-between tw-items-center tw-space-y-1">
<div class="tw-text-center tw-body-plus-2 tw-mb-4">The highest price is <span class="money notranslate">CA$89.96</span></div>
<div class="tw-flex tw-items-center tw-w-[46%] lg:tw-w-full">
<div class="tw-body-plus-2 md:tw-font-medium tw-pr-2 ">$</div>
<input type="text" name="filter.v.price.gte" placeholder="From" oninput="this.value=this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
class="tw-w-full tw-px-4 lg:tw-px-5 tw-py-[14px] tw-body-plus-4 lg:tw-body-plus-2 tw-bg-body tw-text-body-color tw-border tw-border-solid tw-border-line foucs:tw-border-body-color">
</div>
<div class="tw-flex tw-items-center tw-w-[46%] lg:tw-w-full">
<div class="tw-body-plus-2 md:tw-font-medium tw-pr-2 ">$</div>
<input type="text" name="filter.v.price.lte" placeholder="To" oninput="this.value=this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
class="tw-w-full tw-px-4 lg:tw-px-5 tw-py-[14px] tw-body-plus-4 lg:tw-body-plus-2 tw-bg-body tw-text-body-color tw-border tw-border-solid tw-border-line foucs:tw-border-body-color">
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</form>
<form class="collection__form collection__form_md tw-mt-3 tw-flex-1 tw-overflow-x-hidden tw-overscroll-y-auto">
<div class="tw-relative tw-transition-all tw-duration-300" data-current-levels="1">
<ul class="tw-box-border tw-list-none tw-w-full tw-p-0 tw-m-0 tw-absolute tw-top-0 tw-transition-all tw-duration-300 is-active" data-ul="filter_content" data-levels="1">
<li class="filter_next tw-flex tw-items-center tw-py-4 lg:tw-py-5 tw-border-0 tw-border-b tw-border-solid tw-border-btn-color tw-cursor-pointer md:active:tw-bg-[#f8f8f8] tw-px-4 tw-leading-1.3 tw-body-plus-4 tw-font-medium tw-justify-between"
data-next="1">
<span class="tw-capitalize"> Availability </span>
<svg class="filter__modal-next-icon tw-ml-3 tw-flex-shrink-0" width="22" height="22" xmlns="http://www.w3.org/2000/svg">
<path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"></path>
</svg>
</li>
<li class="filter_next tw-flex tw-items-center tw-py-4 lg:tw-py-5 tw-border-0 tw-border-b tw-border-solid tw-border-btn-color tw-cursor-pointer md:active:tw-bg-[#f8f8f8] tw-px-4 tw-leading-1.3 tw-body-plus-4 tw-font-medium tw-justify-between"
data-next="2">
<span class="tw-capitalize"> Price </span>
<svg class="filter__modal-next-icon tw-ml-3 tw-flex-shrink-0" width="22" height="22" xmlns="http://www.w3.org/2000/svg">
<path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"></path>
</svg>
</li>
<div class="tw-flex tw-flex-shrink-0 md:tw-justify-between tw-pt-3 md:tw-py-10 md:tw-px-4">
<div class=" lg:tw-pr-5 lg:tw-body-plus-2 md:tw-text-lg lg:tw-leading-10 md:tw-leading-none">Sort by</div>
<div class="tw-relative">
<select
class="lg:tw-h-10 lg:tw-pl-3 tw-pr-[46px] tw-body-plus-4 lg:tw-leading-none tw-text-text-font-size type-body-font-family md:tw-text-right md:tw-border-none md:tw-bg-transparent lg:tw-secondary-select tw-appearance-none collection_sort_by">
<option name="sort_by" value="manual" selected=""> Featured </option>
<option name="sort_by" value="price-ascending"> Price, low to high </option>
<option name="sort_by" value="price-descending"> Price, high to low </option>
<option name="sort_by" value="published-descending"> Newest in </option>
<option name="sort_by" value="best-selling"> Total sales, high to low </option>
<option name="sort_by" value="add_to_cart_count"> Purchases, high to low </option>
<option name="sort_by" value="views"> Page views, high to low </option>
</select>
<svg class="tw-absolute tw-flex tw-top-1/2 md:tw-right-0 lg:tw-right-3 tw-transform tw--translate-y-1/2 tw-rotate-90 tw-pointer-events-none arrow" width="22" height="22" xmlns="http://www.w3.org/2000/svg">
<path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"></path>
</svg>
</div>
</div>
</ul>
<ul class="tw-box-border tw-list-none tw-w-full tw-p-0 tw-m-0 tw-absolute tw-top-0 tw-transition-all tw-duration-300 tw-left-full collection__filter_item-0 collection__filter_list collection_dropdown-0" data-reset-wrap="filter.v.availability"
data-ul="1" data-levels="2">
<div class="tw-bg-body tw-sticky tw-top-0 tw-z-10 md:active:tw-bg-[#f8f8f8]">
<div class="filter_next tw-flex tw-items-center tw-py-4 lg:tw-py-5 tw-border-0 tw-border-b tw-border-solid tw-border-btn-color tw-cursor-pointer tw-mx-4 tw-leading-1.1 tw-body-plus-4 tw-font-medium" data-next="filter_content">
<svg class="tw-pl-[6px] tw-flex-shrink-0 tw-rotate-180" width="22" height="22" xmlns="http://www.w3.org/2000/svg">
<path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"></path>
</svg>
<span class="tw-uppercase tw-max-w-[calc(100%-34px)] tw-break-words"> Availability </span>
</div>
</div>
<li class="tw-px-4">
<input type="checkbox" name="filter.v.availability" value="1" id="md-filter-filter.v.availability-1" class="tw-hidden">
<label class="tw-relative tw-flex tw-items-center tw-py-4 tw-px-[22px] tw-cursor-pointer" for="md-filter-filter.v.availability-1">
<span class="tw-body-plus-4 tw-leading-1.4 tw-font-medium tw-break-words tw-max-w-[calc(100%-44px)] filter_value_content tw-capitalize "> In stock <span data-filter-value-id="filter_1">(72)</span>
</span>
<i class="tw-absolute tw-flex tw-items-center tw-justify-center tw-w-5 tw-h-5">
<svg class="tw-text-text-color" width="17" height="17" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.306 3.702a.768.768 0 0 1 .14 1.096l-7 8.782a.811.811 0 0 1-1.197.073l-4.5-4.391a.767.767 0 0 1 0-1.104.814.814 0 0 1 1.131 0l3.86 3.766 6.443-8.085a.813.813 0 0 1 1.123-.137z" fill="currentColor"></path></svg>
</i>
</label>
</li>
<li class="tw-px-4">
<input type="checkbox" name="filter.v.availability" value="0" id="md-filter-filter.v.availability-2" class="tw-hidden" disabled="">
<label class="tw-relative tw-flex tw-items-center tw-py-4 tw-px-[22px] tw-cursor-pointer" for="md-filter-filter.v.availability-2">
<span class="tw-body-plus-4 tw-leading-1.4 tw-font-medium tw-break-words tw-max-w-[calc(100%-44px)] filter_value_content tw-opacity-[0.15] tw-capitalize "> Out of stock <span data-filter-value-id="filter_0">(0)</span>
</span>
<i class="tw-absolute tw-flex tw-items-center tw-justify-center tw-w-5 tw-h-5">
<svg class="tw-text-text-color" width="17" height="17" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M14.306 3.702a.768.768 0 0 1 .14 1.096l-7 8.782a.811.811 0 0 1-1.197.073l-4.5-4.391a.767.767 0 0 1 0-1.104.814.814 0 0 1 1.131 0l3.86 3.766 6.443-8.085a.813.813 0 0 1 1.123-.137z" fill="currentColor"></path></svg>
</i>
</label>
</li>
</ul>
<ul class="tw-box-border tw-list-none tw-w-full tw-p-0 tw-m-0 tw-absolute tw-top-0 tw-transition-all tw-duration-300 tw-left-full collection__filter_item-1 collection__filter_price collection_dropdown-1" data-reset-wrap="filter.v.price"
data-ul="2" data-levels="2">
<div class="tw-bg-body tw-sticky tw-top-0 tw-z-10 md:active:tw-bg-[#f8f8f8]">
<div class="filter_next tw-flex tw-items-center tw-py-4 lg:tw-py-5 tw-border-0 tw-border-b tw-border-solid tw-border-btn-color tw-cursor-pointer tw-mx-4 tw-leading-1.1 tw-body-plus-4 tw-font-medium" data-next="filter_content">
<svg class="tw-pl-[6px] tw-flex-shrink-0 tw-rotate-180" width="22" height="22" xmlns="http://www.w3.org/2000/svg">
<path d="M14.576 10.573a.6.6 0 0 1 0 .849L8.99 17.008a.3.3 0 0 1-.424 0l-.51-.51a.3.3 0 0 1 0-.424l5.078-5.077L8.057 5.92a.3.3 0 0 1 0-.424l.509-.509a.3.3 0 0 1 .424 0l5.586 5.586z" fill="currentColor"></path>
</svg>
<span class="tw-uppercase tw-max-w-[calc(100%-34px)] tw-break-words"> Price </span>
</div>
</div>
<li class="tw-pt-8 tw-pb-7 tw-px-6">
<div class="tw-text-center tw-mb-4 tw-text-body-font-size">The highest price is <span class="money notranslate">CA$89.96</span></div>
<div class="tw-flex tw-justify-between tw-items-center">
<div class="tw-flex tw-items-center tw-w-[46%] lg:tw-w-full">
<div class="tw-body-plus-2 md:tw-font-medium tw-pr-2 ">$</div>
<input type="text" name="filter.v.price.gte" placeholder="From" oninput="this.value=this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
class="tw-w-full tw-px-4 lg:tw-px-5 tw-py-[14px] tw-body-plus-4 lg:tw-body-plus-2 tw-bg-body tw-text-body-color tw-border tw-border-solid tw-border-line foucs:tw-border-body-color">
</div>
<div class="tw-flex tw-items-center tw-w-[46%] lg:tw-w-full">
<div class="tw-body-plus-2 md:tw-font-medium tw-pr-2 ">$</div>
<input type="text" name="filter.v.price.lte" placeholder="To" oninput="this.value=this.value.match(/\d+(\.\d{0,2})?/) ? this.value.match(/\d+(\.\d{0,2})?/)[0] : ''"
class="tw-w-full tw-px-4 lg:tw-px-5 tw-py-[14px] tw-body-plus-4 lg:tw-body-plus-2 tw-bg-body tw-text-body-color tw-border tw-border-solid tw-border-line foucs:tw-border-body-color">
</div>
</div>
</li>
</ul>
</div>
</form>
<form class="">
<div class="zb-flex">
<a href="${product.url}?${toQuery({ aid: 'smart_recommend.2.' + data.id, ifb: product.ifb || '', cfb: product.cfb || '', scm: product.scm || data.scm || '', ssp: data.ssp || '' })}" impr="1" imprevt="1" class="zb-w-[132px] zb-mr-4 rtl:zb-ml-4 rtl:zb-mr-0" data-prdct="${product.id}" data-ifb="${product.ifb || ''}" data-cfb="${product.cfb || ''}" data-scm="${product.scm || data.scm || ''}" data-spm="${productIndex}"> <ljs-render layout="container" id="smart_cart_pop_image_${product.id}" template="smart_cart_pop_image_template" manual=""></ljs-render> </a>
<div class="zb-flex zb-flex-col zb-flex-grow zb-justify-between">
<div>
<div class="zb-line-clamp-2 zb-text-sm zb-mb-2">${product.title}</div> <ljs-render layout="container" id="smart_cart_pop_price_${product.id}" template="smart_cart_pop_price_template" manual=""></ljs-render>
</div>
<div>
<div class="zb-relative zb-w-full zb-cursor-pointer">
<div class="zb-border zb-border-solid zb-border-[#eee] zb-px-3 zb-py-[10px] zb-flex zb-items-center zb-justify-between zb-font-semibold zb-text-sm zb-rounded-sm"
@tap="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);smart_cart_pop_variant_${product.id}_mobile.toggleClass(class=zb-hidden);smart_cart_pop_variant_${product.id}_pc.toggleClass(class=smart_cart_pop_variant_pc_show,force=true);smart_cart_pop_variant_modal_${product.id}.open"
spz-if="${!!(product.options && product.options.length && product.options.length > 0) && data.config.variant_select_visible}"> <ljs-render manual="" layout="container" id="smart_cart_pop_variant_text_${product.id}"
template="smart_cart_pop_variant_text_template"></ljs-render> <svg id="smart_pop_variant-select-${product.id}" width="12" height="8" class="zb-ml-2" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M6.00002 7.06738C6.19244 7.06775 6.38498 6.99453 6.5318 6.84772C6.54504 6.83447 6.55769 6.82086 6.56973 6.8069L11.1251 2.25152C11.418 1.95863 11.418 1.48375 11.1251 1.19086C10.8322 0.897968 10.3573 0.897968 10.0645 1.19086L6.00003 5.25529L1.9356 1.19086C1.64271 0.897968 1.16784 0.897968 0.874943 1.19086C0.58205 1.48375 0.58205 1.95863 0.874943 2.25152L5.43033 6.8069C5.44237 6.82086 5.45502 6.83447 5.46826 6.84772C5.61507 6.99453 5.8076 7.06775 6.00002 7.06738Z"
fill="#0A1533"></path>
</svg> </div> <ljs-lightbox layout="nodisplay" disable-unmount="" class="smart_cart_pop_lightbox_pc" id="smart_cart_pop_variant_modal_${product.id}" @close="smart_pop_variant-select-${product.id}.toggleClass(class=zb-rotate-180);">
<div id="smart_cart_pop_variant_${product.id}_pc" class="zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template"
onclick="event.stopPropagation()" disabled-dj-event="" interference=""> </ljs-variants></div>
</ljs-lightbox>
</div>
<div class="zb-mt-3"> <button product-id="${product.id}" id="smart_cart_pop_atc_btn_${product.id}"
class="zb-flex zb-items-center zb-justify-center zb-w-full zb-text-white zb-py-[10px] zb-h-9 zb-text-xs zb-font-normal zb-border-none zb-rounded-[4px] smart_cart_pop_atc_btn_bg" type="button" role="addToCart"
@tap="smart_cart_pop_loading_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_${product.id}.toggleClass(class=zb-hidden);smart_cart_pop_atc_btn_${product.id}.toggleClass(class=zb-pointer-events-none);custom-func.addATCHook(activity_id='${data.id}',ifb='${product.ifb}',cfb='${product.cfb}',scm='${product.scm || data.scm}',ssp='${data.ssp}',spm='${data.spmBase}.${productIndex}')">
<ljs-render layout="container" id="smart_cart_pop_atc_${product.id}" template="smart_cart_pop_atc_template" mamual="" class="notranslate"> </ljs-render>
<div id="smart_cart_pop_added_${product.id}" class="zb-hidden"><span class="zb-flex zb-justify-center zb-gap-1"><svg width="14" height="15" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path
d="M8 16.5006C3.58171 16.5006 0 12.9183 0 8.5C0 4.08171 3.58171 0.5 8 0.5C12.4183 0.5 16 4.08171 16 8.5C16 12.9183 12.4183 16.5006 8 16.5006ZM8 2.04344C4.21314 2.04344 1.54287 4.71371 1.54287 8.50057C1.54287 12.2874 4.21314 14.9577 8 14.9577C11.7869 14.9577 14.4571 12.2874 14.4571 8.50057C14.4571 4.71371 11.7869 2.04344 8 2.04344ZM7.26057 11.1909L7.12229 11.3286L7.09543 11.3017C7.02286 11.336 6.94286 11.3577 6.85714 11.3577C6.73543 11.3577 6.62857 11.3109 6.536 11.2463L6.52229 11.2594L6.45371 11.1909C6.45314 11.1903 6.45314 11.1903 6.45257 11.1897L4.09771 8.83486L4.90629 8.02686L6.85714 9.97771L11.1629 5.67143L11.9714 6.48L7.26171 11.1897C7.26114 11.1903 7.26114 11.1903 7.26057 11.1909Z"
fill="white"></path>
</svg>Added</span></div>
<div id="smart_cart_pop_loading_${product.id}" class="zb-hidden">
<div class="smart_cart_pop_loading"></div>
</div>
</button> </div>
</div>
</div>
</div>
<div id="smart_cart_pop_variant_${product.id}_mobile" class="zb-hidden md:zb-hidden"><ljs-variants id="smart_cart_pop_variants_${product.id}"
class="md:!zb-absolute md:zb-top-[50px] md:zb-w-full md:zb-left-0 md:zb-z-30 md:zb-bg-white zb-max-h-[280px] zb-overflow-y-auto md:zb-shadow-pop" layout="container" template="smart_cart_pop_variant_template" onclick="event.stopPropagation()"
disabled-dj-event="" interference=""> </ljs-variants></div>
</form>
POST //translate.googleapis.com/translate_voting?client=te
<form id="goog-gt-votingForm" action="//translate.googleapis.com/translate_voting?client=te" method="post" target="votingFrame" class="VIpgJd-yAWNEb-hvhgNd-aXYTce"><input type="text" name="sl" id="goog-gt-votingInputSrcLang"><input type="text"
name="tl" id="goog-gt-votingInputTrgLang"><input type="text" name="query" id="goog-gt-votingInputSrcText"><input type="text" name="gtrans" id="goog-gt-votingInputTrgText"><input type="text" name="vote" id="goog-gt-votingInputVote"></form>
Text Content
* Free Shipping From 2 Shirts * Free Shipping From 2 Shirts * Free Shipping From 2 Shirts * Free Shipping From 2 Shirts ${item} Recently searched * ${item} Hot searches * ${item.word} Results ${item.highlightHtml} const TAG = 'spz-custom-smart-search-location'; const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-wrap'; const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name; const BREAKPOINT = 960; const DELAY = 300; class SpzCustomSmartSearchLocation extends SPZ.BaseElement { constructor(element) { super(element); this.mobileHeaderPluginParentEle = null; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.init(); this.listenerResize(); } init() { // PC-end not load if (this.isDesktop()) { return; } if (!window.__isLoadAppSmartSearch__) { this.initSmartSearch(); console.log('__isLoadAppSmartSearch__'); } // B-end must reload if (window.self === window.top && !window.__isLoadAppSmartSearch__) { window.__isLoadAppSmartSearch__ = true; } } initSmartSearch() { if (this.hasMobileUpperRightPlugin()) { this.showMobileSmartSearch(); } else { this.addMobileSmartSearch(); } } listenerResize() { window.removeEventListener('resize', window.smartSearchResizeCallback); window.smartSearchResizeCallback = SPZCore.Types.debounce( this.win, () => { this.init(); }, DELAY ); window.addEventListener('resize', window.smartSearchResizeCallback); } isDesktop() { const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`); return mediaQueryList.matches; } hasMobileUpperRightPlugin() { return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase()); } showMobileSmartSearch() { this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle(); this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle); } getMobileHeaderPluginParentEle() { const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = { nova: '.header__mobile #header__plugin-container', hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7', onePage: '.header__mobile #header__plugin-container', wind: '#header-icons .flex.justify-end.items-center', eva: '#header__icons .plugin_content' }; const headerPluginParentSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP) ); return document.querySelector(headerPluginParentSelector); } setMobileHeaderIconsPluginStyle(pluginParentEle) { if (!pluginParentEle) { return; } const containHidden = pluginParentEle.classList.contains('md:hidden'); const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden'); if (containHidden || containTwHidden) { Array.from(pluginParentEle.children).forEach((pluginElement) => { if (!this.hasSmartSearchPlugin(pluginElement)) { pluginElement.style.display = 'none'; } }); pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden'); } else { const smartSearchPluginElement = Array.from(pluginParentEle.children).find( (pluginElement) => { return this.hasSmartSearchPlugin(pluginElement); } ); smartSearchPluginElement.style.display = 'block'; } } hasSmartSearchPlugin(pluginElement) { return ( pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) || pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0 ); } addMobileSmartSearch() { this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle(); this.smartSearchWrapEle = this.getSmartSearchWrapEle(); this.appendSmartSearchToHeader(); } getMobileHeaderIconsEle() { // Must be the parent element of the plugin const MOBILE_HEADER_ICONS_ELE_MAP = { geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0', flash: '#header-layout .header__icons', boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1' }; const headerIconsSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_ICONS_ELE_MAP) ); return document.querySelector(headerIconsSelector); } getSmartSearchWrapEle() { const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector()); if (!smartSearchWrapEle) { return null; } return smartSearchWrapEle; } appendSmartSearchToHeader() { if (!this.smartSearchWrapEle) { return; } this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle); } getSmartSearchWrapSelector() { const PLUGIN_POSITION = { DRAWER: 'drawer', HEADER_TOP: 'headerTop' }; // only one this plugin of ancestor element const MOBILE_PLUGIN_POSITION_ELE_MAP = { [PLUGIN_POSITION.DRAWER]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header__drawer' }, [PLUGIN_POSITION.HEADER_TOP]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header-content .logo-wrap' } }; const MbPluginPositionInTheme = [ ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]), ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP]) ]; return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => { if (pre === '') { return `${ancestor} .app-smart-product-search-wrap`; } if (pre.includes(ancestor)) { return pre; } return `${pre},${ancestor} .app-smart-product-search-wrap`; }, ''); } combineMultipleSelectors(selectorList) { return selectorList.reduce((pre, selector) => { if (pre === '') { return `${selector}`; } if (pre.includes(selector)) { return pre; } return `${pre},${selector}`; }, ''); } } SPZ.defineElement(TAG, SpzCustomSmartSearchLocation); Powered by Translate Bahasa Indonesia,English,한국어,简体中文,日本語,Português,العربية,Русский,Español,繁體中文,Français,ไทย,Italiano,Deutsch,Polski,Nederlands,Bahasa Melayu,svenska,norsk,čeština,Lietuvis,Latvietis,Suomalainen,Ελληνικά,Eestlane,dansk,Magyar,Romanian,Slovenščina,Український,Slovenská,Български,Tiếng Việt,Türkçe,Hrvatski jezik CAD * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) * Afghan Afghani (AFN) * Albanian Lek (ALL) * Algerian Dinar (DZD) * Angolan Kwanza (AOA) * Argentine Pesos (ARS) * Armenian Dram (AMD) * Aruban Florin (AWG) * Australian Dollars (AUD) * Barbadian Dollar (BBD) * Azerbaijani Manat (AZN) * Bangladesh Taka (BDT) * Bahamian Dollar (BSD) * Bahraini Dinar (BHD) * Belarusian Ruble (BYN) * Belize Dollar (BZD) * Bhutanese Ngultrum (BTN) * Bosnia and Herzegovina Convertible Mark (BAM) * Brazilian Real (BRL) * Bolivian Boliviano (BOB) * Botswana Pula (BWP) * Brunei Dollar (BND) * Bulgarian Lev (BGN) * Burmese Kyat (MMK) * Cambodian Riel (KHR) * Cape Verdean escudo (CVE) * Cayman Dollars (KYD) * Central African CFA Franc (XAF) * Chilean Peso (CLP) * Chinese Yuan Renminbi (CNY) * Colombian Peso (COP) * Comorian Franc (KMF) * Congolese franc (CDF) * Costa Rican Colones (CRC) * Croatian Kuna (HRK) * Czech Koruny (CZK) * Danish Kroner (DKK) * Dominican Peso (DOP) * East Caribbean Dollar (XCD) * Egyptian Pound (EGP) * Ethiopian Birr (ETB) * CFP Franc (XPF) * Fijian Dollars (FJD) * Gambian Dalasi (GMD) * Ghanaian Cedi (GHS) * Guatemalan Quetzal (GTQ) * Guyanese Dollar (GYD) * Georgian Lari (GEL) * Haitian Gourde (HTG) * Honduran Lempira (HNL) * Hong Kong Dollars (HKD) * Hungarian Forint (HUF) * Icelandic Kronur (ISK) * Indian Rupees (INR) * Indonesian Rupiah (IDR) * Israeli New Shekel (NIS) * Jamaican Dollars (JMD) * Japanese Yen (JPY) * Jersey Pound (JEP) * Jordanian Dinar (JOD) * Kazakhstani Tenge (KZT) * Kenyan Shilling (KES) * Kuwaiti Dinar (KWD) * Kyrgyzstani Som (KGS) * Laotian Kip (LAK) * Latvian Lati (LVL) * Lebanese Pounds (LBP) * Lesotho Loti (LSL) * Liberian Dollar (LRD) * Malagasy Ariary (MGA) * Macedonia Denar (MKD) * Macanese Pataca (MOP) * Malawian Kwacha (MWK) * Maldivian Rufiyaa (MVR) * Mexican Pesos (MXN) * Malaysian Ringgits (MYR) * Mauritian Rupee (MUR) * Moldovan Leu (MDL) * Moroccan Dirham (MAD) * Mongolian Tugrik (MNT) * Mozambican Metical (MZN) * Namibian Dollar (NAD) * Nepalese Rupee (NPR) * Netherlands Antillean Guilder (ANG) * New Zealand Dollars (NZD) * Nicaraguan Córdoba (NIO) * Nigerian Naira (NGN) * Norwegian Kroner (NOK) * Omani Rial (OMR) * Pakistani Rupee (PKR) * Papua New Guinean Kina (PGK) * Paraguayan Guarani (PYG) * Peruvian Nuevo Sol (PEN) * Philippine Peso (PHP) * Polish Zlotych (PLN) * Qatari Rial (QAR) * Romanian Lei (RON) * Russian Rubles (RUB) * Rwandan Franc (RWF) * Samoan Tala (WST) * Saudi Riyal (SAR) * Sao Tome And Principe Dobra (STD) * Serbian dinar (RSD) * Seychellois Rupee (SCR) * Singapore Dollars (SGD) * Sudanese Pound (SDG) * Syrian Pound (SYP) * South African Rand (ZAR) * South Korean Won (KRW) * South Sudanese Pound (SSP) * Solomon Islands Dollar (SBD) * Sri Lankan Rupees (LKR) * Surinamese Dollar (SRD) * Swazi Lilangeni (SZL) * Swedish Kronor (SEK) * Swiss Francs (CHF) * Taiwan Dollars (TWD) * Thai baht (THB) * Tanzanian Shilling (TZS) * Trinidad and Tobago Dollars (TTD) * Tunisian Dinar (TND) * Turkish Lira (TRY) * Turkmenistani Manat (TMT) * Ugandan Shilling (UGX) * Ukrainian Hryvnia (UAH) * United Arab Emirates Dirham (AED) * Uruguayan Pesos (UYU) * Uzbekistan som (UZS) * Vanuatu Vatu (VUV) * Venezuelan Bolivares (VEF) * Vietnamese đồng (VND) * West African CFA franc (XOF) * Yemeni Rial (YER) * Zambian Kwacha (ZMW) * Saint Helena pound * Burundian franc * Bermudian dollar * Cuban peso * Djiboutian franc * Eritrean nakfa * Guinean franc * North Korean won * Sierra Leonean leone * Somali shilling * Tajikistani somoni * Tongan paʻanga * Falkland Islands pound * Iraqi Dinar FOOTBALLSEURO ${item} Recently searched * ${item} Hot searches * ${item.word} Results ${item.highlightHtml} const TAG = 'spz-custom-smart-search-location'; const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-wrap'; const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name; const BREAKPOINT = 960; const DELAY = 300; class SpzCustomSmartSearchLocation extends SPZ.BaseElement { constructor(element) { super(element); this.mobileHeaderPluginParentEle = null; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.init(); this.listenerResize(); } init() { // PC-end not load if (this.isDesktop()) { return; } if (!window.__isLoadAppSmartSearch__) { this.initSmartSearch(); console.log('__isLoadAppSmartSearch__'); } // B-end must reload if (window.self === window.top && !window.__isLoadAppSmartSearch__) { window.__isLoadAppSmartSearch__ = true; } } initSmartSearch() { if (this.hasMobileUpperRightPlugin()) { this.showMobileSmartSearch(); } else { this.addMobileSmartSearch(); } } listenerResize() { window.removeEventListener('resize', window.smartSearchResizeCallback); window.smartSearchResizeCallback = SPZCore.Types.debounce( this.win, () => { this.init(); }, DELAY ); window.addEventListener('resize', window.smartSearchResizeCallback); } isDesktop() { const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`); return mediaQueryList.matches; } hasMobileUpperRightPlugin() { return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase()); } showMobileSmartSearch() { this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle(); this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle); } getMobileHeaderPluginParentEle() { const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = { nova: '.header__mobile #header__plugin-container', hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7', onePage: '.header__mobile #header__plugin-container', wind: '#header-icons .flex.justify-end.items-center', eva: '#header__icons .plugin_content' }; const headerPluginParentSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP) ); return document.querySelector(headerPluginParentSelector); } setMobileHeaderIconsPluginStyle(pluginParentEle) { if (!pluginParentEle) { return; } const containHidden = pluginParentEle.classList.contains('md:hidden'); const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden'); if (containHidden || containTwHidden) { Array.from(pluginParentEle.children).forEach((pluginElement) => { if (!this.hasSmartSearchPlugin(pluginElement)) { pluginElement.style.display = 'none'; } }); pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden'); } else { const smartSearchPluginElement = Array.from(pluginParentEle.children).find( (pluginElement) => { return this.hasSmartSearchPlugin(pluginElement); } ); smartSearchPluginElement.style.display = 'block'; } } hasSmartSearchPlugin(pluginElement) { return ( pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) || pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0 ); } addMobileSmartSearch() { this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle(); this.smartSearchWrapEle = this.getSmartSearchWrapEle(); this.appendSmartSearchToHeader(); } getMobileHeaderIconsEle() { // Must be the parent element of the plugin const MOBILE_HEADER_ICONS_ELE_MAP = { geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0', flash: '#header-layout .header__icons', boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1' }; const headerIconsSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_ICONS_ELE_MAP) ); return document.querySelector(headerIconsSelector); } getSmartSearchWrapEle() { const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector()); if (!smartSearchWrapEle) { return null; } return smartSearchWrapEle; } appendSmartSearchToHeader() { if (!this.smartSearchWrapEle) { return; } this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle); } getSmartSearchWrapSelector() { const PLUGIN_POSITION = { DRAWER: 'drawer', HEADER_TOP: 'headerTop' }; // only one this plugin of ancestor element const MOBILE_PLUGIN_POSITION_ELE_MAP = { [PLUGIN_POSITION.DRAWER]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header__drawer' }, [PLUGIN_POSITION.HEADER_TOP]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header-content .logo-wrap' } }; const MbPluginPositionInTheme = [ ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]), ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP]) ]; return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => { if (pre === '') { return `${ancestor} .app-smart-product-search-wrap`; } if (pre.includes(ancestor)) { return pre; } return `${pre},${ancestor} .app-smart-product-search-wrap`; }, ''); } combineMultipleSelectors(selectorList) { return selectorList.reduce((pre, selector) => { if (pre === '') { return `${selector}`; } if (pre.includes(selector)) { return pre; } return `${pre},${selector}`; }, ''); } } SPZ.defineElement(TAG, SpzCustomSmartSearchLocation); Bahasa Indonesia,English,한국어,简体中文,日本語,Português,العربية,Русский,Español,繁體中文,Français,ไทย,Italiano,Deutsch,Polski,Nederlands,Bahasa Melayu,svenska,norsk,čeština,Lietuvis,Latvietis,Suomalainen,Ελληνικά,Eestlane,dansk,Magyar,Romanian,Slovenščina,Український,Slovenská,Български,Tiếng Việt,Türkçe,Hrvatski jezik CAD * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) * Afghan Afghani (AFN) * Albanian Lek (ALL) * Algerian Dinar (DZD) * Angolan Kwanza (AOA) * Argentine Pesos (ARS) * Armenian Dram (AMD) * Aruban Florin (AWG) * Australian Dollars (AUD) * Barbadian Dollar (BBD) * Azerbaijani Manat (AZN) * Bangladesh Taka (BDT) * Bahamian Dollar (BSD) * Bahraini Dinar (BHD) * Belarusian Ruble (BYN) * Belize Dollar (BZD) * Bhutanese Ngultrum (BTN) * Bosnia and Herzegovina Convertible Mark (BAM) * Brazilian Real (BRL) * Bolivian Boliviano (BOB) * Botswana Pula (BWP) * Brunei Dollar (BND) * Bulgarian Lev (BGN) * Burmese Kyat (MMK) * Cambodian Riel (KHR) * Cape Verdean escudo (CVE) * Cayman Dollars (KYD) * Central African CFA Franc (XAF) * Chilean Peso (CLP) * Chinese Yuan Renminbi (CNY) * Colombian Peso (COP) * Comorian Franc (KMF) * Congolese franc (CDF) * Costa Rican Colones (CRC) * Croatian Kuna (HRK) * Czech Koruny (CZK) * Danish Kroner (DKK) * Dominican Peso (DOP) * East Caribbean Dollar (XCD) * Egyptian Pound (EGP) * Ethiopian Birr (ETB) * CFP Franc (XPF) * Fijian Dollars (FJD) * Gambian Dalasi (GMD) * Ghanaian Cedi (GHS) * Guatemalan Quetzal (GTQ) * Guyanese Dollar (GYD) * Georgian Lari (GEL) * Haitian Gourde (HTG) * Honduran Lempira (HNL) * Hong Kong Dollars (HKD) * Hungarian Forint (HUF) * Icelandic Kronur (ISK) * Indian Rupees (INR) * Indonesian Rupiah (IDR) * Israeli New Shekel (NIS) * Jamaican Dollars (JMD) * Japanese Yen (JPY) * Jersey Pound (JEP) * Jordanian Dinar (JOD) * Kazakhstani Tenge (KZT) * Kenyan Shilling (KES) * Kuwaiti Dinar (KWD) * Kyrgyzstani Som (KGS) * Laotian Kip (LAK) * Latvian Lati (LVL) * Lebanese Pounds (LBP) * Lesotho Loti (LSL) * Liberian Dollar (LRD) * Malagasy Ariary (MGA) * Macedonia Denar (MKD) * Macanese Pataca (MOP) * Malawian Kwacha (MWK) * Maldivian Rufiyaa (MVR) * Mexican Pesos (MXN) * Malaysian Ringgits (MYR) * Mauritian Rupee (MUR) * Moldovan Leu (MDL) * Moroccan Dirham (MAD) * Mongolian Tugrik (MNT) * Mozambican Metical (MZN) * Namibian Dollar (NAD) * Nepalese Rupee (NPR) * Netherlands Antillean Guilder (ANG) * New Zealand Dollars (NZD) * Nicaraguan Córdoba (NIO) * Nigerian Naira (NGN) * Norwegian Kroner (NOK) * Omani Rial (OMR) * Pakistani Rupee (PKR) * Papua New Guinean Kina (PGK) * Paraguayan Guarani (PYG) * Peruvian Nuevo Sol (PEN) * Philippine Peso (PHP) * Polish Zlotych (PLN) * Qatari Rial (QAR) * Romanian Lei (RON) * Russian Rubles (RUB) * Rwandan Franc (RWF) * Samoan Tala (WST) * Saudi Riyal (SAR) * Sao Tome And Principe Dobra (STD) * Serbian dinar (RSD) * Seychellois Rupee (SCR) * Singapore Dollars (SGD) * Sudanese Pound (SDG) * Syrian Pound (SYP) * South African Rand (ZAR) * South Korean Won (KRW) * South Sudanese Pound (SSP) * Solomon Islands Dollar (SBD) * Sri Lankan Rupees (LKR) * Surinamese Dollar (SRD) * Swazi Lilangeni (SZL) * Swedish Kronor (SEK) * Swiss Francs (CHF) * Taiwan Dollars (TWD) * Thai baht (THB) * Tanzanian Shilling (TZS) * Trinidad and Tobago Dollars (TTD) * Tunisian Dinar (TND) * Turkish Lira (TRY) * Turkmenistani Manat (TMT) * Ugandan Shilling (UGX) * Ukrainian Hryvnia (UAH) * United Arab Emirates Dirham (AED) * Uruguayan Pesos (UYU) * Uzbekistan som (UZS) * Vanuatu Vatu (VUV) * Venezuelan Bolivares (VEF) * Vietnamese đồng (VND) * West African CFA franc (XOF) * Yemeni Rial (YER) * Zambian Kwacha (ZMW) * Saint Helena pound * Burundian franc * Bermudian dollar * Cuban peso * Djiboutian franc * Eritrean nakfa * Guinean franc * North Korean won * Sierra Leonean leone * Somali shilling * Tajikistani somoni * Tongan paʻanga * Falkland Islands pound * Iraqi Dinar Search Account * Log in * Create an account 0 Cart Close * Home * Must-Buy Jerseys * Must-Buy Jerseys * Hot selling products * Highly recommended * Big discount sales * EPL-Must buy Jerseys * Serie A - Must-Buy Jerseys * Top Five Leagues * Top Five Leagues * Premier League * Premier League * Arsenal * Manchester City * Manchester United * Chelsea * Liverpool * Tottenham * Everton * Newcastle United * Aston Villa * Leeds United * Leicester City * West Ham United * West Bromwich Albion * Wolverhampton Wanderers * Crystal Palace * Southampton * Nottingham Forest * Brighton * Fulham * Brentford * La Liga * La Liga * Girona * Barcelona * Real Madrid * Atletico Madrid * Osasuna * Athletic Bilbao * Seville * Real Betis * Real Valladolid * Real Sociedad * Vallecano * Alavés * Cádiz * Valencia * Espanyol * Granada * Villarreal * Celta * Almeria * Elche * Serie A * Serie A * AC Milan * Inter Milan * Juventus * Napoli * Roma * Fiorentina * Torino * Venezia * Atalanta * Lazio * Atlanta United * Verona * Ligue 1 * Ligue 1 * Paris * Marseille * Lyon * Angers * Little * Nantes * RC Lens * Toulouse * Bundesliga * Bundesliga * Bayern * Dortmund * Leipzig * Mönchengladbach * Frankfurt * Leverkusen * VfB Stuttgart * FC Cologne * Wolfsburg * FC Union Berlin * Mainz * Freiburg * Holstein Kiel * Hoffenheim * Other Leagues * Other Leagues * English League One * English League One * Wrexham * Birmingham City * Mansfield Town * Reading * Portuguese Super League * Portuguese Super League * Benfica * Sporting Lisbon * Harbor * Braga * Scottish Premier League * Scottish Premier League * Celtic * Glasgow Rangers * Aberdeen * Serie B * Serie B * Sampdoria * SSC Bari * Palermo * Sassuolo * Salernitana * English Football Championship * English Football Championship * Blackburn Rovers * Sheffield Wednesday * Middlesbrough * Sheffield United * Sunderland * Portsmouth * Norwich City F.C * Swansea City * Saudi League * Saudi League * Al-Nassr * Al Hilal SFC * Mexican Football League * Mexican Football League * Tigres * Club America * Chivas * Blue Cross * Eredivisie * Eredivisie * Ajax * Feyenoord * PSV Eindhoven * Australian Football League * Australian Football League * AFC Richmond * Turkish Super League * Turkish Super League * Galatasaray * Fenerbahce * Besiktas * National League of Honduras * National League of Honduras * Olimpia * Motagua * Spanish Second Division * Spanish Second Division * Sporting de Gijon * CD Tenerife * Coruna Sports * Malaga * Racing Santander * Belgian First Division * Belgian First Division * Anderlecht fc * Austrian Super League * Austrian Super League * Red Bull Salzburg * Colombian First Division * Colombian First Division * Atletico Nacional * Millonarios * Brazilian League A * Brazilian League A * São Paulo * Atletico Mineiro * Palmeiras * Flamengo * Botafogo * Corinthians * 2nd Bundesliga * 2nd Bundesliga * Hertha BSC * Fortuna Düsseldorf * FC Köln * Fortuna Düsseldorf * Schalke 04 * Hannover 96 * Magdeburg * Paderborn 07 * Karlsruher * Hertha Berlin * Greuther Fürth * Championnat National * Championnat National * FC Versailles * Quevilly Rouen Métropole * 2024-2025 Season * UEFA Euro 2024 * UEFA Euro 2024 * Germany * Scotland * Spain * Italy * France * England * Portugal * Hungary * Switzerland * Croatia * Albania * Slovenia * Denmark * Serbia * Wales * Netherlands * Austria * Belgium * Slovakia * Romania * Türkiye * Czechia * Poland * Norway * National Team * National Team * Europe * Europe * Germany * France * Portugal * Belgium * Denmark * England * Spain * Russia * Turkey * Switzerland * Italy * Netherlands * Albania * Croatia * Finland * Sweden * Ireland * Poland * Noth America * Noth America * Mexico * Canada * El Salvador * Panama * Costa Rica * Jamaica * Honduras * Guatemala * South America * South America * Argentina * Uruguay * Brazil * Paraguay * Colombia * Ecuador * Chile * Asia * Asia * Korea * Japan * Saudi Arabia * Malaysia * Iraq * Qatar * Iran * Australia * Africa * Africa * Senegal * Tunisia * Algeria * Ivory Coast * Cameroon * Morocco * Ghana * Egypt * Nigeria * Previous World Cup Champions * Previous World Cup Champions * 2022 - Argentina * 2018 - France * 2014 - Germany * 2010 - Spain * 2006 - Italy * 2002 - Brazil * 1990 - Germany * 1986 - Argentina * 1970 - Brazil * other products * other products * Retro * Kids * Long Sleeve * Windbreaker * Shorts * Jacket * Special line logistics Log in ${item} Recently searched * ${item} Hot searches * ${item.word} Results ${item.highlightHtml} const TAG = 'spz-custom-smart-search-location'; const SMART_PRODUCR_SEARCH_WRAP_CLASSNAME = 'app-smart-product-search-wrap'; const THEME_NAME = window.SHOPLAZZA.theme.merchant_theme_name; const BREAKPOINT = 960; const DELAY = 300; class SpzCustomSmartSearchLocation extends SPZ.BaseElement { constructor(element) { super(element); this.mobileHeaderPluginParentEle = null; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } buildCallback() { this.init(); this.listenerResize(); } init() { // PC-end not load if (this.isDesktop()) { return; } if (!window.__isLoadAppSmartSearch__) { this.initSmartSearch(); console.log('__isLoadAppSmartSearch__'); } // B-end must reload if (window.self === window.top && !window.__isLoadAppSmartSearch__) { window.__isLoadAppSmartSearch__ = true; } } initSmartSearch() { if (this.hasMobileUpperRightPlugin()) { this.showMobileSmartSearch(); } else { this.addMobileSmartSearch(); } } listenerResize() { window.removeEventListener('resize', window.smartSearchResizeCallback); window.smartSearchResizeCallback = SPZCore.Types.debounce( this.win, () => { this.init(); }, DELAY ); window.addEventListener('resize', window.smartSearchResizeCallback); } isDesktop() { const mediaQueryList = window.matchMedia(`(min-width: ${BREAKPOINT}px)`); return mediaQueryList.matches; } hasMobileUpperRightPlugin() { return !['geek', 'flash', 'boost'].includes(THEME_NAME.toLocaleLowerCase()); } showMobileSmartSearch() { this.mobileHeaderPluginParentEle = this.getMobileHeaderPluginParentEle(); this.setMobileHeaderIconsPluginStyle(this.mobileHeaderPluginParentEle); } getMobileHeaderPluginParentEle() { const MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP = { nova: '.header__mobile #header__plugin-container', hero: '.header__icons .tw-flex.tw-justify-end.tw-items-center.tw-space-x-7', onePage: '.header__mobile #header__plugin-container', wind: '#header-icons .flex.justify-end.items-center', eva: '#header__icons .plugin_content' }; const headerPluginParentSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_PLUGIN_PARENT_ELE_MAP) ); return document.querySelector(headerPluginParentSelector); } setMobileHeaderIconsPluginStyle(pluginParentEle) { if (!pluginParentEle) { return; } const containHidden = pluginParentEle.classList.contains('md:hidden'); const containTwHidden = pluginParentEle.classList.contains('md:tw-hidden'); if (containHidden || containTwHidden) { Array.from(pluginParentEle.children).forEach((pluginElement) => { if (!this.hasSmartSearchPlugin(pluginElement)) { pluginElement.style.display = 'none'; } }); pluginParentEle.classList.remove('md:hidden', 'md:tw-hidden'); } else { const smartSearchPluginElement = Array.from(pluginParentEle.children).find( (pluginElement) => { return this.hasSmartSearchPlugin(pluginElement); } ); smartSearchPluginElement.style.display = 'block'; } } hasSmartSearchPlugin(pluginElement) { return ( pluginElement.classList.contains(`${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`) || pluginElement.querySelectorAll(`.${SMART_PRODUCR_SEARCH_WRAP_CLASSNAME}`).length > 0 ); } addMobileSmartSearch() { this.mobileHeaderIconsEle = this.getMobileHeaderIconsEle(); this.smartSearchWrapEle = this.getSmartSearchWrapEle(); this.appendSmartSearchToHeader(); } getMobileHeaderIconsEle() { // Must be the parent element of the plugin const MOBILE_HEADER_ICONS_ELE_MAP = { geek: '#header-mobile-container .flex.items-center.justify-end.flex-shrink-0', flash: '#header-layout .header__icons', boost: '.header__mobile-bottom .tw-flex.tw-items-center.tw-justify-end.tw-flex-1' }; const headerIconsSelector = this.combineMultipleSelectors( Object.values(MOBILE_HEADER_ICONS_ELE_MAP) ); return document.querySelector(headerIconsSelector); } getSmartSearchWrapEle() { const smartSearchWrapEle = document.querySelector(this.getSmartSearchWrapSelector()); if (!smartSearchWrapEle) { return null; } return smartSearchWrapEle; } appendSmartSearchToHeader() { if (!this.smartSearchWrapEle) { return; } this.mobileHeaderIconsEle.insertAdjacentElement('afterbegin', this.smartSearchWrapEle); } getSmartSearchWrapSelector() { const PLUGIN_POSITION = { DRAWER: 'drawer', HEADER_TOP: 'headerTop' }; // only one this plugin of ancestor element const MOBILE_PLUGIN_POSITION_ELE_MAP = { [PLUGIN_POSITION.DRAWER]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header__drawer' }, [PLUGIN_POSITION.HEADER_TOP]: { geek: '#header-menu-mobile #menu-drawer', flash: '#menu-drawer .plugin__header-content', boost: '.header-content .logo-wrap' } }; const MbPluginPositionInTheme = [ ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.DRAWER]), ...Object.values(MOBILE_PLUGIN_POSITION_ELE_MAP[PLUGIN_POSITION.HEADER_TOP]) ]; return Object.values(MbPluginPositionInTheme).reduce((pre, ancestor) => { if (pre === '') { return `${ancestor} .app-smart-product-search-wrap`; } if (pre.includes(ancestor)) { return pre; } return `${pre},${ancestor} .app-smart-product-search-wrap`; }, ''); } combineMultipleSelectors(selectorList) { return selectorList.reduce((pre, selector) => { if (pre === '') { return `${selector}`; } if (pre.includes(selector)) { return pre; } return `${pre},${selector}`; }, ''); } } SPZ.defineElement(TAG, SpzCustomSmartSearchLocation); Bahasa Indonesia,English,한국어,简体中文,日本語,Português,العربية,Русский,Español,繁體中文,Français,ไทย,Italiano,Deutsch,Polski,Nederlands,Bahasa Melayu,svenska,norsk,čeština,Lietuvis,Latvietis,Suomalainen,Ελληνικά,Eestlane,dansk,Magyar,Romanian,Slovenščina,Український,Slovenská,Български,Tiếng Việt,Türkçe,Hrvatski jezik CAD * United States Dollars (USD) * Euro (EUR) * United Kingdom Pounds (GBP) * Canadian Dollars (CAD) * Afghan Afghani (AFN) * Albanian Lek (ALL) * Algerian Dinar (DZD) * Angolan Kwanza (AOA) * Argentine Pesos (ARS) * Armenian Dram (AMD) * Aruban Florin (AWG) * Australian Dollars (AUD) * Barbadian Dollar (BBD) * Azerbaijani Manat (AZN) * Bangladesh Taka (BDT) * Bahamian Dollar (BSD) * Bahraini Dinar (BHD) * Belarusian Ruble (BYN) * Belize Dollar (BZD) * Bhutanese Ngultrum (BTN) * Bosnia and Herzegovina Convertible Mark (BAM) * Brazilian Real (BRL) * Bolivian Boliviano (BOB) * Botswana Pula (BWP) * Brunei Dollar (BND) * Bulgarian Lev (BGN) * Burmese Kyat (MMK) * Cambodian Riel (KHR) * Cape Verdean escudo (CVE) * Cayman Dollars (KYD) * Central African CFA Franc (XAF) * Chilean Peso (CLP) * Chinese Yuan Renminbi (CNY) * Colombian Peso (COP) * Comorian Franc (KMF) * Congolese franc (CDF) * Costa Rican Colones (CRC) * Croatian Kuna (HRK) * Czech Koruny (CZK) * Danish Kroner (DKK) * Dominican Peso (DOP) * East Caribbean Dollar (XCD) * Egyptian Pound (EGP) * Ethiopian Birr (ETB) * CFP Franc (XPF) * Fijian Dollars (FJD) * Gambian Dalasi (GMD) * Ghanaian Cedi (GHS) * Guatemalan Quetzal (GTQ) * Guyanese Dollar (GYD) * Georgian Lari (GEL) * Haitian Gourde (HTG) * Honduran Lempira (HNL) * Hong Kong Dollars (HKD) * Hungarian Forint (HUF) * Icelandic Kronur (ISK) * Indian Rupees (INR) * Indonesian Rupiah (IDR) * Israeli New Shekel (NIS) * Jamaican Dollars (JMD) * Japanese Yen (JPY) * Jersey Pound (JEP) * Jordanian Dinar (JOD) * Kazakhstani Tenge (KZT) * Kenyan Shilling (KES) * Kuwaiti Dinar (KWD) * Kyrgyzstani Som (KGS) * Laotian Kip (LAK) * Latvian Lati (LVL) * Lebanese Pounds (LBP) * Lesotho Loti (LSL) * Liberian Dollar (LRD) * Malagasy Ariary (MGA) * Macedonia Denar (MKD) * Macanese Pataca (MOP) * Malawian Kwacha (MWK) * Maldivian Rufiyaa (MVR) * Mexican Pesos (MXN) * Malaysian Ringgits (MYR) * Mauritian Rupee (MUR) * Moldovan Leu (MDL) * Moroccan Dirham (MAD) * Mongolian Tugrik (MNT) * Mozambican Metical (MZN) * Namibian Dollar (NAD) * Nepalese Rupee (NPR) * Netherlands Antillean Guilder (ANG) * New Zealand Dollars (NZD) * Nicaraguan Córdoba (NIO) * Nigerian Naira (NGN) * Norwegian Kroner (NOK) * Omani Rial (OMR) * Pakistani Rupee (PKR) * Papua New Guinean Kina (PGK) * Paraguayan Guarani (PYG) * Peruvian Nuevo Sol (PEN) * Philippine Peso (PHP) * Polish Zlotych (PLN) * Qatari Rial (QAR) * Romanian Lei (RON) * Russian Rubles (RUB) * Rwandan Franc (RWF) * Samoan Tala (WST) * Saudi Riyal (SAR) * Sao Tome And Principe Dobra (STD) * Serbian dinar (RSD) * Seychellois Rupee (SCR) * Singapore Dollars (SGD) * Sudanese Pound (SDG) * Syrian Pound (SYP) * South African Rand (ZAR) * South Korean Won (KRW) * South Sudanese Pound (SSP) * Solomon Islands Dollar (SBD) * Sri Lankan Rupees (LKR) * Surinamese Dollar (SRD) * Swazi Lilangeni (SZL) * Swedish Kronor (SEK) * Swiss Francs (CHF) * Taiwan Dollars (TWD) * Thai baht (THB) * Tanzanian Shilling (TZS) * Trinidad and Tobago Dollars (TTD) * Tunisian Dinar (TND) * Turkish Lira (TRY) * Turkmenistani Manat (TMT) * Ugandan Shilling (UGX) * Ukrainian Hryvnia (UAH) * United Arab Emirates Dirham (AED) * Uruguayan Pesos (UYU) * Uzbekistan som (UZS) * Vanuatu Vatu (VUV) * Venezuelan Bolivares (VEF) * Vietnamese đồng (VND) * West African CFA franc (XOF) * Yemeni Rial (YER) * Zambian Kwacha (ZMW) * Saint Helena pound * Burundian franc * Bermudian dollar * Cuban peso * Djiboutian franc * Eritrean nakfa * Guinean franc * North Korean won * Sierra Leonean leone * Somali shilling * Tajikistani somoni * Tongan paʻanga * Falkland Islands pound * Iraqi Dinar * Home * Must-Buy Jerseys Hot selling products Highly recommended Big discount sales EPL-Must buy Jerseys Serie A - Must-Buy Jerseys * Top Five Leagues * Premier League Arsenal Manchester City Manchester United Chelsea Liverpool Tottenham Everton Newcastle United Aston Villa Leeds United Leicester City West Ham United West Bromwich Albion Wolverhampton Wanderers Crystal Palace Southampton Nottingham Forest Brighton Fulham Brentford * La Liga Girona Barcelona Real Madrid Atletico Madrid Osasuna Athletic Bilbao Seville Real Betis Real Valladolid Real Sociedad Vallecano Alavés Cádiz Valencia Espanyol Granada Villarreal Celta Almeria Elche * Serie A AC Milan Inter Milan Juventus Napoli Roma Fiorentina Torino Venezia Atalanta Lazio Atlanta United Verona * Ligue 1 Paris Marseille Lyon Angers Little Nantes RC Lens Toulouse * Bundesliga Bayern Dortmund Leipzig Mönchengladbach Frankfurt Leverkusen VfB Stuttgart FC Cologne Wolfsburg FC Union Berlin Mainz Freiburg Holstein Kiel Hoffenheim * Other Leagues * English League One Wrexham Birmingham City Mansfield Town Reading * Portuguese Super League Benfica Sporting Lisbon Harbor Braga * Scottish Premier League Celtic Glasgow Rangers Aberdeen * Serie B Sampdoria SSC Bari Palermo Sassuolo Salernitana * English Football Championship Blackburn Rovers Sheffield Wednesday Middlesbrough Sheffield United Sunderland Portsmouth Norwich City F.C Swansea City * Saudi League Al-Nassr Al Hilal SFC * Mexican Football League Tigres Club America Chivas Blue Cross * Eredivisie Ajax Feyenoord PSV Eindhoven * Australian Football League AFC Richmond * Turkish Super League Galatasaray Fenerbahce Besiktas * National League of Honduras Olimpia Motagua * Spanish Second Division Sporting de Gijon CD Tenerife Coruna Sports Malaga Racing Santander * Belgian First Division Anderlecht fc * Austrian Super League Red Bull Salzburg * Colombian First Division Atletico Nacional Millonarios * Brazilian League A São Paulo Atletico Mineiro Palmeiras Flamengo Botafogo Corinthians * 2nd Bundesliga Hertha BSC Fortuna Düsseldorf FC Köln Fortuna Düsseldorf Schalke 04 Hannover 96 Magdeburg Paderborn 07 Karlsruher Hertha Berlin Greuther Fürth * Championnat National FC Versailles Quevilly Rouen Métropole * 2024-2025 Season * UEFA Euro 2024 Germany Scotland Spain Italy France England Portugal Hungary Switzerland Croatia Albania Slovenia Denmark Serbia Wales Netherlands Austria Belgium Slovakia Romania Türkiye Czechia Poland Norway * National Team * Europe Germany France Portugal Belgium Denmark England Spain Russia Turkey Switzerland Italy Netherlands Albania Croatia Finland Sweden Ireland Poland * Noth America Mexico Canada El Salvador Panama Costa Rica Jamaica Honduras Guatemala * South America Argentina Uruguay Brazil Paraguay Colombia Ecuador Chile * Asia Korea Japan Saudi Arabia Malaysia Iraq Qatar Iran Australia * Africa Senegal Tunisia Algeria Ivory Coast Cameroon Morocco Ghana Egypt Nigeria * Previous World Cup Champions 2022 - Argentina 2018 - France 2014 - Germany 2010 - Spain 2006 - Italy 2002 - Brazil 1990 - Germany 1986 - Argentina 1970 - Brazil * other products Retro Kids Long Sleeve Windbreaker Shorts Jacket Special line logistics * More links Previous World Cup Champions other products MANCHESTER UNITED Filter Clear all availability * In stock (72) * Out of stock (0) price * The highest price is CA$89.96 $ $ 72 Products 72 Products Featured Price, low to high Price, high to low Newest in Total sales, high to low Purchases, high to low Page views, high to low Filter and sort Filter and sort * Availability * Price Sort by Featured Price, low to high Price, high to low Newest in Total sales, high to low Purchases, high to low Page views, high to low Availability * In stock (72) * Out of stock (0) Price * The highest price is CA$89.96 $ $ Clear all Apply Clear all SALE MANCHESTER UNITED THIRD JERSEY 24/25 FOOTBALL JERSEY From CA$24.89 CA$49.92 -CA$25.03 SALE 2024/2025 MANCHESTER UNITED AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 SALE 2024/2025 MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 SALE 2024/2025 MANCHESTER UNITED SPECIAL EDITION BLACK FOOTBALL SHIRT 1:1 THAI QUALITY From CA$27.67 CA$49.92 -CA$22.25 SALE MANCHESTER UNITED BLACK JERSEY 24/25 FOOTBALL KIT From CA$24.89 CA$49.92 -CA$25.03 SALE MANCHESTER UNITED DARK BLUE PRE-MATCH TRAINING JERSEY 24/25 FOOTBALL KIT From CA$24.89 CA$49.92 -CA$25.03 SALE MANCHESTER UNITED SPECIAL EDITION 24/25 FOOTBALL SHIRT From CA$24.89 CA$49.92 -CA$25.03 SALE 2024/2025 MANCHESTER UNITED JOINT EDITION FOOTBALL SHIRT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 SALE 2024/2025 MANCHESTER UNITED TRAINING JERSEY From CA$24.89 CA$49.92 -CA$25.03 SALE PLAYER MANCHESTER UNITED HOME JERSEY 24/25 FOOTBALL JERSEY From CA$31.84 CA$66.61 -CA$34.76 SALE PLAYER MANCHESTER UNITED AWAY KIT 24/25 FOOTBALL JERSEY From CA$31.84 CA$66.61 -CA$34.76 SALE PLAYER MANCHESTER UNITED THIRD JERSEY 24/25 FOOTBALL JERSEY From CA$31.84 CA$66.61 -CA$34.76 SALE PLAYER MANCHESTER UNITED SPECIAL JERSEY 24/25 MAN FOOTBALL JERSEY From CA$31.84 CA$66.61 -CA$34.76 SALE PLAYER MANCHESTER UNITED TRAINING JERSEY 24/25 FOOTBALL JERSEY From CA$31.84 CA$66.61 -CA$34.76 SALE KIDS MANCHESTER UNITED THIRD JERSEY 24/25 FOOTBALL KIT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 SALE 2024/2025 MANCHESTER UNITED JOINT EDITION FOOTBALL SHIRT 1:1 THAI QUALITY KIDS SIZE From CA$24.89 CA$49.92 -CA$25.03 SALE 2023/2024 MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 SALE 2007/2008 RETRO MANCHESTER UNITED HOME CHAMPIONS LEAGUE EDITION FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 1998/1999 RETRO MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 1992/1994 RETRO MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 1986/1988 RETRO MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 1992/1994 RETRO MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 2007-2008 RETRO LONG SLEEVE MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$38.80 CA$72.17 -CA$33.37 SALE 2023/2024 MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY KIDS SIZE From CA$24.89 CA$49.92 -CA$25.03 SALE 2006/2007 RETRO MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 2007/2008 RETRO MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 1993/1994 RETRO MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 2007/2008 RETRO MANCHESTER UNITED FOOTBALL SHIRT AWAY 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 2023/2024 MANCHESTER UNITED AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 SALE 2023/2024 PLAYER VERSION MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE MANCHESTER UNITED ORIGINALS TEE BLACK JERSEY 24/25 FOOTBALL JERSEY From CA$24.89 CA$49.92 -CA$25.03 SALE 1998-1999 RETRO LONG SLEEVE MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$38.80 CA$72.17 -CA$33.37 SALE 2023/2024 MANCHESTER UNITED HALF-PULL TRAINING SUIT OFF-WHITE FOOTBALL SHIRT 1:1 THAI QUALITY SET CA$70.92 CA$108.47 -CA$37.55 SALE 24/25 MANCHESTER UNITED HOME JERSEY LONG SLEEVES From CA$31.84 CA$55.49 -CA$23.64 SALE 2007/2008 RETRO LONG SLEEVE MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$38.80 CA$72.17 -CA$33.37 SALE 2009/2010 RETRO MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 2013/2014 RETRO MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 2002/2004 RETRO MANCHESTER UNITED HOME FOOTBALL SHIRT 1:1 THAI QUALITY From CA$31.84 CA$66.61 -CA$34.76 SALE 24/25 MANCHESTER UNITED GOALKEEPER JERSEY FOOTBALL JERSEY From CA$24.89 CA$49.92 -CA$25.03 SALE 2023/2024 MANCHESTER UNITED THIRD AWAY FOOTBALL SHIRT 1:1 THAI QUALITY From CA$24.89 CA$49.92 -CA$25.03 Sorry, there are no products in this collection. 1 2 FOOTBALLSEURO.COM It is an online football mall with a large number of high-quality sports equipment adhering to the principle of "high quality, reliability, and low price", providing the best shopping experience for football enthusiasts. Subscribe today to hear first about our sales Subscribe Thanks for subscribing We accept American Express Apple Pay Mastercard PayPal Visa © 2024 FootBallsEuro Terms and Conditions Privacy Policy About us Contact Us Comment On Bestfball Tracking Order SIGN UP AND SAVE Entice customers to sign up for your mailing list with discounts or exclusive offers. Include an image for extra impact. Subscribe Thanks for subscribing Optional button CART 111 GIFTS POINTS Item has been added ${(function(){ const products = data.products; const getDefaultVariant = function(product){ if (product.min_price_variant.available){ return product.min_price_variant; }else { const avail_variants = product.variants.filter(function(variant){ return variant.available; }); if (avail_variants.length) { return avail_variants[0]; } } }; const toQuery = obj => Object.keys(obj) .map(k => Array.isArray(obj[k]) ? obj[k].map(v => `${k}[]=${encodeURIComponent(v)}`).join('&') : `${k}=${encodeURIComponent(obj[k])}` ) .join('&'); const getDefaultTrackParams = function(product, index){ const variant = getDefaultVariant(product); const params = { aid: 'smart_recommend.2.' + data.id, scm: product.scm || data.scm || '', spm: data.spmBase + '.' + index, ssp: data.ssp || '', }; const trackParams = Object.keys(params).map(function(key){ return params[key]; }).join('__'); return trackParams; }; const hasMore = (data.products.length - data.target_top_product_num - data.page * data.limit) === 0; return ` ${(function(){ return ` ${data.config.pop_title} ${data.rebate_tips || ''} `; })()} ${product.title} Added `; })()} class SpzCustomComponent extends SPZ.BaseElement { constructor(element) { super(element); this.templates_ = null; this.container_ = null; this._atcLineItem = {}; this.cart_ = {}; this.top_product_ids_ = []; this.products_ = []; this.activityId_ = null; this.rendered_ = false; this.myInterceptor_ = null; this.i18n_ = {}; this.config_ = {}; this.page_ = 1; this.limit_ = 10; this.loading_ = false; } static deferredMount() { return false; } isLayoutSupported(layout) { return layout == SPZCore.Layout.CONTAINER; } buildCallback() { this.templates_ = SPZServices.templatesForDoc(this.element); this.setAction_(); } mountCallback() { console.log('pop mounted'); this.i18n_ = window.smartRecommendI18n && window.smartRecommendI18n[document.documentElement.lang || 'en-US'] || {}; const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const modalEl = document.getElementById("smart_cart_pop_modal"); const spmBase = `smart_recommend_2`; const extra = { spmBase: spmBase, i18n: this.i18n_, }; const that = this; document.addEventListener('dj.addToCart', (event) => { try { const e = event.detail; if (e.source === 'buy_now' || window.__upsell_block || this.rendered_) return; that.fetchActivityData({product_id: e.product_id, variant_id: e.variant_id}).then(data => { if (!data || !data.products || !data.products.length) return; that.config_ = data.config; const recommendStyle = document.createElement('style'); recommendStyle.innerHTML = ` #plugin_recommend_atc_pop { display: none !important; } `; document.head.appendChild(recommendStyle); if (data.config.pop_frequency === 'once' && window.sessionStorage.getItem('smart_pop_times') > 0) return; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ api.render(Object.assign({}, data, extra), true).then(function() { that.rendered_ = true; if (data.products.length) { const headEl = document.getElementById("smart_cart_pop_head_render"); if (headEl) { SPZ.whenApiDefined(headEl).then(function(head){ head.render({ data: data }); }); } SPZ.whenApiDefined(modalEl).then(function(api){ that.impressListen('#smart_cart_pop_activity', function(){ that.trackPluginImpression_(data); }); api.open(); const intersectionObserver = new IntersectionObserver( function (entries) { if (entries[0].intersectionRatio > 0){ !that.loading_ && (that.products_.length - that.target_top_product_num_) === that.page_ * that.limit_ && that.viewMore(); } }, { threshold: [0.1] } ); intersectionObserver.observe( document.querySelector('#smart_cart_pop_view_more_text') ); }); } }) }); }) } catch (e) { console.error(e); } }); } unmountCallback() { } viewMore () { const cartPopRenderEl = document.getElementById("smart_cart_pop_render"); const that = this; const data = {}; SPZ.whenApiDefined(cartPopRenderEl).then(function(api){ that.fetchActivityData({ page: that.page_ + 1, limit: that.limit_ }).then(function(data) { data.products = that.products_; data.target_top_product_num = that.target_top_product_num_; data.i18n = that.i18n_; data.spmBase = `smart_recommend_2`; api.render(data); }) }) } fetchActivityData(data) { const that = this; if (data.product_id) { that._atcLineItem = data; } that.loading_ = true; return that.getCart().then(cart => { that.cart_ = cart.cart; return fetch(window.C_SETTINGS.routes.root + "/api/possum/recommend_activities", { method: "POST", headers: { "Content-Type": "application/json", "store-id": window.C_SETTINGS.shop.shop_id, }, body: JSON.stringify({ "show_type": 2, "line_item": { "product_id": that._atcLineItem.product_id, "variant_id": that._atcLineItem.variant_id, }, line_items: cart.cart.line_items, "page": data.page || 1, "limit": data.limit || 10, }) }).then(function(res){ if(res.ok){ return res.json(); } }).then(function(data){ data.cart = cart.cart; if (data.page === 1) { that.target_top_product_num_ = data.target_top_product_num || 0; } that.products_ = that.products_.concat(data.products || []); that.page_ = data.page || 1; that.limit_ = data.limit || 10; return data; }).catch(function(e){ console.log(e); }).finally(function(){ that.loading_ = false; }) }); }; setAction_() { this.registerAction('changeBannerColor', (data) => { if (!data.args.data || !data.args.data.data || !data.args.data.data.data) return false; const config = data.args.data.data.data.config; const bannerBgEl = document.querySelector('.smart_cart_pop_banner_bg'); if (bannerBgEl && config) { bannerBgEl.style.background = config.banner_bg_color; bannerBgEl.style.color = config.banner_text_color; } }); this.registerAction('handleProductChange', (data) => { const that = this; const imageEl = document.getElementById(`smart_cart_pop_image_${data.args.data.product_id}`); SPZ.whenApiDefined(imageEl).then(function(api){ api.render({ data: data.args.data, config: that.config_ }); }); const atcTextEl = document.getElementById(`smart_cart_pop_atc_${data.args.data.product_id}`); SPZ.whenApiDefined(atcTextEl).then(function(api){ api.render({ data: data.args.data, defaultText: data.args.defaultText, soldOutText: that.i18n_.sold_out }); }); if (data.args.data.variant.available) { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.remove('zb-pointer-events-none'); } else { document.getElementById(`smart_cart_pop_atc_btn_${data.args.data.product_id}`).classList.add('zb-pointer-events-none'); } }); this.registerAction('handleProduct', (detail) => { const that = this; this.renderProductsForm_(detail.args.data.data); }); this.registerAction('addATCHook', (data) => { const params = data.args; this.myInterceptor_ = window.djInterceptors && window.djInterceptors.track.use({ event: 'dj.addToCart', params: { aid: 'smart_recommend.2.' + params.activity_id, ssp: params.ssp, scm: params.scm, cfb: params.cfb, spm: `..${window.C_SETTINGS.meta.page.template_name}.${params.spm}`, }, once: true }); }); this.registerAction('handleAtcSuccess', (detail) => { detail.args.data.product = detail.args.data.product || {}; detail.args.data.variant = detail.args.data.variant || {}; const defParams = detail.args.product.split('__'); const product_id = detail.args.data.product.id; const product_title = detail.args.data.product.title; const variant_id = detail.args.data.variant.id; const price = detail.args.data.variant.price; const aid = defParams[0]; const ifb = detail.args.data.product.ifb; const cfb = detail.args.data.product.cfb; const scm = defParams[1]; const spm = defParams[2]; const ssp = defParams[3]; const params = { id: product_id, product_id: product_id, number: 1, name: product_title, variant_id: variant_id, childrenId: variant_id, item_price: price, source: 'add_to_cart', _extra: { aid: aid, ifb: ifb, cfb: cfb, scm: scm, spm: `..${window.C_SETTINGS.meta.page.template_name}.${spm}`, ssp: ssp, } }; const activity_id = `${detail.args.activity_id}`; const target_drive_way = detail.args.target_drive_way; document.getElementById(`smart_cart_pop_loading_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_added_${product_id}`).classList.remove('zb-hidden'); setTimeout(() => { document.getElementById(`smart_cart_pop_added_${product_id}`).classList.add('zb-hidden'); document.getElementById(`smart_cart_pop_atc_${product_id}`).classList.remove('zb-hidden'); document.getElementById(`smart_cart_pop_atc_btn_${product_id}`).classList.remove('zb-pointer-events-none'); }, 1000); this.tranckAddToCart(params); if (target_drive_way === 'rebate') { const bannerEl = document.getElementById(`smart_cart_pop_banner`); this.getRecommendInfo(activity_id).then(res => { if (res && res.rebate_tips) { bannerEl.innerHTML = res.rebate_tips; } }) } }); this.registerAction('handleCartSummary', (event) => { const that = this; const checkoutButtonEle = document.getElementById("smart_cart_pop_checkout_button"); if (checkoutButtonEle) { SPZ.whenApiDefined(checkoutButtonEle).then(function(api){ api.render({ i18n: that.i18n_ }, false); }); } const tipEl = document.getElementById("smart_cart_pop_tip_info"); const cart = event && event.args && event.args.data && event.args.data.data; if (!tipEl || !cart) return; let total_price = cart.total_price; if (!total_price) { SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); } else { this.getBindDiscount_(cart.line_items).then(res => { if (res && res.discount_code){ const total = cart.line_price - cart.total_discount - res.bundle_discount_value; if (total > 0) { total_price = total; } else { total_price = 0; } } SPZ.whenApiDefined(tipEl).then(function(api){ api.render({ total_price: total_price, i18n: that.i18n_ }, false); }); }) } }); this.registerAction('open', () => { window.sessionStorage.setItem('smart_pop_times', Number(window.sessionStorage.getItem('smart_pop_times')) + 1); }); this.registerAction('close', () => { this.rendered_ = false; this.products_ = []; window.djInterceptors && window.djInterceptors.track.eject(this.myInterceptor_); }); } getCart() { return fetch(`${window.C_SETTINGS.routes.root || ''}/api/cart`, { method: 'GET', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, }).then(res => res.json()) } getRecommendInfo (activity_id) { return this.getCart().then(cart => { this.cart_ = cart.cart; return fetch(`${window.C_SETTINGS.routes.root || ''}/api/possum/recommend_info`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', }, body: JSON.stringify({ show_type: 2, rule_id: `${activity_id}`, line_items: cart.cart.line_items, line_item: this._atcLineItem, }) }).then(res => res.json()) }) } renderProductsForm_(data) { const products = data.products; const listPopRenderEl = document.getElementById("smart_cart_pop_render"); if (!listPopRenderEl) return; listPopRenderEl.querySelectorAll('.smart_cart_pop_atc_btn_bg').forEach(function(el){ el.style.background = data.config.add_to_cart_button_color; }); products.forEach(function(product){ const productId = product.id; const productFormEls = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"]`); let variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_mobile ljs-variants`); if (window.innerWidth > 768) { variantsEl = listPopRenderEl.querySelectorAll(`ljs-product-form[product-id="${productId}"] #smart_cart_pop_variant_${productId}_pc ljs-variants`); } productFormEls.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.setProduct(product); }); }); variantsEl.forEach(function(el){ SPZ.whenApiDefined(el).then(function(api){ api.handleRender(product); }); }) }); } tranckAddToCart(detail) { if (window.$) { window.$(document.body).trigger('dj.addToCart', detail); } } trackPluginImpression_(rule){ if (window.sa && window.sa.track) { window.sa.track("module_impressions", { aid: `smart_recommend.2.${rule.id}` }); } } getBindDiscount_(carts) { let bundle_sale_ids = []; try { bundle_sale_ids = sessionStorage['bundle_sale_ids'] && JSON.parse(sessionStorage['bundle_sale_ids']).filter((item, index, arr) => arr.indexOf(item, 0) === index).slice(-5); } catch (err) { console.error(err); } if (!carts.length) { Promise.resolve(); } return fetch(`${window.C_SETTINGS.routes.root || ''}/api/bundle-sales/cart`, { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'store-id': window.C_SETTINGS.shop.shop_id, }, body: JSON.stringify({ cart: carts, action_type: 'cart', bundle_sale_ids }) }).then(res => res.json()) } impressListen(selector, cb) { const el = document.querySelector(selector); const onImpress = (e) => { if (e) { e.stopPropagation(); } cb(); }; if (el && !el.getAttribute('imprsd')) { el.addEventListener('impress', onImpress) } else if (el) { onImpress(); } } } SPZ.defineElement('spz-custom-smart', SpzCustomComponent); ${function(){ return ` ${data.data.rebate_tips || ''} `; }()} ${function(){ const getImageHeight = function(image){ const width = image.width || 500; const height = image.height || 500; const image_size = data.config.image_size || 0; let ratio = 0; if(image_size == 0){ ratio = (height / width).toFixed(2); }else if(image_size == 1){ ratio = 1.5; } return 132 * ratio; }; const image = data.data.variant.image || data.data.product.image; return ` `; }()} ${(function(){ const product = data.product; const avail_variants = product.variants.filter(function(variant){ return variant.available; }); const selected_variant = product.min_price_variant.available ? product.min_price_variant : avail_variants.length && avail_variants[0]; return ` ${option.name} ${ option.values.map(function(value, index){ const checked = selected_variant["option"+option.position] == value ? "checked": ""; return ` ${value} ` }).join("") } ` })()} ${(function(){ const variant = data.variant; return ` `; })()} ${(function(){ const variant = data.variant; return ` ${ variant.options.map(function(option){ return option.value; }).join("/") || 'Not exist' } `; })()} ${(function(){ const variant = data.data && data.data.variant; const defaultText = data.defaultText || 'Add To Cart'; const text = (!variant || variant.available) ? defaultText: data.soldOutText; return ` ${text} `; })()} ${(function(){ let cart = data; if(data.data) { cart = data.data; } return ` ${cart.item_count >=0 ? cart.item_count : '..'} `; })()} ${(function(){ return ` ${data.i18n.checkout} `; })()} Original text Rate this translation Your feedback will be used to help improve Google Translate