Skip to content

TInPlaceDropDownList, TInPlaceControlTrait; updates TInPlaceTextBox - #1248

Merged
ctrlaltca merged 3 commits into
pradosoft:masterfrom
belisoful:702-inplace
Aug 28, 2026
Merged

TInPlaceDropDownList, TInPlaceControlTrait; updates TInPlaceTextBox#1248
ctrlaltca merged 3 commits into
pradosoft:masterfrom
belisoful:702-inplace

Conversation

@belisoful

@belisoful belisoful commented Aug 28, 2026

Copy link
Copy Markdown
Member

In-place list controls: TInPlaceDropDownList & TInPlaceListBox

Closes #702. Adds the in-place drop down list requested in the issue, plus a
multi-select list box, refactors the in-place family onto shared traits, and
makes the whole family keyboard- and screen-reader-accessible.

New controls (@since 4.4.0)

  • TInPlaceDropDownList (TActiveDropDownList) — click/keyboard-to-edit
    label over a hidden <select>; commits on change; OnLoadingItems event.
  • TInPlaceListBox (TActiveListBox) — multi-select; selection accumulates
    and commits on blur; label joins selected texts with SelectionSeparator.

Refactor

  • Extracted TInPlaceControlTrait (label/edit-trigger/EmptyDisplayText/
    AutoHideEditor/DisplayEditor) and TInPlaceListControlTrait (select-based
    surface). TInPlaceTextBox and both new controls compose them; the drop down
    dropped 265→66 lines.
  • JS inlineeditor.js rewritten around Prado.WebUI.TInPlaceControlBase with
    TInPlaceTextBox / TInPlaceDropDownList / TInPlaceListBox subclasses.

TInPlaceTextBox additions

  • EmptyDisplayText (family-wide; keeps an empty label clickable, data-prado-empty
    marker so the placeholder is never read back as a value).
  • Client editor honors the full TTextBoxMode set (Date/Number/Email/Color/…).
  • AutoHideTextBox/DisplayTextBox kept as deprecated aliases of the family names.
  • Added Prado.htmlEncode() to prado.js.

Accessibility

  • Label is an operable role="button" tabindex="0" with aria-live="polite";
    Enter/Space edit; focus returns to the label after Enter/Esc/commit (not on
    tab-away). Read-only ⇒ plain text. Editor aria-label from ToolTip.

Tests

  • PHP unit, vitest (JS), and Playwright functional specs for all three controls,
    including a keyboard-accessibility end-to-end test. Full suite green (only the
    pre-existing MySQL/PostgreSQL env failures remain).

Backward compatibility

Additive and BC. No visual change unless the app opts into focus styling.

…erties.

TInPlaceTextBox - deprecates AutoHideTextBox for AutoHideEditor; deprecates DisplayTextBox for DisplayEditor
…t for select based InPlace controls.

TInPlaceDropDownList - changed to use TInPlaceListControlTrait
@belisoful
belisoful marked this pull request as ready for review August 28, 2026 06:43
@ctrlaltca
ctrlaltca merged commit eb9526f into pradosoft:master Aug 28, 2026
17 checks passed
@belisoful
belisoful deleted the 702-inplace branch August 28, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature request: TInPlaceDropDownList

2 participants