V18: Beta UI adjustments#22869
Merged
Merged
Conversation
…rkspace context (#22621) * temp mock set * test getPropertyValue * Extend document workspace context tests to cover read/write property values * move context files into context folder * Add document CRUD tests, mock handler & interceptor * temp mock error interceptor * Return 404 when document not found * Use undefined for entity unique state until initialized * Fix import paths for document workspace editor * Add test utils and extend document workspace tests * Update document-workspace-context.test-utils.ts * Match invariant variant when variantId missing * Ensure finishPropertyValueChange runs on exit Wrap setPropertyValue implementation in a try/finally and move finishPropertyValueChange into the finally block so cleanup always runs even if an error is thrown. No other functional changes — code was re-indented and organized but behavior remains the same except for guaranteed cleanup on error. * Require variantId for culture/segment-variant props * fix types * fix mock modal typescript error * Distinguish unloaded vs root entity unique * use the real current user context * hide mock set in UI * rename mock set * Move initiatePropertyValueChange into try * Use 'satisfies' for UmbMockDataSet assertions * Preserve requested unique on failed load * Treat missing variantId as invariant * Reset update lock on destroy * remove unused group + user * Guard _current.unmute and remove destroy override * Add tests for element data manager * Guard subject access and add destroy test * Throw when calling methods after destroy
* extend icons with information from theseaurus * implement new icon search logic * clean-up data * icon manager * sorting with a backup of the name * refactor into a controller * improve multi word group search * embed lucide data * rename tech into technology * remove paper from dollar * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * improve search * related should not show up in search * update threshold * separate name words * also consider full icon name match * better comment * other approach for full name matches * full icon name search if query contains a - * fix test * remove related code * updates to related * make its own package * revert changes * update tsconfig * package-lock --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
* Added tests * Updated * Cleaned up * Fixes based on comments * Apply suggestions from code review Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Added helpers for verifying document * Removed redundant method * Cleaned up * Reverted deletion of constants * Undo revert * Fixes based on comments * updated command * Added removed method * Update smokeTest command in package.json --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
# Conflicts: # tests/Umbraco.Tests.AcceptanceTest/lib/helpers/ContentUiHelper.ts
…istency (#22751) Add .prettierrc.json to acceptance tests for formatting consistency
# Conflicts: # src/Umbraco.Web.UI.Client/package-lock.json # src/Umbraco.Web.UI.Client/package.json # tests/Umbraco.Tests.AcceptanceTest/package-lock.json # tests/Umbraco.Tests.AcceptanceTest/package.json # version.json
…mock set `elementStartNodeIds` and `hasElementRootAccess` were added to `UmbCurrentUserModel` by the Global Elements PR but the documents mock data set was created without them, causing `undefined.map()` errors in the document workspace CRUD tests. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… client (#22716) * Client: Aliased `DocumentVariantStateModel` for documents and document-blueprints packages Hoist `UmbDocumentVariantState` and `UmbDocumentBlueprintVariantState` aliases (re-exporting `DocumentVariantStateModel`) into dedicated `variant-state.ts` leaf files. Internal package modules, mocks and the core split-view selector now consume the alias instead of referencing `DocumentVariantStateModel` directly, mirroring the structure on `v18/dev` to reduce upstream-merge conflicts. * Revert mock data changes to prevent importing the whole "document" module. * Tweaked the `DocumentVariantStateModel` import for mock data Otherwise this is problematic for cherry-picked commits for v18.0. * Missed one!
… client (#22716) * Client: Aliased `DocumentVariantStateModel` for documents and document-blueprints packages Hoist `UmbDocumentVariantState` and `UmbDocumentBlueprintVariantState` aliases (re-exporting `DocumentVariantStateModel`) into dedicated `variant-state.ts` leaf files. Internal package modules, mocks and the core split-view selector now consume the alias instead of referencing `DocumentVariantStateModel` directly, mirroring the structure on `v18/dev` to reduce upstream-merge conflicts. * Revert mock data changes to prevent importing the whole "document" module. * Tweaked the `DocumentVariantStateModel` import for mock data Otherwise this is problematic for cherry-picked commits for v18.0. * Missed one! # Conflicts: # src/Umbraco.Web.UI.Client/mocks/data/sets/default/document-blueprint.data.ts # src/Umbraco.Web.UI.Client/mocks/data/sets/default/document.data.ts # src/Umbraco.Web.UI.Client/mocks/data/sets/kitchen-sink/document.data.ts # src/Umbraco.Web.UI.Client/mocks/data/sets/user-permissions/document.data.ts # src/Umbraco.Web.UI.Client/mocks/db/document-blueprint.db.ts # src/Umbraco.Web.UI.Client/mocks/db/document-publishing.manager.ts # src/Umbraco.Web.UI.Client/mocks/db/document.db.ts # src/Umbraco.Web.UI.Client/mocks/tools/sqlite-to-mock/transform-documents.ts # src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/repository/item/types.ts # src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/types.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/item/document-collection-item-card.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/views/table/column-layouts/document-table-column-property-value.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/modals/shared/document-variant-language-picker.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/search/document-search-result-item.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/url/info-app/document-links-workspace-info-app.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/utils.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/variant-state.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.element.ts
…gh it (#22736) * Auth: un-deprecates getLatestToken and routes per-request fetches through it getLatestToken is the only public API for "wait for any in-flight refresh, trigger one if the access token has expired, then return". External and internal consumers were warned off it without an equivalent replacement: configureClient only helps @hey-api/openapi-ts clients, and consumers using axios/ky/native fetch had no other gate. - Removes the @deprecated JSDoc + UmbDeprecation.warn() call so the public surface no longer prints a console warning per call. - Uses getLatestToken.bind(this) for the auth callback inside configureClient and the token callback inside getOpenApiConfiguration so both paths share the same #ensureTokenReady gate. - Replaces the hard-coded `Authorization: Bearer [redacted]` in unlinkLogin and #makeLinkTokenRequest with `Bearer ${await getLatestToken()}` so those fetches participate in the refresh coordination rather than firing with a potentially-revoked cookie. Also wires the UmbracoExtension template's entrypoint to call authContext.configureClient(client), matching the v18 template change. The framework awaits onInit, so this guarantees the API client is fully configured before any element in the extension can use it. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * Auth: tightens UmbAuthContext correctness and accepts any hey-api client Pulls in a batch of non-breaking improvements to UmbAuthContext that came out of an audit on the back of the un-deprecation work in this PR: Public surface: - configureClient(client) now accepts a new structural UmbApiClient type (exported from @umbraco-cms/backoffice/http-client). Each @hey-api/openapi-ts generation produces a fully-bound Client<…>; the backoffice's umbHttpClient and an extension's regenerated client are structurally identical but TS treats them as distinct generic instantiations. The widened parameter lets extensions wire their own client without `as never` casts at call sites. bindDefaultInterceptors keeps its strict typeof umbHttpClient parameter (preserving autocomplete inside interceptor callbacks); the cast happens once, internally. Correctness: - The auth context now holds a single UmbApiInterceptorController, lazy- initialised on first configureClient() call. Previously each call instantiated a new controller, which re-provided the UmbAuthSignalerContext on the host and stacked listeners — visible the moment an extension also called configureClient. One controller for the lifetime of the host, all configured clients share it. - completeAuthorizationRequest checks sessionStorage before asking window.opener for the PKCE verifier. The previous order hung for the full postMessage timeout whenever oauth_complete loaded with a non-OAuth window.opener (which is set for ANY window.open target). The opener postMessage timeout is also dropped from 5s to 1.5s — a real popup parent responds within milliseconds; longer is just wait time for the unrelated- opener case. - The cross-tab 'authorized' BroadcastChannel handler now routes through #setSessionLocally so the timestamp math stays in one place. The 'sessionUpdate' handler still applies pre-computed timestamps directly (peer broadcast already did the math) but does so inside the #inSessionUpdateCallback guard, so a synchronous session$ observer can no longer trigger a spurious /token refresh on top of a peer's update. - #ensureTokenReady drops its query-then-request pattern. Now always queues behind the umb:token-refresh lock with a no-op callback — if the lock is free it acquires immediately, if held it waits. Eliminates the race window between query() and request(). - destroy() invokes #popupCleanup before tearing down so an in-flight popup flow's window-level message listener and closed-poll interval don't leak past the context's lifetime. The cleanup helper itself now resolves the popup-flow Promise — every termination path (authorized, popup closed, superseded by a new flow, context destroyed) is observable to the awaiter instead of hanging forever. Cleanup: - makeAuthorizationRequest is annotated Promise<void> so the redirect and popup branches share an explicit return type. - unlinkLogin wraps the parsed problem-details payload in a real Error (with the original payload exposed on `.cause`) so callers using `instanceof Error` or expecting a stack trace get sane behaviour. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
# Conflicts: # src/Umbraco.Web.UI.Client/src/packages/core/workspace/components/workspace-split-view/workspace-split-view-variant-selector.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/document-blueprints/variant-state.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/item/document-collection-item-card.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/collection/views/table/column-layouts/document-table-column-property-value.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/publishing/workspace-context/document-publishing.workspace-context.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/search/document-search-result-item.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/url/info-app/document-links-workspace-info-app.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/utils.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/variant-state.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/document-workspace-split-view-variant-selector.element.ts # src/Umbraco.Web.UI.Client/src/packages/documents/documents/workspace/views/info/document-workspace-view-info.element.ts
…oval (#22772) * fix(tests): replace removed ILocalizationService with ILanguageService in PublishedValueFallbackTests Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
rc.1 reverts the popover API switch from UUI PR #1363, restoring the dialog/showModal behavior. Reverts the workarounds in the persistent modal dialog element and adds tests covering the restored behavior.
|
Claude encountered an error after 0s —— View job I'll analyze this and get back to you. |
Contributor
There was a problem hiding this comment.
Pull request overview
UI polish pass for Umbraco Backoffice v18 (UI Library v2 alignment), primarily removing now-unnecessary pagination styling overrides and adjusting spacing/visual affordances in a few components.
Changes:
- Removed several local
uui-paginationdisplay/flex overrides so pagination can follow UI Library v2 defaults. - Tweaked pagination spacing tokens in shared pagination components/results.
- Updated the multiple text string item UI (hover/focus affordances, handle opacity, validation spacing).
Reviewed changes
Copilot reviewed 14 out of 14 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| src/Umbraco.Web.UI.Client/src/packages/user/current-user/history/current-user-history-user-profile-app.element.ts | Removes local flex-centering overrides on pagination. |
| src/Umbraco.Web.UI.Client/src/packages/relations/relations/reference/workspace-info-app/entity-references-workspace-view-info.element.ts | Removes pagination sizing/display overrides; relies on container centering. |
| src/Umbraco.Web.UI.Client/src/packages/relations/relation-types/workspace/relation-type/views/relation-type-detail-workspace-view.element.ts | Drops explicit display: block on pagination. |
| src/Umbraco.Web.UI.Client/src/packages/packages/package-section/views/created/packages-created-overview.element.ts | Removes pagination inline-block override (container already centers). |
| src/Umbraco.Web.UI.Client/src/packages/members/member-group/components/member-group-picker-modal/member-group-picker-modal.element.ts | Drops explicit display: block on pagination. |
| src/Umbraco.Web.UI.Client/src/packages/media/media/modals/media-picker/media-picker-modal.element.ts | Drops explicit display: block on pagination. |
| src/Umbraco.Web.UI.Client/src/packages/media/media/audit-log/info-app/media-history-workspace-info-app.element.ts | Removes pagination flex-centering overrides. |
| src/Umbraco.Web.UI.Client/src/packages/log-viewer/workspace/views/search/components/log-viewer-messages-list.element.ts | Drops explicit display: block on pagination. |
| src/Umbraco.Web.UI.Client/src/packages/documents/documents/audit-log/info-app/document-history-workspace-info-app.element.ts | Removes pagination flex-centering overrides. |
| src/Umbraco.Web.UI.Client/src/packages/documents/document-redirect-management/dashboard-redirect-management.element.ts | Removes pagination inline-block override; wrapper handles layout. |
| src/Umbraco.Web.UI.Client/src/packages/core/picker/search/picker-search-result.element.ts | Adjusts pagination margin token and removes explicit display styling. |
| src/Umbraco.Web.UI.Client/src/packages/core/components/multiple-text-string-input/input-multiple-text-string-item.element.ts | Adjusts delete button styling/visibility behavior, handle opacity, and validation spacing. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/components/pagination/collection-pagination.element.ts | Adjusts pagination margin token and removes explicit display styling. |
| src/Umbraco.Web.UI.Client/src/packages/content/content-type/workspace/views/design/content-type-design-editor-tab.element.ts | Removes padding in “opaque” box state via --uui-box-default-padding. |
…-ui-adjustments # Conflicts: # src/Umbraco.Web.UI.Client/package-lock.json # src/Umbraco.Web.UI.Client/package.json # tests/Umbraco.Tests.AcceptanceTest/package-lock.json # tests/Umbraco.Tests.AcceptanceTest/package.json # version.json
iOvergaard
approved these changes
Jun 5, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Some further UI clean-up and adjustments for v.18.0 — all to make sure the v.2 of UI Library looks alright
Had a bit of git merge forth and back, but since we are squashing this, the history should be no problem.
This item has been added to our backlog AB#68802