diff --git a/docs/en/guide/i18n.md b/docs/en/guide/i18n.md index 68adb3d..17f4c2d 100644 --- a/docs/en/guide/i18n.md +++ b/docs/en/guide/i18n.md @@ -89,5 +89,8 @@ interface ILang { header: string footer: string } + pageBreak: { + displayName: string + } } ``` diff --git a/docs/en/guide/option.md b/docs/en/guide/option.md index c344fef..f9d3c4a 100644 --- a/docs/en/guide/option.md +++ b/docs/en/guide/option.md @@ -62,6 +62,7 @@ interface IEditorOption { title?: ITitleOption // Title configuration.{ defaultFirstSize?: number; defaultSecondSize?: number; defaultThirdSize?: number defaultFourthSize?: number; defaultFifthSize?: number; defaultSixthSize?: number;} placeholder?: IPlaceholder // Placeholder text group?: IGroup // Group option. {opacity?:number; backgroundColor?:string; activeOpacity?:number; activeBackgroundColor?:string; disabled?:boolean} + pageBreak?: IPageBreak // PageBreak option。{font?:string; fontSize?:number; lineDash?:number[];} } ``` diff --git a/docs/guide/i18n.md b/docs/guide/i18n.md index 0953ae7..0857ead 100644 --- a/docs/guide/i18n.md +++ b/docs/guide/i18n.md @@ -89,5 +89,8 @@ interface ILang { header: string footer: string } + pageBreak: { + displayName: string + } } ``` diff --git a/docs/guide/option.md b/docs/guide/option.md index cca134f..b054d88 100644 --- a/docs/guide/option.md +++ b/docs/guide/option.md @@ -62,6 +62,7 @@ interface IEditorOption { title?: ITitleOption // 标题配置。{ defaultFirstSize?: number; defaultSecondSize?: number; defaultThirdSize?: number defaultFourthSize?: number; defaultFifthSize?: number; defaultSixthSize?: number;} placeholder?: IPlaceholder // 编辑器空白占位文本 group?: IGroup // 成组配置。{opacity?:number; backgroundColor?:string; activeOpacity?:number; activeBackgroundColor?:string; disabled?:boolean} + pageBreak?: IPageBreak // 分页符配置。{font?:string; fontSize?:number; lineDash?:number[];} } ``` diff --git a/src/editor/core/draw/particle/PageBreak.ts b/src/editor/core/draw/particle/PageBreak.ts index 4df49f5..9501241 100644 --- a/src/editor/core/draw/particle/PageBreak.ts +++ b/src/editor/core/draw/particle/PageBreak.ts @@ -1,19 +1,18 @@ +import { DeepRequired } from '../../../interface/Common' import { IEditorOption } from '../../../interface/Editor' import { IRowElement } from '../../../interface/Row' +import { I18n } from '../../i18n/I18n' import { Draw } from '../Draw' export class PageBreakParticle { - static readonly font: string = 'Yahei' - static readonly fontSize: number = 12 - static readonly displayName: string = '分页符' - static readonly lineDash: number[] = [3, 1] - private draw: Draw - private options: Required + private options: DeepRequired + private i18n: I18n constructor(draw: Draw) { this.draw = draw this.options = draw.getOptions() + this.i18n = draw.getI18n() } public render( @@ -22,7 +21,10 @@ export class PageBreakParticle { x: number, y: number ) { - const { font, fontSize, displayName, lineDash } = PageBreakParticle + const { + pageBreak: { font, fontSize, lineDash } + } = this.options + const displayName = this.i18n.t('pageBreak.displayName') const { scale, defaultRowMargin } = this.options const size = fontSize * scale const elementWidth = element.width! diff --git a/src/editor/core/i18n/lang/en.json b/src/editor/core/i18n/lang/en.json index 7c03137..e8e22c4 100644 --- a/src/editor/core/i18n/lang/en.json +++ b/src/editor/core/i18n/lang/en.json @@ -69,5 +69,8 @@ "frame": { "header": "Header", "footer": "Footer" + }, + "pageBreak": { + "displayName": "Page Break" } -} \ No newline at end of file +} diff --git a/src/editor/core/i18n/lang/zh-CN.json b/src/editor/core/i18n/lang/zh-CN.json index 7c69215..de44f3f 100644 --- a/src/editor/core/i18n/lang/zh-CN.json +++ b/src/editor/core/i18n/lang/zh-CN.json @@ -69,5 +69,8 @@ "frame": { "header": "页眉", "footer": "页脚" + }, + "pageBreak": { + "displayName": "分页符" } -} \ No newline at end of file +} diff --git a/src/editor/dataset/constant/PageBreak.ts b/src/editor/dataset/constant/PageBreak.ts new file mode 100644 index 0000000..b1621ba --- /dev/null +++ b/src/editor/dataset/constant/PageBreak.ts @@ -0,0 +1,7 @@ +import { IPageBreak } from '../../interface/PageBreak' + +export const defaultPageBreakOption: Readonly> = { + font: 'Yahei', + fontSize: 12, + lineDash: [3, 1] +} diff --git a/src/editor/index.ts b/src/editor/index.ts index 6f4668c..bb90342 100644 --- a/src/editor/index.ts +++ b/src/editor/index.ts @@ -63,6 +63,8 @@ import { IGroup } from './interface/Group' import { defaultGroupOption } from './dataset/constant/Group' import { IRangeStyle } from './interface/Listener' import { Override } from './core/override/Override' +import { defaultPageBreakOption } from './dataset/constant/PageBreak' +import { IPageBreak } from './interface/PageBreak' export default class Editor { public command: Command @@ -118,6 +120,10 @@ export default class Editor { ...defaultGroupOption, ...options.group } + const pageBreakOptions: Required = { + ...defaultPageBreakOption, + ...options.pageBreak + } const editorOptions: DeepRequired = { mode: EditorMode.EDIT, @@ -168,7 +174,8 @@ export default class Editor { cursor: cursorOptions, title: titleOptions, placeholder: placeholderOptions, - group: groupOptions + group: groupOptions, + pageBreak: pageBreakOptions } // 数据处理 let headerElementList: IElement[] = [] diff --git a/src/editor/interface/Editor.ts b/src/editor/interface/Editor.ts index 3a3ba73..e298320 100644 --- a/src/editor/interface/Editor.ts +++ b/src/editor/interface/Editor.ts @@ -12,6 +12,7 @@ import { IFooter } from './Footer' import { IGroup } from './Group' import { IHeader } from './Header' import { IMargin } from './Margin' +import { IPageBreak } from './PageBreak' import { IPageNumber } from './PageNumber' import { IPlaceholder } from './Placeholder' import { ITitleOption } from './Title' @@ -72,6 +73,7 @@ export interface IEditorOption { title?: ITitleOption placeholder?: IPlaceholder group?: IGroup + pageBreak?: IPageBreak } export interface IEditorResult { diff --git a/src/editor/interface/PageBreak.ts b/src/editor/interface/PageBreak.ts new file mode 100644 index 0000000..683b27d --- /dev/null +++ b/src/editor/interface/PageBreak.ts @@ -0,0 +1,5 @@ +export interface IPageBreak { + font?: string + fontSize?: number + lineDash?: number[] +}