Skip to content

Release v2.3.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 16:24
· 93 commits to main since this release

v2.3.0

Changelog

Filters translate each text once, opt-in strict missing-message contract test, auth scaffold form themes/attributes/root errors/body blocks, form error slots, menu partial, public page-header include, content padding and link/code token fixes. See UPGRADING.

UiKit 2.3: the backlog of the phase-2 migrations (Pwa, ChatKit, SearchKit, AuthKit).
UPGRADING.

Added

  • |nowo_ui_translatable(params = {}) and Twig\TranslatableText: a Label (or literal) handed to a form theme that
    pipes it through |trans (attr.placeholder, choice placeholder) is translated exactly once in its own domain.
  • PageContractTestCase::ignoredMissingTranslations() (accepted missing messages: domain:id, id, /regex/) and
    strictMissingTranslations() (opt-in strict rule: every missing message fails, catching double translations;
    default false = the 2.2 dotted-id rule; strict becomes the default in 3.0).
  • AuthPage::$formThemes, $formAttributes, $documentTitle; FormPage::$formAttributes (extra <form>
    attributes, class appended to the form slot).
  • Auth scaffold: root form errors in the new form_errors slot (skippable: AuthPage::$rootErrors = false or
    nowo_ui_auth_root_errors = false in the extending template); data blocks nowo_ui_auth_body and
    nowo_ui_auth_after_form.
  • Slots form_error, form_errors, input_invalid; the UiKit form theme marks invalid widgets and renders field
    errors in form_error; PasswordToggle bridge (input slot on toggle_password_widget's input).
  • Token --nowo-ui-auth-panel-width.
  • nowo_ui_page_header(header, bundle, extra_actions, header_actions) and the public include
    page/_page_header.html.twig (ThemeExtension::PAGE_HEADER_TEMPLATE): the scaffolds' page header for unique pages.
  • Token --nowo-ui-content-padding-block; --nowo-ui-link declared next to the primary.
  • Floating widgets: menu partial (native <details> disclosure, CSP-safe; items Link / Action / hashes, or
    free content in a popover panel), slots menu, menu_toggle, menu_panel, menu_item, popover, tokens
    --nowo-ui-menu-z-index, --nowo-ui-menu-min-width, --nowo-ui-menu-max-width; light dismiss (outside click,
    Escape) in nowo-ui-dialog.js.
  • nowo_ui_class(slot, bundle, defaults: false) / Theme::classFor(…, defaults: false): host-only mode (semantic +
    host / bundle classes, never the UiKit framework defaults).

Changed

  • Demo (REQ-DEMO-013): export menu on the dashboard (host menu_toggle class), sign-in with root form errors
    (?failed=1), document title and form attributes; e2e for 2.3; screenshots page-contract-menu,
    page-contract-auth-errors, re-captured page-contract-dashboard and page-contract-default-list (no band above
    the navbar).
  • PageContractTestCase collects all missing messages through the DataCollectorTranslator and fails on any.

Fixed

  • 1.x page_header partial: the title uses the full page_title resolution (Bootstrap h3 mb-1), not only the host
    classes, so Bootstrap hosts do not get a full-size <h1>.
  • No padding band above host navbars: the vertical padding moved from <body class="nowo-ui-body"> to the content
    region.
  • Inline code pink under Bootstrap (--bs-code-color follows the code text token; Bootstrap 4 text-body).
  • page/auth called form_start() (symfony/form) even without a form: the form functions moved to
    page/_auth_form.html.twig, included only with page.form.
  • Auth panel: centred min(28rem, 100%) in host guest layouts, full-width fields, footer link list reset hardened
    against an unlayered Bootstrap reboot.
  • List filters: FilterField::$placeholder labels and the "Any" option (filters.any) were translated twice (by
    nowo_ui_trans / |trans, then by the form theme in the field's domain).