Skip to content

Commit

Permalink
feat(ui5-tooling-modules): adds basic support for valueStates (#1125)
Browse files Browse the repository at this point in the history
* feat(ui5-tooling-modules): adds basic support for valueStates

* feat(ui5-tooling-modules): adds basic support for valueStates

* feat(ui5-tooling-modules): adds support for mapped valueStateText

* feat(ui5-tooling-modules): adds support for parsing valueStates

* chore(ui5-tooling-modules): prep for testing

* chore(ui5-tooling-modules): add draft for metadata test fixtures

* chore(ui5-tooling-modules): remove sap.m.Shell control, fix default value for valueStateMessage

* feat(ui5-tooling-modules): add test to validate ui5-metadata for webcomponents

* chore(ui5-tooling-modules): finalize tests for metadata generation

* chore(ui5-tooling-modules): update snapshots and fixtures

* chore(ui5-tooling-modules): skip prettier for fixtures

---------

Co-authored-by: Peter Muessig <[email protected]>
Co-authored-by: Johannes Gluch <[email protected]>
  • Loading branch information
3 people authored Dec 13, 2024
1 parent 35de049 commit 8f37d3c
Show file tree
Hide file tree
Showing 265 changed files with 1,031 additions and 253 deletions.
1 change: 1 addition & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ pnpm-lock.yaml
/packages/ui5-task-pwa-enabler/templates/**
/packages/ui5-task-zipper/test/**
/packages/ui5-tooling-modules/test/__snap__/**
/packages/ui5-tooling-modules/test/__fixtures__/**

# Ignore files by extension
/**/*.svg
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,7 @@ module.exports = function ({ log, resolveModule, getPackageJson, framework, opti
"sap/ui/core/webc/WebComponentRenderer",
"sap/ui/core/LabelEnablement",
"sap/ui/core/EnabledPropagator",
"sap/ui/core/message/MessageMixin",
];

return {
Expand Down Expand Up @@ -324,8 +325,11 @@ module.exports = function ({ log, resolveModule, getPackageJson, framework, opti
const metadata = JSON.stringify(metadataObject, undefined, 2);
const webcModule = moduleInfo.attributes.absModulePath;
const webcClass = webcModule.replace(/\\/g, "/"); // is the absolute path of the original Web Component class
const needsLabelEnablement = clazz._ui5NeedsLabelEnablement;
const needsEnabledPropagator = clazz._ui5NeedsEnabledPropagator;

// UI5 specific features
const needsLabelEnablement = clazz._ui5specifics.needsLabelEnablement;
const needsEnabledPropagator = clazz._ui5specifics.needsEnabledPropagator;
const needsMessageMixin = clazz._ui5specifics.needsMessageMixin;

// store the webc class as a marker to add the import to @ui5/webcomponents-base
if (!webcModules.includes(webcModule)) {
Expand All @@ -350,6 +354,7 @@ module.exports = function ({ log, resolveModule, getPackageJson, framework, opti
webcBaseClass,
needsLabelEnablement,
needsEnabledPropagator,
needsMessageMixin,
});
return code;
} else if (webcModules.includes(id)) {
Expand Down
9 changes: 5 additions & 4 deletions packages/ui5-tooling-modules/lib/templates/Package.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,13 @@ const pkg = {
};

{{#each enums}}
pkg["{{name}}"] = {
{{#each members}}
"{{name}}": "{{name}}",
pkg["{{@key}}"] = {
{{#each this}}
"{{this}}": "{{this}}",
{{/each}}
};
registerEnum("{{../namespace}}.{{name}}", pkg["{{name}}"]);
registerEnum("{{../namespace}}.{{@key}}", pkg["{{@key}}"]);

{{/each}}

export default pkg;
6 changes: 6 additions & 0 deletions packages/ui5-tooling-modules/lib/templates/WrapperControl.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ import LabelEnablement from "sap/ui/core/LabelEnablement";
{{#if needsEnabledPropagator}}
import EnabledPropagator from "sap/ui/core/EnabledPropagator";
{{/if}}
{{#if needsMessageMixin}}
import MessageMixin from "sap/ui/core/message/MessageMixin";
{{/if}}

const WrapperClass = WebComponentBaseClass.extend("{{ui5Class}}", {
metadata: {{{metadata}}},
Expand All @@ -29,5 +32,8 @@ LabelEnablement.enrich(WrapperClass.prototype);
{{#if needsEnabledPropagator}}
EnabledPropagator.call(WrapperClass.prototype);
{{/if}}
{{#if needsMessageMixin}}
MessageMixin.call(WrapperClass.prototype);
{{/if}}

export default WrapperClass;
66 changes: 64 additions & 2 deletions packages/ui5-tooling-modules/lib/utils/WebComponentRegistry.js
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ class RegistryEntry {
// [3] create UI5 metadata for each classed based on the parsed custom elements metadata
this.#createUI5Metadata(classDef);
});

// [4] prepare enum objects
this.#prepareEnums();
}

#parseDeclaration(decl) {
Expand Down Expand Up @@ -259,7 +262,7 @@ class RegistryEntry {
} else if (propDef.name === "disabled") {
// "disabled" maps to "enabled" in UI5
// we also need the UI5 EnabledPropagator
classDef._ui5NeedsEnabledPropagator = true;
classDef._ui5specifics.needsEnabledPropagator = true;
ui5metadata.properties["enabled"] = {
type: "boolean",
defaultValue: "true",
Expand Down Expand Up @@ -471,11 +474,50 @@ class RegistryEntry {
// Any "Label" control needs a special UI5-only interface
ui5metadata.interfaces.push("sap.ui.core.Label");
// Additionally, all such controls must apply the "sap/ui/core/LabelEnablement" (see "../templates/WrapperControl.hbs")
classDef._ui5NeedsLabelEnablement = true;
classDef._ui5specifics.needsLabelEnablement = true;
} else if (tag === "ui5-multi-input") {
// TODO: Multi Input needs to implement the functions defined in "sap.ui.core.ISemanticFormContent"...
ui5metadata.interfaces.push("sap.ui.core.ISemanticFormContent");
}

// If a "valueStateMessage" slot is present, we need a special property mapping
// and correct the "valueState" property's typing
if (ui5metadata.aggregations["valueStateMessage"]) {
if (ui5metadata.properties["valueState"]) {
// there will not be an aggregation in UI5, but rather a string mapped property!
delete ui5metadata.aggregations["valueStateMessage"];
ui5metadata.properties["valueStateText"] = {
name: "valueStateText",
type: "string",
defaultValue: "",
mapping: {
type: "slot",
slotName: "valueStateMessage",
// "mapping.to" describes the result in the webc DOM
to: "div",
},
};

// the UI5 valueState needs the Core's enum typing and some special mapping to
// convert the "sap.ui.core.ValueState" to the web component's variant.
Object.assign(ui5metadata.properties["valueState"], {
type: "sap.ui.core.ValueState",
mapping: {
formatter: "_mapValueState",
parser: "_parseValueState",
},
});

// mixin support for handling of backend messages
classDef._ui5specifics.needsMessageMixin = true;
} else {
// this is an interesting inconsistency that does not occur in the UI5 web components
// we report it here for custom web component development
console.warn(
`The class '${this.namespace}/${classDef.name}' defines a slot called 'valueStateMessage', but does not provide a corresponding 'valueState' property! A UI5 control expects both to be present for correct 'valueState' handling.`,
);
}
}
}

#createUI5Metadata(classDef) {
Expand All @@ -492,6 +534,9 @@ class RegistryEntry {
methods: [],
});

// we track a couple of UI5 specifics like interfaces and mixins separately
classDef._ui5specifics = {};

classDef.members?.forEach((propDef) => {
this.#processMembers(classDef, ui5metadata, propDef);
});
Expand All @@ -510,6 +555,23 @@ class RegistryEntry {

this.#patchUI5Specifics(classDef, ui5metadata);
}

/**
* Prepares the UI5 enum objects for the "package.hbs" template.
*/
#prepareEnums() {
Object.keys(this.enums).forEach((enumName) => {
const enumValues = [];

const enumMembers = this.enums[enumName].members;
enumMembers.forEach((member) => {
// Key<>Value must be identical!
enumValues.push(member.name);
});

this.enums[enumName] = enumValues;
});
}
}

const WebComponentRegistry = {
Expand Down
3 changes: 2 additions & 1 deletion packages/ui5-tooling-modules/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,8 @@
"scripts": {
"lint": "eslint lib",
"test": "ava --no-worker-threads",
"test:snapshots": "ava --no-worker-threads -- --generateSnapshots"
"test:snapshots": "ava --no-worker-threads -- --generateSnapshots",
"test:fixtures": "ava --no-worker-threads -- --generateFixtures"
},
"ava": {
"files": [
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-ai","tag":"ui5-ai-button","interfaces":[],"properties":{"design":{"type":"@ui5/webcomponents.ButtonDesign","mapping":"property","defaultValue":"Default"},"enabled":{"type":"boolean","defaultValue":"true","mapping":{"type":"property","to":"disabled","formatter":"_mapEnabled"}},"state":{"type":"string","mapping":"property"},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"states":{"type":"@ui5/webcomponents-ai.ButtonState","multiple":true}},"associations":{},"events":{"click":{}},"getters":[],"methods":[],"defaultAggregation":"states"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-ai","tag":"ui5-ai-button-state","interfaces":[],"properties":{"name":{"type":"string","mapping":"property"},"text":{"type":"string","mapping":"property"},"icon":{"type":"string","mapping":"property"},"endIcon":{"type":"string","mapping":"property"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":[],"methods":[]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-ai","tag":"ui5-ai-prompt-input","interfaces":[],"properties":{"value":{"type":"string","mapping":"property","defaultValue":""},"placeholder":{"type":"string","mapping":"property"},"label":{"type":"string","mapping":"property"},"showClearIcon":{"type":"boolean","mapping":"property","defaultValue":false},"showExceededText":{"type":"boolean","mapping":"property","defaultValue":false},"enabled":{"type":"boolean","defaultValue":"true","mapping":{"type":"property","to":"disabled","formatter":"_mapEnabled"}},"readonly":{"type":"boolean","mapping":"property","defaultValue":false},"maxlength":{"type":"float","mapping":"property"},"valueState":{"type":"sap.ui.core.ValueState","mapping":{"formatter":"_mapValueState","parser":"_parseValueState"},"defaultValue":"None"},"showSuggestions":{"type":"boolean","mapping":"property","defaultValue":false},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"},"valueStateText":{"name":"valueStateText","type":"string","defaultValue":"","mapping":{"type":"slot","slotName":"valueStateMessage","to":"div"}}},"aggregations":{"suggestionItems":{"type":"sap.ui.core.Control","multiple":true}},"associations":{},"events":{"submit":{},"input":{},"change":{}},"getters":[],"methods":[],"defaultAggregation":"suggestionItems"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-base","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":[],"methods":["getText"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-base","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":[],"methods":["setCurrentItem","setRowSize"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-base","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":[],"methods":["register","deregister"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-base","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":["effectiveDir","isUI5Element"],"methods":["onBeforeRendering","onAfterRendering","onEnterDOM","onExitDOM","attachInvalidate","detachInvalidate","onInvalidation","getDomRef","getFocusDomRef","getFocusDomRefAsync","focus","fireEvent","fireDecoratorEvent","getSlottedNodes","attachComponentStateFinalized","detachComponentStateFinalized","getUniqueDependencies","define","getMetadata"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-base","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":[],"methods":["validateSlotValue","getPureTag","getTag","hasAttribute","getPropertiesList","getAttributesList","hasSlots","hasIndividualSlots","slotsAreManaged","supportsF6FastNavigation","getProperties","getEvents","getSlots"]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["Full","Basic","Minimal","None"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["Dialog","Grid","ListBox","Menu","Tree"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["AlertDialog","Button","Dialog","Link"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["Gregorian","Islamic","Japanese","Buddhist","Persian"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["Static","Cyclic"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["On","Before","After"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["Auto","Vertical","Horizontal","Paging"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
["None","Positive","Critical","Negative","Information"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
[]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-barcode-scanner-dialog","interfaces":[],"properties":{"open":{"type":"boolean","mapping":"property","defaultValue":false},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"header":{"type":"sap.ui.core.Control","multiple":true,"slot":"header"},"footer":{"type":"sap.ui.core.Control","multiple":true,"slot":"footer"}},"associations":{},"events":{"close":{},"scanSuccess":{},"scanError":{}},"getters":[],"methods":[]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-dynamic-page","interfaces":[],"properties":{"hidePinButton":{"type":"boolean","mapping":"property","defaultValue":false},"headerPinned":{"type":"boolean","mapping":"property","defaultValue":false},"showFooter":{"type":"boolean","mapping":"property","defaultValue":false},"headerSnapped":{"type":"boolean","mapping":"property","defaultValue":false},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"content":{"type":"sap.ui.core.Control","multiple":true},"titleArea":{"type":"@ui5/webcomponents-fiori.DynamicPageTitle","multiple":true,"slot":"titleArea"},"headerArea":{"type":"@ui5/webcomponents-fiori.DynamicPageHeader","multiple":true,"slot":"headerArea"},"footerArea":{"type":"sap.ui.core.Control","multiple":true,"slot":"footerArea"}},"associations":{},"events":{"pinButtonToggle":{},"titleToggle":{}},"getters":[],"methods":[],"defaultAggregation":"content"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-dynamic-page-header","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"content":{"type":"sap.ui.core.Control","multiple":true}},"associations":{},"events":{},"getters":[],"methods":[],"defaultAggregation":"content"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-dynamic-page-title","interfaces":[],"properties":{"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"heading":{"type":"sap.ui.core.Control","multiple":true,"slot":"heading"},"snappedHeading":{"type":"sap.ui.core.Control","multiple":true,"slot":"snappedHeading"},"snappedTitleOnMobile":{"type":"sap.ui.core.Control","multiple":true,"slot":"snappedTitleOnMobile"},"actionsBar":{"type":"sap.ui.core.Control","multiple":true,"slot":"actionsBar"},"navigationBar":{"type":"sap.ui.core.Control","multiple":true,"slot":"navigationBar"},"content":{"type":"sap.ui.core.Control","multiple":true},"subheading":{"type":"sap.ui.core.Control","multiple":true,"slot":"subheading"},"snappedSubheading":{"type":"sap.ui.core.Control","multiple":true,"slot":"snappedSubheading"},"breadcrumbs":{"type":"sap.ui.core.Control","multiple":true,"slot":"breadcrumbs"}},"associations":{},"events":{},"getters":[],"methods":[],"defaultAggregation":"content"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-dynamic-side-content","interfaces":[],"properties":{"hideMainContent":{"type":"boolean","mapping":"property","defaultValue":false},"hideSideContent":{"type":"boolean","mapping":"property","defaultValue":false},"sideContentPosition":{"type":"@ui5/webcomponents-fiori.SideContentPosition","mapping":"property","defaultValue":"End"},"sideContentVisibility":{"type":"@ui5/webcomponents-fiori.SideContentVisibility","mapping":"property","defaultValue":"ShowAboveS"},"sideContentFallDown":{"type":"@ui5/webcomponents-fiori.SideContentFallDown","mapping":"property","defaultValue":"OnMinimumWidth"},"equalSplit":{"type":"boolean","mapping":"property","defaultValue":false},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"content":{"type":"sap.ui.core.Control","multiple":true},"sideContent":{"type":"sap.ui.core.Control","multiple":true,"slot":"sideContent"}},"associations":{},"events":{"layoutChange":{}},"getters":[],"methods":["toggleContents"],"defaultAggregation":"content"}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-filter-item","interfaces":[],"properties":{"text":{"type":"string","mapping":"property"},"additionalText":{"type":"string","mapping":"property"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"values":{"type":"@ui5/webcomponents-fiori.FilterItemOption","multiple":true,"slot":"values"}},"associations":{},"events":{},"getters":[],"methods":[]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-filter-item-option","interfaces":[],"properties":{"text":{"type":"string","mapping":"property"},"selected":{"type":"boolean","mapping":"property","defaultValue":false},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{},"associations":{},"events":{},"getters":[],"methods":[]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-flexible-column-layout","interfaces":[],"properties":{"layout":{"type":"@ui5/webcomponents-fiori.FCLLayout","mapping":"property","defaultValue":"OneColumn"},"disableResizing":{"type":"boolean","mapping":"property","defaultValue":false},"accessibilityAttributes":{"type":"object","mapping":"property","defaultValue":{}},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"startColumn":{"type":"sap.ui.core.Control","multiple":true,"slot":"startColumn"},"midColumn":{"type":"sap.ui.core.Control","multiple":true,"slot":"midColumn"},"endColumn":{"type":"sap.ui.core.Control","multiple":true,"slot":"endColumn"}},"associations":{},"events":{"layoutChange":{}},"getters":["columnLayout","startColumnVisible","midColumnVisible","endColumnVisible","visibleColumns"],"methods":[]}
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"namespace":"@ui5/webcomponents-fiori","tag":"ui5-illustrated-message","interfaces":[],"properties":{"name":{"type":"string","mapping":"property","defaultValue":"BeforeSearch"},"design":{"type":"@ui5/webcomponents-fiori.IllustrationMessageDesign","mapping":"property","defaultValue":"Auto"},"subtitleText":{"type":"string","mapping":"property"},"titleText":{"type":"string","mapping":"property"},"text":{"type":"string","mapping":"textContent"},"width":{"type":"sap.ui.core.CSSSize","mapping":"style"},"height":{"type":"sap.ui.core.CSSSize","mapping":"style"}},"aggregations":{"title":{"type":"sap.ui.core.Control","multiple":true,"slot":"title"},"subtitle":{"type":"sap.ui.core.Control","multiple":true,"slot":"subtitle"},"actions":{"type":"sap.ui.core.Control","multiple":true}},"associations":{"ariaLabelledBy":{"type":"sap.ui.core.Control","multiple":true,"mapping":{"type":"property","to":"accessibleNameRef","formatter":"_getAriaLabelledByForRendering"}}},"events":{},"getters":[],"methods":[],"defaultAggregation":"actions"}
Loading

0 comments on commit 8f37d3c

Please sign in to comment.