* [ACS-12451] Add missing ADF upgrade guides * [ACS-12451] CR fix * [ACS-12451] CR fixes
12 KiB
Title
| Title |
|---|
| Upgrading from ADF v6.8 to v6.9 |
Upgrading from ADF v6.8 to v6.9
This guide provides instructions on how to upgrade your v6.8.0 ADF projects to v6.9.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.9.0",
"@alfresco/adf-content-services": "6.9.0",
"@alfresco/adf-process-services": "6.9.0",
"@alfresco/adf-process-services-cloud": "6.9.0",
"@alfresco/adf-insights": "6.9.0",
"@alfresco/adf-extensions": "6.9.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 components and directives
The following long-deprecated items were removed. There is no drop-in replacement — remove any usage:
| Removed | Kind | Selector | Package |
|---|---|---|---|
LikeComponent |
Component | adf-like |
adf-content-services |
RatingComponent |
Component | adf-rating |
adf-content-services |
RatingService, RatingServiceInterface, SocialModule |
Service / Interface / Module | — | adf-content-services |
WebscriptComponent |
Component | adf-webscript-get |
adf-content-services |
WebScriptModule |
Module | — | adf-content-services |
FolderCreateDirective |
Directive | [adf-create-folder] |
adf-content-services |
FolderEditDirective |
Directive | [adf-edit-folder] |
adf-content-services |
FolderDirectiveModule |
Module | — | adf-content-services |
CardViewContentProxyDirective |
Directive | [adf-card-view-content-proxy] |
adf-core |
ProcessNamePipe |
Pipe | — | adf-process-services |
ProcessServicesPipeModule |
Module | — | adf-process-services |
SecurityControlsServiceModule |
Module (empty) | — | adf-content-services |
The folder directives were moved into the demo-shell only — if you used [adf-create-folder] /
[adf-edit-folder], port an equivalent into your own app.
DataTable and DocumentList API cleanup
Deprecated API was removed from DataTableComponent (adf-datatable) and DocumentListComponent
(adf-document-list). The "gallery" display mode no longer exists — both always render as a list.
- Removed
@Input() displayfrom both components, and the exportedDisplayModeenum ({ List, Gallery }). Remove any[display]="'gallery'"/[display]="'list'"bindings. - Removed
DataTableComponentpublic methodsiconAltTextKey(),hasSelectionMode(),getSortingKey(), and thefakeRowsproperty. - Removed the
NavigableComponentInterfaceinterface;DocumentListComponentno longer implements it.
DataTable multiselect checkbox id
The per-row selection checkbox in adf-datatable now uses an index-suffixed id instead of a static one,
fixing an accessibility regression that also caused clicking a row's checkbox to select the wrong row:
<!-- before --> <mat-checkbox id="select-file" ...>
<!-- after --> <mat-checkbox [id]="'select-file-' + idx" ...> <!-- select-file-0, select-file-1, ... -->
Any test/CSS selector targeting #select-file (or [for="select-file"]) must migrate to the indexed form
(#select-file-0, …).
Removed / deprecated modules (standalone migration)
Many components, pipes and directives were converted to standalone. In most cases the owning NgModule is
retained (now marked @deprecated) with unchanged exports, so importing consumers are unaffected — but you
should migrate to importing the standalone symbol directly. Deprecated-but-retained modules include:
AppConfigModule, DirectiveModule, PipeModule (core); IconModule, TemplateModule, AppsListModule
(process); ContentPipeModule (content).
Real breaks in this effort:
TemplateModule(core) no longer re-exportsMatButtonModule. If you relied onTemplateModuletransitively providingmat-button, importMatButtonModuleyourself.ProcessNamePipeandProcessServicesPipeModulewere deleted (see the table above).- New exported convenience symbols:
CORE_PIPES(core),CONTENT_PIPES(content), andTooltipCardComponentis now publicly exported. LogService(@alfresco/adf-core) is now@deprecated— the class still works but is slated for removal. This is the counterpart to the constructor cleanup below (several services stopped injecting it this release); migrate offLogServicein your own code.
Data table form widget: JSON paths
The cloud form Data Table widget now resolves data via JSON paths, which changes how column configuration is interpreted:
WidgetDataTableAdapterno longer extendsObjectDataTableAdapter— it now implementsDataTableAdapter(composition), and its constructor arguments(data, schema)are now required. Code depending on it being anObjectDataTableAdapterinstance must adapt.- A column's
keyis now interpreted as a JSON path into each data item. Keys containing.or[...]are parsed as paths rather than literal property names. New supported syntaxes: bracket notation for keys with special characters (data['non.standard key']), nested objects inside arrays, and single array-index access (orders[2].customer.name; a single trailing[n]per segment —[0][1]is not supported). - For process/task list variable columns, the variable map is now keyed by column
id(previously bytitle). Ensure each variable column has a correct, uniqueid.
Constructor and DI changes
LogService (and some other dependencies) were removed from several constructors — this only affects code that
manually instantiates these classes or subclasses them and calls super(...):
BaseAuthenticationService— constructor is nowprotectedand no longer takesLogService; subclassesBasicAlfrescoAuthServiceandOidcAuthenticationServicedrop it fromsuper(...)too.IdentityRoleService,ClipboardService,DropdownSitesComponent,AlfrescoViewerComponent,UploadButtonComponent— no longer injectLogService.AspectListService—LogServicewas replaced byAppConfigServicein the constructor.ContentNodeSelectorPanelComponent— no longer injectsAppConfigService; itsqueryBuilderServiceis private. Theadf-content-node-selector.sortingapp-config key is no longer read (default sort is['createdAt', 'desc']).FormCloudComponent— constructor gained aFormCloudSpinnerServicedependency.DisplayRichTextWidgetComponent— constructor gained aDomSanitizerdependency.
Other breaking changes
ContentNodeShareModule.forRoot()/.forChild()were removed — importContentNodeShareModuledirectly.TaskDetailsComponent(adf-task-details) removed the@Input() debugModeand the public methodsisShowAttachForm()andisTaskActive();TaskHeaderComponentremoved the publicinEditfield.FormRendererComponentno longer implementsOnChanges(its rules manager now initialises once inngOnInit).
New components and features
-
Form spinner event — a new
FormSpinnerEvent/FormSpinnerEventPayload(@alfresco/adf-core) and aFormService.toggleFormSpinnersubject let application code show/hide an overlay spinner over a cloud form:this.formService.toggleFormSpinner.next(new FormSpinnerEvent(type, { showSpinner: true, message })); -
Widget error output — the base
WidgetComponentgained an@Output() widgetError, inherited by all form widgets. -
Aspect list counter —
AspectListComponentgained an@Output() updateCounter: EventEmitter<number>, emitted whenever the number of selected aspects changes. -
Start process cancel button —
StartProcessCloudComponentgained an@Input() showCancelButton(defaulttrue). -
Accessibility — a repo-wide accessibility lint pass added keyboard handlers (
tabindex,role,keyup.enter),aria-*attributes, andfor/idlabel associations across many components. -
Data table JSON paths — see Data table form widget: JSON paths.
Behavioural changes
| Area | Change |
|---|---|
| DataTable | Multiselect row selection via checkbox now selects the correct row; column resizing works with multiselect enabled; small-window/mobile layouts no longer leave empty space. |
| Forms | Cloud form variables resolve static values from the component data input in start-event forms; the date widget handles negative range values; the rich-text display widget no longer emits a stray comma (content is now sanitised). |
| Folder dialog | The Create/Update button disables on first click to prevent duplicate folder-creation requests. |
| Version list | Layout fixes ensure action buttons (restore/download) remain visible and are not clipped off-screen. |
| Aspects dialog | The selected-aspects counter now updates correctly on select/deselect/reset/clear, and dialog buttons stay visible. |