In this video you will learn how to create Visual Picker in Lightning Web Component. We will use the Lightning Design System to create the UI for this.
Please check the reference links below :
Official Documentation : https://www.lightningdesignsystem.com/components/visual-picker/#site-main-content
Wire list of Accounts :
https://www.salesforcebolt.com/2021/06/wire-apex-with-property-and-functions-lwc.html
Create Custom Modal :
https://www.salesforcebolt.com/2021/06/ep-25-custom-modal-popup-in-lwc-lwc.html
#VisualPicker #LWC #salesforce
Please check complete code below :
HTML
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | <template> <template if:true={showModal}> <section role="dialog" tabindex="-1" aria-labelledby="modal-heading-01" aria-modal="true" aria-describedby="modal-content-id-1" class="slds-modal slds-fade-in-open" > <div class="slds-modal__container"> <!-- Header Start --> <header class="slds-modal__header"> <lightning-button-icon class="slds-modal__close" title="Close" icon-name="utility:close" icon-class="slds-button_icon-inverse" onclick={closeModal} ></lightning-button-icon> <h2 id="id-of-modalheader-h2" class="slds-text-heading_large"> Select Accounts </h2> <p class="slds-var-m-top_x-small">Select data from the list</p> </header> <!-- Header End --> <div class="slds-modal__content slds-p-around_medium" id="modal-content-id-1" > <template if:true={showSpinner}> <lightning-spinner alternative-text="Loading" variant="brand" size="medium" > </lightning-spinner> </template> <fieldset class="slds-form-element"> <div class="slds-form-element__control"> <template for:each={accounts} for:item="acc"> <div key={acc.Id} class="slds-visual-picker slds-visual-picker_medium" > <input type="checkbox" onchange={handleCheck} name={acc.Id} id={acc.Id} value={acc.Id} ></input> <label for={acc.Id}> <span class=" slds-visual-picker__figure slds-visual-picker__text slds-align_absolute-center " > <span> <span class="slds-text-heading_large">{acc.Name}</span> <span class="slds-text-title"></span> </span> </span> <span class="slds-visual-picker__body"> <span class="slds-text-heading_small" >Contact Number</span > <span class="slds-text-title">{acc.Phone}</span> </span> <span class="slds-icon_container slds-visual-picker__text-check" > <lightning-icon icon-name="utility:check" size="xx-small" variant="inverse" ></lightning-icon> </span> </label> </div> </template> </div> </fieldset> </div> <footer class="slds-modal__footer"> <template if:true={message}> <span class="slds-text-color_error">{message}</span> </template> <lightning-button variant="brand-outline" label="Cancel" onclick={closeModal} title="Cancel" class="slds-var-m-left_x-small" ></lightning-button> <lightning-button variant="brand" label="Next" onclick={applyActions} title="Next" class="slds-var-m-left_x-small" ></lightning-button> </footer> </div> </section> <div class="slds-backdrop slds-backdrop_open"></div> </template> </template> |
JS
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | import { LightningElement, api, wire, track } from "lwc"; import { ShowToastEvent } from "lightning/platformShowToastEvent"; import getAccountList from "@salesforce/apex/AccountController.getAccList"; export default class VisualPicker extends LightningElement { @track loaded; @api selectedAccounts = []; @api selectedAccsString; message; accounts; showModal = true; @api show() { this.showModal = true; } @wire(getAccountList) wiredAccounts({ error, data }) { if (data) { this.accounts = data; this.error = undefined; } else if (error) { this.error = error; this.accounts = undefined; } } handleCheck(event) { console.log("###Current Target : " + event.currentTarget.name); } closeModal() { this.showModal = false; } } |
Output
Checkout complete video tutorial below
1 Comments
What if we want to select only card at a time?
ReplyDelete