APEX 5.1 introduced a template option that transformed radio groups into pill buttons.
I love this concept, it makes for a pleasant UI - an easier target for mouse clicks and finger taps.
I liked it so much I tried to do this myself prior to 5.1.
In 18.2 (fixed in 19.1), there's an issue with the way the null option presents for these radio groups - it's not in the same row.
Marko mentions a CSS fix for this problem in his post, but I find it has some side effects.
I went to inspect the generated HTML, and compare it to the 19.1 working solution, expecting to find some difference in CSS, but I quickly realised the null options is just generated in the wrong level on the tree.
You can also test this manually by using the in the browser tool to drag/drop that element to its siblings in the grid-row.
This means the problem can be solved with JavaScript when the page loads.
Using appendTo() will push it to the end of the list.
And this solution honours the stretch option.
Is there a better way?
Other than upgrade to 19.x ;p
I love this concept, it makes for a pleasant UI - an easier target for mouse clicks and finger taps.
I liked it so much I tried to do this myself prior to 5.1.
In 18.2 (fixed in 19.1), there's an issue with the way the null option presents for these radio groups - it's not in the same row.
Marko mentions a CSS fix for this problem in his post, but I find it has some side effects.
.apex-item-grid.radio_group{Stretched items are no longer stretched, and it ignores the Number of Columns attribute.
display:flex;
}
I went to inspect the generated HTML, and compare it to the 19.1 working solution, expecting to find some difference in CSS, but I quickly realised the null options is just generated in the wrong level on the tree.
You can also test this manually by using the in the browser tool to drag/drop that element to its siblings in the grid-row.
This means the problem can be solved with JavaScript when the page loads.
$('.apex-item-grid > .apex-item-option').each(function(){This JavaScript identifies any radio options that are immediately below the grid, instead of being within the grid-row. Then for each instance, it moves that element to the next sibling, which is the grid-row.
$(this).prependTo($(this).next('.apex-item-grid-row'));
});
Using appendTo() will push it to the end of the list.
And this solution honours the stretch option.
Is there a better way?
Other than upgrade to 19.x ;p