You need to sign in to do that
Don't have an account?

How to Add filter to Account Search Lightning Component
I created this Account Search Lightning Component from a trailhead and I am wondering if there is a way to add some filter criteria to only find accounts that have a checkbox checked on the account record. I am looking for help to add this to the code below.
Lightning Component:
Controller:
Here is the Account List Code in case it is needed
Lightning Component:
<aura:component controller="AccountSearchController"> <aura:registerEvent name="accountsLoaded" type="c:AccountsLoaded"/> <aura:handler name="init" value="{!this}" action="{!c.onInit}"/> <aura:attribute name="searchTerm" type="String" default="Cranston"/> <lightning:card title="Account Search" iconName="standard:search"> <div class="slds-form slds-p-around_x-small"> <lightning:input label="Search" variant="label-hidden" value="{!v.searchTerm}" placeholder="Search by name, phone, website, or address" onchange="{!c.onSearchTermChange}"/> </div> </lightning:card> </aura:component>
Controller:
({ onInit: function( component, event, helper ) { // proactively search on component initialization var searchTerm = component.get( "v.searchTerm" ); helper.handleSearch( component, searchTerm ); }, onSearchTermChange: function( component, event, helper ) { // search anytime the term changes var searchTerm = component.get( "v.searchTerm" ); // to improve performance, particularly for fast typers, // we wait a small delay to check when user is done typing var delayMillis = 500; // get timeout id of pending search action var timeoutId = component.get( "v.searchTimeoutId" ); // cancel pending search action and reset timer clearTimeout( timeoutId ); // delay doing search until user stops typing // this improves client-side and server-side performance timeoutId = setTimeout( $A.getCallback( function() { helper.handleSearch( component, searchTerm ); }), delayMillis ); component.set( "v.searchTimeoutId", timeoutId ); } })
Here is the Account List Code in case it is needed
<aura:component> <aura:handler event="c:AccountsLoaded" action="{!c.onAccountsLoaded}"/> <lightning:navigation aura:id="navigation"/> <aura:attribute name="rows" type="Map[]"/> <aura:attribute name="cols" type="Map[]"/> <lightning:card title="Account List" iconName="standard:account"> <lightning:datatable data="{!v.rows}" columns="{!v.cols}" keyField="Id" hideCheckboxColumn="true" showRowNumberColumn="true" onrowaction="{!c.onRowAction}"/> </lightning:card> </aura:component>
({ onAccountsLoaded: function( component, event, helper ) { var cols = [ { 'label': 'Name', 'fieldName': 'Name', 'type': 'text' }, { 'label': 'Phone', 'fieldName': 'Phone', 'type': 'phone' }, { 'label': 'Website', 'fieldName': 'Website', 'type': 'url' }, { 'label': 'Action', 'type': 'button', 'typeAttributes': { 'label': 'View details', 'name': 'view_details' } } ]; component.set( 'v.cols', cols ); component.set( 'v.rows', event.getParam( 'accounts' ) ); }, onRowAction: function( component, event, helper ) { var action = event.getParam( 'action' ); var row = event.getParam( 'row' ); if ( action.name == 'view_details' ) { var navigation = component.find( 'navigation' ); navigation.navigate({ 'type': 'standard__recordPage', 'attributes': { 'objectApiName': 'Account', 'recordId': row.Id, 'actionName': 'view' } }); } } })
Kindly refer these example of similar issue :-
https://developer.salesforce.com/forums/?id=9062I000000Xpv2QAC
https://salesforce.stackexchange.com/questions/226965/how-to-filter-a-lightning-component-based-on-data-elsewhere-on-the-page
Thanks!