Ad Code

Responsive Advertisement

lightning:pillContainer and dialog(openModel or openPopup)

lightning:pillContainer and dialog(openModel or openPopup)





AddAttendees.cmp

<aura:component controller="AddAttendeesController" implements="force:appHostable,flexipage:availableForAllPageTypes,flexipage:availableForRecordHome,force:hasRecordId,force:lightningQuickAction" access="global" >
    <aura:attribute name="items" type="List" default="[
                                                      {
                                                      type: 'avatar',
                                                      href: '',
                                                      id: 'XX001',
                                                      label: 'Avatar Pill',
                                                      src: '/docs/component-library/app/images/examples/avatar2.jpg',
                                                      fallbackIconName: 'standard:user',
                                                      variant: 'circle',
                                                      alternativeText: 'User avatar',
                                                      },
                                                      {
                                                      type: 'icon',
                                                      href: '',
                                                      id: 'XX002',
                                                      label: 'Icon Pill',
                                                      iconName: 'standard:account',
                                                      alternativeText: 'Account',
                                                      },
                                                      ]"/>
    <aura:attribute name="isOpen" type="boolean" default="false"/>
    <aura:attribute name="issearching"    type="Boolean" default="false"/>
    <aura:attribute name="AttendeesList" type="List" />
    <aura:attribute name="Message" type="string" />
    <div class="slds-container_center slds-theme_shade">
        <lightning:card footer="Card Footer" title="Add Attendees">
            <aura:set attribute="actions">
                <lightning:button label="Add Attendees" onclick="{! c.openModel }" variant="brand"/>
            </aura:set>
            <p class="slds-p-horizontal_small">
                Attendees List
                <lightning:pillContainer items="{!v.items}" onitemremove="{!c.onRemovePill}"></lightning:pillContainer>
            </p>
        </lightning:card>
        <aura:if isTrue="{!v.isOpen}">
           
            <!--###### MODAL BOX Start######-->
            <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">
                    <!-- ###### MODAL BOX HEADER Start ######-->
                    <header class="slds-modal__header">
                        <lightning:buttonIcon iconName="utility:close"
                                              onclick="{! c.closeModel }"
                                              alternativeText="close"
                                              variant="bare-inverse"
                                              class="slds-modal__close"/>
                        <h2 id="modal-heading-01" class="slds-text-heading_medium slds-hyphenate">Search Attendees</h2>
                    </header>
                    <!--###### MODAL BOX BODY Part Start######-->
                    <div class="slds-modal__content slds-p-around_medium" id="modal-content-id-1">
                        <p><div onkeyup="{! c.handleKeyUp }">
                            <lightning:input
                                             aura:id="enter-search"
                                             name="enter-search"
                                             label="Search when user hits the 'enter' key"
                                             isLoading="{! v.issearching }"
                                             type="search"
                                             />
                            </div>
                        </p>
                        <div class="c-container">
                            <aura:iteration items="{!v.AttendeesList}" var="item" indexVar="count">
                               
                                <lightning:card title="{!item.RecordName}" iconName="{!item.IconName}">
                                    <aura:set attribute="actions">
                                        <lightning:button title="{!item.IconName}" name="{!item.RecordName}" onclick="{! c.AddRecordItem}" value="{!item.RecordId}" label="Add" iconName="action:new" iconPosition="left"  variant="brand" />
                                    </aura:set>
                                </lightning:card>
                               
                                <!--<lightning:card title="Hello" iconName="standard:avatar">
                            <aura:set attribute="actions">
                                 <lightning:button name="name1" value="value1" title="title1" label="Add" aura:Id="myId" iconName="action:new" iconPosition="left"  variant="brand" />
                            </aura:set>
                         </lightning:card>
                       
                        <lightning:card title="Hello" iconName="standard:groups">
                            <aura:set attribute="actions">
                                 <lightning:button label="Add" iconName="action:new" iconPosition="left"  variant="brand" />
                            </aura:set>
                         </lightning:card>-->
                            </aura:iteration>
                        </div>
                    </div>
                    <!--###### MODAL BOX FOOTER Part Start ######-->
                    <footer class="slds-modal__footer">
                        <lightning:button variant="neutral"
                                          label="Close"
                                          title="Close"
                                          onclick="{! c.closeModel }"/>
                       
                    </footer>
                </div>
            </section>
            <div class="slds-backdrop slds-backdrop_open"></div>
            <!--###### MODAL BOX Part END Here ######-->
           
        </aura:if>
        <div class="row">
            <lightning:textarea aura:id="TextMessage" class="slds-container_center slds-theme_shade slds-border_top slds-border_bottom slds-border_left slds-border_right" label="Message" placeholder="Message" variant="standard"></lightning:textarea>
        </div>
        <br></br>
        <lightning:button class="slds-m-bottom_small slds-theme_brand slds-size_1-of-1" variant="brand" label="Save" onclick="{!c.SaveEvent}"></lightning:button>
    </div>
</aura:component>

=======================================================================


AddAttendees.js



({
    openModel: function(component, event, helper) {
        // for Display Model,set the "isOpen" attribute to "true"
        component.set("v.isOpen", true);
    },
   
    closeModel: function(component, event, helper) {
        // for Hide/Close Model,set the "isOpen" attribute to "Fasle" 
        component.set("v.isOpen", false);
    },
   
    likenClose: function(component, event, helper) {
        // Display alert message on the click on the "Like and Close" button from Model Footer
        // and set set the "isOpen" attribute to "False for close the model Box.
        alert('thanks for like Us :)');
        component.set("v.isOpen", false);
       
       
       
    },
   
    onRemovePill:function(component,event,helper){
        var pillId = event.getParam('item').id;
        var myJSON = JSON.stringify(pillId);
        var pills = component.get('v.items');
        //alert(pillId);
        for (var i = 0; i < pills.length; i++) {
           
            if (pillId === pills[i].id) {
                pills.splice(i, 1);
                break;
           }
        }
       
        component.set('v.items', pills);
    },
    AddRecordItem: function(component,event,helper){
        //items
        //event.
        var btn=event.getSource();
        var recordname=btn.get('v.name');
        var recordId=btn.get('v.value');
        var varIconName=btn.get('v.title');
       
        //alert(recordname);
        var pills = component.get('v.items');
       
        var AlreadyAdded='';
        for (var i = 0; i < pills.length; i++) {
            if (recordId === pills[i].id) {
                AlreadyAdded='true';
                break;
            }
        }
       
        if(AlreadyAdded==''){
            pills.push({
                type: 'icon',
                id: recordId,
                label: recordname,
                iconName: varIconName
            });
           
            component.set('v.items', pills);
           
            var toastEvent = $A.get("e.force:showToast");
            toastEvent.setParams({
                title : 'Success Message',
                message:'Item added successfully.',
                messageTemplate: 'Item added successfully.',
                duration:' 5000',
                key: 'info_alt',
                type: 'success',
                mode: 'pester'
            });
            toastEvent.fire();
        }else if(AlreadyAdded=='true'){
            var toastEvent = $A.get("e.force:showToast");
            toastEvent.setParams({
                title : 'Error Message',
                message:'Item already added.',
                messageTemplate: 'Item already added.',
                duration:' 1000',
                key: 'info_alt',
                type: 'error',
                mode: 'pester'
            });
            toastEvent.fire();
        }       
       
       
    },
    SaveEvent: function(component,event,helper){
       
        var varMessage=component.find('TextMessage').get('v.value');
        var action= component.get("c.SaveRecord");
        var pills = component.get('v.items');
       
        action.setParams({
            'strMessage':varMessage
        });
       
        action.setCallback(this,function(response){
            var state = response.getState();
                if (state === "SUCCESS") {
                    var storeResponse = response.getReturnValue();
                        var varIsSuccess=storeResponse.bIsSuccess;
                        var varMessage=storeResponse.Message;
                        var varRecordId=storeResponse.RecordId;
                        if(varIsSuccess==true){
                            helper.helperToastMessage(varMessage,'success');
                        }else{
                            helper.helperToastMessage(varMessage,'error');
                        }
                 }else if (state === "INCOMPLETE") {
                    alert('Response is Incompleted');
                }else if (state === "ERROR") {
                    var errors = response.getError();
                    if (errors) {
                        if (errors[0] && errors[0].message) {
                            alert("Error message: " +
                                  errors[0].message);
                        }
                    } else {
                        alert("Unknown error");
                    }
                }
        });
        $A.enqueueAction(action);
    },
    handleKeyUp: function (component, event) {
        var isEnterKey = event.keyCode === 13;
        var queryTerm = component.find('enter-search').get('v.value');
        if (isEnterKey) {
           
            component.set('v.issearching', true);
            var action = component.get("c.fetchData");
            action.setParams({
                'searchKeyWord':queryTerm
            });
            action.setCallback(this, function(response) {
               
                var state = response.getState();
               
                if (state === "SUCCESS") {
                    var storeResponse = response.getReturnValue();
                   
                    // if storeResponse size is 0 ,display no record found message on screen.
                    if (storeResponse.length == 0) {
                        component.set("v.Message", true);
                    } else {
                        component.set("v.Message", false);
                    }
                   
                   
                   
                    // set searchResult list with return value from server.
                    component.set("v.AttendeesList", storeResponse);
                   
                   
                }else if (state === "INCOMPLETE") {
                    alert('Response is Incompleted');
                }else if (state === "ERROR") {
                    var errors = response.getError();
                    if (errors) {
                        if (errors[0] && errors[0].message) {
                            alert("Error message: " +
                                  errors[0].message);
                        }
                    } else {
                        alert("Unknown error");
                    }
                }
            });
            $A.enqueueAction(action);
            setTimeout(function() {
                //alert('Searched for "' + queryTerm + '"!');
                component.set('v.issearching', false);
            }, 1000);
           
        }
    }
})


========================================================================

AddAttendeesHelper.js



({
helperToastMessage : function(strmessage,strtype) {
var toastEvent = $A.get("e.force:showToast");
            toastEvent.setParams({
                title : 'Error Message',
                message:strmessage,
                messageTemplate: 'Item already added.',
                duration:' 1000',
                key: 'info_alt',
                type: strtype,
                mode: 'pester'
            });
            toastEvent.fire();
}
})



========================================================================
Apex class: AddAttendeesController 

public class AddAttendeesController {
   
    @AuraEnabled
    public static List <WrapperResult> fetchData(String searchKeyWord) {
       
        List <WrapperResult> LstWrapperResult=new List <WrapperResult>();
        string groupType='Regular';
        String newSearchText = '%'+searchKeyWord+'%';
       
       
        string SOQLUser='Select id, Name from User';
        SOQLUser=SOQLUser +' WHERE NAME LIKE:newSearchText';
        SOQLUser=SOQLUser +' LIMIT 5' ;
       
        string SOQLContact='Select id, Name from Contact';
        SOQLContact=SOQLContact +' WHERE NAME LIKE:newSearchText';
        SOQLContact=SOQLContact +' LIMIT 5' ;
       
        string SOQLPublicGroup='SELECT Id, Name FROM Group where Type=:groupType';
        SOQLPublicGroup=SOQLPublicGroup +' AND  NAME LIKE:newSearchText';
        SOQLPublicGroup=SOQLPublicGroup +' LIMIT 5' ;
       
       
       
        List<sObject> sobjListUser = Database.query(SOQLUser);
        List<sObject> sobjListContact = Database.query(SOQLContact);
        List<sObject> sobjListGroup = Database.query(SOQLPublicGroup);
       
        for(Object objUser:sobjListUser){
            WrapperResult WrpObj=new WrapperResult();
            User usr=(User)objUser;
           
            WrpObj.RecordId=usr.id;
            WrpObj.RecordName=usr.Name;
            WrpObj.IconName='standard:avatar';
           
            LstWrapperResult.add(WrpObj);
        }
        for(Object objContact:sobjListContact){
            WrapperResult WrpObj=new WrapperResult();
           
            Contact cont=(Contact)objContact;
           
            WrpObj.RecordId=cont.id;
            WrpObj.RecordName=cont.Name;
            WrpObj.IconName='standard:contact';
            LstWrapperResult.add(WrpObj);
        }
        for(Object ObjGroup:sobjListGroup){
            WrapperResult WrpObj=new WrapperResult();
           
            Group grp=(Group)ObjGroup;
           
            WrpObj.RecordId=grp.id;
            WrpObj.RecordName=grp.Name;
            WrpObj.IconName='standard:groups';
            LstWrapperResult.add(WrpObj);
        }
        return LstWrapperResult;
       
    }
   
    @AuraEnabled
    public static WrapperDataSaveResult SaveRecord(string strMessage){
        WrapperDataSaveResult SaveResult=new WrapperDataSaveResult();
        try{
           
            Event eve=new Event();
            eve.StartDateTime=system.now();
            eve.EndDateTime=system.now();
            eve.Subject='TEST 1223';
            eve.Description=strMessage;
            eve.WhatId='0010o00002MsOOSAA3';
           
            insert eve;
            SaveResult.RecordId=eve.Id;
               
            SaveResult.bIsSuccess=true;
            SaveResult.Message='Record created successfully.';
           
        }catch(exception ex){
            SaveResult.bIsSuccess=false;
            SaveResult.Message=ex.getMessage();
        }
       
        return SaveResult;
       
       
    }
   
   
    public class WrapperDataSaveResult{
        @AuraEnabled
        public string RecordId{get;set;}
        @AuraEnabled
        public string Message{get;set;}
        @AuraEnabled
        public boolean bIsSuccess{get;set;}
    }
   
    Public Class WrapperResult{
       
        @AuraEnabled
        public string RecordId{get;set;}
        @AuraEnabled
        public string RecordName{get;set;}
        @AuraEnabled
        public string IconName{get;set;}
       
       
    }
}


Reactions

Post a Comment

9 Comments

  1. Useful information and nice blog posts
    Sanjary Academy is the best Piping Design institute in Hyderabad, Telangana. It is the best Piping design Course in India and we have offer professional Engineering Courses like Piping design Course, QA/QC Course, document controller course, Pressure Vessel Design Course, Welding Inspector Course, Quality Management Course and Safety Officer Course.
    Piping Design Course in India­

    ReplyDelete
  2. Thanks for posting the information it will useful and helpful

    Pressure Vessel Design Course is one of the courses offered by Sanjary Academy in Hyderabad. We have offer professional Engineering Course like Piping Design Course,QA / QC Course,document Controller course,pressure Vessel Design Course,Welding Inspector Course, Quality Management Course, #Safety officer course.
    Welding Inspector Course
    Safety officer course
    Quality Management Course
    Quality Management Course in India

    ReplyDelete
  3. Nice article, great information - Lexicon Infotech a Salesforce registered consulting and Implementaion partner

    ReplyDelete
  4. Intelepos takes pride in offering simple yet powerful EPOS for takeaways. Our designed EPOS helps you to reduce staff’s workload, improve client’s experience, and plan more strategically.
    EPOS for Takeaways UK
    EPOS System and Software UK
    Best EPOS for Restaurants

    ReplyDelete
  5. I want to use REST APi to insert order. I followed the steps mentioned. But got stuck with AccountId.
    How can I get the AccountId and map with Order.
    Read more information here:
    Salesforce health check services
    Salesforce marketing cloud implementation
    Salesforce communities
    Salesforce integration partners

    ReplyDelete
  6. I’ve beeen exploring for a little for any high quakity articles or weblog posts on this kind of space.

    Barkatullah University BA part third result

    ReplyDelete
  7. Your b a 3 exam date website offered us with useful information to work on.

    ReplyDelete
  8. We liked your content, I would like to contribute and share a few details about salesforce training in hyderabad which is highly updated and offers online salesforce training which helps you to get highly trained in salesforce just by sitting at home and helps you to boost your salesforce skills with updated techniques

    ReplyDelete