Custom Element YAML Configuration Reference
You can define a custom element client extension with a client-extension.yaml file.
Usage Details
This client-extension.yaml file defines a custom element client extension:
able-custom-element:
    cssURLs:
        - style.css
    friendlyURLMapping: vanilla-counter
    htmlElementName: vanilla-counter
    instanceable: false
    name: Able Custom Element
    portletCategoryName: category.client-extensions
    type: customElement
    urls:
        - index.js
    useESM: false
The required urls property specifies one or more paths to JavaScript resources. One of these JavaScript resources must contain the custom element initialization code.
The example workspace contains a complete custom element client extension.
YAML Properties
These properties are specific to custom element client extensions:
| Name | Data Type | Default Value | Description | 
|---|---|---|---|
| cssURLs | String[] (partial URLs) | [] | List of CSS paths added to the HTML head when the custom element is used on a page. | 
| friendlyURLMapping | String | Mapping of a friendly URL prefix to the specific custom element widget. | |
| htmlElementName | String | The HTML element name that refers to the custom element, which is rendered in the page markup. | |
| instanceable | True/false | false | Whether the custom element widget can appear multiple times on a page. | 
| portletCategoryName | String | category.client-extensions | The menu category of the custom element widget. | 
| properties | String[] | [] | Properties to append as attributes to the custom HTML element. They use a newline as a separator and are processed as Java properties. | 
| urls | String[] (partial URLs) | (Required) List of paths to JavaScript resources that are added to the HTML head when the widget is used on a page. One of these resources must contain the custom element initialization code. This combines with baseURLto form a complete URL. | |
| useESM | True/false | false | Whether the JavaScript code uses ESM format. When true, the JavaScript is added to the page with thetype="module"property. | 
See Frontend Client Extension Properties for properties common to all frontend client extensions.