APEX 26.1: Inline Dialog Footers, Button Count Badges, and Message Dynamic Actions

Three Small APEX 26.1 Features That Made My Day Easier

Footer for inline dialogs, count badges on buttons, and message Dynamic Actions

FR-3447 FR-2287 FR-2573

When the APEX 26.1 release notes came out, I was mostly looking at the big AI stuff. But then I noticed three little feature requests that got delivered, and these are the exact things I have been fighting with for years. So I sat down, tried all of them on a test page, and I want to share what worked and what tripped me up. Nothing fancy here, just real day to day developer pain that finally got fixed.

FR-3447 Footer for inline dialog and inline drawer

This one is my favorite because it is so simple but it bugged me for a long time. When you build a normal modal page dialog or a page drawer, you can drop a Button Container region into the footer and your Save and Cancel buttons sit nicely at the bottom. But the inline dialog and inline drawer never had this. So my buttons always floated somewhere in the middle of the body content.

What I tried first

I tried to fake it with custom CSS. I set the button region to position sticky and pushed it to the bottom with some margin tricks. It looked okay on my laptop but the moment the dialog had scrolling content, the buttons jumped around and overlapped the body. One issue I faced was on mobile, where the footer just sat in the middle of the screen. It was not a good experience.

Finally this approach worked

In APEX 26.1 the inline dialog and inline drawer now support a real Footer slot, just like the page versions. No CSS needed at all. Here is exactly what I did.

  1. Created my Static Content region and set Position to Inline Dialogs, with the Region template set to Inline Dialog.
  2. Created a child Button Container region inside it.
  3. Set the child region Parent Region to my inline dialog, and then picked Footer in the Slot setting.
  4. Dropped my Save and Cancel buttons into that footer region and that was it.
Quick tip from my testing: the Footer slot stays fixed at the bottom while the body scrolls. So if you have a long form inside the dialog, the buttons are always visible. This is the part I could never get right with my own CSS.

One small optional polish

If you still want a thin top border on the footer to separate it from the body, this little CSS does the job. But honestly the default already looks clean.

.t-DialogRegion .t-DialogRegion-footer {
  border-top: 1px solid #e0e3fb;
  padding-top: 12px;
}

FR-2287 Buttons with a number or count badge

You know that little number bubble you see on a cart icon or a notifications bell? I always wanted that on my APEX buttons, like showing how many pending approvals are waiting. Before this, I had to hand build it.

The painful old way

I used to add a span inside the button label with the substitution value and then style it with CSS to make it look like a pill. It worked, but every time the theme updated, my badge alignment broke. One issue I faced was the badge sticking out of the button on smaller font sizes. I was basically maintaining my own little widget.

Finally this approach worked

APEX 26.1 made the badge a built in part of the button. You do not write any markup now. Here is how I set it up.

  1. Opened my button in Page Designer and went to the Appearance section.
  2. Found the new Badge setting and turned it on.
  3. Set the Badge Value to my page item, in my case it was a count like &PENDING_COUNT. for pending records.

The result looks like this, a clean count sitting right on the button.

Pending Approvals 7

What I love is that the badge updates with the item value. So after I refresh the region or set the item through a Dynamic Action, the number changes on its own. No more broken CSS after theme upgrades.

Keeping the count fresh

If your count comes from the database, just set the page item value and refresh. This is a simple example I used to update the item from a Dynamic Action with a SQL query into the item.

SELECT COUNT(*)
FROM   approvals
WHERE  status = 'PENDING'
AND    assigned_to = :APP_USER

FR-2573 New Dynamic Actions for Success and Error messages

This is the one I will use the most. So many times I just want to show a green success message or a red error message without submitting the whole page. Like a quick client side check before saving.

What I always did before

I wrote a little JavaScript in an Execute JavaScript Code action every single time. It was the same three lines over and over.

apex.message.showPageSuccess("Saved successfully");

apex.message.showErrors([{
  type: "error",
  location: "page",
  message: "Please enter a valid quantity"
}]);

apex.message.clearErrors();

It works fine, but I had to remember the exact syntax, and a junior developer on my team always struggled to find where the message was coming from. It was hidden inside JavaScript instead of being visible in the Page Designer.

Finally this approach worked

APEX 26.1 gives three brand new declarative actions, so no JavaScript at all. They are Show Success Message, Show Error Message, and Clear Errors. Here is how I wired them up on a single button click Dynamic Action.

  1. Added a Click Dynamic Action on my button.
  2. First True action was Clear Errors, so the page always starts clean.
  3. Second True action was Show Error Message, I typed my message in the Message setting and added a client side condition, like when the quantity item is less than zero.
  4. Third True action was Show Success Message with its own client side condition for the valid case.
One thing that confused me at first: the Show Error Message action has its own Clear Errors toggle inside it. So I did not even need a separate Clear Errors action. Turning that toggle on wipes the old errors before showing the new one. Once I understood that, my flow got much shorter.

Why this is a big deal for me

Now the whole feedback logic sits in the Page Designer where anyone can read it. No hunting through JavaScript. The old apex.message calls still work if you need them, but for the normal show a message case, the declarative way is just cleaner and easier to hand over to someone else.

My honest takeaway

None of these are flashy AI features, but they remove the exact small frustrations I hit almost every week. Less custom CSS, less repeated JavaScript, and more things I can just configure and move on. If you are on 26.1, give all three a try on a test page. They took me about ten minutes total to set up.

Comments

Post a Comment

Popular posts from this blog

List Link Attributes and Menu Buttons

Dynamic Triggered Action in Cards

Gemini , Mistral free AI Editoral in Apex 26.1