Repository navigation
Release v2.6.0
v2.6.0
Changelog
Kit error pages, confirm dialog partial, app shell scaffold and compact pagination (hosts drop their copies); responsive table measures with the detail buttons shown. See UPGRADING.
Kit templates that replace the apps' near-identical copies: branded HTTP error pages, the confirm dialog wrapper, the
signed-in app shell and a compact pagination variant; the responsive table no longer ends one button too wide.
UPGRADING.
Added
- Error pages (
@NowoUiKit/error/layout.html.twig+@NowoUiKit/error/status.html.twig, REQ-ERROR-001 item 10):
one template for every status code — the host keeps a one-linetemplates/bundles/TwigBundle/Exception/error.html.twig
({% extends '@NowoUiKit/error/status.html.twig' %}). Code, title, lead, hint, illustration (<picture>with a
WebP<source>and a PNG fallback, intrinsic width / height), "Back to home", "Try again" on 408 / 5xx GET, "Go back"
for a same-site referer (404), the 429Retry-Afterwait and the 10-minute self-reload of a 5xx on GET (never on
POST; no live region on the ticking counter). Self-sufficient document: skip link to#main-content(REQ-A11Y-002),
pre-paint theme boot and the light / dark toggle, UiKit CSS + tokens, every<script>/<style>with the request
csp_nonce, no inline handlers. Blockstitle,error_illustration,error_title,error_lead,error_hint,
error_actions,error_extra_actions,error_extra; layout blocksnowo_ui_error_head,nowo_ui_error_styles,
nowo_ui_error_skip_link,nowo_ui_error_before,nowo_ui_error_top,nowo_ui_error_content,
nowo_ui_error_body_end,nowo_ui_error_scripts. Twig:nowo_ui_error_page(status_code, exception)
(View\ErrorPage,View\ErrorIllustration),nowo_ui_error_text(field, code, params)(host domain / key prefix,
falling back to UiKit'serror.*texts), globalnowo_ui_error_pages. nowo_ui_kit.error_pagesconfig:layout_template(host chrome: a template extending the kit layout),
translation_domain/translation_prefix(<prefix>.<code>.title|lead|hint|image_alt),illustrations
({404: 'illustrations/error-404'}or{path, width, height, webp, extension}, plusdefault),
illustration_width/illustration_height,webp,home_path,retry_statuses,back_link_statuses,
auto_retry_seconds(600),theme_storage,theme_toggle,html_attributes.- Error texts in
NowoUiKitBundle(en, es, fr, de, it, nl, pt):error.skip_to_content|home|retry|back|retry_after|auto_retry,
error.generic.*and title + lead for 400, 401, 403, 404, 405, 408, 410, 413, 422, 429, 500, 502, 503, 504. nowo-ui-error-retry.jsruntime ([data-nowo-ui-error-retry], loaded by the error layout) and the Stimulus peer
error_retry_countdown(error-retry-countdown, the apps' controller), both onnowo-ui-error-retry-core.ts.confirm_dialogpartial (partials/_confirm_dialog.html.twig): the apps'shared/_confirm_dialog.html.twig
(Stimulusconfirm-dialogwrapper, blockstrigger/form, optionsonly_dialog,wrapper,dialog_modifier,
open_on_connect,expected_value,dialog_id,dialog_testid,aria_labelledby,trigger_*,attr,
dialog_attr). With adialog_idit also opens without Stimulus throughnowo-ui-confirm.js. Slots
confirm_dialog_root,confirm_dialog,confirm_dialog_trigger;.nowo-ui-confirm-dialog(+--sm|--lg|--xl)
paints a native dialog box.- Signed-in app shell (
@NowoUiKit/shell/_open.html.twig,_close.html.twig,_shell.html.twig,
_burger.html.twig; partialsapp_shell_open,app_shell_close,app_shell,app_shell_burger): the apps'
layouts/shell/*— halves that keep the page{% block body %}uncaptured, or one template with the blocks
nowo_ui_shell_brand,nowo_ui_shell_header_actions,nowo_ui_shell_aside,nowo_ui_shell_main,
nowo_ui_shell_footer. Brand, header actions (search, toggles, user menu), aside HTML or items, the aside state
rendered server-side from a cookie (collapsed/rail), two- or three-mode burger with next-action labels
(label_attr_namesfor host scripts),svgormorphglyphs (<morph-icon data-sidebar-morph>+ static menu / X).
Slotsapp_shell,app_header,app_header_start,app_header_end,app_brand,app_burger,app_burger_icon,
app_burger_morph,app_aside,app_aside_inner,app_aside_label,app_aside_nav,app_main,app_backdrop. nowo_ui_kit.shellconfig (Twig globalnowo_ui_kit_shell):kit_styles(true: the kit shell classes and
nowo-ui-shell.jshooks; false: host shell CSS / JS only),sidebar_cookie,sidebar_hidden_value,
sidebar_rail_value,sidebar_storage.- Compact pagination:
View\Pagination::$variant(full|compact;withVariant(),isCompact(),
fromTotal()/fromRequest()/fromArray()take it) and thepagination_compactpartial — previous /
"Page n of m" / next and a per-page<select>in a GET form that keeps the filters and goes back to page 1. The
paginationpartial (and the list scaffold) switch to it for a compact model orvariant: 'compact'. Slots
pagination_compact,pagination_page,pagination_per_page,pagination_select; textspagination.page,
pagination.apply. nowo-ui-autosubmit.jsruntime (in thescriptspartial): a control withdata-nowo-ui-autosubmitsubmits its
form on change (delegated listener, CSP-safe; a<noscript>button without JavaScript).skip_linkslot (nowo-ui-skip-link): off-screen until focused.- Demo:
/kit/shell(app shell, confirm dialog, compact pagination),/kit/errors/{code}previews, the one-line
templates/bundles/TwigBundle/Exception/error.html.twig, WebP screenshotskit-error-404,kit-error-500,
kit-app-shell,kit-confirm-dialog.
Fixed
- Responsive table one button too wide (
responsive_tableStimulus peer): phase 2 offit()measured the row
detail column while its buttons were stillhidden(layereddisplay: none !important), thenmarkRows()showed
them, so the table ended one button wider than its scroller (19px at 390px in WebKit / Firefox). The buttons are now
shown before the phase-2 measurement (their final layout); hosts can drop stand-in CSS such as a 2rem
::beforebox duringdata-rt-measuring.