Skip to content

Instantly share code, notes, and snippets.

@nicdford
Created April 24, 2024 20:35
Show Gist options
  • Save nicdford/6284626f32f1eb5d1d738322d8d34088 to your computer and use it in GitHub Desktop.
Save nicdford/6284626f32f1eb5d1d738322d8d34088 to your computer and use it in GitHub Desktop.
ActionButton "case" statement
interface InternalActivityTableActionsProps extends Omit<ButtonProps, "label"> {
status: DisplayStatus;
actions: {
onStartButtonClick: ButtonProps["onClick"];
onContinueButtonClick: ButtonProps["onClick"];
onNoActionButtonClick: ButtonProps["onClick"];
onViewDataButtonClick: ButtonProps["onClick"];
};
}
export const ActionButton: FunctionComponent<
InternalActivityTableActionsProps
> = ({
status,
actions: {
onStartButtonClick,
onContinueButtonClick,
onViewDataButtonClick,
onNoActionButtonClick,
},
...props
}) => {
if (status.statusType === StatusType.newTask) {
return <StartButton {...props} onClick={onStartButtonClick} />;
}
if (status.statusType === StatusType.dataExtraction) {
return <ContinueButton {...props} onClick={onContinueButtonClick} />;
}
if (status.statusType === StatusType.qualityCheck) {
return <StartButton {...props} onClick={onStartButtonClick} />;
}
if (status.statusType === StatusType.approvalReview) {
return <NoActionButton {...props} onClick={onNoActionButtonClick} />;
}
if (status.statusType === StatusType.dataAdjustments) {
return <ViewDataButton {...props} onClick={onViewDataButtonClick} />;
}
if (status.statusType === StatusType.completed) {
return <NoActionButton {...props} onClick={onNoActionButtonClick} />;
}
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment