diff --git a/src/steps/header/index.less b/src/steps/header/index.less new file mode 100644 index 0000000000000000000000000000000000000000..4771eed046d8e331176b4d0ba9718631b2386a05 --- /dev/null +++ b/src/steps/header/index.less @@ -0,0 +1,12 @@ +.ccms-antd-header { + padding: 0 !important; + margin-bottom: 24px !important; +} + +.breadcrumb-item-bold { + font-weight: bold; +} + +.breadcrumb-item-pointer { + cursor: pointer; +} \ No newline at end of file diff --git a/src/steps/header/index.tsx b/src/steps/header/index.tsx new file mode 100644 index 0000000000000000000000000000000000000000..240ac683d5ea1089e6b55a1ae377e54c762c2e71 --- /dev/null +++ b/src/steps/header/index.tsx @@ -0,0 +1,96 @@ +import React from 'react' +import { Breadcrumb, BreadcrumbItemProps, Statistic, PageHeader, PageHeaderProps } from 'antd' +import { HeaderStep } from 'ccms' +import { IBreadcurmbItemProps, IBreadcurmbProps, IHeaderProps, IStatisticProps } from 'ccms/dist/src/steps/header' +import styles from './index.less' +import InterfaceHelper from '../../util/interface' +import OperationHelper from '../../util/operation' +import DetailStep from '../detail' + +export default class HeaderStepComponent extends HeaderStep { + interfaceHelper = new InterfaceHelper() + OperationHelper = OperationHelper + DetailStep = DetailStep + + /** + * 用于展示面包屑元素 + * @param props + * @returns + */ + renderBreadcurmbItemComponent = (props: IBreadcurmbItemProps) => { + const breadcrumbItemProps: BreadcrumbItemProps = {} + if (props.type === 'bold') { + breadcrumbItemProps.className = styles['breadcrumb-item-bold'] + } + if (props.onClick) { + breadcrumbItemProps.className = breadcrumbItemProps.className ? (breadcrumbItemProps.className + ' ' + styles['breadcrumb-item-pointer']) : styles['breadcrumb-item-pointer'] + breadcrumbItemProps.onClick = props.onClick + } + return {props.label} + } + + /** + * 用于展示面包屑 + * @param props + * @returns + */ + renderBreadcurmbComponent = (props: IBreadcurmbProps) => { + return ( + + {props.items} + + ) + } + + /** + * 用于展示统计内容 + * @param props + * @returns + */ + renderStatisticComponent = (props: IStatisticProps) => { + return ( + + ) + } + + renderContent = (mainContent?: React.ReactNode, extraContent?: React.ReactNode) => { + if (mainContent || extraContent) { + if (mainContent && extraContent) { + return ( +
+
{mainContent}
+
{extraContent}
+
+ ) + } else if (mainContent) { + return mainContent + } else if (extraContent) { + return extraContent + } + } else { + return null + } + } + + renderComponent = (props: IHeaderProps) => { + const pageHeaderProps: PageHeaderProps = { + className: styles['ccms-antd-header'] + } + if (props.breadcrumb) { + pageHeaderProps.breadcrumbRender = () => props.breadcrumb + } + if (props.title) { + pageHeaderProps.title = props.title + } + if (props.subTitle) { + pageHeaderProps.subTitle = props.subTitle + } + if (props.onBack) { + pageHeaderProps.onBack = props.onBack + } + + return ( + {this.renderContent(props.mainContent, props.extraContent)} + ) + } +} \ No newline at end of file diff --git a/src/steps/index.tsx b/src/steps/index.tsx index 16e4e41aae9157ccfe675afcc28f22ba4c4bef2e..0ca2a067e5384a9b9b1daaf8ddaa2fb99605e166 100644 --- a/src/steps/index.tsx +++ b/src/steps/index.tsx @@ -3,6 +3,7 @@ import FormStep from './form' import SkipStep from './skip' import TableStep from './table' import FilterStep from './filter' +import HeaderStep from './header' import DetailStep from './detail' export default { @@ -11,5 +12,6 @@ export default { skip: SkipStep, table: TableStep, filter: FilterStep, + header: HeaderStep, detail: DetailStep } diff --git a/src/util/operation.tsx b/src/util/operation.tsx new file mode 100644 index 0000000000000000000000000000000000000000..3ab890b98d5a795cce1434f43e7d8ccd7a3b4e1f --- /dev/null +++ b/src/util/operation.tsx @@ -0,0 +1,27 @@ +import React from "react" +import { OperationHelper as _OperationHelper } from "ccms" +import { Modal } from "antd" +import CCMS from "../main" +import { CCMSProps } from "ccms/dist/src/main" +import { IOperationModal } from "ccms/dist/src/util/operation" + +export default class OperationHelper extends _OperationHelper { + protected renderModal (props: IOperationModal) { + return ( + document.getElementById('ccms-antd') || document.body} + onCancel={() => props.onClose()} + > + {props.content} + + ) + } + + protected renderCCMS (props: CCMSProps) { + return + } +} \ No newline at end of file