Skip to content

Button group properties

The button group definition property template can be used to add a custom property of radio button type. When defining a button group property, the following fields can be used:

Definition properties

FieldDescription
typeUsed for all custom property type definitions. Can be either string, integer, number, array or boolean.
This field is mandatory and should always be “string” for a button group property type definition.

Note: The button effect is achieved by setting the component field to buttongroup; see below.
componentUsed for defining how the property is visualized in the property panel. Used to override the default component that comes with the type setting.
This field is mandatory for a radio button property and should always be buttongroup.
labelUsed for defining the label that is displayed in the property panel.
refName or ID used to reference a property.
defaultValueUsed for defining the default value of your custom property.
optionsArray of options to use for dropdown, radiobuttons, buttongroup or switch components. For buttongroup, it can be value, label, and tooltip.

Example

options: [{
value: "v",
label: "Vertical",
tooltip: "Select for vertical"
},{
value: "h",
label: "Horizontal",
tooltip: "Select for horizontal"
}],

Examples

Fetching options from an external resource

Note: This example is using jQuery. Make sure to have jQuery included as a require-dependency.

return {
  type: "items",
  component: "accordion",
  items: {
    settings: {
      uses: "settings",
      items: {
        MyDropdownProp: {
          type: "string",
          component: "dropdown",
          label: "Data source",
          ref: "myproperties.datasource",
          options: () => {
            return $.get("datasource.php").then((items) => {
              return items.map((item) => {
                return {
                  value:item.toLowerCase(),
                  label:item
                };
              });
            });
          }

Note: Options will be fetched every time a property is changed. It is up to the developer to cache the result from the web service if you want to avoid repeating reloads.

Defining a custom button group

Defining a custom property of button group type can look like below.

Example: Add custom button group property to Appearance accordion

Note: Customization of properties always starts with items.

define( [
],
  ( ) => {
    return {
      definition: {
        type: "items",
        component: "accordion",
        items: {
          settings: {
            uses: "settings",
            items: {
              MyButtongroupProp: {
                type: "string",
                component: "buttongroup",
                label: "Orientation buttons",
                ref: "myproperties.orientation",
                options: [{
                  value: "v",
                  label: "Vertical",
                  tooltip: "Select for vertical"
                }, 
                {
                  value: "h",
                  label: "Horizontal",
                  tooltip: "Select for horizontal"
                }],
                defaultValue: "v"
              }
            }
          }
        }
      }
    }
});

This is what it looks like in the property panel

Example of an extension
with selectable button group and tooltips

You can also define a new accordion item as a button group property.

Example: Add custom button group property as a new accordion item

define( [
],
  ( ) => {
    return {
      definition: {
        type: "items",
        component: "accordion",
        items: {
          MyButtongroupProp: {
            type: "string",
            component: "buttongroup",
            label: "Orientation buttons",
            ref: "myproperties.orientation",
            options: [{
              value: "v",
              label: "Vertical",
              tooltip: "Select for vertical"
            }, 
            {
              value: "h",
              label: "Horizontal",
              tooltip: "Select for horizontal"
            }],
            defaultValue: "v"
          }
        }
      }
    }
});

This is what it looks like in the property panel

Custom button group
property as accordion item with selectable buttons and tooltips
Was this page helpful?