

Get in touch

Download Plugin Now
  • Follow
  • Follow
WP Data Access
  • Download
  • Support
  • Features
  • Pricing
  • Documentation
    • Tool Guide
    • App Builder
    • Data Explorer
    • SQL Query Builder
    • Plugin Settings
    • Legacy Tools
    • Remote Connections
a
M
M
  • Download
  • Support
  • Features
  • Pricing
  • Documentation
    • Tool Guide
    • App Builder
    • Data Explorer
    • SQL Query Builder
    • Plugin Settings
    • Legacy Tools
    • Remote Connections
Download Plugin Now

App Builder

  • Getting Started
  • App Builder Dashboard
  • Creating your first App
  • Running Apps
  • Export/Import Apps
  • Road Map
  • App Shortcodes
    • Shortcode Usage
    • Shortcode Parameters
    • URL Parameters

App Manager

  • Getting started
  • Supported App Types
  • Supported Languages
  • App Authorization and Access
  • Full-Screen Mode

Table Builder

  • Getting started
  • Relationships
  • Lookups
  • Computed Fields
  • Table
    • Global filter
    • Column filters
    • Bulk Actions
    • Row Actions
    • Column Actions
    • Default where
    • Default Order By
    • Pagination
    • Inline Editing Settings
    • Layout & Responsiveness
      • Responsiveness
      • Density
      • Table Header
      • Table Footer
  • Columns
    • Introduction
    • Column Settings
    • Column Actions
    • Lookup
    • Aggregations
    • Column Metadata
  • Performance
    • Large Table Support
    • Server/Client-Side Processing
  • Filters
    • Global filter
    • Column filters
    • Default where
    • URL parameters
    • Shortcode parameters

Form Builder

  • Getting started
  • Relationships
  • Lookups
  • Computed Fields
  • Form
    • Understanding the Grid
    • Field Layout
    • Column Behaviour
    • Null Value Handling
  • Columns
    • Column Settings
    • Validation
    • Lookup
    • Column Metadata
  • Layout & Behaviour
    • Grid Positioning

Map Builder

  • Getting started
  • Creating a map
  • Using maps

Chart Builder

  • Getting started
  • Creating a chart
  • Using charts

Hooks

  • Getting started with hooks
  • App Hooks
    • global
    • onAppOpen
    • onAppClose
  • Table Hooks
    • customActionsTop
    • customActionsBottom
    • postQuery
    • renderDetailPanel
    • Table Column Hooks
      • render
  • Form Hooks
    • customActionsBottom
    • onRowInit
    • preFormSubmit
    • postFormSubmit
    • Form Column Hooks
      • onBlur
      • onChange
      • onClick
      • onDoubleClick
      • onFocus
      • onKeyDown
      • onKeyUp
  • Built-Ins
    • Overview
    • wpda.log
    • wpda.alert
    • wpda.confirm
    • wpda.snackbar
  • Examples
    • Display specific columns in detail panel
    • Auto-reload table at specific intervals
    • Adding SEO links to table
    • Styling fields with setColumnStyle
    • Hide empty table column
    • Replicate data entered on field into another field

Layout & Styling

  • Fonts
  • Palette
  • Layout
  • Manual Styling (CSS)

Demos

  • Classic Models
  • Student Administration System
  • Data Table

Tutorials

  • Creating a Data Table App
  • Creating a Data Management App
View Categories

renderDetailPanel

The renderDetailPanel hook allows developers to implement custom detail panels. This hook is highly versatile, enabling the creation of banners, data entry forms, or any HTML content containing your desired elements. As a JavaScript hook, it also supports adding external resources via AJAX calls.

Parameters #

  • columnValues: column labels, original values and rendered values
  • table: reference to the table instance and state
columnValues: {
	columnName: {
		label: " - column label - ",
		originalValue: " - original column value - ",
		renderedValue: " - rendered column value - ",
	}
}
table: {
	instance: " - reference to table api - ",
	state: " - reference to table store - ",
	requery: " - function to perform requery - ",
}

Return value #

Template literal, DOM element or jQuery object

Example of a renderDetailPanel hook that returns the default detail panel #

((columnValues, table) => {
  // Variable log contains a reference to the built-in logger.
  // Variable columnValues contains all column labels, original values and rendered values.

  // Use logger to view columns on console.
  // log.info(columnValues)

  // Create an HTML element for each column. Elements are added to the template below.
  const columnElements = Object.keys(columnValues).map(columnName => 
    `<div class="panel-column">
      <div class="label">${columnValues[columnName].label}</div>
      <div class="content">${columnValues[columnName].renderedValue}</div>
    </div>`
  )

  // Return template
  // This example template contains all detail panel CSS. CSS can also be defined outside the template.
  return `
    <div class="my-custom-detail-panel">
      ${columnElements.join("")}
    </div>
    
    <style>
      .my-custom-detail-panel {
        margin: 0;
        padding: 2rem;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
        gap: 0.25rem;
      }

      .my-custom-detail-panel .panel-column {
        display: grid;
        grid-template-columns: 2fr 4fr;
        align-items: start;
        gap: 0.5rem;
      }
      
      .my-custom-detail-panel .panel-column .label {
        text-align: right;
        white-space: no-wrap;
        overflow: visible;
        direction: rtl;
      }

      .my-custom-detail-panel .panel-column .content {
        font-weight: bold;
      }
    </style>
  `
})

Example of a renderDetailPanel hook that returns all columns except the 8th column #

((columnValues, table) => {
  // Variable log contains a reference to the built-in logger.
  // Variable columnValues contains all column labels, original values and rendered values.

  // Use built-in logger to view columns on console.
  // wpda.log.info(columnValues)
  
  // Define a final list of columns to display
  const MyColumns = Object.keys(columnValues).slice(0,7);

  // Create an HTML element for each column. Elements are added to the template below.
  const columnElements = MyColumns.map(columnName => 
    `<div class="panel-column">
      <div class="label">${columnValues[columnName].label}</div>
      <div class="content">${columnValues[columnName].renderedValue}</div>
    </div>`
  )

  // Return template
  // This example template contains all detail panel CSS. CSS can also be defined outside the template.
  return `
    <div class="my-custom-detail-panel">
      ${columnElements.join("")}
    </div>
    
    <style>
      .my-custom-detail-panel {
        margin: 0;
        padding: 2rem;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(500px, 1fr));
        gap: 0.25rem;
      }

      .my-custom-detail-panel .panel-column {
        display: grid;
        grid-template-columns: 2fr 4fr;
        align-items: start;
        gap: 0.5rem;
      }
      
      .my-custom-detail-panel .panel-column .label {
        text-align: right;
        white-space: no-wrap;
        overflow: visible;
        direction: rtl;
      }

      .my-custom-detail-panel .panel-column .content {
        font-weight: bold;
      }
    </style>
  `
})
Defining the final list of columns to display uses the slice() array method. To learn more, please visit: Array.prototype.slice() – JavaScript
Share This Article :
  • Facebook
  • X
  • LinkedIn
  • Pinterest
Still stuck? How can we help?

How can we help?

Updated on 2025-03-11
postQuery

Submit a Comment Cancel reply

Your email address will not be published. Required fields are marked *

Table of Contents
  • Parameters
  • Return value
WP Data Access
  • Follow
  • Follow
Quick Links
$

Blogs

$

Tutorials

$

Demos

Get in touch
$

Premium support

$

Free support forum

$

Contact us

Resources


WordPress plugin directory



YouTube tutorials

Copyright © 2025 | All Right Reserves

We use cookies to ensure that we give you the best experience on our website. If you continue to use this site we will assume that you are happy with it.Ok