import React from "react"; import BaseWidget, { WidgetProps, WidgetState } from "./BaseWidget"; import { WidgetType } from "constants/WidgetConstants"; import ButtonComponent from "components/designSystems/blueprint/ButtonComponent"; import { EventType } from "constants/ActionConstants"; import { WidgetPropertyValidationType } from "utils/ValidationFactory"; import { VALIDATION_TYPES } from "constants/WidgetValidation"; import { TriggerPropertiesMap } from "utils/WidgetFactory"; class ButtonWidget extends BaseWidget { onButtonClickBound: (event: React.MouseEvent) => void; constructor(props: ButtonWidgetProps) { super(props); this.onButtonClickBound = this.onButtonClick.bind(this); } static getPropertyValidationMap(): WidgetPropertyValidationType { return { text: VALIDATION_TYPES.TEXT, isDisabled: VALIDATION_TYPES.BOOLEAN, isVisible: VALIDATION_TYPES.BOOLEAN, buttonStyle: VALIDATION_TYPES.TEXT, }; } static getTriggerPropertyMap(): TriggerPropertiesMap { return { onClick: true, }; } onButtonClick() { if (this.props.onClick) { super.executeAction({ dynamicString: this.props.onClick, event: { type: EventType.ON_CLICK, }, }); } } getPageView() { return ( ); } getWidgetType(): WidgetType { return "BUTTON_WIDGET"; } } export type ButtonStyle = | "PRIMARY_BUTTON" | "SECONDARY_BUTTON" | "SUCCESS_BUTTON" | "DANGER_BUTTON"; export interface ButtonWidgetProps extends WidgetProps { text?: string; buttonStyle?: ButtonStyle; onClick?: string; isDisabled?: boolean; isVisible?: boolean; } export default ButtonWidget;