@lofter-mission/react
Version:
React 组件库,基于 @lofter-mission/core 实现活动任务相关组件
113 lines (112 loc) • 3.64 kB
TypeScript
import { ReactNode, CSSProperties, HTMLAttributes } from 'react';
import { MissionApiService, MissionItem } from '@lofter-mission/core';
export interface BaseStyleProps {
className?: string;
style?: CSSProperties;
}
export interface ActivityInfo {
activityCode: string;
name?: string;
status?: string;
[key: string]: any;
}
export type Mission = MissionItem & {
tabName?: string;
};
export interface UserInfo {
points?: number;
level?: number;
nickname?: string;
[key: string]: any;
}
export type PrizeItem = import('@lofter-mission/core').PrizeItem;
export type AwardActivity = import('@lofter-mission/core').AwardActivity;
export interface AwardItemViewProps extends BaseStyleProps {
activityInfo?: ActivityInfo;
prize: PrizeItem;
onRedeem?: (prize: PrizeItem, points: number) => void;
cardClassName?: string;
imageClassName?: string;
titleClassName?: string;
buttonClassName?: string;
maxedOutText?: string;
redeemText?: string;
customRedeem?: (prize: PrizeItem, callback: (otherParams?: any) => Promise<{
status: boolean;
points?: number;
}>) => Promise<void>;
}
export interface AwardListViewProps extends BaseStyleProps {
activityInfo?: ActivityInfo;
onPrizeRedeem?: (prize: PrizeItem, points?: number) => void;
callbackPoints?: (points?: number) => void;
customRedeem?: (prize: PrizeItem, callback: (otherParams?: any) => Promise<{
status: boolean;
points?: number;
}>) => Promise<void>;
loadingClassName?: string;
errorClassName?: string;
emptyClassName?: string;
itemsClassName?: string;
loadingText?: string;
errorText?: string;
emptyText?: string;
}
export interface ActivityContainerProps extends BaseStyleProps, Omit<HTMLAttributes<HTMLDivElement>, 'className' | 'style'> {
activityCode: string;
children?: ReactNode;
presetMissionApiService?: MissionApiService;
presetActivityInfo?: any;
}
export interface ActivityUserProps extends BaseStyleProps {
activityInfo?: ActivityInfo;
loadingClassName?: string;
errorClassName?: string;
noDataClassName?: string;
loadingText?: string;
errorText?: string;
noDataText?: string;
pointsText?: string;
}
export interface MissionItemViewProps extends BaseStyleProps {
activityInfo?: ActivityInfo;
mission: Mission;
onProgressUpdate?: (mission: Mission, points?: number) => void;
onCustomShare?: (mission: Mission) => void;
cardClassName?: string;
titleClassName?: string;
rewardClassName?: string;
actionClassName?: string;
buttonClassName?: string;
completedText?: string;
defaultActionText?: string;
}
export interface MissionListViewProps extends BaseStyleProps {
activityInfo?: ActivityInfo;
tabName?: string;
onMissionProgressUpdate?: (mission: Mission, points?: number) => void;
onCustomShare?: (mission: Mission) => void;
loadingClassName?: string;
errorClassName?: string;
emptyClassName?: string;
itemsClassName?: string;
loadingText?: string;
errorText?: string;
emptyText?: string;
isShowStepMission?: boolean;
}
export interface MissionPopupViewProps extends BaseStyleProps {
activityInfo?: ActivityInfo;
visible?: boolean;
onClose?: () => void;
onMissionProgressUpdate?: (mission: Mission) => void;
overlayClassName?: string;
popupClassName?: string;
headerClassName?: string;
contentClassName?: string;
closeButtonClassName?: string;
title?: string;
loadingText?: string;
errorText?: string;
retryText?: string;
}