Hi Ernesto! On Mon, Oct 5, 2026 at 5:08 PM Ernesto Reinaldo Barreiro <[email protected]> wrote:
> Ernesto Reinaldo Barreiro <[email protected]> > 7:35 AM (1 hour ago) > to dev > Hi all, > > I have been working on a set of additions to wicket-extensions, in the > pull request https://github.com/apache/wicket/pull/1637. The pull request > is a work in progress (still a draft), and many more changes will follow. > Still, I would like early feedback on both the components themselves and > whether they belong in wicket-extensions in their current form. > Back in the day there was a (reasonable) resistance to add more components to wicket-extensions because almost every application has different requirements. Even a simple drop-down is not that simple. There are dozens of JS widgets like Select2 out there just because they need something different. I can foresee someone filing an issue to add support for infinite loading to the dynamic table. Or any other more complex functionality. The agreement was to make Wicket easy to integrate with any JavaScript widget. There were integrations with DojoJS, YahooUI, jQueryUI, ... during the years. My 2c. Martin > > Everything is new API for 11.0.0 (@since 11.0.0), works under a strict > Content Security Policy (no inline script or style anywhere), and comes > with WicketTester tests, QUnit tests and examples. mvn clean verify > -Pjs-test is green. The branch has ten commits, each one usable and > reviewable on its own: > > 1. DynamicDataTable, with ProgressBar and ResizableColumnsBehavior ( > https://github.com/apache/wicket/issues/1635) > A table that renders only the <table> and its header on the server. > The rows come as JSON from the table's own endpoint, or are pushed over a > web socket, and every cell is a column template evaluated in the browser (a > small built-in {{path}} engine, or Handlebars). Actions in the cells are > plain markup > dispatched by the table, which looks the row up by its key, so a click > on a row that changed or went away since it was rendered no longer targets > a component that does not exist. Features: > - paging, sorting, typed row keys and a selection kept on the server > (including "select all rows of the provider") > - toolbars like DataTable's, a slot for a filter, CSV export > - an overlay for edit forms and confirmations, and a veil while the > table's requests run > - icon row actions and toolbar actions (any IIcon, see 6.) > - resizable, movable (mouse, pen and touch) and hideable columns. The > layout can be kept through a pluggable IColumnStateStore (session, > database, ...), with columns identified by unique ids. > - pushing single rows, pages or refreshes from background threads > - ProgressBar: a native <progress> with a label, striped, > indeterminate when the value is null; also usable as a column > - ResizableColumnsBehavior also works for a plain DataTable. > > The column templates are trusted markup authored by the developer; the > Javadoc says so where it matters. > 2. Two fixes found on the way > - The veil script could not be compiled by a second build without > clean (https://github.com/apache/wicket/issues/1631). > - The web socket setup script still called jQuery.extend, so a > WebSocketBehavior failed on a page without jQuery ( > https://github.com/apache/wicket/issues/1640). > 3. CollapsiblePanel (https://github.com/apache/wicket/issues/1636) > A title and a body the user can expand and collapse, rendered as > native <details>/<summary>: works without JavaScript and is keyboard > accessible. It can report every toggle via Ajax, so the panel keeps the > user's choice when it is rendered again. > 4. FloatingPanel > A window with a title bar, a close button and any body, for content > shown on top of a page or a component, such as an edit form. > 5. ClipboardCopyBehavior > Copies a text to the clipboard on a click or double click and shows a > check mark. It also works for markup rendered in the browser > (data-wicket-copy attributes). > 6. Icons: IIcon, SvgIcon and FontAwesomeIcon > IIcon is an icon that renders its own markup, so components can take > any icon. FontAwesomeIcon has the 2001 solid icons of Font Awesome Free as > CSS class names, and SvgIcon has the same icons as inline SVG, needing no > font or style sheet. > > Licensing: the icons are CC BY 4.0, which is Category B. Wicket ships > no Font Awesome content: SvgIcon reads the SVGs at runtime from the Font > Awesome web jar the application puts on its class path. Only the examples > bundle the web jar, and they name it in their NOTICE and, through > appended-resources, in > their LICENSE. I would appreciate a second pair of eyes on this part. > 7. Shared color themes (https://github.com/apache/wicket/issues/1638) > The colors are CSS custom properties (--wicket-theme-*), defined once > by a theme class. Eight themes ship (including a dark one), and > ThemeBehavior puts a theme on a page or a single component. An application > defines its own theme as a CSS class setting the same properties. > Components read the properties > only inside a theme, so an application that does not use themes sees > no change. > 8. The themes in more components ( > https://github.com/apache/wicket/issues/1645, part of > https://github.com/apache/wicket/issues/1639) > ModalDialog's DefaultTheme, AutoCompleteTextField, TabbedPanel (with a > new opt-in TabsStyleBehavior: tabs, pills or underline) and > UploadProgressBar follow the themes. The only visible change for existing > applications is that UploadProgressBar now renders the ProgressBar's bar, > so CSS written for its old > .wupb-* elements no longer applies. The commit message describes how > to keep the old look. DataTable, Palette, the trees and a few others remain > open in https://github.com/apache/wicket/issues/1639. > 9. Examples > An "Extensions" index on the home page gathers the examples built on > wicket-extensions. The DynamicDataTable example runs over a thousand > contacts with live progress bars, editing, deleting, a jCard download, > column chooser, movable columns and a persisted layout. There is an Icons > page, and a theme editor > that edits a theme's colors with a live preview and gives the CSS > class to copy. The ajax examples of the themed components have a theme > drop-down. > > Questions for the list: > - Is this the right home for these components, and is one pull request > fine, or would you rather review them as separate pull requests (one per > commit, more or less)? > - Is the Font Awesome / CC BY 4.0 handling acceptable under the ASF > third-party policy, and should the examples' LICENSE list their other > bundled libraries (jQuery, ...) as well? > - Any concerns about the names and packages > (org.apache.wicket.extensions.theme, ...markup.html.icon, > ...repeater.data.table.dynamic, ...), or about defaults such as the table > keeping no column layout unless a store is set? > > Thanks in advance for any feedback. > > -- > Regards - > Ernesto Reinaldo Barreiro > Apache Wicket Committer > Emerging artist > https://www.instagram.com/reinaldo.barreiro.art/ >
