${(function(){
const get_random_six_digits = () => {
return Math.random().toString().slice(-6)
};
const wholesale_enabled = false;
const setting_product_image_display = "133.33%";
const product_image = data.image;
const secondary_image = data.secondImage;
const image_width = product_image.width;
let image_height = product_image.height;
if(setting_product_image_display == '100%'){
image_height = image_width
}else if(setting_product_image_display == '133.33%'){
image_height = image_width * 1.3333;
};
const product_image_hover_on = true && !!secondary_image.src;
const has_save_label = true && ((+data.compare_at_price) > (+data.price));
const is_single_variant = data.variants.length == 1;
const min_price_variant_href = (data.min_price_variant && data.min_price_variant.available) ? data.min_price_variant.withinUrl : data.withinUrl;
const retail_price_max = data.retail_price_max || data.compare_at_price_max;
const THUMBNAILS_MAX_SIZE = 3;
const thumbnails = data.thumbVariants.slice(0, THUMBNAILS_MAX_SIZE);
const image_wrap_id = 'image_wrap_' + get_random_six_digits();
const image_carousel_id = 'image_carousel_' + get_random_six_digits();
const thumbnails_selector_id = 'thumbnails_selector_' + get_random_six_digits();
const form_id = 'form_' + get_random_six_digits();
return `
${
data.price_min != data.price_max
? `من
`
: `
`
}
+${data.remainInvisibleThumbCount}
`
})()}
اشتري الآن
${function() {
let { prices } = data.data
const total_price = (prices && prices.total_price) || 0;
const subtotal_price = (prices && prices.subtotal_price) || 0;
return `
`
}()}
هذه المجموعة ضرورية للنساء اللاتي يستلقين في المنزل في عطلات نهاية الأسبوع الصيفية الكسولة! النمط البسيط يمكن أن يوفر تغطية كاملة لجسمك، ومقاس فضفاض لحرية الحركة دون أي قيود.
تتميز عبايتنا العلوية بفتحة زر واحدة عند الصدر، وأكمام مطاطية طويلة الأكمام، وحاشية مستديرة فريدة من نوعها وجيب على الصدر. يتميز البنطلون ذو الساق الواسعة متوسط الارتفاع بحزام خصر مطاطي، مما يوفر ملاءمة جذابة للجسم.
مجموعات العبايات لدينا مناسبة لفساتين الحفلات الإسلامية، والحياة اليومية غير الرسمية، والمناسبات الرسمية، والمنزل، والسفر، والعطلات، والصلاة، ورمضان، والسهرات، وحفلات الكوكتيل، والزفاف.
حجم الرسم البياني
قمة
الحجم (بوصة)
كتف
اعتقال
الكم
طول الكم
أعلى طول
S
15
37.4
14.6
23.2
46.9
M
15.4
39.4
15.0
23.6
47.2
L
15.7
41.3
15.7
24.0
48.0
XL
16.5
43.3
16.1
24.0
48.4
2XL
16.9
45.3
16.9
24.4
49.2
3XL
17.3
47.2
17.3
24.4
49.6
بنطال
الحجم (بوصة)
وَسَط
خاصرة
ارتفاع الأمامي
ارتفاع الظهر
سروال طول
S
26.0-29.9
39.4
12.6
16.5
38.6
M
27.6-31.5
41.3
13.0
16.9
39.0
L
29.1-33.1
43.3
13.0
17.3
39.8
XL
30.7-34.6
45.7
13.4
17.7
40.2
2XL
32.3-36.2
47.6
13.8
18.1
40.9
3XL
33.9-37.8
49.6
13.8
18.5
41.3
ملحوظة:
1. يرجى السماح باختلاف طفيف بمقدار 1-3 سم (0.4-1.18 بوصة) بسبب القياس اليدوي والاختلاف البسيط في اللون لإعدادات العرض المختلفة.
2. المقاس لا يناسب الجميع، يرجى التحقق بعناية من جدول المقاسات واختيار المقاس بناءً على مقاسك الحقيقي
3. نظرًا لحجم الطلب الكبير، سيتم تمديد دورة إنتاج الملابس وقد يتأخر طلبك. نحن نسعى جاهدين لتحقيق أعلى مستويات الجودة في كل التفاصيل، ونأمل أن تتفهم ذلك وتتحلى بالصبر. وقت إنتاج الملابس: 10-15 يومًا، وقت الخدمات اللوجستية: 10-15 يومًا.
1
حدد المنتج
محدد 0 العنصر (s)
1
حدد المنتج
محدد
${ (data && data.data && (data.data.items || data.data.line_items) || (data && data.data && data.data.data && (data.data.data.items || data.data.data.line_items)) || []).reduce((acc, cur) => acc + cur.quantity, 0) || 0 }
العنصر (s)
1
حدد المنتج
محدد 0 العنصر (s)
1
حدد المنتج
محدد
${(data && data.data && (data.data.items || data.data.line_items) || (data && data.data && data.data.data && (data.data.data.items || data.data.data.line_items || (data.data.data.order && data.data.data.order.line_items))) || []).reduce((acc, cur) => acc + cur.quantity, 0) || 0 }
العنصر (s)
class SpzCheckoutNotificationHandler extends SPZ.BaseElement {
constructor(element) {
super(element);
this.timer_ = null;
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
sendVariantListUpdateEvent_(data) {
const messageData = { type: "theme_variant_list_update", data: { orderToken: data.order_token || data.order_id } };
clearInterval(this.timer_);
if(!window.CheckoutAPI) {
this.timer_ = setInterval(() => {
if(window.CheckoutAPI) {
clearInterval(this.timer_);
postMessage && postMessage(messageData);
}
}, 500);
} else {
postMessage && postMessage(messageData);
}
}
buildCallback() {
this.action_ = SPZServices.actionServiceForDoc(this.element);
this.registerAction('sendVariantListUpdateEvent', (param) => {
this.sendVariantListUpdateEvent_(param.args.data);
});
}
}
SPZ.defineElement('spz-custom-checkout-notification-handler', SpzCheckoutNotificationHandler);
function handleGetOrderInfo(data) {
if (data.order_id) {
let api = `/api/checkout/order/info?order_id=${data.order_id}`;
return Promise.resolve(api);
}
return Promise.reject({});
}
function addEventListenerKickItems(data) {
if (data.type === 'checkout_kick_items') {
return Promise.resolve(data);
}
return Promise.reject({});
}
exportFunction('handleGetOrderInfo', handleGetOrderInfo)
exportFunction('addEventListenerKickItems', addEventListenerKickItems)
الأحدث
الأكثر إعجابا
أعلى التصنيفات
أدنى التصنيفات
الأكثر إعجابا
أعلى التصنيفات
أدنى التصنيفات
×
${function(){
const limit = typeof data === 'number' ? data : 0;
return `
صور/فيديو (${limit || 0}/5 )
` }()}
${(function(){
const closeIcon =
'
';
if (item.type === 'image') {
return `
${closeIcon}
`
}
return `
${closeIcon}
`
})()}
إرسال التعليقات بشكل مجهول
class SpzCustomFileUpload extends SPZ.BaseElement {
constructor(element) {
super(element);
this.uploadCount_ = 0;
this.fileList_ = [];
}
buildCallback() {
this.action = SPZServices.actionServiceForDoc(this.element);
this.registerAction('upload', (data) => {
this.handleFileUpload_(data.event?.detail?.data || []);
});
this.registerAction('delete', (data) => {
this.handleFileDelete_(data?.args?.data);
});
this.registerAction('preview', (data) => {
this.handleFilePreview_(data?.args?.data);
});
this.registerAction('limit', (data) => {
this.handleFileLimit_();
});
this.registerAction('sizeLimit', (data) => {
this.handleFileSizeLimit_();
});
}
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
setData_(count, file) {
this.uploadCount_ = count;
this.fileList_ = file;
}
handleFileUpload_(data) {
data.forEach(i => {
if(this.fileList_.some(j => j.url === i.url)) return;
this.fileList_.push(i);
})
this.uploadCount_++;
sessionStorage.setItem('fileList', JSON.stringify(this.fileList_));
this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_});
if(this.fileList_.length >= 5){
document.querySelector('#review_upload').style.display = 'none';
}
if(this.fileList_.length > 0){
document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px';
}
}
handleFileDelete_(index) {
this.fileList_.splice(index, 1);
this.uploadCount_--;
sessionStorage.setItem('fileList', JSON.stringify(this.fileList_));
this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_});
document.querySelector('#review_upload').style.display = 'block';
if(this.fileList_?.length === 0){
document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px';
}
}
handleFilePreview_(index) {
const finalPreviewData = this.fileList_[index];
const filePreviewModal = document.getElementById('filePreviewModal');
const fullScreenVideo = document.getElementById('fullScreenVideo');
const fullScreenImage = document.getElementById('fullScreenImage');
const previewModalClose = document.getElementById('previewModalClose');
const previewLoading = document.getElementById('previewLoading');
filePreviewModal.style.display = 'block';
previewLoading.style.display = 'flex';
if(finalPreviewData?.type === 'video'){
const media = this.mediaParse_(this.fileList_[index]?.url);
fullScreenVideo.addEventListener('canplaythrough', function() {
previewLoading.style.display = 'none';
});
fullScreenImage.src = '';
fullScreenImage.style.display = 'none';
fullScreenVideo.style.display = 'block';
fullScreenVideo.src = media.mp4 || '';
} else {
fullScreenImage.onload = function() {
previewLoading.style.display = 'none';
};
fullScreenVideo.src = '';
fullScreenVideo.style.display = 'none';
fullScreenImage.style.display = 'block';
fullScreenImage.src = finalPreviewData.url;
}
previewModalClose.addEventListener('click', function() {
filePreviewModal.style.display = 'none';
});
}
handleFileLimit_() {
alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5');
this.triggerEvent_("handleFileLimit");
}
handleFileSizeLimit_() {
alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M');
}
clear(){
this.fileList_ = [];
this.uploadCount_ = 0;
sessionStorage.setItem('fileList', JSON.stringify(this.fileList_));
this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_});
document.querySelector('#review_upload').style.display = 'block';
}
mediaParse_(url) {
var result = {};
try {
url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) {
try {
result[key] = decodeURIComponent(value);
} catch (e) {
result[key] = value;
}
});
result.preview_image = url.split('?')[0];
} catch (e) {};
return result;
}
triggerEvent_(name, data) {
const event = SPZUtils.Event.create(this.win, name, data);
this.action.trigger(this.element, name, event);
}
}
SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.
const TAG = 'spz-custom-painter-button-animation';
const MAX_ITERATION_COUNT = 99999999;
const SITE = (window.C_SETTINGS && window.C_SETTINGS.routes && window.C_SETTINGS.routes.root) || '';
const ADD_TO_CART_ANIMATION_SETTING =
`${SITE}/api/marketing_atmosphere_app/add_to_cart_btn_animation/setting`;
class SpzCustomPainterButtonAnimation extends SPZ.BaseElement {
/**@override */
static deferredMount() {
return false;
}
/** @param {!SpzElement} element */
constructor(element) {
super(element);
/** @private {!../../src/service/xhr-impl.Xhr} */
this.xhr_ = SPZServices.xhrFor(this.win);
/** @private {Object} */
this.data_ = null;
/** @private {Element} */
this.addToCartButton_ = null;
/** @private {boolean} */
this.productAvailable_ = true;
/** @private {number} */
this.timerId_ = null;
/** @private {number} */
this.animationExecutionCount_ = 0;
/** @private {boolean} */
this.selectedVariantAvailable_ = true;
/** @private {number} */
this.delay_ = 5000;
/** @private {number} */
this.iterationCount_ = 5;
/** @private {string} */
this.animationClass_ = '';
}
/** @override */
isLayoutSupported(layout) {
return layout == SPZCore.Layout.LOGIC;
}
/** @override */
buildCallback() {
this.productAvailable_ = this.element.hasAttribute('product-available');
this.selectedVariantAvailable_ = this.element.hasAttribute('selected-variant-available');
}
/** @override */
mountCallback() {
this.render_();
}
/** @private */
render_() {
if (!this.productAvailable_) {
return;
}
this.fetch_().then((data) => {
if (!data) {
return;
}
this.data_ = data;
this.animationClass_ = `painter-${data.animation_name}-animation`;
this.iterationCount_ =
data.animation_iteration_count === 'infinite'
? MAX_ITERATION_COUNT
: data.animation_iteration_count;
const animationDuration = 1;
const animationDelay = data.animation_delay || 5;
this.delay_ = (animationDuration + animationDelay) * 1000;
this.handleButtonEffect_();
});
}
/**
* @param {JsonObject} data
* @return {(null|Object)}
* @private
*/
parseJson_(data) {
try {
return JSON.parse(data);
} catch (e) {
return null;
}
}
/**
* @return {Promise}
* @private
*/
fetch_() {
return this.xhr_.fetchJson(ADD_TO_CART_ANIMATION_SETTING).then((data) => {
if (!data || !data.enabled) {
return null;
}
return this.parseJson_(data.detail);
});
}
/** @private */
getAddToCartButton_() {
this.addToCartButton_ = SPZCore.Dom.scopedQuerySelector(
document.body,
'[data-section-type="product"] [role="addToCart"], [data-section-type="product_detail"] [role="addToCart"], [data-section-type="product_detail"] [data-click="addToCart"], [data-section-type="product"] [data-click="addToCart"]'
);
}
/** @private */
restartAnimation_() {
this.addToCartButton_.classList.remove(this.animationClass_);
this.addToCartButton_./* OK */ offsetWidth;
this.addToCartButton_.classList.add(this.animationClass_);
this.animationExecutionCount_++;
}
/** @private */
clearTimer_() {
this.win.clearInterval(this.timerId_);
this.timerId_ = null;
}
/** @private */
setupTimer_() {
this.timerId_ = this.win.setInterval(() => {
this.restartAnimation_();
if (this.animationExecutionCount_ >= this.iterationCount_) {
this.removeAnimationClass_();
this.clearTimer_();
}
}, this.delay_);
}
/** @private */
restartTimer_() {
if (this.animationExecutionCount_ >= this.iterationCount_) {
this.removeAnimationClass_();
return;
}
this.setupTimer_();
}
/** @private */
listenVariantChange_() {
SPZUtils.Event.listen(self.document, 'dj.variantChange', (e) => {
const selectedVariant = e.detail && e.detail.selected;
if (!selectedVariant) {
return;
}
const {available} = selectedVariant;
if (this.selectedVariantAvailable_ !== available) {
this.selectedVariantAvailable_ = available;
this.clearTimer_();
if (available) {
this.restartTimer_();
}
}
});
}
/** @private */
removeAnimationClass_() {
this.win.setTimeout(() => {
this.addToCartButton_.classList.remove(this.animationClass_);
}, 1000);
}
/** @private */
handleButtonEffect_() {
this.getAddToCartButton_();
if (!this.addToCartButton_) {
return;
}
if (this.selectedVariantAvailable_) {
++this.animationExecutionCount_;
this.addToCartButton_.classList.add(this.animationClass_);
if (this.iterationCount_ === 1) {
this.removeAnimationClass_();
return;
}
this.setupTimer_();
}
this.listenVariantChange_();
}
}
SPZ.defineElement(TAG, SpzCustomPainterButtonAnimation);