www.jeans-fritz.de
Open in
urlscan Pro
194.6.209.208
Public Scan
Submitted URL: http://jeans-fritz.de/
Effective URL: https://www.jeans-fritz.de/
Submission Tags: tranco_l324
Submission: On May 18 via api from DE — Scanned from DE
Effective URL: https://www.jeans-fritz.de/
Submission Tags: tranco_l324
Submission: On May 18 via api from DE — Scanned from DE
Form analysis
15 forms found in the DOMGET https://www.jeans-fritz.de/catalogsearch/result/
<form class="form minisearch" id="search_mini_form" action="https://www.jeans-fritz.de/catalogsearch/result/" method="get">
<div>
<div class="relative group">
<div class="flex">
<input id="search" class="border-gray-300 focus:border-gray-500 focus:ring-0 text-base lg:text-sm h-12 w-full" type="text" x-model="queryPhrase" name="q" value="" placeholder="Wonach suchen Sie?" maxlength="128" role="combobox"
aria-haspopup="false" aria-autocomplete="both" autocomplete="off" aria-expanded="false" @input="getProducts(); $nextTick(() => this.searchOpen = true);" @click.away="searchOpen = false" tabindex="-1">
<div class="absolute top-1/2 -translate-x-1/2 -translate-y-1/2 right-1 hidden md:block" :class="{ 'hidden' : queryPhrase !== '', 'hidden md:block' : queryPhrase === '' }">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="22" height="22"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M507.3 484.7l-141.5-141.5C397 306.8 415.1 259.7 415.1 208c0-114.9-93.13-208-208-208S-.0002 93.13-.0002 208S93.12 416 207.1 416c51.68 0 98.85-18.96 135.2-50.15l141.5 141.5C487.8 510.4 491.9 512 496 512s8.188-1.562 11.31-4.688C513.6 501.1 513.6 490.9 507.3 484.7zM208 384C110.1 384 32 305 32 208S110.1 32 208 32S384 110.1 384 208S305 384 208 384z">
</path>
</svg>
</div>
<button type="button" @click="queryPhrase = ''" class="absolute top-1/2 -translate-x-1/2 -translate-y-1/2 right-1 h-[22px] w-[22px] flex justify-center items-center hidden"
:class="{ 'block' : queryPhrase !== '', 'hidden' : queryPhrase === '' }" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="12" height="12"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M420.7 36.69C426.9 30.44 437.1 30.44 443.3 36.69C449.6 42.93 449.6 53.06 443.3 59.31L246.6 256L443.3 452.7C449.6 458.9 449.6 469.1 443.3 475.3C437.1 481.6 426.9 481.6 420.7 475.3L224 278.6L27.31 475.3C21.07 481.6 10.94 481.6 4.686 475.3C-1.562 469.1-1.562 458.9 4.686 452.7L201.4 256L4.686 59.31C-1.562 53.07-1.562 42.94 4.686 36.69C10.93 30.44 21.06 30.44 27.31 36.69L224 233.4L420.7 36.69z">
</path>
</svg>
</button>
</div>
<div class="absolute w-full flex-col z-50 md:shadow-xl mt-1 bg-white grid search-autocomplete hidden" :class="{
'block': searchOpen,
'hidden': !searchOpen,
'md:border md:border-jf-grey': searchOpen && queryPhrase !== ''
}" x-show="true">
<template x-if="liveSearchSuggestions.length === 0 && liveSearchProducts.length === 0 && queryPhrase !== ''">
<div class="text-sm py-4 md:px-4">
<div class="font-bold"> Keine Treffer </div>
<div> Geben Sie einen anderen Suchbegriff ein. </div>
</div>
</template>
<div class="overflow-y-auto">
<template x-if="liveSearchSuggestions.length >= 1 && queryPhrase !== ''">
<div>
<div class="font-bold text-sm md:px-4 pt-4 pb-2"> Vorschläge </div>
<div class="grid grid-cols-1 text-sm">
<template x-for="suggestion in liveSearchSuggestions">
<button x-text="suggestion" @click="searchSuggestion(suggestion)" type="button" class="md:px-4 py-2 text-left hover:bg-lightGrey"></button>
</template>
</div>
</div>
</template>
<template x-if="liveSearchProducts.length >= 1 && queryPhrase !== ''">
<div class="font-bold text-sm md:px-4 pt-4 pb-2"> Artikel </div>
</template>
<template x-if="liveSearchProducts.length >= 1 && queryPhrase !== ''">
<div class="grid grid-cols-1 text-sm">
<template x-for="product in liveSearchProducts">
<a class="flex md:px-4 py-2 hover:bg-lightGrey cursor-pointer" @click="handleProductClick(product)">
<div class="w-12 h-12">
<img :src="product.image">
</div>
<div class="flex-col ml-4">
<div x-html="getTextWithHighlightedTerm(product.name)"></div>
<div class="flex gap-2">
<div>Art.-Nr.:</div>
<div x-html="getTextWithHighlightedTerm(product.sku)"></div>
</div>
<div class="flex">
<template x-if="product.price > product.minPrice">
<div>
<span>Ab:</span>
<span x-text="window.hyva.formatPrice(product.minPrice)"></span>
</div>
</template>
<template x-if="product.price === product.minPrice">
<div x-text="window.hyva.formatPrice(product.price)"></div>
</template>
</div>
</div>
</a>
</template>
</div>
</template>
</div>
<template x-if="(liveSearchProducts.length >= 1 || liveSearchSuggestions.length >= 1) && queryPhrase !== ''">
<button class="bg-primary hover:bg-primary-hover w-full p-4 text-sm text-button-primary
hover:text-button-primary-hover mt-4 text-center" type="submit"> Alle Ergebnisse anzeigen </button>
</template>
</div>
</div>
</div>
</form>
GET https://www.jeans-fritz.de/catalogsearch/result/
<form class="form minisearch" id="search_mini_form" action="https://www.jeans-fritz.de/catalogsearch/result/" method="get">
<div>
<div class="relative group">
<div class="flex">
<input id="search" class="border-gray-300 focus:border-gray-500 focus:ring-0 text-base lg:text-sm h-12 w-full" type="text" x-model="queryPhrase" name="q" value="" placeholder="Wonach suchen Sie?" maxlength="128" role="combobox"
aria-haspopup="false" aria-autocomplete="both" autocomplete="off" aria-expanded="false" @input="getProducts(); $nextTick(() => this.searchOpen = true);" @click.away="searchOpen = false" tabindex="-1">
<div class="absolute top-1/2 -translate-x-1/2 -translate-y-1/2 right-1 hidden md:block" :class="{ 'hidden' : queryPhrase !== '', 'hidden md:block' : queryPhrase === '' }">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="22" height="22"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M507.3 484.7l-141.5-141.5C397 306.8 415.1 259.7 415.1 208c0-114.9-93.13-208-208-208S-.0002 93.13-.0002 208S93.12 416 207.1 416c51.68 0 98.85-18.96 135.2-50.15l141.5 141.5C487.8 510.4 491.9 512 496 512s8.188-1.562 11.31-4.688C513.6 501.1 513.6 490.9 507.3 484.7zM208 384C110.1 384 32 305 32 208S110.1 32 208 32S384 110.1 384 208S305 384 208 384z">
</path>
</svg>
</div>
<button type="button" @click="queryPhrase = ''" class="absolute top-1/2 -translate-x-1/2 -translate-y-1/2 right-1 h-[22px] w-[22px] flex justify-center items-center hidden"
:class="{ 'block' : queryPhrase !== '', 'hidden' : queryPhrase === '' }" tabindex="-1">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" width="12" height="12"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M420.7 36.69C426.9 30.44 437.1 30.44 443.3 36.69C449.6 42.93 449.6 53.06 443.3 59.31L246.6 256L443.3 452.7C449.6 458.9 449.6 469.1 443.3 475.3C437.1 481.6 426.9 481.6 420.7 475.3L224 278.6L27.31 475.3C21.07 481.6 10.94 481.6 4.686 475.3C-1.562 469.1-1.562 458.9 4.686 452.7L201.4 256L4.686 59.31C-1.562 53.07-1.562 42.94 4.686 36.69C10.93 30.44 21.06 30.44 27.31 36.69L224 233.4L420.7 36.69z">
</path>
</svg>
</button>
</div>
<div class="absolute w-full flex-col z-50 md:shadow-xl mt-1 bg-white grid search-autocomplete hidden" :class="{
'block': searchOpen,
'hidden': !searchOpen,
'md:border md:border-jf-grey': searchOpen && queryPhrase !== ''
}" x-show="true">
<template x-if="liveSearchSuggestions.length === 0 && liveSearchProducts.length === 0 && queryPhrase !== ''">
<div class="text-sm py-4 md:px-4">
<div class="font-bold"> Keine Treffer </div>
<div> Geben Sie einen anderen Suchbegriff ein. </div>
</div>
</template>
<div class="overflow-y-auto">
<template x-if="liveSearchSuggestions.length >= 1 && queryPhrase !== ''">
<div>
<div class="font-bold text-sm md:px-4 pt-4 pb-2"> Vorschläge </div>
<div class="grid grid-cols-1 text-sm">
<template x-for="suggestion in liveSearchSuggestions">
<button x-text="suggestion" @click="searchSuggestion(suggestion)" type="button" class="md:px-4 py-2 text-left hover:bg-lightGrey"></button>
</template>
</div>
</div>
</template>
<template x-if="liveSearchProducts.length >= 1 && queryPhrase !== ''">
<div class="font-bold text-sm md:px-4 pt-4 pb-2"> Artikel </div>
</template>
<template x-if="liveSearchProducts.length >= 1 && queryPhrase !== ''">
<div class="grid grid-cols-1 text-sm">
<template x-for="product in liveSearchProducts">
<a class="flex md:px-4 py-2 hover:bg-lightGrey cursor-pointer" @click="handleProductClick(product)">
<div class="w-12 h-12">
<img :src="product.image">
</div>
<div class="flex-col ml-4">
<div x-html="getTextWithHighlightedTerm(product.name)"></div>
<div class="flex gap-2">
<div>Art.-Nr.:</div>
<div x-html="getTextWithHighlightedTerm(product.sku)"></div>
</div>
<div class="flex">
<template x-if="product.price > product.minPrice">
<div>
<span>Ab:</span>
<span x-text="window.hyva.formatPrice(product.minPrice)"></span>
</div>
</template>
<template x-if="product.price === product.minPrice">
<div x-text="window.hyva.formatPrice(product.price)"></div>
</template>
</div>
</div>
</a>
</template>
</div>
</template>
</div>
<template x-if="(liveSearchProducts.length >= 1 || liveSearchSuggestions.length >= 1) && queryPhrase !== ''">
<button class="bg-primary hover:bg-primary-hover w-full p-4 text-sm text-button-primary
hover:text-button-primary-hover mt-4 text-center" type="submit"> Alle Ergebnisse anzeigen </button>
</template>
</div>
</div>
</div>
</form>
POST
<form class="form form-login" method="post" @submit.prevent="submitForm();" id="login-form">
<div class="fieldset login">
<div class="field email required">
<label class="label" for="form-login-username" form="login-form">
<span>E-Mail Adresse</span>
</label>
<div class="control">
<input name="username" id="form-login-username" x-ref="customer-email" @change="errors = 0" type="email" required="" class="form-input input-text" tabindex="-1">
</div>
</div>
<div class="field password required">
<label for="form-login-password" class="label" form="login-form">
<span>Passwort</span>
</label>
<div class="control">
<input name="password" id="form-login-password" type="password" class="form-input input-text" required="" x-ref="customer-password" @change="errors = 0" tabindex="-1">
</div>
</div>
<input name="context" type="hidden" value="checkout" tabindex="-1">
<div class="actions-toolbar flex justify-between pt-6 pb-2 items-center">
<button type="submit" class="inline-flex btn btn-primary disabled:opacity-75" tabindex="-1"> Anmelden </button>
<a href="https://www.jeans-fritz.de/customer/account/forgotpassword/" tabindex="-1">
Passwort vergessen? </a>
</div>
</div>
</form>
POST
<form method="post" x-bind:action="createAddToCartUrl(product.productId)" @submit.prevent="addToCartRecsEvent($event.target, banner.unitId, product.productId)"
class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full">
<input name="form_key" type="hidden" :value="hyva.getFormKey()">
<input type="hidden" name="product" x-bind:value="product.productId">
<a @click="recsClickEvent(banner.unitId, product.productId, product.url)" class="product photo product-item-photo block mx-auto mb-3 cursor-pointer" tabindex="-1">
<img class="hover:shadow-sm object-contain" loading="lazy" x-bind:alt="product.image?.label" x-bind:title="product.image?.label" x-bind:src="product.image?.url" width="360" height="360">
</a>
<div class="product-info flex flex-col flex-grow">
<div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
<a class="product-item-link cursor-pointer" @click="recsClickEvent(banner.unitId, product.productId, product.url)" x-text="product.name"></a>
</div>
<template x-if="product.prices">
<div class="pt-1 text-gray-900 price-box price-final_price" x-bind:data-product-id="product.productId">
<span class="normal-price">
<span class="price-container price-final_price">
<span x-show="product.prices.minimum.final !== product.prices.maximum.final" class="price-label">Ab</span>
<span id="product-price" class="price-wrapper ">
<span class="price" x-text="hyva.formatPrice(product.prices.minimum.final)"></span>
</span>
</span>
</span>
</div>
</template>
<template x-if="product.addToCartAllowed">
<div class="mt-auto pt-3 flex flex-wrap justify-center items-center">
<button class="w-auto btn btn-primary justify-center text-sm mr-auto" aria-label="Add to Cart">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
</svg>
<span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline"> In den Warenkorb </span>
</button>
</div>
</template>
</div>
</form>
POST
<form method="post" x-bind:action="createAddToCartUrl(product.productId)" @submit.prevent="addToCartRecsEvent($event.target, banner.unitId, product.productId)"
class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full">
<input name="form_key" type="hidden" :value="hyva.getFormKey()">
<input type="hidden" name="product" x-bind:value="product.productId">
<a @click="recsClickEvent(banner.unitId, product.productId, product.url)" class="product photo product-item-photo block mx-auto mb-3 cursor-pointer" tabindex="-1">
<img class="hover:shadow-sm object-contain" loading="lazy" x-bind:alt="product.image?.label" x-bind:title="product.image?.label" x-bind:src="product.image?.url" width="360" height="360">
</a>
<div class="product-info flex flex-col flex-grow">
<div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
<a class="product-item-link cursor-pointer" @click="recsClickEvent(banner.unitId, product.productId, product.url)" x-text="product.name"></a>
</div>
<template x-if="product.prices">
<div class="pt-1 text-gray-900 price-box price-final_price" x-bind:data-product-id="product.productId">
<span class="normal-price">
<span class="price-container price-final_price">
<span x-show="product.prices.minimum.final !== product.prices.maximum.final" class="price-label">Ab</span>
<span id="product-price" class="price-wrapper ">
<span class="price" x-text="hyva.formatPrice(product.prices.minimum.final)"></span>
</span>
</span>
</span>
</div>
</template>
<template x-if="product.addToCartAllowed">
<div class="mt-auto pt-3 flex flex-wrap justify-center items-center">
<button class="w-auto btn btn-primary justify-center text-sm mr-auto" aria-label="Add to Cart">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
</svg>
<span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline"> In den Warenkorb </span>
</button>
</div>
</template>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP2ZhcmJwYWxldHRlPTQzJmNhdElkPTE3NA~~/product/157642/
<form method="post" class="product-item" action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP2ZhcmJwYWxldHRlPTQzJmNhdElkPTE3NA~~/product/157642/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="157642" tabindex="-1">
<div class="relative" id="p-157642">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-157642">
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(157642)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647d4bbbbffd()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 157642)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/modischer-maxirock-mit-print-0116351-430?color=215" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-157642.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464322726_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/modischer-maxirock-mit-print-0116351-430?color=215" class="product-item-link" data-role="product-url" tabindex="-1">
Modischer Maxirock mit Print </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647d4bbbbffb()" @update-prices-157642.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="157642" data-price-box="product-id-157642"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-157642" data-price-amount="29.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">29,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_157642() {
const configurableOptionsComponent = initConfigurableOptions('157642', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "215",
"label": "oliv gemustert",
"products": ["160625", "160628", "160629"],
"default_value": "430"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "315",
"label": "36",
"products": [],
"default_value": "36"
}, {
"id": "314",
"label": "38",
"products": ["160628"],
"default_value": "38"
}, {
"id": "318",
"label": "40",
"products": ["160629"],
"default_value": "40"
}, {
"id": "316",
"label": "42",
"products": [],
"default_value": "42"
}, {
"id": "319",
"label": "44",
"products": ["160625"],
"default_value": "44"
}, {
"id": "317",
"label": "46",
"products": [],
"default_value": "46"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"160624": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160625": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160626": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160627": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160628": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160629": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
}
},
"productId": "157642",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"160624": {
"93": "215",
"189": "316"
},
"160625": {
"93": "215",
"189": "319"
},
"160626": {
"93": "215",
"189": "317"
},
"160627": {
"93": "215",
"189": "315"
},
"160628": {
"93": "215",
"189": "314"
},
"160629": {
"93": "215",
"189": "318"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"preSelectedGallery": [],
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"160624": "0116351010",
"160625": "0116351011",
"160626": "0116351012",
"160627": "0116351007",
"160628": "0116351008",
"160629": "0116351009"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"215": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464322726_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464322726_mv_G1.jpg",
"label": "oliv gemustert",
"orig_value": "#a09c52"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('157642');
this.updateProductUrl('157642', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-157642", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_157642()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-157642-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-157642-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">-3</div>
</div>
</div>
</div>
<div x-data="Replacer_157642()" x-bind="eventListeners">
</div>
<script>
function Replacer_157642() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"160624": " ",
"160625": " ",
"160626": " ",
"160627": " ",
"160628": " ",
"160629": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 157642;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-157642.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647d4bbbbffb() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP3N2MT1hZmZpbGlhdGUmc3ZfY2FtcGFpZ25faWQ9NTc1NTg5JmF3Yz0xNDg5OV8xNzE1OTgzODIxXzFlYzk2MjkwY2QzYmM2NDA5NDg3NTQ3NzVlMmE4NmY5/product/157588/
<form method="post" class="product-item"
action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP3N2MT1hZmZpbGlhdGUmc3ZfY2FtcGFpZ25faWQ9NTc1NTg5JmF3Yz0xNDg5OV8xNzE1OTgzODIxXzFlYzk2MjkwY2QzYmM2NDA5NDg3NTQ3NzVlMmE4NmY5/product/157588/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="157588" tabindex="-1">
<div class="relative" id="p-157588">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-157588">
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(157588)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647d5ce9b92e()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 157588)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/leichte-bluse-mit-alloverprint-0116282-491?color=491" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-157588.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464314141_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/leichte-bluse-mit-alloverprint-0116282-491" class="product-item-link" data-role="product-url" tabindex="-1">
Leichte Bluse mit Alloverprint </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647d5ce9b92d()" @update-prices-157588.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="157588" data-price-box="product-id-157588"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-157588" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_157588() {
const configurableOptionsComponent = initConfigurableOptions('157588', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "179",
"label": "beere gemustert",
"products": ["158390", "158391", "158392", "158394"],
"default_value": "319"
}, {
"id": "252",
"label": "denim blau gemustert",
"products": ["158396", "158397"],
"default_value": "491"
}, {
"id": "136",
"label": "koralle gemustert",
"products": [],
"default_value": "361"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "315",
"label": "36",
"products": ["158390"],
"default_value": "36"
}, {
"id": "314",
"label": "38",
"products": ["158391", "158396"],
"default_value": "38"
}, {
"id": "318",
"label": "40",
"products": ["158392", "158397"],
"default_value": "40"
}, {
"id": "316",
"label": "42",
"products": [],
"default_value": "42"
}, {
"id": "319",
"label": "44",
"products": ["158394"],
"default_value": "44"
}, {
"id": "317",
"label": "46",
"products": [],
"default_value": "46"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"158386": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158390": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158391": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158392": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158393": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158394": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158395": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158396": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158397": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158398": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158399": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158400": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
}
},
"productId": "157588",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"158386": {
"93": "252",
"189": "315"
},
"158390": {
"93": "179",
"189": "315"
},
"158391": {
"93": "179",
"189": "314"
},
"158392": {
"93": "179",
"189": "318"
},
"158393": {
"93": "179",
"189": "316"
},
"158394": {
"93": "179",
"189": "319"
},
"158395": {
"93": "179",
"189": "317"
},
"158396": {
"93": "252",
"189": "314"
},
"158397": {
"93": "252",
"189": "318"
},
"158398": {
"93": "252",
"189": "316"
},
"158399": {
"93": "252",
"189": "319"
},
"158400": {
"93": "252",
"189": "317"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"preSelectedGallery": [],
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"158386": "0116282001",
"158390": "0116282013",
"158391": "0116282014",
"158392": "0116282015",
"158393": "0116282016",
"158394": "0116282017",
"158395": "0116282018",
"158396": "0116282002",
"158397": "0116282003",
"158398": "0116282004",
"158399": "0116282005",
"158400": "0116282006"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"179": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464319450_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464319450_mv_G1.jpg",
"label": "beere gemustert",
"orig_value": "#c64b4b"
},
"252": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464314141_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464314141_mv_G1.jpg",
"label": "denim blau gemustert",
"orig_value": "#5794c9"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('157588');
this.updateProductUrl('157588', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-157588", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_157588()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-157588-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-157588-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">-1</div>
</div>
</div>
</div>
<div x-data="Replacer_157588()" x-bind="eventListeners">
</div>
<script>
function Replacer_157588() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"158386": " ",
"158390": " ",
"158391": " ",
"158392": " ",
"158393": " ",
"158394": " ",
"158395": " ",
"158396": " ",
"158397": " ",
"158398": " ",
"158399": " ",
"158400": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 157588;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-157588.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647d5ce9b92d() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP2ZhcmJwYWxldHRlPTQzJmNhdElkPTE3NA~~/product/159249/
<form method="post" class="product-item" action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP2ZhcmJwYWxldHRlPTQzJmNhdElkPTE3NA~~/product/159249/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="159249" tabindex="-1">
<div class="relative" id="p-159249">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-159249">
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(159249)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647d4bbdb6c3()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 159249)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/oversized-shirt-mit-rueckenprint-0116185-140?color=140" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-159249.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464284147_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/oversized-shirt-mit-rueckenprint-0116185-140" class="product-item-link" data-role="product-url" tabindex="-1">
Oversized Shirt mit Rückenprint </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647d4bbdb6c1()" @update-prices-159249.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="159249" data-price-box="product-id-159249"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-159249" data-price-amount="9.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">9,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_159249() {
const configurableOptionsComponent = initConfigurableOptions('159249', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "240",
"label": "eisrosa",
"products": ["159553", "159555", "159557", "159558"],
"default_value": "487"
}, {
"id": "85",
"label": "gelb",
"products": ["159561", "159564"],
"default_value": "140"
}, {
"id": "33",
"label": "koralle",
"products": ["159550", "159551", "159552", "159570", "159572"],
"default_value": "155"
}, {
"id": "34",
"label": "wei\u00df",
"products": ["159566", "159567", "159568", "159569"],
"default_value": "110"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "315",
"label": "36",
"products": ["159553", "159570"],
"default_value": "36"
}, {
"id": "314",
"label": "38",
"products": [],
"default_value": "38"
}, {
"id": "318",
"label": "40",
"products": ["159555", "159561", "159566", "159572"],
"default_value": "40"
}, {
"id": "316",
"label": "42",
"products": ["159550", "159567"],
"default_value": "42"
}, {
"id": "319",
"label": "44",
"products": ["159551", "159557", "159568"],
"default_value": "44"
}, {
"id": "317",
"label": "46",
"products": ["159552", "159558", "159564", "159569"],
"default_value": "46"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"159549": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159550": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159551": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159552": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159553": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159554": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159555": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159556": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159557": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159558": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159559": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159560": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159561": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159562": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159563": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159564": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159565": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159566": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159567": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159568": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159569": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159570": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159571": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159572": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 8.3949569831933
},
"oldPrice": {
"amount": 9.99
},
"basePrice": {
"amount": 8.3949569831933
},
"finalPrice": {
"amount": 9.99
}
},
"productId": "159249",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"159549": {
"93": "34",
"189": "315"
},
"159550": {
"93": "33",
"189": "316"
},
"159551": {
"93": "33",
"189": "319"
},
"159552": {
"93": "33",
"189": "317"
},
"159553": {
"93": "240",
"189": "315"
},
"159554": {
"93": "240",
"189": "314"
},
"159555": {
"93": "240",
"189": "318"
},
"159556": {
"93": "240",
"189": "316"
},
"159557": {
"93": "240",
"189": "319"
},
"159558": {
"93": "240",
"189": "317"
},
"159559": {
"93": "85",
"189": "314"
},
"159560": {
"93": "34",
"189": "314"
},
"159561": {
"93": "85",
"189": "318"
},
"159562": {
"93": "85",
"189": "316"
},
"159563": {
"93": "85",
"189": "319"
},
"159564": {
"93": "85",
"189": "317"
},
"159565": {
"93": "85",
"189": "315"
},
"159566": {
"93": "34",
"189": "318"
},
"159567": {
"93": "34",
"189": "316"
},
"159568": {
"93": "34",
"189": "319"
},
"159569": {
"93": "34",
"189": "317"
},
"159570": {
"93": "33",
"189": "315"
},
"159571": {
"93": "33",
"189": "314"
},
"159572": {
"93": "33",
"189": "318"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"preSelectedGallery": [],
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"159549": "0116185001",
"159550": "0116185010",
"159551": "0116185011",
"159552": "0116185012",
"159553": "0116185013",
"159554": "0116185014",
"159555": "0116185015",
"159556": "0116185016",
"159557": "0116185017",
"159558": "0116185018",
"159559": "0116185019",
"159560": "0116185002",
"159561": "0116185020",
"159562": "0116185021",
"159563": "0116185022",
"159564": "0116185023",
"159565": "0116185024",
"159566": "0116185003",
"159567": "0116185004",
"159568": "0116185005",
"159569": "0116185006",
"159570": "0116185007",
"159571": "0116185008",
"159572": "0116185009"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"240": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464284093_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464284093_mv_G1.jpg",
"label": "eisrosa",
"orig_value": "#f2c9dc"
},
"85": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464284147_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464284147_mv_G1.jpg",
"label": "gelb",
"orig_value": "#ffcd4d"
},
"33": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464284031_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464284031_mv_G1.jpg",
"label": "koralle",
"orig_value": "#f2c9dc"
},
"34": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464283973_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464283973_mv_G1.jpg",
"label": "wei\u00df",
"orig_value": "#fffef7"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('159249');
this.updateProductUrl('159249', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-159249", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_159249()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-159249-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-159249-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">0</div>
</div>
</div>
</div>
<div x-data="Replacer_159249()" x-bind="eventListeners">
</div>
<script>
function Replacer_159249() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"159549": " ",
"159550": " ",
"159551": " ",
"159552": " ",
"159553": " ",
"159554": " ",
"159555": " ",
"159556": " ",
"159557": " ",
"159558": " ",
"159559": " ",
"159560": " ",
"159561": " ",
"159562": " ",
"159563": " ",
"159564": " ",
"159565": " ",
"159566": " ",
"159567": " ",
"159568": " ",
"159569": " ",
"159570": " ",
"159571": " ",
"159572": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 159249;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-159249.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647d4bbdb6c1() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUv/product/159340/
<form method="post" class="product-item" action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUv/product/159340/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="159340" tabindex="-1">
<div class="relative" id="p-159340">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-159340">
<div>
<div class="bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2">
</div>
</div>
</div>
<div>
<div class="inline-flex content-center items-center bg-white max-w-fit pr-2 pl-2 pt-1.5 pb-2 mt-2">
<span class="text-black text-xs uppercase">Neu</span>
</div>
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(159340)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647d639e766b()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 159340)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/luftiges-blusentop-print-und-rueschen-0116331-191?color=191" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-159340.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464313489_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/luftiges-blusentop-print-und-rueschen-0116331-191" class="product-item-link" data-role="product-url" tabindex="-1">
Luftiges Blusentop, Print & Rüschen </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647d639e766a()" @update-prices-159340.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="159340" data-price-box="product-id-159340"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-159340" data-price-amount="19.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">19,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_159340() {
const configurableOptionsComponent = initConfigurableOptions('159340', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "50",
"label": "blau gemustert",
"products": ["160041", "160045", "160046", "160047", "160048", "160049"],
"default_value": "191"
}, {
"id": "136",
"label": "koralle gemustert",
"products": ["160042", "160043", "160044", "160050", "160051", "160052"],
"default_value": "361"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "315",
"label": "36",
"products": ["160041", "160050"],
"default_value": "36"
}, {
"id": "314",
"label": "38",
"products": ["160045", "160051"],
"default_value": "38"
}, {
"id": "318",
"label": "40",
"products": ["160046", "160052"],
"default_value": "40"
}, {
"id": "316",
"label": "42",
"products": ["160042", "160047"],
"default_value": "42"
}, {
"id": "319",
"label": "44",
"products": ["160043", "160048"],
"default_value": "44"
}, {
"id": "317",
"label": "46",
"products": ["160044", "160049"],
"default_value": "46"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"160041": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160042": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160043": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160044": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160045": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160046": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160047": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160048": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160049": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160050": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160051": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"160052": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 16.798318327731
},
"oldPrice": {
"amount": 19.99
},
"basePrice": {
"amount": 16.798318327731
},
"finalPrice": {
"amount": 19.99
}
},
"productId": "159340",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"160041": {
"93": "50",
"189": "315"
},
"160042": {
"93": "136",
"189": "316"
},
"160043": {
"93": "136",
"189": "319"
},
"160044": {
"93": "136",
"189": "317"
},
"160045": {
"93": "50",
"189": "314"
},
"160046": {
"93": "50",
"189": "318"
},
"160047": {
"93": "50",
"189": "316"
},
"160048": {
"93": "50",
"189": "319"
},
"160049": {
"93": "50",
"189": "317"
},
"160050": {
"93": "136",
"189": "315"
},
"160051": {
"93": "136",
"189": "314"
},
"160052": {
"93": "136",
"189": "318"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"160041": "0116331001",
"160042": "0116331010",
"160043": "0116331011",
"160044": "0116331012",
"160045": "0116331002",
"160046": "0116331003",
"160047": "0116331004",
"160048": "0116331005",
"160049": "0116331006",
"160050": "0116331007",
"160051": "0116331008",
"160052": "0116331009"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"50": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464313489_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464313489_mv_G1.jpg",
"label": "blau gemustert",
"orig_value": "#5794c9"
},
"136": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464313540_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464313540_mv_G1.jpg",
"label": "koralle gemustert",
"orig_value": "#f2c9dc"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('159340');
this.updateProductUrl('159340', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-159340", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_159340()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-159340-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-159340-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">-2</div>
</div>
</div>
</div>
<div x-data="Replacer_159340()" x-bind="eventListeners">
</div>
<script>
function Replacer_159340() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"160041": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160042": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160043": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160044": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160045": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160046": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160047": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160048": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160049": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160050": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160051": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n ",
"160052": " <div>\n <div class=\"bg-sustainability bg-sustainability-icon inline-flex justify-center content-center items-center w-[1.875rem] h-[1.875rem] mt-2\">\n\n <\/div>\n <\/div>\n "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 159340;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-159340.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647d639e766a() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP3ZlZD0yYWhVS0V3aTY5Yk9zd0pXR0F4VTJTdkVESGZOdEJJa1FnVTk2QkFnWUVBcw~~/product/157509/
<form method="post" class="product-item" action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP3ZlZD0yYWhVS0V3aTY5Yk9zd0pXR0F4VTJTdkVESGZOdEJJa1FnVTk2QkFnWUVBcw~~/product/157509/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="157509" tabindex="-1">
<div class="relative" id="p-157509">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-157509">
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(157509)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647bb1e47cde()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 157509)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/polo-shirt-mit-plakativen-details-0116215-110?color=34" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-157509.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464309925_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/polo-shirt-mit-plakativen-details-0116215-110?color=34" class="product-item-link" data-role="product-url" tabindex="-1">
Polo-Shirt mit plakativen Details </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647bb1e47cdd()" @update-prices-157509.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="157509" data-price-box="product-id-157509"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-157509" data-price-amount="29.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">29,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_157509() {
const configurableOptionsComponent = initConfigurableOptions('157509', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "34",
"label": "wei\u00df",
"products": ["157948", "157950", "157951", "157952"],
"default_value": "110"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "302",
"label": "S",
"products": [],
"default_value": "S"
}, {
"id": "301",
"label": "M",
"products": ["157948"],
"default_value": "M"
}, {
"id": "298",
"label": "L",
"products": [],
"default_value": "L"
}, {
"id": "303",
"label": "XL",
"products": ["157950"],
"default_value": "XL"
}, {
"id": "304",
"label": "XXL",
"products": ["157951"],
"default_value": "XXL"
}, {
"id": "297",
"label": "3XL",
"products": ["157952"],
"default_value": "3XL"
}, {
"id": "299",
"label": "4XL",
"products": [],
"default_value": "4XL"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"157948": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"157949": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"157950": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"157951": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"157952": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"157953": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
}
},
"productId": "157509",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"157948": {
"93": "34",
"189": "301"
},
"157949": {
"93": "34",
"189": "298"
},
"157950": {
"93": "34",
"189": "303"
},
"157951": {
"93": "34",
"189": "304"
},
"157952": {
"93": "34",
"189": "297"
},
"157953": {
"93": "34",
"189": "299"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"preSelectedGallery": [],
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"157948": "0116215001",
"157949": "0116215002",
"157950": "0116215003",
"157951": "0116215004",
"157952": "0116215005",
"157953": "0116215006"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"34": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464309925_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464309925_mv_G1.jpg",
"label": "wei\u00df",
"orig_value": "#fffef7"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('157509');
this.updateProductUrl('157509', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-157509", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_157509()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-157509-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-157509-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">-3</div>
</div>
</div>
</div>
<div x-data="Replacer_157509()" x-bind="eventListeners">
</div>
<script>
function Replacer_157509() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"157948": " ",
"157949": " ",
"157950": " ",
"157951": " ",
"157952": " ",
"157953": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 157509;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-157509.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647bb1e47cdd() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUv/product/159235/
<form method="post" class="product-item" action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUv/product/159235/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="159235" tabindex="-1">
<div class="relative" id="p-159235">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-159235">
</div>
<div>
<div class="inline-flex content-center items-center bg-white max-w-fit pr-2 pl-2 pt-1.5 pb-2 mt-2">
<span class="text-black text-xs uppercase">Neu</span>
</div>
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(159235)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647c831d1a58()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 159235)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/struktur-hemd-mit-alloverprint-0116136-111?color=39" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-159235.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464291855_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/struktur-hemd-mit-alloverprint-0116136-111?color=39" class="product-item-link" data-role="product-url" tabindex="-1">
Struktur-Hemd mit Alloverprint </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647c831d1a57()" @update-prices-159235.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="159235" data-price-box="product-id-159235"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-159235" data-price-amount="29.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">29,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_159235() {
const configurableOptionsComponent = initConfigurableOptions('159235', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "39",
"label": "wei\u00df gemustert",
"products": ["159433", "159434", "159435", "159437", "159438", "159441"],
"default_value": "111"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "302",
"label": "S",
"products": ["159441"],
"default_value": "S"
}, {
"id": "301",
"label": "M",
"products": ["159433"],
"default_value": "M"
}, {
"id": "298",
"label": "L",
"products": ["159434"],
"default_value": "L"
}, {
"id": "303",
"label": "XL",
"products": ["159435"],
"default_value": "XL"
}, {
"id": "304",
"label": "XXL",
"products": ["159437"],
"default_value": "XXL"
}, {
"id": "297",
"label": "3XL",
"products": ["159438"],
"default_value": "3XL"
}, {
"id": "299",
"label": "4XL",
"products": [],
"default_value": "4XL"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"159433": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159434": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159435": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159437": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159438": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159439": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159441": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
}
},
"productId": "159235",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"159433": {
"93": "39",
"189": "301"
},
"159434": {
"93": "39",
"189": "298"
},
"159435": {
"93": "39",
"189": "303"
},
"159437": {
"93": "39",
"189": "304"
},
"159438": {
"93": "39",
"189": "297"
},
"159439": {
"93": "39",
"189": "299"
},
"159441": {
"93": "39",
"189": "302"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"159433": "0116136001",
"159434": "0116136002",
"159435": "0116136003",
"159437": "0116136004",
"159438": "0116136005",
"159439": "0116136006",
"159441": "0116136007"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"39": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464291855_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464291855_mv_G1.jpg",
"label": "wei\u00df gemustert",
"orig_value": "#fffef7"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('159235');
this.updateProductUrl('159235', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-159235", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_159235()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-159235-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-159235-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">-3</div>
</div>
</div>
</div>
<div x-data="Replacer_159235()" x-bind="eventListeners">
</div>
<script>
function Replacer_159235() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"159433": " ",
"159434": " ",
"159435": " ",
"159437": " ",
"159438": " ",
"159439": " ",
"159441": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 159235;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-159235.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647c831d1a57() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP3N2MT1hZmZpbGlhdGUmc3ZfY2FtcGFpZ25faWQ9MTQzNDY2JmF3Yz0xNDg5OV8xNzE1OTc5OTEyXzkzOTQyNmI2NDRkNmZkODJiMTIzOTA0YTRjODdhN2Qz/product/157597/
<form method="post" class="product-item"
action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUvP3N2MT1hZmZpbGlhdGUmc3ZfY2FtcGFpZ25faWQ9MTQzNDY2JmF3Yz0xNDg5OV8xNzE1OTc5OTEyXzkzOTQyNmI2NDRkNmZkODJiMTIzOTA0YTRjODdhN2Qz/product/157597/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="157597" tabindex="-1">
<div class="relative" id="p-157597">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-157597">
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(157597)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647c6898a83e()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 157597)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/worker-jeans-shorts-im-jogg-style-0116289-307?color=307" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-157597.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464309062_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/worker-jeans-shorts-im-jogg-style-0116289-307" class="product-item-link" data-role="product-url" tabindex="-1">
Worker Jeans-Shorts im Jogg-Style </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647c6898a83d()" @update-prices-157597.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="157597" data-price-box="product-id-157597"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-157597" data-price-amount="29.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">29,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_157597() {
const configurableOptionsComponent = initConfigurableOptions('157597', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "81",
"label": "black used",
"products": ["158450", "158452", "158457"],
"default_value": "255"
}, {
"id": "115",
"label": "dark used",
"products": ["158441", "158443", "158464"],
"default_value": "303"
}, {
"id": "64",
"label": "grey used",
"products": ["158444", "158446"],
"default_value": "248"
}, {
"id": "123",
"label": "light used",
"products": ["158440", "158451", "158453"],
"default_value": "307"
}, {
"id": "121",
"label": "medium used",
"products": ["158454", "158460", "158461", "158462"],
"default_value": "305"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "302",
"label": "S",
"products": ["158440", "158444", "158460", "158464"],
"default_value": "S"
}, {
"id": "301",
"label": "M",
"products": ["158441", "158451", "158461"],
"default_value": "M"
}, {
"id": "298",
"label": "L",
"products": ["158446", "158450", "158462"],
"default_value": "L"
}, {
"id": "303",
"label": "XL",
"products": ["158443", "158452"],
"default_value": "XL"
}, {
"id": "304",
"label": "XXL",
"products": ["158453", "158454", "158457"],
"default_value": "XXL"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"158440": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158441": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158442": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158443": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158444": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158445": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158446": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158447": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158448": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158449": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158450": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158451": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158452": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158453": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158454": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158455": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158456": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158457": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158458": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158459": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158460": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158461": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158462": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158463": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"158464": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
}
},
"productId": "157597",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"158440": {
"93": "123",
"189": "302"
},
"158441": {
"93": "115",
"189": "301"
},
"158442": {
"93": "115",
"189": "298"
},
"158443": {
"93": "115",
"189": "303"
},
"158444": {
"93": "64",
"189": "302"
},
"158445": {
"93": "64",
"189": "301"
},
"158446": {
"93": "64",
"189": "298"
},
"158447": {
"93": "64",
"189": "303"
},
"158448": {
"93": "81",
"189": "302"
},
"158449": {
"93": "81",
"189": "301"
},
"158450": {
"93": "81",
"189": "298"
},
"158451": {
"93": "123",
"189": "301"
},
"158452": {
"93": "81",
"189": "303"
},
"158453": {
"93": "123",
"189": "304"
},
"158454": {
"93": "121",
"189": "304"
},
"158455": {
"93": "115",
"189": "304"
},
"158456": {
"93": "64",
"189": "304"
},
"158457": {
"93": "81",
"189": "304"
},
"158458": {
"93": "123",
"189": "298"
},
"158459": {
"93": "123",
"189": "303"
},
"158460": {
"93": "121",
"189": "302"
},
"158461": {
"93": "121",
"189": "301"
},
"158462": {
"93": "121",
"189": "298"
},
"158463": {
"93": "121",
"189": "303"
},
"158464": {
"93": "115",
"189": "302"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"preSelectedGallery": [],
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"158440": "0116289001",
"158441": "0116289010",
"158442": "0116289011",
"158443": "0116289012",
"158444": "0116289013",
"158445": "0116289014",
"158446": "0116289015",
"158447": "0116289016",
"158448": "0116289017",
"158449": "0116289018",
"158450": "0116289019",
"158451": "0116289002",
"158452": "0116289020",
"158453": "0116289021",
"158454": "0116289022",
"158455": "0116289023",
"158456": "0116289024",
"158457": "0116289025",
"158458": "0116289003",
"158459": "0116289004",
"158460": "0116289005",
"158461": "0116289006",
"158462": "0116289007",
"158463": "0116289008",
"158464": "0116289009"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"81": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464309215_v_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464309215_v_G1.jpg",
"label": "black used",
"orig_value": "#000000"
},
"115": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464309130_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464309130_mv_G1.jpg",
"label": "dark used",
"orig_value": "#5794c9"
},
"64": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464309178_v_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464309178_v_G1.jpg",
"label": "grey used",
"orig_value": "#a6a6a6"
},
"123": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464309062_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464309062_mv_G1.jpg",
"label": "light used",
"orig_value": "#5794c9"
},
"121": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464309093_v_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464309093_v_G1.jpg",
"label": "medium used",
"orig_value": "#5794c9"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('157597');
this.updateProductUrl('157597', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-157597", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_157597()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-157597-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-157597-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4">1</div>
</div>
</div>
</div>
<div x-data="Replacer_157597()" x-bind="eventListeners">
</div>
<script>
function Replacer_157597() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"158440": " ",
"158441": " ",
"158442": " ",
"158443": " ",
"158444": " ",
"158445": " ",
"158446": " ",
"158447": " ",
"158448": " ",
"158449": " ",
"158450": " ",
"158451": " ",
"158452": " ",
"158453": " ",
"158454": " ",
"158455": " ",
"158456": " ",
"158457": " ",
"158458": " ",
"158459": " ",
"158460": " ",
"158461": " ",
"158462": " ",
"158463": " ",
"158464": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 157597;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-157597.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647c6898a83d() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUv/product/159244/
<form method="post" class="product-item" action="https://www.jeans-fritz.de/checkout/cart/add/uenc/aHR0cHM6Ly93d3cuamVhbnMtZnJpdHouZGUv/product/159244/">
<input name="form_key" type="hidden" value="xxKlWkqz5wvst8Wj" tabindex="-1"> <input type="hidden" name="product" value="159244" tabindex="-1">
<div class="relative" id="p-159244">
<!--Product Badges-->
<div class="absolute z-20 left-2">
<div data-id="pdp-info-badges-159244">
</div>
</div>
<!--Product Favorite Button-->
<div class="absolute z-30 lg:top-4 lg:right-4 top-2 right-2">
<button x-data="initWishlist()" data-type="add-to-wishlist" @click.prevent="addToWishlist(159244)" aria-label="Zur Wunschliste hinzufügen" type="button" tabindex="-1">
<div x-data="initOnWishlist__6647c831e17bd()">
<div @private-content-loaded.window="checkOnWishlist($event.detail.data, 159244)">
<div x-show="isWished" style="display: none;">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" class="text-jf-red" width="23" height="20" fill="currentColor"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path fill="currentColor"
d="M0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L256 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 .0003 232.4 .0003 190.9L0 190.9z">
</path>
</svg>
</div>
<div x-show="!isWished">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" width="23" height="20"
role="img"><!--! Font Awesome Pro 6.1.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
<path
d="M255.1 96L267.1 84.02C300.6 51.37 347 36.51 392.6 44.1C461.5 55.58 512 115.2 512 185.1V190.9C512 232.4 494.8 272.1 464.4 300.4L283.7 469.1C276.2 476.1 266.3 480 256 480C245.7 480 235.8 476.1 228.3 469.1L47.59 300.4C17.23 272.1 0 232.4 0 190.9V185.1C0 115.2 50.52 55.58 119.4 44.1C164.1 36.51 211.4 51.37 244 84.02L255.1 96zM255.1 141.3L221.4 106.6C196.1 81.31 160 69.77 124.7 75.66C71.21 84.58 31.1 130.9 31.1 185.1V190.9C31.1 223.6 45.55 254.7 69.42 277L250.1 445.7C251.7 447.2 253.8 448 255.1 448C258.2 448 260.3 447.2 261.9 445.7L442.6 277C466.4 254.7 480 223.6 480 190.9V185.1C480 130.9 440.8 84.58 387.3 75.66C351.1 69.77 315.9 81.31 290.6 106.6L255.1 141.3z">
</path>
</svg>
</div>
</div>
</div>
</button>
</div>
<div class="flex group relative">
<a href="https://www.jeans-fritz.de/print-hemd-aus-baumwolle-0116140-195?color=65" data-role="product-url" class="product-item-link h-full w-full z-10" tabindex="-1">
<img class="h-full w-full object-cover" loading="lazy" x-data="" @update-gallery-159244.window="$root.src = $event.detail" alt="Model Front View" title="Model Front View" src="https://www.jeans-fritz.de/media/catalog/product/cache/cc743bab97670752359b4a6fc1fa20e2/4/0/4066464291435_mv_G1.jpg" width="460" height="600">
</a>
</div>
<!--Product Descriptions-->
<div class="pt-2 ml-2 mr-2 lg:m-0">
<div class="flex-col">
<div class="flex justify-between mb-4 lg:mb-0">
<!--Product Name-->
<h6 class="w-24 lg:w-full truncate ...">
<a href="https://www.jeans-fritz.de/print-hemd-aus-baumwolle-0116140-195?color=65" class="product-item-link" data-role="product-url" tabindex="-1">
Print-Hemd aus Baumwolle </a>
</h6>
<!--Product Price-->
<h6 class="justify-self-end product-price-category" x-data="initPriceBox__6647c831e17bc()" @update-prices-159244.window="updatePrice($event.detail);">
<div class="price-box price-final_price" data-role="priceBox" data-product-id="159244" data-price-box="product-id-159244"><span class="normal-price">
<span class="price-container price-final_price tax weee">
<span class="price-label">Ab</span>
<span id="product-price-159244" data-price-amount="29.99" data-price-type="finalPrice" class="price-wrapper "><span class="price">29,99 €</span></span>
</span>
</span>
</div>
</h6>
</div>
<!--Product Swatches-->
<div>
<script>
function initConfigurableSwatchOptions_159244() {
const configurableOptionsComponent = initConfigurableOptions('159244', {
"attributes": {
"93": {
"id": "93",
"code": "color",
"label": "Farbe",
"options": [{
"id": "65",
"label": "aqua",
"products": ["159511", "159512", "159513", "159514", "159516"],
"default_value": "195"
}],
"position": "0"
},
"189": {
"id": "189",
"code": "jf_size",
"label": "Gr\u00f6\u00dfe",
"options": [{
"id": "302",
"label": "S",
"products": [],
"default_value": "S"
}, {
"id": "301",
"label": "M",
"products": ["159511"],
"default_value": "M"
}, {
"id": "298",
"label": "L",
"products": ["159512"],
"default_value": "L"
}, {
"id": "303",
"label": "XL",
"products": ["159513"],
"default_value": "XL"
}, {
"id": "304",
"label": "XXL",
"products": ["159514"],
"default_value": "XXL"
}, {
"id": "297",
"label": "3XL",
"products": ["159516"],
"default_value": "3XL"
}, {
"id": "299",
"label": "4XL",
"products": [],
"default_value": "4XL"
}],
"position": "1"
}
},
"template": "<%- data.price %>\u00a0\u20ac",
"currencyFormat": "%s\u00a0\u20ac",
"optionPrices": {
"159511": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159512": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159513": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159514": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159516": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159517": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
},
"159519": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
},
"tierPrices": [],
"msrpPrice": {
"amount": 0
}
}
},
"priceFormat": {
"pattern": "%s\u00a0\u20ac",
"precision": 2,
"requiredPrecision": 2,
"decimalSymbol": ",",
"groupSymbol": ".",
"groupLength": 3,
"integerRequired": false
},
"prices": {
"baseOldPrice": {
"amount": 25.201679672269
},
"oldPrice": {
"amount": 29.99
},
"basePrice": {
"amount": 25.201679672269
},
"finalPrice": {
"amount": 29.99
}
},
"productId": "159244",
"chooseText": "W\u00e4hlen Sie eine Option...",
"images": [],
"index": {
"159511": {
"93": "65",
"189": "301"
},
"159512": {
"93": "65",
"189": "298"
},
"159513": {
"93": "65",
"189": "303"
},
"159514": {
"93": "65",
"189": "304"
},
"159516": {
"93": "65",
"189": "297"
},
"159517": {
"93": "65",
"189": "299"
},
"159519": {
"93": "65",
"189": "302"
}
},
"salable": [],
"canDisplayShowOutOfStockStatus": false,
"channel": "website",
"salesChannelCode": "jeansfritz",
"sku": {
"159511": "0116140001",
"159512": "0116140002",
"159513": "0116140003",
"159514": "0116140004",
"159516": "0116140005",
"159517": "0116140006",
"159519": "0116140007"
}
});
const swatchOptionsComponent = initSwatchOptions({
"93": {
"65": {
"type": 2,
"value": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/84e945ed22e8b65158f423dcd4d319f7\/4\/0\/4066464291435_mv_G1.jpg",
"thumb": "https:\/\/www.jeans-fritz.de\/media\/catalog\/product\/cache\/97ef337f76eac1ce618885b9a8409cc6\/4\/0\/4066464291435_mv_G1.jpg",
"label": "aqua",
"orig_value": "#5794c9"
},
"additional_data": "{\"swatch_input_type\":\"visual\",\"update_product_preview_image\":\"0\",\"use_product_image_for_swatch\":\"1\"}"
}
});
return Object.assign(configurableOptionsComponent, swatchOptionsComponent, {
mediaCallback: "https\u003A\u002F\u002Fwww.jeans\u002Dfritz.de\u002Fswatches\u002Fajax\u002Fmedia\u002F",
changeOption(optionId, value, skipUpdateGallery) {
this.selectedValues[optionId] = value;
this.findSimpleIndex();
this.findAllowedAttributeOptions();
this.updatePrices();
this.updateGeneric('159244');
this.updateProductUrl('159244', value);
!skipUpdateGallery && this.updateGallery();
},
updateProductUrl(productId, optionDefaultValue) {
const $product = document.getElementById('p-' + productId);
const $productLinks = $product.querySelectorAll('[data-role="product-url"]');
if ($productLinks.length === 0) {
return;
}
$productLinks.forEach($element => {
const productUrl = new URL($element.href);
productUrl.searchParams.set('color', optionDefaultValue);
$element.href = productUrl.toString();
})
},
updateGallery() {
if (!this.productIndex) {
return;
}
fetch(`${this.mediaCallback}?product_id=${this.productIndex}&isAjax=true`, {
method: 'GET',
headers: {
'Content-Type': 'application/json',
'X-Requested-With': 'XMLHttpRequest'
}
}).then(response => {
return response.json()
}).then(data => {
if (data.errors) {
// non critical failure only console logged
console.warn(data.errors);
} else {
const image = data && data.medium;
image && window.dispatchEvent(new CustomEvent("update-gallery-159244", {
detail: image
}));
}
}).catch(error => {
console.warn(error)
});
},
preselectQuerystringItems() {
// pre-select option like ?size=167
const urlQueryParams = new URLSearchParams(window.location.search.replace('?', ''));
Object.values(this.optionConfig.attributes).map(attribute => {
// Don't update images on load, since PLPs already set the main image to the selected options
const skipUpdateGallery = true;
urlQueryParams.get(attribute.code) && this.changeOption(attribute.id, urlQueryParams.get(attribute.code), skipUpdateGallery);
});
},
mouseDown: false,
startX: 0,
maxScroll: 0,
scrollLeft: null,
slider: null,
scrollEvents: {
['@mousedown'](e) {
this.slider = e.target.closest('.snap');
if (!this.slider) {
return;
}
this.maxScroll = this.slider.scrollWidth - this.slider.offsetWidth;
this.startX = e.pageX - this.slider.offsetLeft;
this.scrollLeft = this.slider.scrollLeft;
this.mouseDown = true;
},
['@mouseout.self']() {
this.mouseDown = false;
},
['@mouseup']() {
this.mouseDown = false;
},
['@mousemove'](e) {
e.preventDefault();
if (!this.mouseDown) {
return;
}
const x = e.pageX - this.slider.offsetLeft;
const scroll = x - this.startX;
const scrollLeft = this.scrollLeft - scroll;
if (scrollLeft > this.maxScroll) {
this.slider.scrollLeft = this.maxScroll;
return
}
this.slider.scrollLeft = this.scrollLeft - scroll;
},
['@onselectstart']() {
return false;
}
},
resizeEvent() {
Array.from(this.$root.querySelectorAll('.snap')).forEach(slider => {
slider.scrollLeft = 0;
})
}
});
}
</script>
<div x-data="initConfigurableSwatchOptions_159244()" x-init="findAllowedAttributeOptions(); initShowSwatchesIntersect();" @private-content-loaded.window="onGetCartData($event.detail.data)" @resize.window="resizeEvent()">
<div class="flex color">
<div class="w-full flex items-center">
<template x-if="showSwatches">
<div class="flex flex-wrap gap-2 mt-2 lg:gap-1" role="radiogroup" x-bind="scrollEvents">
<label class="sr-only" for="attributecolor">
<span>Farbe</span>
</label>
<template x-for="(item, index) in optionConfig.attributes[93].options" :key="item.id">
<div class="mr-1 lg:mr-0.5">
<template x-if="optionIsEnabled(93, item.id) && optionIsActive(93, item.id)">
<label :for="'attribute-option-159244-'+item.id" class="border border-mediumGrey rounded-full w-6 h-6 bg-cover bg-no-repeat lg:w-4 lg:h-4 cursor-pointer" :class="{
'lg:w-3 lg:h-3 h-6 w-6' : !isTextSwatch(93, item.id),
'hidden lg:block' : index > 3
}" :style="getSwatchBackgroundStyle('93', item.id, true)" attribute:="" item:="" item.id="" tooltippositionelement="$event.target;"" false="">
<input :id="'attribute-option-159244-'+item.id" :value="item.id" name="super_attribute[93]" type="radio" class="inline-block absolute p-0 border-0 focus:border-0 focus:ring-0 product-option-value-input bottom-0 left-0"
style="z-index:-1" x-on:focus="focusLabel(item.id)" x-on:blur="blurLabel()" x-on:change="changeOption(93, $event.target.value)" x-model="selectedValues[93]"
:required="getAllowedAttributeOptions(93).filter(attributeOption => selectedValues[attributeOption]).length === 0">
<div x-html="getSwatchText(93, item.id)" class="whitespace-nowrap" :class="{ 'sr-only' : !isTextSwatch(93, item.id) }"></div>
</label>
</template>
</div>
</template>
</div>
</template>
<div class="block md:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" style="display: none;">+</div>
<div class="block lg:hidden" x-show="(optionConfig.attributes[93].options.length - 4) > 0" x-text="optionConfig.attributes[93].options.length - 4" style="display: none;">-3</div>
</div>
</div>
</div>
<div x-data="Replacer_159244()" x-bind="eventListeners">
</div>
<script>
function Replacer_159244() {
'use strict';
return {
optionConfig: {
"badges": {
"feid": "pdp-info-badges",
"type": "html",
"class": "\\Magento\\Framework\\View\\Element\\Template",
"template": "Magento_Catalog::product\/view\/badges.phtml",
"data": {
"159511": " ",
"159512": " ",
"159513": " ",
"159514": " ",
"159516": " ",
"159517": " ",
"159519": " "
}
}
},
replace: function(code, data, type) {
if (typeof this.optionConfig[code] === 'undefined') {
return;
}
const productId = 159244;
const productIndex = data.productIndex;
const html = this.optionConfig[code].data[productIndex];
const targetId = this.optionConfig[code].feid + '-' + productId;
const $targets = document.querySelectorAll(`[data-id="${targetId}"]`);
$targets.forEach($target => {
$target.innerHTML = html;
if (type === 'section') {
const $sectionRoot = $target.closest('.pdp-tabs');
const $targetNavItem = $sectionRoot.querySelector(`[data-id="${code}-tab"]`).closest('.pdp-tabs__tab');
const $targetContent = $target.closest('.pdp-tabs__tab-content');
if (html === "") {
this.hideTarget($targetNavItem, $targetContent);
} else {
this.showTarget($targetNavItem, $targetContent);
}
}
});
},
hideTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.add('hidden');
}
$target.classList.add('hidden');
},
showTarget($targetNavItem, $target) {
if (typeof $targetNavItem !== 'undefined') {
$targetNavItem.classList.remove('hidden');
}
$target.classList.remove('hidden');
},
eventListeners: {
['@update-generic-pl-item-159244.window'](event) {
this.replace('badges', event.detail, 'default');
},
['@configurable-selection-changed.window'](event) {
this.replace('badges', event.detail, 'default');
this.replace('care-instructions', event.detail, 'section');
}
}
};
}
</script>
</div>
</div>
<script>
function initPriceBox__6647c831e17bc() {
return {
updatePrice(priceData) {
const regularPriceLabel = this.$root.querySelector('.normal-price .price-label');
const regularPriceElement = this.$root.querySelector('.normal-price .price-wrapper .price');
if (priceData.finalPrice.amount < priceData.oldPrice.amount) {
regularPriceLabel.classList.add('hidden');
} else {
regularPriceLabel.classList.remove('hidden');
}
regularPriceElement.innerText = hyva.formatPrice(priceData.finalPrice.amount);
}
}
}
</script>
</div>
</div>
</form>
POST
<form method="post" x-bind:action="createAddToCartUrl(product.productId)" @submit.prevent="addToCartRecsEvent($event.target, banner.unitId, product.productId)"
class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full">
<input name="form_key" type="hidden" :value="hyva.getFormKey()">
<input type="hidden" name="product" x-bind:value="product.productId">
<a @click="recsClickEvent(banner.unitId, product.productId, product.url)" class="product photo product-item-photo block mx-auto mb-3 cursor-pointer" tabindex="-1">
<img class="hover:shadow-sm object-contain" loading="lazy" x-bind:alt="product.image?.label" x-bind:title="product.image?.label" x-bind:src="product.image?.url" width="360" height="360">
</a>
<div class="product-info flex flex-col flex-grow">
<div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
<a class="product-item-link cursor-pointer" @click="recsClickEvent(banner.unitId, product.productId, product.url)" x-text="product.name"></a>
</div>
<template x-if="product.prices">
<div class="pt-1 text-gray-900 price-box price-final_price" x-bind:data-product-id="product.productId">
<span class="normal-price">
<span class="price-container price-final_price">
<span x-show="product.prices.minimum.final !== product.prices.maximum.final" class="price-label">Ab</span>
<span id="product-price" class="price-wrapper ">
<span class="price" x-text="hyva.formatPrice(product.prices.minimum.final)"></span>
</span>
</span>
</span>
</div>
</template>
<template x-if="product.addToCartAllowed">
<div class="mt-auto pt-3 flex flex-wrap justify-center items-center">
<button class="w-auto btn btn-primary justify-center text-sm mr-auto" aria-label="Add to Cart">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
</svg>
<span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline"> In den Warenkorb </span>
</button>
</div>
</template>
</div>
</form>
POST
<form method="post" x-bind:action="createAddToCartUrl(product.productId)" @submit.prevent="addToCartRecsEvent($event.target, banner.unitId, product.productId)"
class="item product product-item product_addtocart_form card card-interactive flex flex-col w-full">
<input name="form_key" type="hidden" :value="hyva.getFormKey()">
<input type="hidden" name="product" x-bind:value="product.productId">
<a @click="recsClickEvent(banner.unitId, product.productId, product.url)" class="product photo product-item-photo block mx-auto mb-3 cursor-pointer" tabindex="-1">
<img class="hover:shadow-sm object-contain" loading="lazy" x-bind:alt="product.image?.label" x-bind:title="product.image?.label" x-bind:src="product.image?.url" width="360" height="360">
</a>
<div class="product-info flex flex-col flex-grow">
<div class="mt-2 mb-1 items-center justify-center text-primary font-semibold text-lg text-center ">
<a class="product-item-link cursor-pointer" @click="recsClickEvent(banner.unitId, product.productId, product.url)" x-text="product.name"></a>
</div>
<template x-if="product.prices">
<div class="pt-1 text-gray-900 price-box price-final_price" x-bind:data-product-id="product.productId">
<span class="normal-price">
<span class="price-container price-final_price">
<span x-show="product.prices.minimum.final !== product.prices.maximum.final" class="price-label">Ab</span>
<span id="product-price" class="price-wrapper ">
<span class="price" x-text="hyva.formatPrice(product.prices.minimum.final)"></span>
</span>
</span>
</span>
</div>
</template>
<template x-if="product.addToCartAllowed">
<div class="mt-auto pt-3 flex flex-wrap justify-center items-center">
<button class="w-auto btn btn-primary justify-center text-sm mr-auto" aria-label="Add to Cart">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" stroke="currentColor" viewBox="0 0 24 24" class="h-6 w-6 border-current inline" width="25" height="25" role="img">
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 3h2l.4 2M7 13h10l4-8H5.4M7 13 5.4 5M7 13l-2.293 2.293c-.63.63-.184 1.707.707 1.707H17m0 0a2 2 0 1 0 0 4 2 2 0 0 0 0-4Zm-8 2a2 2 0 1 1-4 0 2 2 0 0 1 4 0Z"></path>
</svg>
<span class="ml-2 inline md:ml-0 md:hidden lg:ml-2 lg:inline"> In den Warenkorb </span>
</button>
</div>
</template>
</div>
</form>
Text Content
Zum Inhalt springen Keine Treffer Geben Sie einen anderen Suchbegriff ein. Vorschläge Artikel Art.-Nr.: Ab: Alle Ergebnisse anzeigen Filialfinder Fashion App Über JEANS FRITZ Karriere Damen Herren Bekleidung Bekleidung * Alles anzeigen * Jacken & Mäntel Jacken & Mäntel * Alles anzeigen * Blazer * Jacken * Jeansjacken * Parkas * Westen * Jeans Jeans * Alles anzeigen * Bootcut * Ankle * Straight * Slim * Super Slim * Jeans-Shorts * Capri-Jeans * Jeansjacken * Hosen Hosen * Alles anzeigen * Jeans * Hosen * Kurze Hosen * Shirts Shirts * Alles anzeigen * Basics * Langarmshirts * T-Shirts * Tops * Blusen Blusen * Alles anzeigen * Blusen langarm * Blusen kurzarm * Jeansblusen * Pullover & Strick Pullover & Strick * Alles anzeigen * Strickjacken * Strickpullover * Sweatjacken * Sweatshirts * Sweatjacken & Sweatshirts Sweatjacken & Sweatshirts * Alles anzeigen * Sweatjacken * Sweatshirts * Kleider & Röcke Kleider & Röcke * Alles anzeigen * Kleider * Röcke * Jeansröcke * Kurze Hosen Kurze Hosen * Alles anzeigen * Jeans-Shorts * Shorts * Capri-Jeans * Caprihosen * Accessoires Accessoires * Alles anzeigen * Gürtel * Taschen * Geldbörsen * Mützen & Hüte * Tücher * Strümpfe & Leggings NEU Denim SALE Nachhaltigkeit Inspiration Inspiration * Alles anzeigen * Prospekte Prospekte * NEW: Summer Denim * Happy Summer * Feel Good Favorites * Colorful Spring * We love Denim * New Collection * New Colors * Trends Trends * Alles anzeigen * Black & White * Colorful Summer * Kühles Leinen für den Sommer * Frühlingsfarbe BERRY * Spring Update: Neutrals * WE LOVE DENIM * Basics * Videos Videos * Summer Denim * Sommer Trends für Damen * Summer 2024 * Forever Denim * Denim Statement Mehr Mehr * Alles anzeigen * Service Service * Fashion App * Geschenkgutscheine * Filialen * WhatsApp Prospekt * Unternehmen Unternehmen * Karriere bei JEANS FRITZ * Das Unternehmen * Presse * Engagement * Expansion * Social Media Social Media * Instagram * Facebook * YouTube * Pinterest * TikTok Bekleidung Bekleidung * Alles anzeigen * Jacken & Mäntel Jacken & Mäntel * Alles anzeigen * Sakkos * Jacken * Jeansjacken * Blousons * Westen * Jeans Jeans * Alles anzeigen * Slim * Regular * Super Slim * Hosen * Kurze Hosen Kurze Hosen * Alles anzeigen * Shorts * Jeans-Shorts * Shirts Shirts * Alles anzeigen * T-Shirts * Poloshirts * Longsleeves * Freizeithemden Freizeithemden * Alles anzeigen * Karohemden * Jeanshemden * Langarmhemden * Kurzarmhemden * Pullover & Strick Pullover & Strick * Alles anzeigen * Strickpullover * Strickjacken * Sweatshirts & -jacken Sweatshirts & -jacken * Alles anzeigen * Sweatjacken * Sweatshirts * Accessoires Accessoires * Alles anzeigen * Gürtel * Schals * Wäsche * Socken NEU Denim SALE Nachhaltigkeit Inspiration Inspiration * Alles anzeigen * Prospekte Prospekte * NEW: Summer Denim * Happy Summer * Feel Good Favorites * Colorful Spring * We Love Denim * New Collection * Trends Trends * Alles anzeigen * Sommer Favoriten * Frühlings Must Haves * WE LOVE DENIM * Basics * Videos Videos * Summer Denim * Summer 2024 * Forever Denim * Denim Statement Mehr Mehr * Alles anzeigen * Service Service * Fashion App * Geschenkgutscheine * Filialen * WhatsApp Prospekt * Unternehmen Unternehmen * Karriere bei JEANS FRITZ * Das Unternehmen * Presse * Engagement * Expansion * Social Media Social Media * Instagram * Facebook * YouTube * Pinterest * TikTok Bitte wählen Sie eine Kategorie Mein Konto Wunschzettel Bonusclub Über JEANS FRITZ Karriere Damen Bekleidung * * Jacken & Mäntel * Blazer * Jacken * Jeansjacken * Parkas * Westen * Jeans * Bootcut * Ankle * Straight * Slim * Super Slim * Jeans-Shorts * Capri-Jeans * Jeansjacken * Hosen * Jeans * Hosen * Kurze Hosen * * Shirts * Basics * Langarmshirts * T-Shirts * Tops * Blusen * Blusen langarm * Blusen kurzarm * Jeansblusen * Pullover & Strick * Strickjacken * Strickpullover * Sweatjacken * Sweatshirts * Sweatjacken & Sweatshirts * Sweatjacken * Sweatshirts * * Kleider & Röcke * Kleider * Röcke * Jeansröcke * Kurze Hosen * Jeans-Shorts * Shorts * Capri-Jeans * Caprihosen * Accessoires * Gürtel * Taschen * Geldbörsen * Mützen & Hüte * Tücher * Strümpfe & Leggings * * NEU Denim SALE Nachhaltigkeit Inspiration * * Prospekte * NEW: Summer Denim * Happy Summer * Feel Good Favorites * Colorful Spring * We love Denim * New Collection * New Colors * * Trends * Black & White * Colorful Summer * Kühles Leinen für den Sommer * Frühlingsfarbe BERRY * Spring Update: Neutrals * WE LOVE DENIM * Basics * * Videos * Summer Denim * Sommer Trends für Damen * Summer 2024 * Forever Denim * Denim Statement Mehr * * Service * Fashion App * Geschenkgutscheine * Filialen * WhatsApp Prospekt * * Unternehmen * Karriere bei JEANS FRITZ * Das Unternehmen * Presse * Engagement * Expansion * * Social Media * Instagram * Facebook * YouTube * Pinterest * TikTok Herren Bekleidung * * Jacken & Mäntel * Sakkos * Jacken * Jeansjacken * Blousons * Westen * Jeans * Slim * Regular * Super Slim * Hosen * Kurze Hosen * Shorts * Jeans-Shorts * * Shirts * T-Shirts * Poloshirts * Longsleeves * Freizeithemden * Karohemden * Jeanshemden * Langarmhemden * Kurzarmhemden * Pullover & Strick * Strickpullover * Strickjacken * Sweatshirts & -jacken * Sweatjacken * Sweatshirts * * Accessoires * Gürtel * Schals * Wäsche * Socken * * NEU Denim SALE Nachhaltigkeit Inspiration * * Prospekte * NEW: Summer Denim * Happy Summer * Feel Good Favorites * Colorful Spring * We Love Denim * New Collection * * Trends * Sommer Favoriten * Frühlings Must Haves * WE LOVE DENIM * Basics * * Videos * Summer Denim * Summer 2024 * Forever Denim * Denim Statement Mehr * * Service * Fashion App * Geschenkgutscheine * Filialen * WhatsApp Prospekt * * Unternehmen * Karriere bei JEANS FRITZ * Das Unternehmen * Presse * Engagement * Expansion * * Social Media * Instagram * Facebook * YouTube * Pinterest * TikTok Bitte wählen Sie eine Kategorie Keine Treffer Geben Sie einen anderen Suchbegriff ein. Vorschläge Artikel Art.-Nr.: Ab: Alle Ergebnisse anzeigen Anmelden Ein Konto erstellen Warenkorb 0 WARENKORB Ausverkauft Auf der Wunschliste Auf die Wunschliste Zwischensumme (inkl. MwSt.) Zur Kasse Zum Warenkorb Zum Warenkorb Zur Kasse Wird geladen … Mit Ihrem Konto bestellen E-Mail Adresse Passwort Anmelden Passwort vergessen? Als neuer Kunde bestellen Das Erstellen eines Kontos hat viele Vorteile: * Bestell- und Versandstatus ansehen * Bestellverlauf verfolgen * Schneller bestellen Ein Konto erstellen NEU: SUMMER DENIM - unser neuer Prospekt! Hier inspirieren lassen: Zum Prospekt Ab In den Warenkorb Ab In den Warenkorb • digitale Kundenkarte • Bonuspunkte sammeln & Gutscheine einlösen • 24/7 online shoppen Hier downloaden JETZT ZUM NEWSLETTER ANMELDEN UND EINEN 20% GUTSCHEIN SICHERN! √ Trends, Styles und Mode-Tipps √ Exklusive Angebote für Abonnenten √ Tolle Aktionen und Gewinnspiele √ Gutscheine, Rabattte und vieles mehr Hier Anmelden GRATIS VERSAND - NUR HEUTE* *Gratis Lieferung gültig am 14.02.2024 ab einem Mindestbestellwert von 60€. Nicht gültig beim Kauf von Gutscheinen. Eine nachträgliche Anrechnung ist nicht möglich. -------------------------------------------------------------------------------- > MODE FÜR DAMEN < > DENIM FÜR DAMEN < SUMMER DENIM IN UNSEREM NEUEN PROSPEKT > MODE FÜR HERREN < > DENIM FÜR HERREN < Artikel aus unserem aktuellem Prospekt für Sie MODISCHER MAXIROCK MIT PRINT AB 29,99 € Farbe + -3 LEICHTE BLUSE MIT ALLOVERPRINT AB 19,99 € Farbe + -1 OVERSIZED SHIRT MIT RÜCKENPRINT AB 9,99 € Farbe + 0 Neu LUFTIGES BLUSENTOP, PRINT & RÜSCHEN AB 19,99 € Farbe + -2 Auf der Suche nach einem Geschenk? Wie wäre es mit unserer Gutscheinkarte? Hier entdecken Artikel aus unserem aktuellem Prospekt für Ihn POLO-SHIRT MIT PLAKATIVEN DETAILS AB 29,99 € Farbe + -3 Neu STRUKTUR-HEMD MIT ALLOVERPRINT AB 29,99 € Farbe + -3 WORKER JEANS-SHORTS IM JOGG-STYLE AB 29,99 € Farbe + 1 PRINT-HEMD AUS BAUMWOLLE AB 29,99 € Farbe + -3 Fashion App Damen Sale Umwelt Schutz DAMEN HERREN ANGESAGTE JEANS UND CASUALWEAR Angesagte Jeans und Casualwear zu attraktiven Preisen, das ist JEANS FRITZ. Die wöchentlich aktualisierten Kollektionen, mit Kernkompetenz auf Denim, sorgen mit den Eigenmarken Multiblu für den Damenbereich sowie Tom Tompsen und Tom im Herrensortiment regelmäßig für Abwechslung. Hinzu kommt mit Röcken, Kleidern, Hosen, Shirts, Strick, Blusen, Hemden sowie Jacken und Mäntel eine große Auswahl an passenden Kombinationsartikeln. On Top ergänzt ein vielfältiges Accessoire-Angebot die Produktrange mit perfekt abgestimmten Tüchern und Schals, Taschen, Gürteln und saisonal auch Mützen die Auswahl. EIN AUSSERGEWÖHNLICH STARKER SERVICE UND HOHE QUALITÄTSANSPRÜCHE JEANS FRITZ steht für einen außergewöhnlich starken Service und setzt dabei auf eine optimale Kundenbetreuung. Egal, ob beim telefonischen Kontakt mit dem Kundendienst des Onlineshops oder beim persönlichen Aufeinandertreffen in den über 300 Filialen, Freundlichkeit und eine kompetente, individuelle Beratung gehören für uns zum guten Ton. Auch in punkto Qualität und Verarbeitung geht JEANS FRITZ keine Kompromisse ein und legt viel Wert auf beste Resultate. Dabei steht auch das Thema Nachhaltigkeit zunehmend im Fokus. In einem ganzheitlichen Konzept wird der umweltfreundliche und verantwortungsvolle Einsatz von Ressourcen auf der gesamten Unternehmensebene forciert. ONLINESHOPPING ODER FILIALEINKAUF? – GERN AUCH BEIDES! Unsere Damen- und Herrenkollektionen können Sie hier bei uns im Onlineshop oder in unseren deutschlandweit über 300 Filialen kaufen - je nachdem, welche Vorlieben Sie haben. Mögen Sie das Einkaufen eher bequem von zu Hause oder lassen Sie sich lieber vor Ort beraten? Bei uns können Sie auch beides kombinieren! Bestellen Sie Ihre Favoriten im Onlineshop und lassen Sie sich diese kostenlos in eine Filiale Ihrer Wahl liefern. Bei Abholung können Sie Ihre Auswahl dann noch einmal in Ruhe probieren und sich von unseren Verkaufsteams beraten lassen. BLEIBEN SIE INFORMIERT MIT DEM JEANS FRITZ NEWSLETTER Nichts ändert sich so schnell, wie die Mode. Deshalb hält Sie unser Newsletter ständig auf dem Laufenden, so dass Sie immer bestens über aktuelle Trends und Neuheiten bei uns im Shop informiert sind. Daneben bieten wir Ihnen eine Menge Inspirationen, zum Beispiel wie Sie die Artikel am schönsten und angesagtesten kombinieren können. Aber damit noch nicht genug, können Sie bei zahlreichen Gewinnspielen tolle Preise gewinnen. Überzeugt? Dann melden Sie sich gleich hier an! WIR BELOHNEN IHRE TREUE - DER JEANS FRITZ BONUSCLUB Als Dankeschön für Ihren Einkauf bei uns belohnen wir Ihre Treue mit Bonuspunkten. Als Mitglied im JEANS FRITZ- BonusClub erhalten Sie für jeden bei uns ausgegebenen Euro einen Punkt. Sobald 300 dieser Bonuspunkte erreicht werden, gibt es einen 10 € - Gutschein. Doch damit noch nicht genug, bringt die (kostenlose) Mitgliedschaft noch weitere Vorteile mit sich: So können die JEANS FRITZ- Kunden über attraktive Prämien, Sonderrabatte, Geburtstagsüberraschungen und Gewinnspiele freuen. Hier kommen Sie direkt zur Anmeldung. TIPPS FÜR DIE RICHTIGE PFLEGE FÜR MEINE KLEIDUNG Sie haben Ihre neuen Lieblingsteile gefunden und möchten diese natürlich möglichst lange tragen. Kein Problem, wenn Sie ein paar simple Pflegetipps beachten. Die Hinweise, welche Behandlung Ihr neues Kleidungsstück bevorzugt, finden Sie auf dem Etikett (meist) auf der linken Innenseite. Wir haben Ihnen einmal die wichtigsten Pflegesymbole und ihre Bedeutung zusammengefasst. Mehr erfahren Ab In den Warenkorb Ab In den Warenkorb Kundenservice * Kontaktformular * Häufige Fragen * Gutscheinkarte * Filialfinder * Reise Deals * Beratung * Größentabelle * Pflegetipps * Fitguide Damen * Fitguide Herren * Folgen Sie uns * * * * * * * Rechtliches * AGB * Datenschutz * Widerruf * Videoüberwachung * Cookie-Richtlinien * Versand * Impressum * 4,80 Sehr gut Käuferschutz Über JEANS FRITZ * Unternehmen * Presse * Karriere * Fashion App * Expansion * Partnerprogramm * Nachhaltigkeit * DKSB: Info * Zahlungsarten * * * * * * * Rechnung * Versand/Logistik * * Hotline * 05744/8574013 Mo.-Fr.*: 8:00 - 20:00 Uhr Sa.*: 10:00 - 16:00 Uhr * außer an gesetzlichen Feiertagen * * * * * * * Rechnung * * * * * * * * Newsletter abonnieren Direkt 20% Shopping-Rabatt sichern! Jetzt anmelden © 2024 JEANS FRITZ Handelsgesellschaft für Mode mbH. Datenschutz AGB Impressum Cookie-Hinweis Wir möchten Sie darüber informieren, dass unsere Datenschutzrichtlinien geändert wurden.Bitte lesen und akzeptieren Sie die neuen Bedingungen. Ich habe gelesen und akzeptiere Wird geladen … Cookie Einstellungen Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter den „Cookie-Einstellungen“. Wenn Sie auf „Alle Cookies zulassen“ klicken, erklären Sie sich mit der Verwendung dieser Dienste einverstanden und erlauben uns, diese Daten an Dritte weiterzugeben, etwa an unsere Marketingpartner. Dies schließt gegebenenfalls die Verarbeitung Ihrer Daten in den USA ein. Falls Sie nur bestimmten Cookies zustimmen möchten, wählen Sie die von Ihnen akzeptierten Cookie-Gruppen aus und klicken Sie auf "Cookies akzeptieren". Wir beschränken uns somit nur auf die von Ihnen akzeptierten Cookies, jedoch können wir dadurch unsere Inhalte nicht auf Sie zuschneiden. Weitere Details und alle Optionen finden Sie in den „Cookie Einstellungen“. Sie können diese auch später jederzeit anpassen. Weitere Informationen finden Sie in unserer Datenschutzerklärung und unseren Cookie Richtlinien. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern. Weitere Informationen ESSENTIAL Notwendige Cookies ermöglichen die Grundfunktionen der Website. Ohne diese Cookies kann die Website nicht richtig funktionieren. Sie helfen dabei, eine Website nutzbar zu machen, indem sie grundlegende Funktionen ermöglichen. Weitere Informationen FUNKTIONELL Funktionale Cookies sind nicht unbedingt für den technischen Betrieb einer Website notwendig, erhöhen aber die Nutzerfreundlichkeit. Weitere Informationen MARKETING Marketing-Cookies werden verwendet, um die Aktionen der Besucher auf der Website zu verfolgen und zu erfassen. Cookies speichern Nutzerdaten und Verhaltensinformationen, die es Werbediensten ermöglichen, mehr Zielgruppen anzusprechen. Außerdem kann das Nutzererlebnis anhand der gesammelten Informationen individueller gestaltet werden. Weitere Informationen GOOGLE ANALYTICS Eine Reihe von Cookies zur Erfassung von Informationen und zur Erstellung von Berichten über die Nutzung der Website, ohne dass einzelne Besucher von Google persönlich identifiziert werden. Weitere Informationen Cookie-Name Cookie-Anbieter Cookie-Gültigkeitsdauer Cookie-Typ Cookie-Beschreibung Cookie-Name Cookie-Anbieter Cookie-Gültigkeitsdauer Cookie-Typ Cookie-Beschreibung Fertig Cookies akzeptieren Alle Cookies zulassen