Wednesday, July 8, 2026

LWC - Dependent Picklist Pair

🔗 Reusable Dependent Picklist Pair for Salesforce LWC

A reusable Lightning Web Component that automatically handles Salesforce dependent picklists with dynamic metadata, validation, accessibility, configurable labels, and zero Apex.

📖 Project Overview

Dependent Picklist Pair is a reusable Lightning Web Component designed to simplify one of the most common Salesforce UI requirements—displaying dependent picklists.

Instead of manually querying metadata, decoding validFor values, or maintaining custom mappings, this component leverages Salesforce Lightning UI APIs to automatically retrieve controlling and dependent picklist values while keeping both dropdowns synchronized.

The component is completely reusable and works with any standard or custom object supporting dependent picklists, making it an excellent building block for enterprise Lightning applications.

✨ Key Features

Feature Description
Native Salesforce MetadataUses Lightning UI API to retrieve picklist values without Apex.
Automatic Dependency HandlingDisplays only valid dependent values based on the selected controlling value.
Reusable DesignWorks with any standard or custom object that supports dependent picklists.
Configurable LabelsSupports custom labels, placeholders, and required indicators.
Programmatic APIExpose values, reset selections, and trigger validation from parent components.
Built-in ValidationUses native Lightning input validation with reportValidity().
Reactive UpdatesDependent values refresh instantly whenever the controlling value changes.
Zero ApexNo custom Apex controllers or SOQL required.
SLDS ReadyFully aligned with Salesforce Lightning Design System.
AccessibilityKeyboard-friendly and screen-reader compatible.

🏗 Component Architecture

LWC - Dependent Picklist Pair

📁 Project Structure

force-app/
└── main/
    └── default/
        └── lwc/
            ├── dependentPicklistPair/
            │   ├── dependentPicklistPair.html
            │   ├── dependentPicklistPair.js
            │   ├── dependentPicklistPair.css
            │   └── dependentPicklistPair.js-meta.xml
            │
            └── dependentPicklistDemo/

⚙️ Public API

Property Description
objectApiNameSalesforce object API name.
recordTypeIdRecord Type used for metadata retrieval.
controllingFieldApiNameAPI name of the controlling picklist.
dependentFieldApiNameAPI name of the dependent picklist.
requiredMarks both fields as mandatory.
disabledDisables user interaction.

🔄 Component Workflow

Load Component
      │
      ▼
Retrieve Object Metadata
      │
      ▼
Load Picklist Values
      │
      ▼
Render Controlling Picklist
      │
      ▼
User Selects Value
      │
      ▼
Filter Valid Dependent Values
      │
      ▼
Render Updated Dependent Picklist

🛠 Public Methods

  • getValue() — Returns current controlling and dependent selections.
  • setValue() — Programmatically update selected values.
  • reset() — Clears both picklists.
  • reportValidity() — Executes Lightning validation.
  • focus() — Moves focus to the controlling picklist.

🎯 Business Use Cases

  • Account Address Forms
  • Lead Qualification
  • Case Classification
  • Product Configuration
  • Service Request Forms
  • Opportunity Management
  • Experience Cloud Registration
  • Dynamic Record Creation Wizards
  • Reusable Enterprise Form Libraries

♿ Accessibility

  • Keyboard navigation support.
  • Native Lightning validation.
  • Screen-reader compatible.
  • SLDS-compliant styling.
  • Responsive layout.

🚀 Deployment

sf org login web --alias myOrg

sf project deploy start \
--source-dir force-app \
--target-org myOrg

📌 Conclusion

The Dependent Picklist Pair component offers a clean, reusable, and metadata-driven approach to implementing dependent picklists in Salesforce. By leveraging the Lightning UI API, it eliminates the need for Apex, automatically synchronizes controlling and dependent values, and provides a flexible API that can be reused across forms, record pages, Experience Cloud sites, and enterprise Lightning applications.

Tuesday, July 7, 2026

LWC - Multi-Step Wizard

🧭 Multi-Step Wizard – Reusable Salesforce LWC

A reusable, slot-based Lightning Web Component that simplifies building multi-step forms with progress indicators, validation, navigation controls, review pages, and an imperative API—all using native Salesforce Lightning Web Components.

📖 Project Overview

Multi-Step Wizard is a production-ready Lightning Web Component that provides a complete wizard framework for Salesforce applications. Instead of building step navigation and validation logic repeatedly, developers simply define the steps and provide their own form fields while the component manages the workflow.

The wizard is completely domain-agnostic, making it suitable for any business process including record creation, onboarding, registration forms, approval workflows, surveys, checkout experiences, and guided configuration screens.

Built using native Lightning Web Components, the solution includes configurable progress indicators, automatic per-step validation, review pages, reusable step wrappers, and a clean JavaScript API for complete programmatic control.

✨ Key Features

Feature Description
Progress IndicatorSupports both Base (numbered) and Path (chevron) progress styles.
Step ValidationAutomatically validates inputs exposing reportValidity() before advancing.
Back & Next NavigationBuilt-in Previous, Next and Finish buttons.
Review StepCreate a final confirmation page before submission.
Slot-Based DesignEmbed any Lightning components or HTML inside wizard steps.
Imperative APIIncludes next(), previous(), goToStep(), reset() and reportValidity().
Custom EventsDispatches stepchange and complete events.
ReusableWorks with any Salesforce object or business process.

🏗 Component Architecture

Multi-Step Wizard — Reusable Lightning Web Component

📁 Project Structure

force-app/main/default/
│
├── classes
│   ├── WizardController.cls
│   └── WizardControllerTest.cls
│
└── lwc
    ├── multiStepWizard
    ├── wizardStep
    └── wizardDemo

⚙️ Component Attributes

Attribute Purpose
progress-typeChoose base or path progress indicator.
hide-progress-indicatorHide the step indicator.
hide-footerHide built-in navigation buttons.
allow-step-navigationAllow users to revisit completed steps.
previous-labelCustom Previous button text.
next-labelCustom Next button text.
finish-labelCustom Finish button text.

🛠 Imperative API

  • next() — Validate current step and move forward.
  • previous() — Navigate to the previous step.
  • goToStep(name) — Jump directly to a named step.
  • reset() — Reset the wizard to the first step.
  • reportValidity() — Trigger validation for the active step.

📡 Events

Event Description
stepchangeRaised whenever the active wizard step changes.
completeRaised after the user finishes the final step.

🔄 Wizard Flow

Start Wizard
      │
      ▼
Step 1
      │
Validate
      ▼
Step 2
      │
Validate
      ▼
Step 3
      │
      ▼
Review
      │
      ▼
Complete Event
      │
      ▼
Save Business Data

🎯 Business Use Cases

  • Customer Registration
  • Lead Qualification
  • Contact Creation
  • Employee Onboarding
  • Insurance Applications
  • Loan Processing
  • Case Intake Forms
  • Checkout & Payment Flows
  • Approval Processes
  • Survey Applications

🚀 Deployment

sf org login web --alias myOrg

sf project deploy start \
--source-dir force-app \
--target-org myOrg

sf apex run test \
--class-names WizardControllerTest

📌 Conclusion

The Multi-Step Wizard provides a clean, reusable foundation for creating guided user experiences in Salesforce. With configurable progress indicators, automatic validation, slot-based content, review screens, an imperative JavaScript API, and custom events, it enables developers to build scalable wizard-driven applications while keeping business logic separate from navigation and presentation.

Monday, July 6, 2026

LWC - Paginated Data Table

📋 Paginated Data Table – Reusable Salesforce LWC

A reusable Lightning Web Component built on lightning-datatable that adds server-side sorting, pagination controls, row selection, loading states, and complete backend independence.

📖 Project Overview

Paginated Data Table is a fully controlled Salesforce Lightning Web Component that extends the standard lightning-datatable with enterprise-ready pagination and sorting capabilities.

Unlike traditional datatable implementations, this component never performs data retrieval itself. Instead, it simply renders the current page of data and communicates user actions back to the parent component using custom events. This makes it reusable with Apex, REST APIs, GraphQL services, wired adapters, or even static datasets.

The repository also includes a complete demo implementation powered by Apex using secure SOQL queries with WITH SECURITY_ENFORCED.

✨ Features

Feature Description
Server-side SortingFires sort events instead of sorting locally, allowing Apex or external services to perform sorting.
Pagination ControlsFirst, Previous, Next, Last navigation with configurable page size.
Row SelectionSupports standard lightning-datatable row selection events.
Row ActionsFully compatible with Edit, Delete and custom row action menus.
Loading StateBuilt-in spinner overlay while data is loading.
Error HandlingDisplays configurable error banners for backend failures.
Empty StateShows custom messages when no records are available.
Imperative APIProvides getSelectedRows() for parent components.
Backend AgnosticWorks with Apex, REST APIs, GraphQL or static arrays.

🏗 Component Architecture

Salesforce-Paginated-Data-Table-Reusable

📁 Project Structure

force-app
│
├── classes
│   ├── PaginatedTableController.cls
│   └── PaginatedTableControllerTest.cls
│
├── lwc
│   ├── paginatedDataTable
│   └── paginatedDataTableDemo
│
└── README.md

⚙️ Public API

Property Purpose
columnsColumn configuration for the datatable.
dataCurrent page records.
totalRecordsTotal number of available records.
pageSizeRecords displayed per page.
currentPageCurrent active page.
sortedByCurrent sorted field.
sortedDirectionAscending or Descending order.
isLoadingDisplays loading spinner.

🔄 User Workflow

Load Page
    │
    ▼
Parent Fetches Records
    │
    ▼
Render Current Page
    │
    ▼
User Sorts Column
    │
    ▼
Sort Event Fired
    │
    ▼
Parent Retrieves Data
    │
    ▼
Refresh Table

📡 Supported Events

  • sort — User changes column sorting.
  • pagechange — User navigates between pages.
  • rowselection — Selected rows change.
  • rowaction — Standard row actions.

🎯 Business Use Cases

  • Large Contact Lists
  • Opportunity Management
  • Account Dashboards
  • Service Case Management
  • Lead Administration
  • Experience Cloud Data Tables
  • External REST Data
  • Enterprise Reporting Dashboards

🔒 Security

  • Supports Salesforce CRUD/FLS.
  • Uses WITH SECURITY_ENFORCED in Apex demo.
  • Backend-independent architecture.
  • Compatible with enterprise security best practices.

🚀 Deployment

sf org login web --alias my-org

sf project deploy start \
--source-dir force-app \
--target-org my-org

sf apex run test \
--class-names PaginatedTableControllerTest

📌 Conclusion

Paginated Data Table is a lightweight, reusable, and enterprise-ready Lightning Web Component that extends the standard Salesforce datatable with server-side pagination, sorting, row selection, and configurable states. By separating presentation from data retrieval, it can be seamlessly integrated with Apex controllers, REST services, GraphQL APIs, or any custom backend while remaining highly reusable across Salesforce applications.