outsystems-ui
Version:
OutSystems UI Framework
69 lines (64 loc) • 1.99 kB
text/typescript
/* eslint-disable @typescript-eslint/no-unused-vars */
namespace OSFramework.OSUI.Patterns.AccordionItem {
/**
* Class that represents the custom configurations received by AccordionItem.
*
* @export
* @class AccordionItemConfig
* @extends {AbstractConfiguration}
*/
export class AccordionItemConfig extends AbstractConfiguration {
public Icon: string;
public IconPosition: string;
public IsDisabled: boolean;
public StartsExpanded: boolean;
public ToggleWithIcon: boolean;
constructor(config: JSON) {
super(config);
this.ToggleWithIcon = false;
}
/**
* Method used to check if a given property can be changed!
*
* @param isBuilt if pattern is already built
* @param key key name to be checked
* @returns {boolean}
* @memberof OSFramework.Patterns.AccordionItem.AccordionItemConfig
*/
public validateCanChange(isBuilt: boolean, key: string): boolean {
if (isBuilt) {
return key !== Enum.Properties.StartsExpanded;
}
return true;
}
/**
* Method used to validate default value before apply it's change!
*
* @param key property name
* @param value value to be set
* @returns {*}
* @memberof OSFramework.Patterns.AccordionItem.AccordionItemConfig
*/
public validateDefault(key: string, value: unknown): unknown {
let validatedValue = undefined;
switch (key) {
case Enum.Properties.IsDisabled:
validatedValue = this.validateBoolean(value as boolean, false);
break;
case Enum.Properties.Icon:
validatedValue = this.validateString(value as string, Enum.IconType.Caret);
break;
case Enum.Properties.IconPosition:
validatedValue = this.validateString(value as string, GlobalEnum.Direction.Right);
break;
case Enum.Properties.ToggleWithIcon:
validatedValue = this.validateBoolean(value as boolean, false);
break;
default:
validatedValue = super.validateDefault(key, value);
break;
}
return validatedValue;
}
}
}