* Zipper design
* Material: 50% Cotton, 45% Polyester, 5% Spandex
* Machine wash . tumble dry
* Imported
Size Chart
Size
Bust
Top Length
Sleeve
Bottom Length
Age
Label size
CM
Inch
CM
Inch
CM
Inch
CM
Inch
Baby
0-3 M
50
19.7
52
20.5
23
9.1
-
-
Baby
3-6 M
52
20.5
55
21.7
24.5
9.7
-
-
Baby
6-9 M
54
21.3
58
22.9
26
10.2
-
-
Baby
9-12 M
56
22.1
62
24.4
27.5
10.8
-
-
Baby
12-18 M
58
22.9
67
26.4
29
11.4
-
-
Kid
2-3 Y
64
25.2
73
28.8
33
13.0
-
-
Kid
3-4 Y
66
26.0
79
31.1
35
13.8
-
-
Kid
4-5 Y
68
26.8
85
33.5
37
14.6
-
-
Kid
5-6 Y
70
27.6
91
35.9
39
15.4
-
-
Kid
6-7 Y
73
28.8
99
39.0
41
16.2
-
-
Kid
7-8 Y
75
29.6
105
41.4
43
16.9
-
-
Kid
8-9 Y
78
30.7
112
44.1
45
17.7
-
-
Kid
9-10 Y
81
31.9
118
46.5
47
18.5
-
-
Kid
11-12 Y
87
34.3
128
50.4
51
20.1
-
-
Women
S
94
37.0
141
55.6
57
22.5
-
-
Women
M
99
39.0
144
56.7
58
22.9
-
-
Women
L
104
41.0
147
57.9
59
23.2
-
-
Women
XL
109
42.9
150
59.1
60
23.6
-
-
Women
2XL
114
44.9
153
60.3
61
24.0
-
-
Men
S
105
41.4
152
59.9
59.5
23.4
-
-
Men
M
111
43.7
155
61.1
61
24.0
-
-
Men
L
117
46.1
158
62.3
62.5
24.6
-
-
Men
XL
123
48.5
161
63.4
64
25.2
-
-
Men
2XL
129
50.8
164
64.6
65.5
25.8
-
-
Due to manual measurement .please allow ±1.5cm error. Please compare the measurements with yours before ordering. Size chart is for reference only .there may be a little difference with what you get.
CHRISTMAS PAJAMAS SIZE
How To Measure Your Body?
Lift your arms and measure around just under your underarms around your chest.
Relaxed shoulders, measure across the widest part of your shoulders.
Waist
Measure around the narrowest part of your waist, to ensure a comfortable fit, keep one finger between the measuring tape and your body.
Hip
With your feet approximately 6" apart, measure around the widest part of your hip.
Length
Choose a clothing item with the preferred length and measure from the top to the bottom
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);