ÃÛ¶¹ÊÓÆµ

Developing Core Components developing-core-components

The Core Components provide robust and extensible base components which offer feature-rich capabilities, continuous delivery, component versioning, modern implementation, lean markup, and JSON export of content.

TIP
Have you considered Edge Delivery Services for AEM?
You can continue using the methods described in this document for existing projects. However for new projects, ÃÛ¶¹ÊÓÆµ recommends leveraging Edge Delivery Services.

How to Succeed with the Core Components how-to-succeed

The Core Components are powerful, flexible, and easy to use and customize. Following a few key guidelines will ensure that your project with the Core Components is a success.

Migrating to the Core Components

Any new project should be implemented with Core Components. However existing projects will usually have extensive implementations of the Foundation Components.

Migrating from Foundation Components from-foundation

A larger effort on an existing project (for example a rebranding or overall refactoring) often offers a chance to migrate to the Core Components. To facilitate this migration, ÃÛ¶¹ÊÓÆµ has provided a number of migration tools to encourage the adoption of the Core Components and the latest AEM technology.

allow for the easy conversion of:

  • Static templates to editable templates
  • Design configurations to policies
  • Foundation Components to Core Components
  • Classic UI to Touch-Enabled UI

For further information about the usage of these tools, .

NOTE
The AEM Modernize Tools are a community effort and are not supported or warrantied by ÃÛ¶¹ÊÓÆµ.

Migration via Move to AEM as a Cloud Service via-aemaacs

Because AEM as a Cloud Service comes with the latest version of the Core Components automatically, when you move from an on-premises AEM installation, you will need to remove any dependency to the Core Components in your projects pom.xml file.

Your proxy components will still work as they did before because proxies point to the necessary supertype and the supertype path has the version in it. In this way, simply removing the dependency enables the Core Components to work in AEMaaCS just as they did on-premises.

Just like any other AEMaaCS project you will also need to add a dependency to the AEM SDK jar as well. This is not specific to the Core Components, but is required.

<dependency>
   <groupId>com.adobe.aem</groupId>
   <artifactId>aem-sdk-api</artifactId>
</dependency>

See the document AEM Project Structure for more information about AEMaaCS projects.

Core Component Support core-component-support

Core Components are an integral part of AEM and supported as is, under the same terms and conditions as if they were delivered as part of the Quickstart.

Like other AEM product features, the general rule is: Components are first announced to be deprecated, and the earliest removed for the following AEM release. That gives customers at least one release cycle to move to the new version of the component, before dropping its support.

The version of each component clearly states the AEM versions that it supports. When support ceases for a version of AEM, then so does the support of the Core Components for that version of AEM.

For details about the support of component customizations, see the Customizing Core Components page.

Technical Capabilities technical-capabilities

The following table gives an overview of the differences between core components and foundation components.

For details about their authoring capabilities and options to pre-configurable them, refer to the authoring page about them.

Capability
Core Component
Foundation Component
Logic implementation
Java POJOs with annotations
JSP code
Markup definition
HTML Template Language (HTL) syntax
JSP code
XSS sanitization
Automated by HTL
Mostly manual
CSS classes naming
Standardized naming convention based on (BEM) notation (as of release 2.0.0)
Custom schemes
Dialog definition
Coral 2 + Classic UI
JSON output
Default Sling servlet
Versioning
For the model and the HTL
None
Testing
Unit Tests + Integration Tests
Integration Tests
Delivery
Via Quickstart
License
ÃÛ¶¹ÊÓÆµ proprietary
Contribution
Via pull request
Not possible
Accessibility
Fully compliant with the WCAG 2.0 AA standard
Only partially compliant with the WCAG 2.0 AA standard

Component List component-list

The following table lists the available Core Components, linking to their API, and indicates which foundation components they replace.

Core Component
Description
Replaced Foundation Component(s)
Responsive page working with template editor
/libs/foundation/components/page /libs/wcm/foundation/components/page
Page hierarchy navigation
/libs/foundation/components/breadcrumb
H1-H6 title
/libs/foundation/components/title /libs/wcm/foundation/components/title
Rich text
/libs/foundation/components/text /libs/foundation/components/table /libs/wcm/foundation/components/text
Smart and lazy loading of optimal rendition size
/libs/foundation/components/image /libs/foundation/components/adaptiveimage /libs/foundation/components/logo /libs/foundation/components/mobileimage /libs/foundation/components/mobilelogo /libs/wcm/foundation/components/image
List of pages
/libs/foundation/components/list /libs/foundation/components/mobilelist /libs/wcm/foundation/components/list
Facebook and Pinterest sharing widget
-
Responsive form paragraph system
/libs/foundation/components/form/start /libs/foundation/components/form/end
Text input field
/libs/foundation/components/form/text /libs/foundation/components/form/password
Multiple options input field
/libs/foundation/components/form/checkbox /libs/foundation/components/form/radio /libs/foundation/components/form/dropdown
Hidden input field
/libs/foundation/components/form/hidden
Submit or custom button
/libs/foundation/components/form/submit
A site navigation component that lists the nested page hierarchy
/libs/foundation/components/topnav /libs/foundation/components/mobiletopnav
A language and country switcher that lists the global language structure
-
A search component that displays the results as in-place suggestions in a drop-down menu
/libs/foundation/components/search
Allows the content author to easily create a teaser to further content using an image, title, or rich text and linking to further content or other actions
-
Allows the content author to organize page content within multiple tabs
-
Allows the content author to organize content in a rotating carousel of slides
/libs/foundation/components/carousel
Allows for the display of a content fragment
-
Allows for the display a list of content fragments
-
Separates content on a page
-
Organize content panels in a collapsible accordion
-
Organize components within a container
-
Create a button on a page
-
Add a downloadable asset to a page
-
Add an experience fragment to a page
/libs/cq/experience-fragments/editor/components/experiencefragment
Embed an external resource within a page
-
Provide a visual representation of progress towards a goal
-
Presents a PDF document on a page
-

Upgrade of Core Components upgrade-of-core-components

One benefit of versioned components is that it allows to separate the migration to a new AEM version from the migration to new component versions. Also, if new component versions are available, it allows for the individual migration of each component to the new version.

Migrations to a new AEM version won’t impact how the Core Components work, provided that their versions also support the new AEM version that is being migrated to. Customizations made to the Core Components should not be affected either, as long as they don’t use APIs that have been deprecated or removed.

Migrations to new versions of the Core Components won’t impact how the component works either, but new features might be introduced to page authors, which might require some configuration by a template editor, in case the default behavior isn’t desired. Customizations however might need to be adapted, for more details see the Customizing Core Components page.

recommendation-more-help
d2be9096-a81e-404b-9952-d8925af7219c