landing-pages.yotpo.com
Open in
urlscan Pro
23.200.181.14
Public Scan
Submitted URL: http://em.yotpo.com/ls/click?upn=u001.v8pUSzLQyuRoSj1F7dBz9-2FN4uv9ctJtO6MNf-2BdsEjFLEBfa5Lrc-2FpnT5fbJbs-2Bs2N90c5t...
Effective URL: https://landing-pages.yotpo.com/custom/J0HdWwHJYOSy5bpyK5Onl4iZc5PnYlmoQCIjkHeA/1/
Submission: On October 09 via manual from SG — Scanned from SG
Effective URL: https://landing-pages.yotpo.com/custom/J0HdWwHJYOSy5bpyK5Onl4iZc5PnYlmoQCIjkHeA/1/
Submission: On October 09 via manual from SG — Scanned from SG
Form analysis
3 forms found in the DOM<form ng-submit="submitForm(true)" class="ui form ng-pristine ng-valid" ng-class="{ disabled: showReviewBody && isSubmitClicked }" data-cy="review-form">
<!-- ngIf: showReviewBody -->
<div class="review-header ng-scope ng-isolate-scope" ng-if="showReviewBody" star-color="E7721B" star-rating-value="baseFields.reviewScore" show-validation-errors="!cleanForm" show-product-image="showProductImage" product-image-url=""
product-name="Product Name">
<div class="header-container">
<div ng-show="showProductImage" class="product-img-container" data-cy="product-image-container">
<!-- ngIf: productImageUrl -->
<!-- ngIf: !productImageUrl --><svg ng-if="!productImageUrl" class="product-img ng-scope" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="75" height="75" style="">
<g fill="none" fill-rule="evenodd">
<path d="M.5.5h74v74H.5z"></path>
<g transform="rotate(38 -7.454 68.216)">
<path fill="#D3D6DD"
d="M10.478 9.86c-1.268 0-2.295-.983-2.295-2.197 0-1.213 1.027-2.197 2.295-2.197s2.295.984 2.295 2.197c0 1.214-1.027 2.198-2.295 2.198m9.28-3.456L10.483.101 1.199 6.405C.445 6.833 0 7.694 0 8.702V27.6c0 1.582 1.346 2.87 2.999 2.87h14.97c1.643 0 2.988-1.288 2.988-2.87V8.702c0-1.008-.445-1.869-1.198-2.297">
</path>
</g>
<path fill="#D3D6DD" d="M43.302 31.028l1.31 1.024 7.608-9.738-1.31-1.024z"></path>
</g>
</svg><!-- end ngIf: !productImageUrl -->
</div>
<div class="stars-container">
<div class="product-name" style="display: -webkit-box;">
<span ng-bind-html="productName" data-cy="product-name" class="ng-binding">Product Name</span>
</div>
<div class="stars">
<ul class="stars ng-isolate-scope" ng-class="{'error': !ratingValue && showError}" rating-value="starRatingValue" show-error="showError(starRatingValue)" data-cy="star-rating">
<!-- ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="1 Star Rating" class="ng-scope" style="">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="2 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="3 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="4 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="5 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
</ul>
<span class="rate-error ng-binding ng-hide" ng-show="showError(starRatingValue)" ng-bind="'REVIEW.RATING_REQUIRED' | translate" style="">Required</span>
</div>
</div>
</div>
</div><!-- end ngIf: showReviewBody -->
<!-- ngIf: showReviewBody -->
<div class="review-body ng-scope animation-done" ng-if="showReviewBody" ng-class="{collapsed: !expanded, loading: expanded && !loaded, 'animation-done': expandAnimationDone}" style="">
<div class="title-and-content">
<div class="loading-container loading ng-isolate-scope ng-hide" data-cy="loading-container" review-body-mode="true" ng-show="expanded && !loaded">
<!-- ngIf: !reviewBodyMode -->
<div class="ls-body-container">
<div class="left-margin line-masker"></div>
<div class="ls-body-content">
<!-- ngIf: !reviewBodyMode -->
<div>
<div class="ls-review-title"></div>
<div class="ls-review-content"></div>
<div class="fields-line-1">
<div class="line-1"></div>
<div class="line-2 line-masker"></div>
</div>
<div class="fields-line-2">
<div class="line-1"></div>
<div class="line-2 line-masker"></div>
</div>
<div class="fields-line-3">
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-margin-right line-masker"></div>
</div>
</div>
</div>
<div class="right-margin line-masker"></div>
</div>
</div>
<!-- ngIf: reviewTitleRequired && !suggestedTopicsEnabled -->
<div ng-if="reviewTitleRequired && !suggestedTopicsEnabled" class="review-title-container ng-scope" ng-class="{error: showError(baseFields.reviewTitle, 'title')}" data-cy="title-without-topics">
<input class="review-title ng-pristine ng-untouched ng-valid ng-empty" name="review_title" aria-label="Review title" type="text" ng-model="baseFields.reviewTitle" placeholder="Review title" data-cy="title-free-text-input">
</div><!-- end ngIf: reviewTitleRequired && !suggestedTopicsEnabled -->
<div class="review-content-container" ng-class="{error: showError(baseFields.reviewContent, 'content'), 'small-spacing': suggestedTopicsEnabled}">
<!-- ngIf: !suggestedTopicsEnabled --><textarea ng-if="!suggestedTopicsEnabled" rows="4" class="review-content yotpo-textarea ng-pristine ng-untouched ng-valid ng-scope ng-empty" aria-label="Review content" type="text"
ng-model="baseFields.reviewContent" name="review_content" placeholder="* Write your review here!" data-cy="content-without-topics-free-text-input"></textarea><!-- end ngIf: !suggestedTopicsEnabled -->
<!-- ngIf: loaded && suggestedTopicsEnabled -->
<span class="content-error ng-binding" ng-bind="'REVIEW.CONTENT_REQUIRED' | translate">Required</span>
</div>
<!-- ngIf: reviewTitleRequired && suggestedTopicsEnabled -->
<!-- ngIf: showDisplayNameAndEmail -->
<!-- ngIf: showDisplayNameAndEmail -->
</div>
<!-- ngIf: loaded && (imagesEnabled || videosEnabled) && !thankYouMode -->
<div class="custom-fields ng-isolate-scope" data-cy="custom-fields" fields="customFields" allow-show-errors="!cleanForm" value-updated-callback="updateCustomFieldValue(slug, value)">
<div ng-show="fields">
<!-- ngRepeat: (slug, field) in fields -->
<div ng-repeat="(slug, field) in fields" class="ng-scope" style="">
<div ng-switch="field.type">
<!-- ngSwitchWhen: Rating -->
<!-- ngSwitchWhen: Size -->
<!-- ngSwitchWhen: MultipleChoice -->
<!-- ngSwitchWhen: SingleChoice -->
<div ng-switch-when="SingleChoice" class="ng-scope">
<!-- ngIf: field.displayVariant !== 'dropdown' -->
<div class="custom-field cf-single-choice cf-radio form-element custom-single-choice-field ng-scope ng-isolate-scope" data-cy="single-choice-radio" ng-if="field.displayVariant !== 'dropdown'" field="field"
allow-show-errors="allowShowErrors" value-updated-callback="updateValue(slug, newValue)">
<div class="field-title">
<span class="text ng-binding" ng-bind="field.title">Recommendation rate</span>
<span class="mandatory-mark ng-hide" ng-show="field.mandatory" style="">*</span>
</div>
<fieldset aria-required="false">
<legend class="field-subtitle ng-binding" ng-bind="field.subTitle">Would you recommend this product to a friend?</legend>
<div class="single-choice-field">
<!-- ngRepeat: fieldOption in field.options track by $index -->
<div class="field-choice-option ng-scope" ng-repeat="fieldOption in field.options track by $index" style="">
<div class="custom-radio">
<input type="radio" class="radio ng-pristine ng-untouched ng-valid ng-empty" ng-class="{'error': showError()}" name="hPPQ-single-choice-field-80661" id="hPPQ-single-choice-field-80661-option-0" ng-model="selectedValue"
ng-value="fieldOption" ng-click="updateValue(fieldOption)" data-cy="single-input" value="Yes">
<label for="hPPQ-single-choice-field-80661-option-0" ng-bind="fieldOption" data-cy="single-option" class="ng-binding">Yes</label>
</div>
</div><!-- end ngRepeat: fieldOption in field.options track by $index -->
<div class="field-choice-option ng-scope" ng-repeat="fieldOption in field.options track by $index">
<div class="custom-radio">
<input type="radio" class="radio ng-pristine ng-untouched ng-valid ng-empty" ng-class="{'error': showError()}" name="hPPQ-single-choice-field-80661" id="hPPQ-single-choice-field-80661-option-1" ng-model="selectedValue"
ng-value="fieldOption" ng-click="updateValue(fieldOption)" data-cy="single-input" value="No">
<label for="hPPQ-single-choice-field-80661-option-1" ng-bind="fieldOption" data-cy="single-option" class="ng-binding">No</label>
</div>
</div><!-- end ngRepeat: fieldOption in field.options track by $index -->
</div>
</fieldset>
</div><!-- end ngIf: field.displayVariant !== 'dropdown' -->
<!-- ngIf: field.displayVariant === 'dropdown' -->
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: CustomerFreeText -->
<!-- ngSwitchWhen: ProductFreeText -->
</div>
</div><!-- end ngRepeat: (slug, field) in fields -->
<div ng-repeat="(slug, field) in fields" class="ng-scope">
<div ng-switch="field.type">
<!-- ngSwitchWhen: Rating -->
<div ng-switch-when="Rating" class="ng-scope">
<div class="custom-field cf-rating form-element custom-rating-field ng-isolate-scope" data-cy="rating" field="field" allow-show-errors="allowShowErrors" value-updated-callback="updateValue(slug, newValue)">
<div class="field-title">
<span class="text ng-binding" ng-bind="field.title">Value for money</span>
<span class="mandatory-mark ng-hide" ng-show="field.mandatory" style="">*</span>
</div>
<fieldset aria-required="false">
<legend class="field-subtitle ng-binding" ng-bind="field.subTitle">How do you rate the value for money?</legend>
<div class="rating-field">
<!-- ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index" style="">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="1" name="0fGr-rating-field-80662" id="0fGr-rating-field-80662-option-0" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="0fGr-rating-field-80662-option-0" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="2" name="0fGr-rating-field-80662" id="0fGr-rating-field-80662-option-1" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="0fGr-rating-field-80662-option-1" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="3" name="0fGr-rating-field-80662" id="0fGr-rating-field-80662-option-2" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="0fGr-rating-field-80662-option-2" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="4" name="0fGr-rating-field-80662" id="0fGr-rating-field-80662-option-3" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="0fGr-rating-field-80662-option-3" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="5" name="0fGr-rating-field-80662" id="0fGr-rating-field-80662-option-4" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="0fGr-rating-field-80662-option-4" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index -->
<span class="field-option-value ng-binding" ng-class="{'selected': selectedValue > 0}" ng-bind="fieldOptionSelected">Click here to rate</span>
</div>
</fieldset>
</div>
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: Size -->
<!-- ngSwitchWhen: MultipleChoice -->
<!-- ngSwitchWhen: SingleChoice -->
<!-- ngSwitchWhen: CustomerFreeText -->
<!-- ngSwitchWhen: ProductFreeText -->
</div>
</div><!-- end ngRepeat: (slug, field) in fields -->
<div ng-repeat="(slug, field) in fields" class="ng-scope">
<div ng-switch="field.type">
<!-- ngSwitchWhen: Rating -->
<div ng-switch-when="Rating" class="ng-scope">
<div class="custom-field cf-rating form-element custom-rating-field ng-isolate-scope" data-cy="rating" field="field" allow-show-errors="allowShowErrors" value-updated-callback="updateValue(slug, newValue)">
<div class="field-title">
<span class="text ng-binding" ng-bind="field.title">Product quality</span>
<span class="mandatory-mark ng-hide" ng-show="field.mandatory" style="">*</span>
</div>
<fieldset aria-required="false">
<legend class="field-subtitle ng-binding" ng-bind="field.subTitle">How do you rate the product quality?</legend>
<div class="rating-field">
<!-- ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index" style="">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="1" name="zsr1-rating-field-80663" id="zsr1-rating-field-80663-option-0" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="zsr1-rating-field-80663-option-0" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="2" name="zsr1-rating-field-80663" id="zsr1-rating-field-80663-option-1" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="zsr1-rating-field-80663-option-1" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="3" name="zsr1-rating-field-80663" id="zsr1-rating-field-80663-option-2" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="zsr1-rating-field-80663-option-2" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="4" name="zsr1-rating-field-80663" id="zsr1-rating-field-80663-option-3" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="zsr1-rating-field-80663-option-3" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="5" name="zsr1-rating-field-80663" id="zsr1-rating-field-80663-option-4" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="zsr1-rating-field-80663-option-4" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index -->
<span class="field-option-value ng-binding" ng-class="{'selected': selectedValue > 0}" ng-bind="fieldOptionSelected">Click here to rate</span>
</div>
</fieldset>
</div>
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: Size -->
<!-- ngSwitchWhen: MultipleChoice -->
<!-- ngSwitchWhen: SingleChoice -->
<!-- ngSwitchWhen: CustomerFreeText -->
<!-- ngSwitchWhen: ProductFreeText -->
</div>
</div><!-- end ngRepeat: (slug, field) in fields -->
<div ng-repeat="(slug, field) in fields" class="ng-scope">
<div ng-switch="field.type">
<!-- ngSwitchWhen: Rating -->
<div ng-switch-when="Rating" class="ng-scope">
<div class="custom-field cf-rating form-element custom-rating-field ng-isolate-scope" data-cy="rating" field="field" allow-show-errors="allowShowErrors" value-updated-callback="updateValue(slug, newValue)">
<div class="field-title">
<span class="text ng-binding" ng-bind="field.title">Appearance</span>
<span class="mandatory-mark ng-hide" ng-show="field.mandatory" style="">*</span>
</div>
<fieldset aria-required="false">
<legend class="field-subtitle ng-binding" ng-bind="field.subTitle">How do you rate the product appearance?</legend>
<div class="rating-field">
<!-- ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index" style="">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="1" name="ze0h-rating-field-80664" id="ze0h-rating-field-80664-option-0" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="ze0h-rating-field-80664-option-0" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="2" name="ze0h-rating-field-80664" id="ze0h-rating-field-80664-option-1" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="ze0h-rating-field-80664-option-1" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="3" name="ze0h-rating-field-80664" id="ze0h-rating-field-80664-option-2" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="ze0h-rating-field-80664-option-2" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="4" name="ze0h-rating-field-80664" id="ze0h-rating-field-80664-option-3" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="ze0h-rating-field-80664-option-3" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="5" name="ze0h-rating-field-80664" id="ze0h-rating-field-80664-option-4" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="ze0h-rating-field-80664-option-4" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index -->
<span class="field-option-value ng-binding" ng-class="{'selected': selectedValue > 0}" ng-bind="fieldOptionSelected">Click here to rate</span>
</div>
</fieldset>
</div>
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: Size -->
<!-- ngSwitchWhen: MultipleChoice -->
<!-- ngSwitchWhen: SingleChoice -->
<!-- ngSwitchWhen: CustomerFreeText -->
<!-- ngSwitchWhen: ProductFreeText -->
</div>
</div><!-- end ngRepeat: (slug, field) in fields -->
<div ng-repeat="(slug, field) in fields" class="ng-scope">
<div ng-switch="field.type">
<!-- ngSwitchWhen: Rating -->
<div ng-switch-when="Rating" class="ng-scope">
<div class="custom-field cf-rating form-element custom-rating-field ng-isolate-scope" data-cy="rating" field="field" allow-show-errors="allowShowErrors" value-updated-callback="updateValue(slug, newValue)">
<div class="field-title">
<span class="text ng-binding" ng-bind="field.title">Ease of assembly/installation</span>
<span class="mandatory-mark ng-hide" ng-show="field.mandatory" style="">*</span>
</div>
<fieldset aria-required="false">
<legend class="field-subtitle ng-binding" ng-bind="field.subTitle">How do you rate the ease of assembly/installation?</legend>
<div class="rating-field">
<!-- ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index" style="">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="1" name="bWRA-rating-field-80665" id="bWRA-rating-field-80665-option-0" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="bWRA-rating-field-80665-option-0" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="2" name="bWRA-rating-field-80665" id="bWRA-rating-field-80665-option-1" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="bWRA-rating-field-80665-option-1" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="3" name="bWRA-rating-field-80665" id="bWRA-rating-field-80665-option-2" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="bWRA-rating-field-80665-option-2" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="4" name="bWRA-rating-field-80665" id="bWRA-rating-field-80665-option-3" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="bWRA-rating-field-80665-option-3" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="5" name="bWRA-rating-field-80665" id="bWRA-rating-field-80665-option-4" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="bWRA-rating-field-80665-option-4" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index -->
<span class="field-option-value ng-binding" ng-class="{'selected': selectedValue > 0}" ng-bind="fieldOptionSelected">Click here to rate</span>
</div>
</fieldset>
</div>
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: Size -->
<!-- ngSwitchWhen: MultipleChoice -->
<!-- ngSwitchWhen: SingleChoice -->
<!-- ngSwitchWhen: CustomerFreeText -->
<!-- ngSwitchWhen: ProductFreeText -->
</div>
</div><!-- end ngRepeat: (slug, field) in fields -->
<div ng-repeat="(slug, field) in fields" class="ng-scope">
<div ng-switch="field.type">
<!-- ngSwitchWhen: Rating -->
<div ng-switch-when="Rating" class="ng-scope">
<div class="custom-field cf-rating form-element custom-rating-field ng-isolate-scope" data-cy="rating" field="field" allow-show-errors="allowShowErrors" value-updated-callback="updateValue(slug, newValue)">
<div class="field-title">
<span class="text ng-binding" ng-bind="field.title">Works as expected</span>
<span class="mandatory-mark ng-hide" ng-show="field.mandatory" style="">*</span>
</div>
<fieldset aria-required="false">
<legend class="field-subtitle ng-binding" ng-bind="field.subTitle">Rate whether the product works as you expected:</legend>
<div class="rating-field">
<!-- ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index" style="">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="1" name="Lg2O-rating-field-80666" id="Lg2O-rating-field-80666-option-0" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="Lg2O-rating-field-80666-option-0" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="2" name="Lg2O-rating-field-80666" id="Lg2O-rating-field-80666-option-1" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="Lg2O-rating-field-80666-option-1" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="3" name="Lg2O-rating-field-80666" id="Lg2O-rating-field-80666-option-2" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="Lg2O-rating-field-80666-option-2" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="4" name="Lg2O-rating-field-80666" id="Lg2O-rating-field-80666-option-3" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="Lg2O-rating-field-80666-option-3" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index --><span class="custom-input-container ng-scope" ng-repeat="fieldOption in field.options track by $index">
<input type="radio" class="rating" ng-class="{'error': showError()}" aria-label="5" name="Lg2O-rating-field-80666" id="Lg2O-rating-field-80666-option-4" ng-checked="selectedValue == $index + 1"
ng-click="updateValue($index + 1, fieldOption)" data-cy="rating-input">
<label for="Lg2O-rating-field-80666-option-4" ng-class="{'selected': showSelected[$index]}" data-cy="rating-option"></label>
</span><!-- end ngRepeat: fieldOption in field.options track by $index -->
<span class="field-option-value ng-binding" ng-class="{'selected': selectedValue > 0}" ng-bind="fieldOptionSelected">Click here to rate</span>
</div>
</fieldset>
</div>
</div><!-- end ngSwitchWhen: -->
<!-- ngSwitchWhen: Size -->
<!-- ngSwitchWhen: MultipleChoice -->
<!-- ngSwitchWhen: SingleChoice -->
<!-- ngSwitchWhen: CustomerFreeText -->
<!-- ngSwitchWhen: ProductFreeText -->
</div>
</div><!-- end ngRepeat: (slug, field) in fields -->
</div>
</div>
<!-- ngIf: termsAndConditionsUrl --><custom-checkbox ng-if="termsAndConditionsUrl" class="consent-checkbox ng-scope ng-isolate-scope" initial-value="termsAndConditionsCheckboxChecked" on-update="termsAndConditionsCheckboxChanged(checked)"
allow-show-errors="!cleanForm" context="terms-and-conditions" data-cy="terms-and-conditions">
<div class="custom-checkbox-wrapper terms-and-conditions-wrapper">
<input type="checkbox" id="X8Sc-terms-and-conditions" class="custom-checkbox-input terms-and-conditions-input ng-empty" ng-class="{error: $ctrl.showError()}" ng-model="$ctrl.checked" ng-change="$ctrl.notifyUpdate()"
data-cy="custom-checkbox-input" style="">
<label class="custom-checkbox-label terms-and-conditions-label" for="X8Sc-terms-and-conditions" data-cy="custom-checkbox-option">
<ng-transclude>
<span class="mandatory-mark ng-scope">*</span>
<span ng-bind="'REVIEW.CONSENT_CHECKBOX.I_AGREE' | translate" class="ng-binding ng-scope">I consent to the collection, storage, use and disclosure of my personal data by Ikano Handel Sdn. Bhd., to publish my rating and review. I have
read, understood and accept the</span>
<span
class="ng-scope"><a class="consent-checkbox-link ng-binding" ng-href="https://www.ikea.com/my/en/customer-service/terms-conditions/" target="_blank" ng-bind="'REVIEW.CONSENT_CHECKBOX.TERMS_AND_CONDITIONS' | translate" data-cy="link" href="https://www.ikea.com/my/en/customer-service/terms-conditions/">[Terms of Use]</a></span><span
class="ng-scope"> and </span><span
class="ng-scope"><a class="consent-checkbox-link ng-binding" href="https://www.ikea.com/my/en/customer-service/privacy-policy/" target="_blank" ng-bind="'REVIEW.CONSENT_CHECKBOX.PRIVACY_POLICY' | translate" data-cy="link">[Privacy Policy]</a>.</span>
</ng-transclude>
</label>
</div>
</custom-checkbox><!-- end ngIf: termsAndConditionsUrl -->
<!-- ngIf: privacyPolicyUrl -->
<div ng-show="loaded" class="form-field submit-container">
<button class="submit-review-button regular-button" name="commit" ng-disabled="mediaInProgressExists()" data-cy="submit-review-button">
<!-- ngIf: !mediaInProgressExists() --><span ng-if="!mediaInProgressExists()" ng-bind="'REVIEW.SUBMIT' | translate" class="ng-binding ng-scope">Submit Review</span><!-- end ngIf: !mediaInProgressExists() -->
<!-- ngIf: mediaInProgressExists() -->
</button>
</div>
</div><!-- end ngIf: showReviewBody -->
<!-- ngIf: (imagesEnabled || videosEnabled) && mediaStandAloneMode && !thankYouMode -->
<!-- ngIf: thankYouMode -->
</form>
<form ng-submit="submitForm(true)" class="ui form ng-pristine ng-valid" ng-class="{ disabled: showReviewBody && isSubmitClicked }" data-cy="review-form">
<!-- ngIf: showReviewBody -->
<div class="review-header ng-scope ng-isolate-scope" ng-if="showReviewBody" star-color="E7721B" star-rating-value="baseFields.reviewScore" show-validation-errors="!cleanForm" show-product-image="showProductImage" product-image-url=""
product-name="Product Name">
<div class="header-container">
<div ng-show="showProductImage" class="product-img-container" data-cy="product-image-container">
<!-- ngIf: productImageUrl -->
<!-- ngIf: !productImageUrl --><svg ng-if="!productImageUrl" class="product-img ng-scope" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="75" height="75" style="">
<g fill="none" fill-rule="evenodd">
<path d="M.5.5h74v74H.5z"></path>
<g transform="rotate(38 -7.454 68.216)">
<path fill="#D3D6DD"
d="M10.478 9.86c-1.268 0-2.295-.983-2.295-2.197 0-1.213 1.027-2.197 2.295-2.197s2.295.984 2.295 2.197c0 1.214-1.027 2.198-2.295 2.198m9.28-3.456L10.483.101 1.199 6.405C.445 6.833 0 7.694 0 8.702V27.6c0 1.582 1.346 2.87 2.999 2.87h14.97c1.643 0 2.988-1.288 2.988-2.87V8.702c0-1.008-.445-1.869-1.198-2.297">
</path>
</g>
<path fill="#D3D6DD" d="M43.302 31.028l1.31 1.024 7.608-9.738-1.31-1.024z"></path>
</g>
</svg><!-- end ngIf: !productImageUrl -->
</div>
<div class="stars-container">
<div class="product-name" style="display: -webkit-box;">
<span ng-bind-html="productName" data-cy="product-name" class="ng-binding">Product Name</span>
</div>
<div class="stars">
<ul class="stars ng-isolate-scope" ng-class="{'error': !ratingValue && showError}" rating-value="starRatingValue" show-error="showError(starRatingValue)" data-cy="star-rating">
<!-- ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="1 Star Rating" class="ng-scope" style="">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="2 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="3 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="4 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="5 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
</ul>
<span class="rate-error ng-binding ng-hide" ng-show="showError(starRatingValue)" ng-bind="'REVIEW.RATING_REQUIRED' | translate" style="">Required</span>
</div>
</div>
</div>
</div><!-- end ngIf: showReviewBody -->
<!-- ngIf: showReviewBody -->
<div class="review-body ng-scope collapsed" ng-if="showReviewBody" ng-class="{collapsed: !expanded, loading: expanded && !loaded, 'animation-done': expandAnimationDone}" style="">
<div class="title-and-content">
<div class="loading-container loading ng-isolate-scope ng-hide" data-cy="loading-container" review-body-mode="true" ng-show="expanded && !loaded">
<!-- ngIf: !reviewBodyMode -->
<div class="ls-body-container">
<div class="left-margin line-masker"></div>
<div class="ls-body-content">
<!-- ngIf: !reviewBodyMode -->
<div>
<div class="ls-review-title"></div>
<div class="ls-review-content"></div>
<div class="fields-line-1">
<div class="line-1"></div>
<div class="line-2 line-masker"></div>
</div>
<div class="fields-line-2">
<div class="line-1"></div>
<div class="line-2 line-masker"></div>
</div>
<div class="fields-line-3">
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-margin-right line-masker"></div>
</div>
</div>
</div>
<div class="right-margin line-masker"></div>
</div>
</div>
<!-- ngIf: reviewTitleRequired && !suggestedTopicsEnabled -->
<div ng-if="reviewTitleRequired && !suggestedTopicsEnabled" class="review-title-container ng-scope" ng-class="{error: showError(baseFields.reviewTitle, 'title')}" data-cy="title-without-topics">
<input class="review-title ng-pristine ng-untouched ng-valid ng-empty" name="review_title" aria-label="Review title" type="text" ng-model="baseFields.reviewTitle" placeholder="Review title" data-cy="title-free-text-input">
</div><!-- end ngIf: reviewTitleRequired && !suggestedTopicsEnabled -->
<div class="review-content-container" ng-class="{error: showError(baseFields.reviewContent, 'content'), 'small-spacing': suggestedTopicsEnabled}">
<!-- ngIf: !suggestedTopicsEnabled --><textarea ng-if="!suggestedTopicsEnabled" rows="4" class="review-content yotpo-textarea ng-pristine ng-untouched ng-valid ng-scope ng-empty" aria-label="Review content" type="text"
ng-model="baseFields.reviewContent" name="review_content" placeholder="* Write your review here!" data-cy="content-without-topics-free-text-input"></textarea><!-- end ngIf: !suggestedTopicsEnabled -->
<!-- ngIf: loaded && suggestedTopicsEnabled -->
<span class="content-error ng-binding" ng-bind="'REVIEW.CONTENT_REQUIRED' | translate">Required</span>
</div>
<!-- ngIf: reviewTitleRequired && suggestedTopicsEnabled -->
<!-- ngIf: showDisplayNameAndEmail -->
<!-- ngIf: showDisplayNameAndEmail -->
</div>
<!-- ngIf: loaded && (imagesEnabled || videosEnabled) && !thankYouMode -->
<div class="custom-fields ng-isolate-scope" data-cy="custom-fields" fields="customFields" allow-show-errors="!cleanForm" value-updated-callback="updateCustomFieldValue(slug, value)">
<div ng-show="fields" class="ng-hide" style="">
<!-- ngRepeat: (slug, field) in fields -->
</div>
</div>
<!-- ngIf: termsAndConditionsUrl --><custom-checkbox ng-if="termsAndConditionsUrl" class="consent-checkbox ng-scope ng-isolate-scope" initial-value="termsAndConditionsCheckboxChecked" on-update="termsAndConditionsCheckboxChanged(checked)"
allow-show-errors="!cleanForm" context="terms-and-conditions" data-cy="terms-and-conditions">
<div class="custom-checkbox-wrapper terms-and-conditions-wrapper">
<input type="checkbox" id="dMBq-terms-and-conditions" class="custom-checkbox-input terms-and-conditions-input ng-empty" ng-class="{error: $ctrl.showError()}" ng-model="$ctrl.checked" ng-change="$ctrl.notifyUpdate()"
data-cy="custom-checkbox-input" style="">
<label class="custom-checkbox-label terms-and-conditions-label" for="dMBq-terms-and-conditions" data-cy="custom-checkbox-option">
<ng-transclude>
<span class="mandatory-mark ng-scope">*</span>
<span ng-bind="'REVIEW.CONSENT_CHECKBOX.I_AGREE' | translate" class="ng-binding ng-scope">I consent to the collection, storage, use and disclosure of my personal data by Ikano Handel Sdn. Bhd., to publish my rating and review. I have
read, understood and accept the</span>
<span
class="ng-scope"><a class="consent-checkbox-link ng-binding" ng-href="https://www.ikea.com/my/en/customer-service/terms-conditions/" target="_blank" ng-bind="'REVIEW.CONSENT_CHECKBOX.TERMS_AND_CONDITIONS' | translate" data-cy="link" href="https://www.ikea.com/my/en/customer-service/terms-conditions/">[Terms of Use]</a></span><span
class="ng-scope"> and </span><span
class="ng-scope"><a class="consent-checkbox-link ng-binding" href="https://www.ikea.com/my/en/customer-service/privacy-policy/" target="_blank" ng-bind="'REVIEW.CONSENT_CHECKBOX.PRIVACY_POLICY' | translate" data-cy="link">[Privacy Policy]</a>.</span>
</ng-transclude>
</label>
</div>
</custom-checkbox><!-- end ngIf: termsAndConditionsUrl -->
<!-- ngIf: privacyPolicyUrl -->
<div ng-show="loaded" class="form-field submit-container ng-hide">
<button class="submit-review-button regular-button" name="commit" ng-disabled="mediaInProgressExists()" data-cy="submit-review-button">
<!-- ngIf: !mediaInProgressExists() --><span ng-if="!mediaInProgressExists()" ng-bind="'REVIEW.SUBMIT' | translate" class="ng-binding ng-scope">Submit Review</span><!-- end ngIf: !mediaInProgressExists() -->
<!-- ngIf: mediaInProgressExists() -->
</button>
</div>
</div><!-- end ngIf: showReviewBody -->
<!-- ngIf: (imagesEnabled || videosEnabled) && mediaStandAloneMode && !thankYouMode -->
<!-- ngIf: thankYouMode -->
</form>
<form ng-submit="submitForm(true)" class="ui form ng-pristine ng-valid" ng-class="{ disabled: showReviewBody && isSubmitClicked }" data-cy="review-form">
<!-- ngIf: showReviewBody -->
<div class="review-header ng-scope ng-isolate-scope" ng-if="showReviewBody" star-color="E7721B" star-rating-value="baseFields.reviewScore" show-validation-errors="!cleanForm" show-product-image="showProductImage" product-image-url=""
product-name="Product Name">
<div class="header-container">
<div ng-show="showProductImage" class="product-img-container" data-cy="product-image-container">
<!-- ngIf: productImageUrl -->
<!-- ngIf: !productImageUrl --><svg ng-if="!productImageUrl" class="product-img ng-scope" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="75" height="75" style="">
<g fill="none" fill-rule="evenodd">
<path d="M.5.5h74v74H.5z"></path>
<g transform="rotate(38 -7.454 68.216)">
<path fill="#D3D6DD"
d="M10.478 9.86c-1.268 0-2.295-.983-2.295-2.197 0-1.213 1.027-2.197 2.295-2.197s2.295.984 2.295 2.197c0 1.214-1.027 2.198-2.295 2.198m9.28-3.456L10.483.101 1.199 6.405C.445 6.833 0 7.694 0 8.702V27.6c0 1.582 1.346 2.87 2.999 2.87h14.97c1.643 0 2.988-1.288 2.988-2.87V8.702c0-1.008-.445-1.869-1.198-2.297">
</path>
</g>
<path fill="#D3D6DD" d="M43.302 31.028l1.31 1.024 7.608-9.738-1.31-1.024z"></path>
</g>
</svg><!-- end ngIf: !productImageUrl -->
</div>
<div class="stars-container">
<div class="product-name" style="display: -webkit-box;">
<span ng-bind-html="productName" data-cy="product-name" class="ng-binding">Product Name</span>
</div>
<div class="stars">
<ul class="stars ng-isolate-scope" ng-class="{'error': !ratingValue && showError}" rating-value="starRatingValue" show-error="showError(starRatingValue)" data-cy="star-rating">
<!-- ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="1 Star Rating" class="ng-scope" style="">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="2 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="3 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="4 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
<li ng-repeat="index in [1,2,3,4,5]" ng-click="select(index)" aria-label="5 Star Rating" class="ng-scope">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/filled-star.png" ng-show="ratingValue && index <= ratingValue" width="33" class="ng-hide">
<img src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/empty-star.png" ng-show="(ratingValue && index > ratingValue) || (!ratingValue && !showError)" width="33" class="">
<img ng-show="showError && !ratingValue" src="https://yotpo-stool.s3.amazonaws.com/images/ikea/MY/error-star.png" width="33" class="ng-hide">
</li><!-- end ngRepeat: index in [1,2,3,4,5] -->
</ul>
<span class="rate-error ng-binding ng-hide" ng-show="showError(starRatingValue)" ng-bind="'REVIEW.RATING_REQUIRED' | translate" style="">Required</span>
</div>
</div>
</div>
</div><!-- end ngIf: showReviewBody -->
<!-- ngIf: showReviewBody -->
<div class="review-body ng-scope collapsed" ng-if="showReviewBody" ng-class="{collapsed: !expanded, loading: expanded && !loaded, 'animation-done': expandAnimationDone}" style="">
<div class="title-and-content">
<div class="loading-container loading ng-isolate-scope ng-hide" data-cy="loading-container" review-body-mode="true" ng-show="expanded && !loaded">
<!-- ngIf: !reviewBodyMode -->
<div class="ls-body-container">
<div class="left-margin line-masker"></div>
<div class="ls-body-content">
<!-- ngIf: !reviewBodyMode -->
<div>
<div class="ls-review-title"></div>
<div class="ls-review-content"></div>
<div class="fields-line-1">
<div class="line-1"></div>
<div class="line-2 line-masker"></div>
</div>
<div class="fields-line-2">
<div class="line-1"></div>
<div class="line-2 line-masker"></div>
</div>
<div class="fields-line-3">
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-separator line-masker"></div>
<div class="bullet"></div>
<div class="bullet-margin-right line-masker"></div>
</div>
</div>
</div>
<div class="right-margin line-masker"></div>
</div>
</div>
<!-- ngIf: reviewTitleRequired && !suggestedTopicsEnabled -->
<div ng-if="reviewTitleRequired && !suggestedTopicsEnabled" class="review-title-container ng-scope" ng-class="{error: showError(baseFields.reviewTitle, 'title')}" data-cy="title-without-topics">
<input class="review-title ng-pristine ng-untouched ng-valid ng-empty" name="review_title" aria-label="Review title" type="text" ng-model="baseFields.reviewTitle" placeholder="Review title" data-cy="title-free-text-input">
</div><!-- end ngIf: reviewTitleRequired && !suggestedTopicsEnabled -->
<div class="review-content-container" ng-class="{error: showError(baseFields.reviewContent, 'content'), 'small-spacing': suggestedTopicsEnabled}">
<!-- ngIf: !suggestedTopicsEnabled --><textarea ng-if="!suggestedTopicsEnabled" rows="4" class="review-content yotpo-textarea ng-pristine ng-untouched ng-valid ng-scope ng-empty" aria-label="Review content" type="text"
ng-model="baseFields.reviewContent" name="review_content" placeholder="* Write your review here!" data-cy="content-without-topics-free-text-input"></textarea><!-- end ngIf: !suggestedTopicsEnabled -->
<!-- ngIf: loaded && suggestedTopicsEnabled -->
<span class="content-error ng-binding" ng-bind="'REVIEW.CONTENT_REQUIRED' | translate">Required</span>
</div>
<!-- ngIf: reviewTitleRequired && suggestedTopicsEnabled -->
<!-- ngIf: showDisplayNameAndEmail -->
<!-- ngIf: showDisplayNameAndEmail -->
</div>
<!-- ngIf: loaded && (imagesEnabled || videosEnabled) && !thankYouMode -->
<div class="custom-fields ng-isolate-scope" data-cy="custom-fields" fields="customFields" allow-show-errors="!cleanForm" value-updated-callback="updateCustomFieldValue(slug, value)">
<div ng-show="fields" class="ng-hide" style="">
<!-- ngRepeat: (slug, field) in fields -->
</div>
</div>
<!-- ngIf: termsAndConditionsUrl --><custom-checkbox ng-if="termsAndConditionsUrl" class="consent-checkbox ng-scope ng-isolate-scope" initial-value="termsAndConditionsCheckboxChecked" on-update="termsAndConditionsCheckboxChanged(checked)"
allow-show-errors="!cleanForm" context="terms-and-conditions" data-cy="terms-and-conditions">
<div class="custom-checkbox-wrapper terms-and-conditions-wrapper">
<input type="checkbox" id="Yvxv-terms-and-conditions" class="custom-checkbox-input terms-and-conditions-input ng-empty" ng-class="{error: $ctrl.showError()}" ng-model="$ctrl.checked" ng-change="$ctrl.notifyUpdate()"
data-cy="custom-checkbox-input" style="">
<label class="custom-checkbox-label terms-and-conditions-label" for="Yvxv-terms-and-conditions" data-cy="custom-checkbox-option">
<ng-transclude>
<span class="mandatory-mark ng-scope">*</span>
<span ng-bind="'REVIEW.CONSENT_CHECKBOX.I_AGREE' | translate" class="ng-binding ng-scope">I consent to the collection, storage, use and disclosure of my personal data by Ikano Handel Sdn. Bhd., to publish my rating and review. I have
read, understood and accept the</span>
<span
class="ng-scope"><a class="consent-checkbox-link ng-binding" ng-href="https://www.ikea.com/my/en/customer-service/terms-conditions/" target="_blank" ng-bind="'REVIEW.CONSENT_CHECKBOX.TERMS_AND_CONDITIONS' | translate" data-cy="link" href="https://www.ikea.com/my/en/customer-service/terms-conditions/">[Terms of Use]</a></span><span
class="ng-scope"> and </span><span
class="ng-scope"><a class="consent-checkbox-link ng-binding" href="https://www.ikea.com/my/en/customer-service/privacy-policy/" target="_blank" ng-bind="'REVIEW.CONSENT_CHECKBOX.PRIVACY_POLICY' | translate" data-cy="link">[Privacy Policy]</a>.</span>
</ng-transclude>
</label>
</div>
</custom-checkbox><!-- end ngIf: termsAndConditionsUrl -->
<!-- ngIf: privacyPolicyUrl -->
<div ng-show="loaded" class="form-field submit-container ng-hide">
<button class="submit-review-button regular-button" name="commit" ng-disabled="mediaInProgressExists()" data-cy="submit-review-button">
<!-- ngIf: !mediaInProgressExists() --><span ng-if="!mediaInProgressExists()" ng-bind="'REVIEW.SUBMIT' | translate" class="ng-binding ng-scope">Submit Review</span><!-- end ngIf: !mediaInProgressExists() -->
<!-- ngIf: mediaInProgressExists() -->
</button>
</div>
</div><!-- end ngIf: showReviewBody -->
<!-- ngIf: (imagesEnabled || videosEnabled) && mediaStandAloneMode && !thankYouMode -->
<!-- ngIf: thankYouMode -->
</form>
Text Content
PRODUCTS TO REVIEW Product Name * * * * * Required Required Recommendation rate * Would you recommend this product to a friend? Yes No Value for money * How do you rate the value for money? Click here to rate Product quality * How do you rate the product quality? Click here to rate Appearance * How do you rate the product appearance? Click here to rate Ease of assembly/installation * How do you rate the ease of assembly/installation? Click here to rate Works as expected * Rate whether the product works as you expected: Click here to rate * I consent to the collection, storage, use and disclosure of my personal data by Ikano Handel Sdn. Bhd., to publish my rating and review. I have read, understood and accept the [Terms of Use] and [Privacy Policy]. Submit Review Product Name * * * * * Required Required * I consent to the collection, storage, use and disclosure of my personal data by Ikano Handel Sdn. Bhd., to publish my rating and review. I have read, understood and accept the [Terms of Use] and [Privacy Policy]. Submit Review Product Name * * * * * Required Required * I consent to the collection, storage, use and disclosure of my personal data by Ikano Handel Sdn. Bhd., to publish my rating and review. I have read, understood and accept the [Terms of Use] and [Privacy Policy]. Submit Review