PromucFlow_constructor/app/client/src/widgets/IconWidget.tsx
Satish Gandham 7f7f6f666b
Development: Add eslint rules for code consistency (#4083)
Co-authored-by: Satish Gandham <satish@appsmith.com>
Co-authored-by: Abhinav Jha <abhinav@appsmith.com>
2021-04-28 15:58:39 +05:30

75 lines
1.9 KiB
TypeScript

import React from "react";
import BaseWidget, { WidgetProps, WidgetState } from "./BaseWidget";
import { WidgetType, WidgetTypes } from "constants/WidgetConstants";
import styled from "styled-components";
import IconComponent, {
IconType,
} from "components/designSystems/appsmith/IconComponent";
import {
EventType,
ExecutionResult,
} from "constants/AppsmithActionConstants/ActionConstants";
import * as Sentry from "@sentry/react";
const IconWrapper = styled.div`
display: flex;
justify-content: flex-end;
`;
class IconWidget extends BaseWidget<IconWidgetProps, WidgetState> {
static getPropertyPaneConfig() {
return [];
}
/* eslint-disable @typescript-eslint/no-unused-vars */
/* eslint-disable @typescript-eslint/no-empty-function */
handleActionResult = (result: ExecutionResult) => {};
onClick = () => {
if (this.props.onClick) {
super.executeAction({
triggerPropertyName: "onClick",
dynamicString: this.props.onClick,
event: {
type: EventType.ON_CLICK,
callback: this.handleActionResult,
},
});
}
};
getPageView() {
return (
<IconWrapper>
<IconComponent
color={this.props.color}
disabled={this.props.disabled}
iconName={this.props.iconName}
iconSize={this.props.iconSize}
onClick={this.onClick}
/>
</IconWrapper>
);
}
getWidgetType(): WidgetType {
return WidgetTypes.ICON_WIDGET;
}
}
export const IconSizes: { [key: string]: number } = {
LARGE: 32,
SMALL: 12,
DEFAULT: 16,
};
export type IconSize = typeof IconSizes[keyof typeof IconSizes] | undefined;
export interface IconWidgetProps extends WidgetProps {
iconName: IconType;
onClick: string;
iconSize: IconSize;
color: string;
}
export default IconWidget;
export const ProfiledIconWidget = Sentry.withProfiler(IconWidget);