Files
alfresco-ng2-components/docs/upgrade-guide/upgrade671-68.md
Michal Kinas 5712f2742c [ACS-12451] Add missing ADF upgrade guides (#12138)
* [ACS-12451] Add missing ADF upgrade guides

* [ACS-12451] CR fix

* [ACS-12451] CR fixes
2026-08-11 11:49:30 +02:00

11 KiB

Title
Title
Upgrading from ADF v6.7.1 to v6.8.0

Upgrading from ADF v6.7.1 to v6.8.0

This guide provides instructions on how to upgrade your v6.7.1 ADF projects to v6.8.0.

Before you begin

Always perform upgrades on a "clean" project state, back up your changes or make a project backup.

Do not skip this task if you want your application to be updated to the most recent version of ADF. Upgrades of multiple versions of ADF cannot be done in one step only, but should follow the chain of sequential updates.

After the upgrade, check the other sections below to see if there are any changes affecting your project.

Contents

Library updates

Update the package.json file with the latest library versions:

{
    "dependencies": {
        "@alfresco/adf-core": "6.8.0",
        "@alfresco/adf-content-services": "6.8.0",
        "@alfresco/adf-process-services": "6.8.0",
        "@alfresco/adf-process-services-cloud": "6.8.0",
        "@alfresco/adf-insights": "6.8.0",
        "@alfresco/adf-extensions": "6.8.0",
        "@alfresco/js-api": ">=7.5.0"
    }
}

Clean your old distribution and dependencies by deleting node_modules and package-lock.json, then reinstall:

npm install

Breaking changes

Removed global helper classes and !important

A declaration-no-important stylelint rule was introduced and !important was removed from ADF component styles across ~74 files. As part of this:

  • The SCSS partial _default-class.scss was deleted, removing the global helper classes .adf-hide-small and .adf-hide-xsmall. If your app used these ADF-provided classes to hide elements at small/extra-small breakpoints, define your own equivalents.
  • No ADF component CSS class was renamed, but consumer CSS that previously depended on ADF rules winning via !important may now behave differently due to specificity — review your overrides.

Standalone component conversions

Several component sets were converted to standalone: true and now import the specific Angular Material modules they need instead of the monolithic MaterialModule: About, Toolbar, Context Menu, and Pagination.

For normal consumers this is non-breaking — the corresponding NgModules (AboutModule, ToolbarModule, ContextMenuModule, PaginationModule) are retained with unchanged exports, and import paths are unchanged. The one thing to fix: if your own NgModule declared any of these ADF components (which was never correct), you must now import them instead, since a standalone component cannot be declared.

Notes:

  • ContextMenuListComponent is now publicly exported (and exported by ContextMenuModule) — additive.
  • AboutRepositoryInfoComponent now uses ViewEncapsulation.None, so its styles are no longer encapsulated.

Search provider changes

  • ContentNodeSelectorPanelComponent.queryBuilderService changed from public to private, and the panel no longer provides SearchQueryBuilderService under the SEARCH_QUERY_SERVICE_TOKEN (it provides the class directly). Code reading panel.queryBuilderService, or injecting SEARCH_QUERY_SERVICE_TOKEN from the panel's injector scope, must inject SearchQueryBuilderService directly.
  • SearchQueryBuilderService's constructor gained a third, @Optional() parameter for the new ADF_SEARCH_CONFIGURATION token (see New components and features) — DI usage is unaffected; only manual instantiation with a third positional argument is impacted.

Form rendering and widget changes

  • FormRendererComponent constructor gained a FORM_FIELD_MODEL_RENDER_MIDDLEWARE dependency (used by the new decimal-precision middleware). Relevant only if you instantiate it manually.
  • DecimalWidgetComponent lost its public displayValue property and no longer implements OnInit — the precision rounding moved to a render middleware.
  • FormFieldModel.validate() now also validates read-only fields whose type is "validatable" (currently the new display-external-property type), via a new isFieldValidatable(). Read-only fields of other types still skip validation.
  • FormCloudComponent.parseForm(json?) signature changed — the argument is optional and the return type is now FormModel | null (returns null for empty form JSON). Adjust strict-typed callers.

Data table column sizing

Column widths were reworked to be responsive again (they broke with the 6.7.x "resizable by default" change):

  • The column style binding uses the flex shorthand; the datatable exposes getFlexValue(col): string returning '0 1 <width>px'. A new .adf-datatable-cell-data CSS class is applied to header and body cells, and the last column is intentionally left flexible (no fixed flex, no resize handle) so it absorbs remaining width.
  • The header drag-icon placeholder element was removed — any test/selector using the automation id adf-datatable-cell-header-drag-icon-placeholder-<key> must be updated.

Viewer changes

  • ViewerRenderComponent.cacheTypeForContent default changed from '' to 'no-cache'.
  • AlfrescoViewerComponent now refreshes the preview based on the node's version property rather than the file name; the image viewer's cropper now replaces on urlFile change (was fileName). Consumers relying on a name-only refresh should be aware of this.

New components and features

  • Injectable search configuration — a new ADF_SEARCH_CONFIGURATION injection token (@alfresco/adf-content-services) lets you provide a SearchConfiguration at runtime that takes priority over the search node of app.config.json:

    providers: [
        { provide: ADF_SEARCH_CONFIGURATION, useValue: { /* SearchConfiguration */ } }
    ]
    
  • Simple search input — a new standalone SearchInputComponent (selector adf-search-input) formats user input into an AFTS query and emits it via @Output() changed. Inputs: value, label, placeholder, fields (default ['cm:name']). It formats only; it does not run the search.

  • Category selector dialog — a new CategorySelectorDialogComponent (adf-category-selector-dialog) with a CategorySelectorDialogOptions { select: Subject<Category[]>; multiSelect?: boolean }, opened via MatDialog.open(...). CategoriesManagementComponent gained an @Input() multiSelect (default true).

  • Search exports and projection — many previously-internal search symbols are now exported (e.g. SearchFacetChipComponent, SearchWidgetChipComponent, SearchFilterTabDirective, FileSizeOperator, DateRangeType, SearchDateRange, and more), and SearchFilterChipsComponent now supports content projection via <ng-content>.

  • Display external property widget — a new cloud form widget DisplayExternalPropertyWidgetComponent (selector adf-cloud-display-external-property, new FormFieldTypes.DISPLAY_EXTERNAL_PROPERTY = 'display-external-property'), auto-registered by CloudFormRenderingService. FormFieldModel gained an optional externalProperty?: string.

  • Form field render middleware — a new FORM_FIELD_MODEL_RENDER_MIDDLEWARE token and FormFieldModelRenderMiddleware interface let you transform fields at render time; DecimalRenderMiddlewareService uses it to round incoming bigdecimal values to the field's precision.

  • Constant field typesFormFieldTypes.CONSTANT_VALUE_TYPES / isConstantValueType(); fields of these types keep their design-time value and are not overridden by process/form variables.

  • Form preview stateFormService.getPreviewState() (returns false by default); in preview mode the attach-file widget now shows a warning instead of opening the file dialog.

  • OIDC-compliant logout — new optional oauth2 keys in app.config.json: logoutUrl, logoutParameters (e.g. ["client_id", "returnTo", "response_type"]), and audience (forwarded as a custom query param, for Auth0-style providers). Absolute (http-prefixed) redirectUri values are now honored verbatim. New Docker env vars include APP_CONFIG_OAUTH2_LOGOUT_URL, APP_CONFIG_OAUTH2_LOGOUT_PARAMETERS, APP_CONFIG_OAUTH2_AUDIENCE, APP_CONFIG_OAUTH2_CLIENT_SECRET, APP_CONFIG_OAUTH2_SCOPE.

  • Custom-UI auth flow type — the process-services-cloud Descriptor model gained an optional customUIAuthFlowType?: DescriptorCustomUIAuthFlowType (CODE | IMPLICIT).

  • Image zoom on wheel — the image viewer now zooms with the mouse wheel.

Behavioural changes

Area Change
Forms — dates Date widgets display the same day regardless of timezone (DateFnsUtils.forceLocal/forceUtc reimplemented). The datetime picker now opens on Enter rather than on focus. A non-required datetime field with a null value no longer triggers spurious Min/Max validation.
Forms — decimal Incoming bigdecimal values are rounded to the field's configured precision at render time.
Content metadata The "no items" message shows only for editable groups when not editing; property-panel tabs no longer change background color on focus.
Viewer The viewer reliably reloads after a version restore and the toolbar no longer disappears.
Version list Long version comments are truncated with an ellipsis and shown in full via a hover tooltip.
Tooltip card The adf-tooltip-card directive no longer throws when its overlay reference is undefined.