Title Page Copyright and Credits Learning Salesforce Lightning Application Development PacktPub.com Why subscribe? PacktPub.com Foreword Contributors About the author About the reviewers Packt is searching for authors like you Preface Who this book is for What this book covers To get the most out of this book Download the example code files Download the color images Conventions used Get in touch Reviews Introduction to the Lightning Component Framework Lightning Experience Lightning Application Creating a Lightning Application Creating tabs in Lightning Experience Lightning Component Tabs Lightning Page Tabs Lightning App Builder Lightning Utility Bar List views in the Lightning UI The ability to calendar data in the Date and Datetime fields Global Actions Publisher actions Lightning Component architecture The concept of web components Lightning Component Bundle Lightning Component lifecycle MVC concepts in the Lightning Component framework Setting up a Salesforce developer organization to enable the building of Lightning Components Creating a simple hello world Lightning Component The Lightning Design system Creating a simple card component using SLDS  Summary Exploring Salesforce DX Enabling the developer hub in your Salesforce organization Enabling the developer hub Installing the Salesforce DX CLI Salesforce DX commands auth commands Setting a default Dev Hub for scratch Org creation Creating a new Salesforce DX project Configuring a scratch Org definition JSON Configuring project definition JSON Creating a scratch Org Opening the scratch Org Pulling source from a scratch Org Push source code to a scratch Org Conflict resolution Ignoring files Lightning commands Creating a Lightning app and components Metadata API commands mdapi:convert and mdapi:retrieve Converting existing managed/unmanaged package code to DX Format Deploy command Data import and export commands in Salesforce DX Data export Salesforce DX command Data import Salesforce DX command Bulk data upsert Salesforce DX command Limitations of bulk upsert commands Installing the Visual Studio extension pack for DX Developer workflow for building a Salesforce application  Summary Lightning Component Building Blocks Component markup and using Lightning base components for layouts Component definition aura:component Access modifier Providing a description to component Implementing interfaces in Lightning Components Lightning base components for layout and layout items Lightning card base component Example layouts using the Lightning layout and card components Horizontal alignment using the Lightning layout base component Vertical alignment using the Lightning layout base component  Stretching a LayoutItem using the flexibility attribute Creating multiple rows and controlling the size of the row in Lightning layout Lightning layout to handle multiple devices Nested page layout using Lightning Layouts Understanding attributes Using Expression syntax JavaScript controller and helper Wiring the client-side to the server using Apex controllers Summary The Lightning JavaScript API Technical requirements Using component get and set methods Using the find function to locate the DOM Introducing Locker Service Strict mode enforcement in Locker Service Understanding the DOM access containment hierarchy in Lightning Components  The proxy object in Locker Service APIs available in $A top-level functions Exploring the $A.Util APIs Format date/DateTime using the Aura Localization Service Find your organization's time zone Find your organization's local currency Formatting dates  Dynamically creating components using $A.createComponent() Destroying components using the destory() function Modifying the DOM in the RENDERER JavaScript file of the component bundle Understanding the rendering life cycle of a component Understanding re-rendering the life cycle of a component Using custom labels in Lightning Components Dynamically populating label parameters ES6 support in Lightning Components An introduction to Promises Promise support in Lightning Components Summary Events in the Lightning Component Framework Browser events Capturing browser events Event handling in Lightning base components Application events Creating application events Registering application events Firing an application event Handling application events Getting event attributes from a handled event Handling capturing and bubbling events Component events Creating a component event Registering a component event Firing the component event Handling component events Alternate syntax to handle events raised by child components Getting event attributes from handled events Creating a sales LeaderBoard Lightning Application using events Communicating between components Passing data down the component hierarchy Using aura:method to call child methods from parent methods Using the aura method asynchronously Optimal event architecture design pattern Adding custom events to components dynamically Summary Lightning Data Service and Base Components Lightning Data Service Loading Salesforce record context data using force:recordData  Functions available for CRUD records Saving existing records Creating a new record Deleting records Using SaveRecordResult  Example components using Lightning Data Service Lightning base components An introduction to Lightning input field components Creating an input form using the RecordEdit and Lightning input field components Introducing events and attributes in Lightning record edit form and input field Creating a contact edit form using the Lightning input field and RecordEditForm components Using the Lightning output field component The list view component  Creating a tree view using the tree and tree grid components Formatting output data using Lightning base components Using the datatable component Using Lightning input components Using the carousel component Summary Using External JavaScript Libraries in Lightning Components Third-party JavaScript libraries in Lightning Components Attributes Events Integrating a third-party library into Lightning Components Integrating the Select2 JavaScript library into Lightning Components Integrating the MomentJs library into Lightning Components Creating a Locker Service-compliant JavaScript bundle using webpack Introduction to webpack Entry Output Loaders Plugins Integrating choices.js into Lightning Components Structuring a JS-heavy project in Salesforce DX Creating a Locker Service-compatible bundle with webpack ChartJs in Lightning Components Making client-side calls to external sites using JavaScript Communication between the Lightning main frame and iframe Communication from the Visualforce page to the Lightning Component Communication from the Lightning Component to the Visualforce page Rendering a React application in a Lightning Component using Lightning:container Rendering  reactApp using the LCC npm module in a Lightning Component Limitations of Lightning:container Summary Debugging Lightning Components Enabling Debug Mode Salesforce Lightning Inspector  Lightning Salesforce Inspector tabs Component Tree $auraTemp Transactions tab Performance tab Event Log tab Actions tab Storage tab Salesforce community page optimizer Using the Chrome developer Console Setting breakpoints in the Chrome developer Console Pause on caught exceptions Apex debugging Using the Salesforce CLI to stream logs Advanced debugging with the Replay Debugger Summary Performance Tuning Your Lightning Component Storable actions When to use storable actions? Avoiding nested aura:if in aura:iteration $A.createComponent() for lazy loading Using plain old JavaScript to gain maximum performance Events strategy for performance and ease of code maintenance Event anti-patters that can cause a performance bottleneck <aura:iteration> – multiple items set Optimizing JavaScript in Lightning Components Unbound expression bindings Using the Lightning data service Leveraging Lightning base components Creating a record form, using Lightning:recordForm Optimizing Apex code Limiting data rows for lists Reducing server response time, using the platform cache Avoiding sending responses from Apex as wrapper objects Disabling Debug Mode for production Summary Taking Lightning Components out of Salesforce Using Lightning Out Lightning Out in Visualforce Creating a Lightning dependency application Adding Lightning Components for the Visualforce JavaScript library Adding JavaScript to create a component on a Visualforce page Lightning Out in a Node.js application Creating a connected application  Setting up a Node.js application Creating a Lightning Out application  Deploying Node.js application on Heroku Lightning Out for unauthenticated users Lightning Out limitations and considerations Summary Lightning Flows Introducing Flows Creating the Lead Finder app using the Flow builder Running Flows in Lightning Experience Debugging Flows Adding custom components in Flow builder Using asynchronous XHR calls in customized Lightning Components Using Lightning Components as local Flow actions Embedding Flows into a Lightning Component Summary Making Components Available for Salesforce Mobile and Communities Using Lightning Components in a Salesforce mobile application Setting up the Chrome browser to simulate the Salesforce mobile app experience Adding a Lightning Component to the Salesforce mobile navigation Adding Lightning Components as global and object-specific actions Lightning Components in Community Cloud Creating communities in Salesforce Creating a theme layout Creating custom content layouts Overriding search, profile menu, and navigation in communities using customized Lightning Components Overriding a standard search interface Overriding a profile menu Adding custom navigation Summary Lightning Navigation and Lightning Console APIs Adding navigation support using Lightning :navigation Introducing the Lightning Console Utility Bar component Page context in the Utility Bar API Workspace API Standard Lightning tab events in the console Summary Unit Testing Lightning Components Introduction to Jasmine Jasmine syntax and terminology Suite Spec Setup and teardown Spies Quickstart example LTS Writing tests for a YouTubeSearchApp Installing LTS Creating a Lightning Component test via CLI Testing for search terms rendered via two-way binding Verifying the response by mocking the server response using Jasmine spy Testing application events Summary Publishing Lightning Components on AppExchange Namespacing Salesforce developer instances for managed package generation The impact of namespacing Salesforce instances on the component bundle Creating scratch Orgs with namespaces Creating a managed package Documenting your components using the auradoc file Using the design file to allow admins to configure attributes Publishing components on AppExchange Summary Other Books You May Enjoy Leave a review - let other readers know what you think