{"id":3435,"date":"2020-06-24T06:16:10","date_gmt":"2020-06-24T11:46:10","guid":{"rendered":"https:\/\/www.emizentech.com\/blog\/?p=3435"},"modified":"2022-01-21T11:42:27","modified_gmt":"2022-01-21T11:42:27","slug":"build-star-rating-component-using-lwc-in-salesforce","status":"publish","type":"post","link":"https:\/\/multisitelocal.ezxdemo.com\/blog\/build-star-rating-component-using-lwc-in-salesforce.html","title":{"rendered":"How To Build Star Rating Component Using LWC In Salesforce"},"content":{"rendered":"<p>In this blog, we will learn how to build a rating component using LWC. A rating component is required in different aspects whether you are holding an event, launching a product, running a food delivery, or anything else customer feedback has the most importance.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"How_it_will_look_like\"><\/span>How it will look like.<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-3439 size-full\" src=\"\/blog\/wp-content\/uploads\/sites\/2\/2020\/06\/Rating-Component-Using-LWC.png\" alt=\"Rating Component Using LWC\" width=\"450\" height=\"308\" \/><br \/>\nLet&#8217;s start coding. We build two components.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"ratingCmphtml\"><\/span>ratingCmp.html<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>&lt;template&gt;\r\n    &lt;div class=\"rate\"&gt;\r\n        &lt;input type=\"radio\" id=\"star15\" name={name} value=\"5\" onchange={rating} \/&gt;\r\n        &lt;label for=\"star15\" title=\"text\"&gt;5 stars&lt;\/label&gt;\r\n        &lt;input type=\"radio\" id=\"star14\" name={name} value=\"4\" onchange={rating} \/&gt;\r\n        &lt;label for=\"star14\" title=\"text\"&gt;4 stars&lt;\/label&gt;\r\n        &lt;input type=\"radio\" id=\"star13\" name={name} value=\"3\" onchange={rating} \/&gt;\r\n        &lt;label for=\"star13\" title=\"text\"&gt;3 stars&lt;\/label&gt;\r\n        &lt;input type=\"radio\" id=\"star12\" name={name} value=\"2\" onchange={rating} \/&gt;\r\n        &lt;label for=\"star12\" title=\"text\"&gt;2 stars&lt;\/label&gt;\r\n        &lt;input type=\"radio\" id=\"star11\" name={name} value=\"1\" onchange={rating} \/&gt;\r\n        &lt;label for=\"star11\" title=\"text\"&gt;1 star&lt;\/label&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/template&gt;\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"ratingCmpjs\"><\/span>ratingCmp.js<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>import { LightningElement, api } from \"lwc\";\r\n\r\nexport default class RatingCmp extends LightningElement {\r\n  static pizzarating;\r\n  static deliveryrating;\r\n  static burgerrating;\r\n  static  packagerating;\r\n  @api name;\r\n  rating(event) {\r\n    if (event.target.name === \"Pizza\") {        \r\n      RatingCmp.pizzarating = event.target.value;        \r\n    }\r\n    if (event.target.name === \"Burger\") {\r\n      RatingCmp.burgerrating = event.target.value;\r\n    }\r\n    if (event.target.name === \"Package\") {\r\n      RatingCmp.packagerating = event.target.value; \r\n    }\r\n    if (event.target.name === \"Delivery\") {\r\n      RatingCmp.deliveryrating = event.target.value;\r\n    }\r\n  }\r\n@api\r\n  getvalues() {\r\n    alert(\r\n      \"DeliveryRating:\" +\r\n      RatingCmp.deliveryrating +\r\n        \", PizzaRating:\" +\r\n        RatingCmp.pizzarating +\r\n        \", BurgerRating:\" +\r\n        RatingCmp.burgerrating +\r\n        \", PackageRating:\" +\r\n        RatingCmp.packagerating\r\n    );\r\n  }\r\n}\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"ratingCmpcss\"><\/span>ratingCmp.css<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>* {\r\n    margin: 0;\r\n    padding: 0;\r\n}\r\n\r\n.rate {\r\n    float: left;\r\n    height: 46px;\r\n    padding: 0 10px;\r\n}\r\n\r\n.rate:not(:checked)&gt;input {\r\n    position: absolute;\r\n    top: -9999px;\r\n}\r\n\r\n.rate:not(:checked)&gt;label {\r\n    float: right;\r\n    width: 1em;\r\n    overflow: hidden;\r\n    white-space: nowrap;\r\n    cursor: pointer;\r\n    font-size: 30px;\r\n    color: #ccc;\r\n}\r\n\r\n.rate:not(:checked)&gt;label:before {\r\n    content: '\u2605 ';\r\n}\r\n\r\n.rate&gt;input:checked~label {\r\n    color: #ffc700;\r\n}\r\n\r\n.rate:not(:checked)&gt;label:hover,\r\n.rate:not(:checked)&gt;label:hover~label {\r\n    color: #deb217;\r\n}\r\n\r\n.rate&gt;input:checked+label:hover,\r\n.rate&gt;input:checked+label:hover~label,\r\n.rate&gt;input:checked~label:hover,\r\n.rate&gt;input:checked~label:hover~label,\r\n.rate&gt;label:hover~input:checked~label {\r\n    color: #c59b08;\r\n}\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"feedbackCmphtml\"><\/span>feedbackCmp.html<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>&lt;template&gt;\r\n    &lt;lightning-tile title='Provide Feedback'&gt;\r\n        &lt;div class=\"slds-m-top_medium slds-m-bottom_x-large\"&gt;\r\n            &lt;div class=\"slds-p-around_medium lgc-bg\"&gt;\r\n                &lt;lightning-tile label=\"Delivery Service\" type=\"media\"&gt;\r\n                    &lt;lightning-avatar slot=\"media\"\r\n                        src=\"https:\/\/tse1.mm.bing.net\/th?id=OIP.DrJx7TuzS4K3-AWQGM0-pwHaE5&amp;pid=Api&amp;P=0&amp;w=50&amp;h=100\"\r\n                        fallback-icon-name=\"standard:person_account\" alternative-text=\"Delivery Service\"&gt;&lt;\/lightning-avatar&gt;\r\n                        &lt;c-rating-cmp name='Delivery'&gt;&lt;\/c-rating-cmp&gt;\r\n                &lt;\/lightning-tile&gt;    \r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"slds-m-top_medium slds-m-bottom_x-large\"&gt;\r\n            &lt;div class=\"slds-p-around_medium lgc-bg\"&gt;\r\n                &lt;lightning-tile label=\"Pizza\" type=\"media\"&gt;\r\n                    &lt;lightning-avatar slot=\"media\"\r\n                        src=\"https:\/\/res.cloudinary.com\/teepublic\/image\/private\/s--vVWQvPyW--\/ar_1:1,c_fill,h_300,w_300\/d_misc:avatars:f_5.png,f_jpg,q_90\/v1476802496\/production\/stores\/4367\/avatar.jpg\"\r\n                        fallback-icon-name=\"standard:person_account\" alternative-text=\"Pizza\"&gt;&lt;\/lightning-avatar&gt;\r\n                        &lt;c-rating-cmp name='Pizza'&gt;&lt;\/c-rating-cmp&gt;\r\n                &lt;\/lightning-tile&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"slds-m-top_medium slds-m-bottom_x-large\"&gt;\r\n            &lt;div class=\"slds-p-around_medium lgc-bg\"&gt;\r\n                &lt;lightning-tile label=\"Burger\" type=\"media\"&gt;\r\n                    &lt;lightning-avatar slot=\"media\" src=\"https:\/\/webstockreview.net\/images\/burger-clipart-bread-12.jpg\"\r\n                        fallback-icon-name=\"standard:person_account\" alternative-text=\"Burger\"&gt;&lt;\/lightning-avatar&gt;\r\n                        &lt;c-rating-cmp name='Burger'&gt;&lt;\/c-rating-cmp&gt;\r\n                &lt;\/lightning-tile&gt;    \r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n        &lt;div class=\"slds-m-top_medium slds-m-bottom_x-large\"&gt;\r\n    \r\n            &lt;div class=\"slds-p-around_medium lgc-bg\"&gt;\r\n                &lt;lightning-tile label=\"Packaging\" type=\"media\"&gt;\r\n                    &lt;lightning-avatar slot=\"media\"\r\n                        src=\"https:\/\/us.123rf.com\/450wm\/theblackrhino\/theblackrhino1410\/theblackrhino141000154\/33177495-stock-vector-yellow-generic-food-package-over-blue-background.jpg?ver=6\"\r\n                        fallback-icon-name=\"standard:person_account\" alternative-text=\"Packaging\"&gt;&lt;\/lightning-avatar&gt;\r\n                    &lt;c-rating-cmp name='Package'&gt;&lt;\/c-rating-cmp&gt;\r\n                &lt;\/lightning-tile&gt;\r\n                &lt;lightning-button label=\"Submit\" onclick={showRating}&gt; &lt;\/lightning-button&gt;\r\n            &lt;\/div&gt;\r\n        &lt;\/div&gt;\r\n    &lt;\/lightning-tile&gt;\r\n&lt;\/template&gt;\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"feedbackCmpjs\"><\/span>feedbackCmp.js<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>import { LightningElement } from 'lwc';\r\n\r\nexport default class FeedbackCmp extends LightningElement {\r\n    showRating(){\r\n        this.template.querySelector('c-rating-cmp').getvalues();\r\n    }\r\n}\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"feedbackCmpcss\"><\/span>feedbackCmp.css<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>* {\r\n    margin: 0;\r\n    padding: 0;\r\n}\r\n<\/pre>\n<h3><span class=\"ez-toc-section\" id=\"feedbackCmpjs-metaxml\"><\/span>feedbackCmp.js-meta.xml<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<pre>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;LightningComponentBundle xmlns=\"http:\/\/soap.sforce.com\/2006\/04\/metadata\"&gt;\r\n    &lt;apiVersion&gt;48.0&lt;\/apiVersion&gt;\r\n    &lt;isExposed&gt;true&lt;\/isExposed&gt;\r\n    &lt;targets&gt;\r\n    &lt;target&gt;lightning__AppPage&lt;\/target&gt;\r\n    &lt;target&gt;lightning__RecordPage&lt;\/target&gt;\r\n    &lt;target&gt;lightning__HomePage&lt;\/target&gt;\r\n&lt;\/targets&gt;\r\n&lt;\/LightningComponentBundle&gt;\r\n<\/pre>\n<h2><span class=\"ez-toc-section\" id=\"Code_Explanation\"><\/span>Code Explanation<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li>In this we written a ratingCmp component to build the star view and used this child component to feedback component.\n<pre>&lt;c-rating-cmp name='Package'&gt;&lt;\/c-rating-cmp&gt;<\/pre>\n<\/li>\n<li>I declared a name public variable and passed the value from feedbackCmp for all options.<\/li>\n<li>This way you can edit the rating component if you need no need to change code multiple time. Way to write a reusable code.<\/li>\n<li>In xml file add target values as App page, Record Page or Home page. You can use community page as well.<\/li>\n<\/ul>\n<p>On submit showRating called and in this I have called a public method of child component<\/p>\n<pre>this.template.querySelector('c-rating-cmp').getvalues()<\/pre>\n<p>Hope, this post helped you in building the star rating component using LWC. We at Emizentech have expert <a href=\"https:\/\/multisitelocal.ezxdemo.com\/salesforce.html\">salesforce developers<\/a> who help businesses and organizations all over the world to achieve business goals with the help of salesforce products. So, get in touch with us and hire the best <a href=\"https:\/\/multisitelocal.ezxdemo.com\/salesforce-consulting.html\">salesforce consulting company<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this blog, we will learn how to build a rating component using LWC. A rating component is required in different aspects whether you are holding an event, launching a product, running a food delivery, or anything else customer feedback has the most importance. How it will look like. Let&#8217;s start coding. We build two<\/p>\n","protected":false},"author":39,"featured_media":3554,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"MSN_Categories":"Uncategorized","MSN_Publish_Option":false,"MSN_Is_Local_News":false,"MSN_Is_AIAC_Included":"Empty","MSN_Location":"[]","MSN_Add_Feature_Img_On_Top_Of_Post":false,"MSN_Has_Custom_Author":false,"MSN_Custom_Author":"","MSN_Has_Custom_Canonical_Url":false,"MSN_Custom_Canonical_Url":"","_lmt_disableupdate":"","_lmt_disable":"","footnotes":""},"categories":[87],"tags":[],"class_list":{"0":"post-3435","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-salesforce-development"},"modified_by":"emizentech","featured_image_src":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-content\/uploads\/sites\/2\/2020\/06\/Star-Rating-Component-Using-LWC-2.jpg","featured_image_src_square":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-content\/uploads\/sites\/2\/2020\/06\/Star-Rating-Component-Using-LWC-2.jpg","author_info":{"display_name":"Virendra Sharma","author_link":"https:\/\/multisitelocal.ezxdemo.com\/blog\/author\/salesforce"},"_links":{"self":[{"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/posts\/3435","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/users\/39"}],"replies":[{"embeddable":true,"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/comments?post=3435"}],"version-history":[{"count":0,"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/posts\/3435\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/media\/3554"}],"wp:attachment":[{"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/media?parent=3435"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/categories?post=3435"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/multisitelocal.ezxdemo.com\/blog\/wp-json\/wp\/v2\/tags?post=3435"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}