Collection: Add table kind collection view#22163
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Adds a reusable collectionView kind (table) that renders collections using the shared <umb-table> component and enables per-row entity context provisioning (to support entity actions, selection, etc.) without requiring bespoke collection view elements.
Changes:
- Introduces the
tablekind forcollectionViewmanifests, including manifest typing and a newumb-table-collection-viewimplementation with manifest-driven columns. - Extends
<umb-table>with anonRowRenderedcallback to allow consumers to attach per-row concerns (e.g., context provisioning). - Adds
UmbElementControllerHostto host controllers/contexts on arbitrary DOM elements, and updates entity-actions column value handling with a deprecation path.
Reviewed changes
Copilot reviewed 24 out of 24 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/user/collection/views/manifests.ts | Uses the shared UMB_USER_COLLECTION_ALIAS constant in conditions. |
| src/Umbraco.Web.UI.Client/src/packages/core/entity-action/global-components/entity-actions-table-column-view/entity-actions-table-column-view.element.ts | Deprecates passing entityType/unique via value and adapts to table column layout API. |
| src/Umbraco.Web.UI.Client/src/packages/core/components/table/table.element.ts | Adds onRowRendered callback hook and wires it via ref on each row. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/umb-collection-view-element-base.ts | Adds a manifest property to collection view base elements for kind/meta access. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/types.ts | Re-exports table-kind collection view types. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/table/types.ts | Defines ManifestCollectionViewTableKind and its meta.columns contract. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/table/table-collection-view.element.ts | Implements the reusable table-based collection view + per-row entity context provisioning/cleanup. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/table/table-collection-view.element.test.ts | Adds tests for columns, description column behavior, per-row entity context, and selection delegation. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/table/manifests.ts | Registers the collectionView kind manifest for table. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/table/entity-name-table-column-layout.element.ts | Adds a table column layout for rendering entity names (optionally linked). |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/manifests.ts | Includes the new table kind manifests in the collection view manifests bundle. |
| src/Umbraco.Web.UI.Client/src/packages/core/collection/view/collection-view.manager.ts | Passes the resolved manifest into the created view element via component.manifest. |
| src/Umbraco.Web.UI.Client/src/libs/controller-api/index.ts | Exports UmbElementControllerHost from the controller-api barrel. |
| src/Umbraco.Web.UI.Client/src/libs/controller-api/element-controller-host.ts | Introduces UmbElementControllerHost for hosting controllers/contexts on plain DOM elements. |
| src/Umbraco.Web.UI.Client/src/libs/controller-api/element-controller-host.test.ts | Adds tests covering lifecycle and context provision behavior for UmbElementControllerHost. |
| src/Umbraco.Web.UI.Client/src/assets/lang/da.ts | Adds Danish translation for general_description. |
| src/Umbraco.Web.UI.Client/examples/collection/index.ts | Includes example entity actions manifests in the collection example bundle. |
| src/Umbraco.Web.UI.Client/examples/collection/entity-actions/manifests.ts | Adds example entity action manifests used to validate per-row entity actions. |
| src/Umbraco.Web.UI.Client/examples/collection/entity-actions/hello.action.ts | Example entity action implementation. |
| src/Umbraco.Web.UI.Client/examples/collection/entity-actions/goodbye.action.ts | Example entity action implementation. |
| src/Umbraco.Web.UI.Client/examples/collection/collection/table-view/manifests.ts | Switches the example table view to the new kind: 'table' manifest approach with columns meta. |
| src/Umbraco.Web.UI.Client/examples/collection/collection/table-view/collection-view.element.ts | Removes the bespoke example table collection view element (superseded by the kind). |
| src/Umbraco.Web.UI.Client/examples/collection/collection/repository/types.ts | Updates example collection item model to include description + status and align with shared model interfaces. |
| src/Umbraco.Web.UI.Client/examples/collection/collection/repository/collection.repository.ts | Adds description/status sample data to demonstrate the new table view capabilities. |
…ub.com/umbraco/Umbraco-CMS into v17/feature/table-kind-collection-view
…al-components/entity-actions-table-column-view/entity-actions-table-column-view.element.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
nielslyngsoe
requested changes
Apr 15, 2026
nielslyngsoe
left a comment
Member
There was a problem hiding this comment.
A few smaller comments, generally looking good. I have not tested this, Just looked at code.
Allow onRowRendered to accept an undefined element and clean up row contexts when a row is unmounted. Update the callback signature in table.element.ts and handle the undefined case in table-collection-view.element.ts by destroying the host and removing the stored context for the item to avoid memory leaks when rows are removed.
engijlr
approved these changes
Apr 20, 2026
Member
|
We will await 17.5 for this one! so skipping 17.4 |
nielslyngsoe
approved these changes
Apr 24, 2026
This was referenced Jun 26, 2026
Merged
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.

Description
Introduces a new table kind for
collectionViewmanifests. This provides a reusable, declarative table-based collection view that can be used by any collection without requiring a custom element implementation for each one.Please pay extra attention to:
The
onRowRenderedcallback onumb-table— This is the mechanism that lets the table collection view provide a per-row context withoutumb-tableknowing about entity contexts, entity actions, or any CMS concepts. The goal is to keepumb-tablegeneric enough to move to the UUI Library as an "advanced table" component in the future.How the table collection view provides context — It creates an
UmbElementControllerHost+UmbEntityContextper row via theonRowRenderedcallback, and cleans them up when rows are removed, or the component disconnects.The column solution in the kind manifest — The
meta.columnsarray is a fast, declarative way to set up columns for known system data fields on a model. Columns reference properties by field name and display their values directly.Known limitations
Table columns can currently only display "simple" values (strings, numbers). This is a known limitation. Similar to other generic table implementations (e.g., the Document/Media collection views) when it comes to complex/composite values. This will be addressed in a separate feature.
Deprecation: umb-entity-actions-table-column-view value property
The value property on
<umb-entity-actions-table-column-view>previously acceptedUmbEntityModel | UmbNamedEntityModelwithentityType,unique, andname. PassingentityTypeanduniquevia value is now deprecated and will be removed in Umbraco 19. These should instead be provided via theUMB_ENTITY_CONTEXTcontext. The element now implementsUmbTableColumnLayoutElementand only requires{ name?: string }as its value. Existing consumers passingentityTypeanduniquewill continue to work but will see a runtime deprecation warning.How to test
any declared manifest columns