function readOnly(count){ }
Starting November 20, the site will be set to read-only. On December 4, 2023,
forum discussions will move to the Trailblazer Community.
+ Start a Discussion
Jonathan Wolff 7Jonathan Wolff 7 

Add reset button to search aura component

Hello, i have a component that searches inputs in a custom object. I want a button method that resets the component, so that it empties the search bar and hides the results of the previous search. Could you help me with the implementation
 
<aura:component implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId" access="global" controller="MediathekSearchController">
    
    <!-- handlers-->
    <aura:handler name="init" value="{!this}" action="{!c.init}"/>
    <!-- <aura:handler name="change" value="{!v.searchKey}" action="{!c.valueChangeValidation}"/> -->
    
    <!-- attributes -->
    <aura:attribute name="showSearchResults" type="Boolean" default="false"/>
    <aura:attribute name="searchKey" type="String" default=""/>
    <aura:attribute name="mediathekList" type="List" default="Mediathek[]"/>
    <aura:attribute name="mediathekColumns" type="List"/>
     <aura:attribute name="TypValue" type="String" default="Alle"/>
    <aura:attribute name="ZielgruppeValue" type="String" default="Alle"/>
    <aura:attribute name="ThemaValue" type="String" default="Alle"/>
    <aura:attribute name="tooltip" type="boolean" default="false" />
    
    
    <div class= "slds-box slds-p-top_none slds-p-bottom_none slds-p-right_none">
        <div class="slds-grid slds-wrap" >
            <div class="slds-size_12-of-12 ">
        <lightning:layout multipleRows="true">
           
            <lightning:layoutItem  size="7">
                <lightning:input aura:id="inputField" name="searchKey" placeholder="Bitte geben Sie mindestens 2 Buchstaben ein, um zu suchen" value="{!v.searchKey}"  onkeyup="{!c.search}" messageWhenBadInput="Es müssen mindestens 2 Zeichen eingegeben werden"/>
            </lightning:layoutItem>
            <lightning:layoutItem  size="1"/>
            <lightning:layoutItem  size="1">
                <lightning:button  variant="brand" label="Suchen" title="Search" onclick="{!c.search}" class="customButton" />
            </lightning:layoutItem>
            <lightning:layoutItem  size="3"/>
        
            <lightning:layoutItem  size="3">
             <lightning:select  aura:id="TypValue" name="Typ" label="Typ" required="false" value="{!v.TypValue}">
                      
            <option value="Alle">Alle</option>
            <option value="Formular">Formular</option>
            <option value="Merkblatt">Merkblatt</option>
            <option value="Flyer">Flyer</option>
            <option value="Infobroschüre">Infobroschüre</option>
    		</lightning:select>
            </lightning:layoutItem>
            
            <lightning:layoutItem  size="1"/>
            <lightning:layoutItem  size="3">
             <lightning:select aura:id="ThemaValue" name="Thema" label="Thema" required="false" value="{!v.ThemaValue}">
                 
                  <option value="Alle">Alle</option>
           		 <option value="Altersvorsorge">Altersvorsorge</option>          
           		 <option value="AOK">AOK</option>
           		 <option value="Beratungstag">Beratungstag</option>
                 <option value="Berufsunfähigkeit">Berufsunfähigkeit</option>
                 <option value="Berufsunfähigkeit privat">Berufsunfähigkeit privat</option>
                 <option value="bKV">bKV</option>
                 <option value="BRSG">BRSG</option>
                 <option value="Direktversicherung">Direktversicherung</option>
                 <option value="Direktversicherung, ergänzende Berufsunfähigkeit, Berufsunfähigkeit">Direktversicherung, ergänzende Berufsunfähigkeit, Berufsunfähigkeit</option>
                 <option value="Direktversicherung, Pensionsfonds">Direktversicherung, Pensionsfonds</option>
                 <option value="Direktversicherung, Pensionskasse">Direktversicherung, Pensionskasse</option>
                 <option value="Direktversicherung, Pensionskasse, Pensionsfonds">Direktversicherung, Pensionskasse, Pensionsfonds</option>
                 <option value="englisches Material">englisches Material</option>
                 <option value="FID FIR">FID FIR</option>
                 <option value="Firmenversicherung (Gruppenvertrag)">Firmenversicherung (Gruppenvertrag)</option>
                 <option value="Kundencall">Kundencall</option>
                 <option value="Lebensversicherung privat">Lebensversicherung privat</option>
                 <option value="Pensionsfonds">Pensionsfonds</option>
                 <option value="Pensionskasse">Pensionskasse</option>
                 <option value="Pensionszusage">Pensionszusage</option>
                 <option value="privat">privat</option>
                 <option value="PrivatRente, Schatzbrief Perspektive">PrivatRente, Schatzbrief Perspektive</option>
                 <option value="Produktinfo">Produktinfo</option>
                 <option value="rechtliche Unterlage">rechtliche Unterlage</option>
                  <option value="Riester">Riester</option>
                  <option value="Rückdeckungsversicherung FIR">Rückdeckungsversicherung FIR</option>
                  <option value="Unterstützungskasse">Unterstützungskasse</option>
                  <option value="Zeitwertkonto">Zeitwertkonto</option>
                  <option value="Zusatzbausteine">Zusatzbausteine</option>
                  
    		</lightning:select>
            </lightning:layoutItem>
            <lightning:layoutItem  size="1"/>
            
            <lightning:layoutItem  size="3">
             <lightning:select aura:id="ZielgruppeValue" name="Zielgruppe" label="Zielgruppe" required="false" value="{!v.ZielgruppeValue}">
                 
            <option value="Alle">Alle</option>          
            <option value="Arbeitgeber">Arbeitgeber</option>
            <option value="Arbeitnehmer">Arbeitnehmer</option>
            <option value="Berater">Berater</option>
            <option value="Verband">Verband</option>
            <option value="Arbeitgeber/Arbeitnehmer">Arbeitgeber/Arbeitnehmer</option>
            <option value="Azubi">Azubi</option>
            <option value="IGM">IGM</option>
    		</lightning:select>
            </lightning:layoutItem>
            
        </lightning:layout>
              
                
            </div>
        </div>
        <div class="haha" style="margin-right:300px">
            <aura:if isTrue="{!v.showSearchResults}">
                

      <!--      <lightning:layout multipleRows="true">
                <lightning:layoutItem padding="around-large" size="12" >
                    <lightning:datatable keyField="id"
                                         data="{!v.mediathekList}"
                                         columns="{!v.mediathekColumns}"
                                         hideCheckboxColumn="true"/>
                    
                    
        
                </lightning:layoutItem>
            </lightning:layout>  -->
                
                <table class="slds-table slds-table--bordered slds-table--striped slds-p-right_medium">
                        <thead>
                            <tr>
                                <th scope="col"><span class="slds-truncate">Bezeichnung</span></th>
                                
                                <th scope="col"><span class="slds-truncate">Typ</span></th>
                                <th scope="col"><span class="slds-truncate">Zielgruppe</span></th>
                                <th scope="col"><span class="slds-truncate">Umfang</span></th>
                               
                                <th scope="col"><span class="slds-truncate">CVID</span></th>
                          <!--      <th scope="col"><span class="slds-truncate">Vorschau</span></th> -->
                            </tr>
                        </thead>
                        <tbody>
                            <aura:iteration items="{!v.mediathekList}" var="media">
                                <tr height="300px">
                                     <td style="background-color:#F8F8F8; width:200px">{!media.Bezeichnung__c}</td>
                                    
                                    <td style="background-color:#F8F8F8">{!media.Typ__c}</td>
                                    <td style="background-color:#F8F8F8">{!media.Zielgruppe__c}</td>
                                    <td style="background-color:#F8F8F8">{!media.Umfang__c}</td>
                                 
                                    <td style="background-color:#F8F8F8"><img src="{!'/sfc/servlet.shepherd/version/renditionDownload?rendition=THUMB720BY480&amp;versionId=' + media.ContentVersionId__c}" alt="Keine Vorschau verfügbar"/></td>
                                   
                               <!--     <td style="background-color:#F8F8F8"> <lightning:fileCard fileId="{!media.ContentDocumentID__c}" description="{!media.Bezeichnung__c}"/> </td> -->
                                </tr> 
                            </aura:iteration>
                        </tbody>
                    </table>
        </aura:if>
    </div>
        </div>
    
</aura:component>

Controller
({
    init: function (component, event, helper){
      /* component.set('v.mediathekColumns', [
           {label: 'Bezeichnung', fieldName: 'Bezeichnung_Search__c', type: 'url' , fixedWidth: 395, 
             typeAttributes: {label: { fieldName: 'Bezeichnung__c' }, target: '_blank'}
            },
           {label: 'Typ', fieldName: 'Typ__c', type: 'text',  fixedWidth: 116,
            },
           {label: 'Zielgruppe', fieldName: 'Zielgruppe__c', type: 'text', fixedWidth: 116,
            },
           {label: 'Umfang', fieldName: 'Umfang__c', type: 'text', fixedWidth: 112,
           },
            {label: 'Preview', fieldName: 'Bild_Preview__c', type: 'image',  fixedWidth: 300,
            },
           
         
          ]); */
             var action = component.get("c.getSearchResult");
       
        action.setCallback(this, function(response){
            var state = response.getState();
            if (state === "SUCCESS") {
                var records =response.getReturnValue();
                records.forEach(function(record){
                    
           			record.BEZ = record.Bezeichnung__c;
                });
                component.set("v.mediathekList", records);
            }
        });
        $A.enqueueAction(action);
    },


        
    search : function(component, event, helper) {
        helper.getSearchResultsFromApex(component, event, helper);
        component.set("v.showSearchResults",true);
    }
})


({
    init: function (component, event, helper){
       component.set('v.mediathekColumns', [
          
            {label: 'Bezeichnung', fieldName: 'Bezeichnung_Search__c', type: 'url' , fixedWidth: 395, 
             typeAttributes: {label: { fieldName: 'Bezeichnung__c' }, target: '_blank'}
            },
           {label: 'Thema', fieldName: 'Thema__c', type: 'text', fixedWidth: 112,
           },
           {label: 'Typ', fieldName: 'Typ__c', type: 'text',  fixedWidth: 116,
            },
           {label: 'Zielgruppe', fieldName: 'Zielgruppe__c', type: 'text', fixedWidth: 116,
            },
           {label: 'Umfang', fieldName: 'Umfang__c', type: 'text', fixedWidth: 112,
           },
           
         
          ]);
             var action = component.get("c.getSearchResult");
       
        action.setCallback(this, function(response){
            var state = response.getState();
            if (state === "SUCCESS") {
                var records =response.getReturnValue();
                records.forEach(function(record){
                    
           			record.BEZ = record.Bezeichnung__c;
                });
                component.set("v.mediathekList", records);
            }
        });
        $A.enqueueAction(action);
    },


        
    search : function(component, event, helper) {
        helper.getSearchResultsFromApex(component, event, helper);
        component.set("v.showSearchResults",true);
    },
    

})

Helper
({
    getSearchResultsFromApex : function(component, event, helper){
     
       var action = component.get("c.getSearchResult");
       
         
        action.setParams({ TypValue : component.get("v.TypValue"), searchKey : component.get("v.searchKey"), 
                          ZielgruppeValue : component.get("v.ZielgruppeValue"), ThemaValue : component.get("v.ThemaValue") });      
        
     
        // Create a callback that is executed after
        // the server-side action returns
        action.setCallback(this, function(response) {
            var state = response.getState();
            if (state === "SUCCESS") {
 var result = response.getReturnValue();
  result.forEach(function(result){
                    result.Name = '/'+result.Id;
      				
                });
               
                // SOSL will always return the list in the order they were queried
                component.set("v.mediathekList",result[0]);
                  
                
            }
            else if (state === "INCOMPLETE") {
                // do something
            }
                else if (state === "ERROR") {
                    var errors = response.getError();
                    if (errors) {
                        if (errors[0] && errors[0].message) {
                            console.log("Error message: " +
                                        errors[0].message);
                        }
                    } else {
                        console.log("Unknown error");
                    }
                }
        });
        $A.enqueueAction(action);
    }
})

​​​​​​​​​​​​​​