diff --git a/CHANGELOG.md b/CHANGELOG.md index 758d0b9..8293e99 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,11 @@ + +## 0.11.9 + +新增设置面板控制对吸附缩放等行为进行控制。 + +修复弹窗按钮样式问题。 + +修复部分提示语不显示问题。 ## 0.11.8 timeline增加自动聚焦功能。 diff --git a/packages/dooringx-dumi-doc/docs/ChangeLog/index.en.md b/packages/dooringx-dumi-doc/docs/ChangeLog/index.en.md index b379bb1..fca8d56 100644 --- a/packages/dooringx-dumi-doc/docs/ChangeLog/index.en.md +++ b/packages/dooringx-dumi-doc/docs/ChangeLog/index.en.md @@ -5,6 +5,10 @@ nav: title: change log order: 6 --- +## 0.11.9 +A new setting panel is added to control adsorption scaling and other behaviors. +Fixed pop up button style issue. +Fixed the problem that some prompts do not display. ## 0.11.8 Timeline adds auto focus function. ## 0.11.7 diff --git a/packages/dooringx-dumi-doc/docs/ChangeLog/index.md b/packages/dooringx-dumi-doc/docs/ChangeLog/index.md index 6504419..e95f3da 100644 --- a/packages/dooringx-dumi-doc/docs/ChangeLog/index.md +++ b/packages/dooringx-dumi-doc/docs/ChangeLog/index.md @@ -5,6 +5,14 @@ nav: title: 变更日志 order: 6 --- + +## 0.11.9 + +新增设置面板控制对吸附缩放等行为进行控制。 + +修复弹窗按钮样式问题。 + +修复部分提示语不显示问题。 ## 0.11.8 timeline增加自动聚焦功能。 diff --git a/packages/dooringx-example/src/layouts/index.tsx b/packages/dooringx-example/src/layouts/index.tsx index 014125b..9bfc646 100644 --- a/packages/dooringx-example/src/layouts/index.tsx +++ b/packages/dooringx-example/src/layouts/index.tsx @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-07-07 14:51:17 * @LastEditors: yehuozhili - * @LastEditTime: 2021-09-28 16:33:32 + * @LastEditTime: 2022-01-13 13:22:40 * @FilePath: \dooringx\packages\dooringx-example\src\layouts\index.tsx */ import { Button } from 'antd'; diff --git a/packages/dooringx-lib/package.json b/packages/dooringx-lib/package.json index 998a980..3fd0b66 100644 --- a/packages/dooringx-lib/package.json +++ b/packages/dooringx-lib/package.json @@ -1,5 +1,5 @@ { - "version": "0.11.8", + "version": "0.11.9", "license": "MIT", "main": "dist/index.js", "module": "dist/dooringx-lib.esm.js", diff --git a/packages/dooringx-lib/src/components/IframeWrapperMove/ticker.tsx b/packages/dooringx-lib/src/components/IframeWrapperMove/ticker.tsx index a38eadf..971635a 100644 --- a/packages/dooringx-lib/src/components/IframeWrapperMove/ticker.tsx +++ b/packages/dooringx-lib/src/components/IframeWrapperMove/ticker.tsx @@ -2,8 +2,8 @@ * @Author: yehuozhili * @Date: 2021-07-12 15:54:35 * @LastEditors: yehuozhili - * @LastEditTime: 2021-07-13 21:07:22 - * @FilePath: \dooringx\packages\dooringx-lib\src\components\wrapperMove\ticker.tsx + * @LastEditTime: 2022-01-13 13:41:16 + * @FilePath: \dooringx\packages\dooringx-lib\src\components\IframeWrapperMove\ticker.tsx */ import React, { useEffect, useRef, useState } from 'react'; import UserConfig from '../../config'; @@ -24,13 +24,17 @@ function Ticker(props: { config: UserConfig }) { if (topRef.current) { const width = topRef.current.getBoundingClientRect().width; const renderWidth = Math.ceil(width / 10 / scale); - setTopRender(renderWidth); + if (renderWidth < 2 ** 32 - 1) { + setTopRender(renderWidth); + } } // left可以不用放,但为了更新统一 if (leftRef.current) { const height = leftRef.current.getBoundingClientRect().height; const renderHeight = Math.ceil(height / 10 / scale); - setLeftRender(renderHeight); + if (renderHeight < 2 ** 32 - 1) { + setLeftRender(renderHeight); + } } }, 300); diff --git a/packages/dooringx-lib/src/components/control/control.tsx b/packages/dooringx-lib/src/components/control/control.tsx index 0940f2d..a239ed0 100644 --- a/packages/dooringx-lib/src/components/control/control.tsx +++ b/packages/dooringx-lib/src/components/control/control.tsx @@ -1,6 +1,7 @@ import { GatewayOutlined, LayoutOutlined, + SettingOutlined, SyncOutlined, UnorderedListOutlined, VideoCameraOutlined, @@ -11,6 +12,7 @@ import { UserConfig } from '../..'; import { wrapperMoveState } from '../wrapperMove/event'; import { replaceLocale } from '../../locale'; import { mouseUp, moveState } from './state'; +import SettingsModal from './settings'; export interface ControlProps { config: UserConfig; @@ -22,7 +24,8 @@ export function Control(props: PropsWithChildren) { const [visible, setVisible] = useState(false); const [configVisible, setConfigVisible] = useState(false); const [form] = Form.useForm(); - + const [settingVisible, setSettingVisible] = useState(false); + const [api, contextHolder] = message.useMessage(); const [xy, setXy] = useState({ x: 0, y: 0 }); return ( <> @@ -38,6 +41,7 @@ export function Control(props: PropsWithChildren) { ...style, }} > + {contextHolder} @@ -104,6 +108,12 @@ export function Control(props: PropsWithChildren) { props.config.getStore().forceUpdate(); }} > + ) { .getStoreChanger() .updateModal(props.config.getStore(), v); if (!sign.success && sign.sign === 0) { - message.error( + api.error( replaceLocale( 'modal.popup.save', '请保存弹窗后编辑其他弹窗', @@ -145,7 +155,7 @@ export function Control(props: PropsWithChildren) { ); } if (!sign.success && sign.sign === 1) { - message.error( + api.error( replaceLocale( 'modal.popup.notfond', `未找到该弹窗 ${sign.param}`, @@ -170,7 +180,7 @@ export function Control(props: PropsWithChildren) { .getStoreChanger() .removeModal(props.config.getStore(), v); if (!sign.success && sign.sign === 0) { - message.error( + api.error( replaceLocale( 'modal.popup.save', '请保存弹窗后编辑其他弹窗', @@ -179,7 +189,7 @@ export function Control(props: PropsWithChildren) { ); } if (!sign.success && sign.sign === 1) { - message.error( + api.error( replaceLocale( 'modal.popup.notfond', `未找到该弹窗 ${sign.param}`, @@ -227,12 +237,12 @@ export function Control(props: PropsWithChildren) { .newModalMap(props.config.getStore(), modalName); if (!sign.succeess && sign.sign === 0) { - message.error( + api.error( replaceLocale('modal.popup.save', `请保存弹窗后编辑其他弹窗`, props.config) ); } if (!sign.succeess && sign.sign === 1) { - message.error( + api.error( replaceLocale( 'modal.popup.repeat', `已有重名弹窗 ${sign.param}`, @@ -269,6 +279,21 @@ export function Control(props: PropsWithChildren) { + { + console.log(v); + props.config.marklineConfig.isAbsorb = v.absorb; + props.config.marklineConfig.indent = v.indent; + props.config.scaleState.minValue = v.min; + props.config.scaleState.maxValue = v.max; + props.config.timelineConfig.autoFocus = v.autofocus; + setSettingVisible(false); + }} + onCancel={() => setSettingVisible(false)} + message={api} + > ); } diff --git a/packages/dooringx-lib/src/components/control/settings.tsx b/packages/dooringx-lib/src/components/control/settings.tsx new file mode 100644 index 0000000..e7cd251 --- /dev/null +++ b/packages/dooringx-lib/src/components/control/settings.tsx @@ -0,0 +1,116 @@ +/* + * @Author: yehuozhili + * @Date: 2022-01-13 09:58:05 + * @LastEditors: yehuozhili + * @LastEditTime: 2022-01-13 13:44:42 + * @FilePath: \dooringx\packages\dooringx-lib\src\components\control\settings.tsx + */ + +import { Modal, Form, InputNumber, Radio } from 'antd'; +import { MessageInstance } from 'antd/lib/message'; +import React from 'react'; +import { memo } from 'react'; +import { UserConfig } from '../..'; +import { replaceLocale, zhCN } from '../../locale'; + +export interface SettingsModalPropsType { + visible: boolean; + config: UserConfig; + onOk: Function; + onCancel: Function; + message: MessageInstance; +} +const formItemLayout = { + labelCol: { + span: 12, + }, + wrapperCol: { + span: 12, + }, +}; + +function SettingsModal(props: SettingsModalPropsType) { + const [form] = Form.useForm(); + + return ( + props.onCancel()} + onOk={() => { + const res = form.getFieldsValue(); + const { min, max } = res; + if (max < min) { + props.message.error(replaceLocale('error.minmax', zhCN['error.minmax'], props.config)); + return; + } + // 判断当前scale大小,如果超出范围,取最低值 + const currentScale = props.config.scaleState.value; + if (currentScale < min || currentScale > max) { + props.config.scaleState.value = min; + } + props.onOk(res); + return; + }} + > +
+ + + {replaceLocale('on', zhCN['on'], props.config)} + {replaceLocale('off', zhCN['off'], props.config)} + + + + min={0.1}> + + + min={0.1} step={0.1}> + + + min={0.1} step={0.1}> + + + + {replaceLocale('on', zhCN['on'], props.config)} + {replaceLocale('off', zhCN['off'], props.config)} + + +
+
+ ); +} + +export default memo(SettingsModal); diff --git a/packages/dooringx-lib/src/components/wrapperMove/ticker.tsx b/packages/dooringx-lib/src/components/wrapperMove/ticker.tsx index a38eadf..c950993 100644 --- a/packages/dooringx-lib/src/components/wrapperMove/ticker.tsx +++ b/packages/dooringx-lib/src/components/wrapperMove/ticker.tsx @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-07-12 15:54:35 * @LastEditors: yehuozhili - * @LastEditTime: 2021-07-13 21:07:22 + * @LastEditTime: 2022-01-13 13:41:48 * @FilePath: \dooringx\packages\dooringx-lib\src\components\wrapperMove\ticker.tsx */ import React, { useEffect, useRef, useState } from 'react'; @@ -24,13 +24,18 @@ function Ticker(props: { config: UserConfig }) { if (topRef.current) { const width = topRef.current.getBoundingClientRect().width; const renderWidth = Math.ceil(width / 10 / scale); - setTopRender(renderWidth); + if (renderWidth < 2 ** 32 - 1) { + // new array的参数最大值 + setTopRender(renderWidth); + } } // left可以不用放,但为了更新统一 if (leftRef.current) { const height = leftRef.current.getBoundingClientRect().height; const renderHeight = Math.ceil(height / 10 / scale); - setLeftRender(renderHeight); + if (renderHeight < 2 ** 32 - 1) { + setLeftRender(renderHeight); + } } }, 300); diff --git a/packages/dooringx-lib/src/core/markline/normalMode.ts b/packages/dooringx-lib/src/core/markline/normalMode.ts index 1fdadbd..41b823a 100644 --- a/packages/dooringx-lib/src/core/markline/normalMode.ts +++ b/packages/dooringx-lib/src/core/markline/normalMode.ts @@ -125,8 +125,10 @@ export function marklineDisplay( } break; } - focus.top = Math.round(focus.top + diffY); - focus.left = Math.round(focus.left + diffX); + if (marklineConfig.isAbsorb) { + focus.top = Math.round(focus.top + diffY); + focus.left = Math.round(focus.left + diffX); + } } /** diff --git a/packages/dooringx-lib/src/locale/en.ts b/packages/dooringx-lib/src/locale/en.ts index c86bab3..576640b 100644 --- a/packages/dooringx-lib/src/locale/en.ts +++ b/packages/dooringx-lib/src/locale/en.ts @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-08-27 10:20:23 * @LastEditors: yehuozhili - * @LastEditTime: 2021-09-27 21:11:51 + * @LastEditTime: 2022-01-13 13:43:20 * @FilePath: \dooringx\packages\dooringx-lib\src\locale\en.ts */ @@ -30,12 +30,21 @@ export const en: typeof zhCN = { 'modal.popup.name': 'Please enter modal name', 'modal.name': 'Modal name', 'modal.control.remove': 'Delete click to delete the effect of the modal', - yes: 'yes', - no: 'no', + yes: 'Ok', + no: 'Cancel', 'right.noprops': 'No properties have been configured', 'right.global': 'Global config', 'right.containerheight': 'Container height', 'right.containerColor': 'Container background color', 'right.bodyColor': 'Body background color', title: 'Title', + 'system.setting': 'System Settings', + 'settings.openabsorb': 'Turn on adsorption', + on: 'on', + off: 'off', + 'settings.absorbindent': 'Adsorption spacing', + 'settings.min': 'Canvas zoom min', + 'settings.max': 'Canvas zoom max', + 'settings.autofocus': 'Auto scroll focus on the animation panel', + 'error.minmax': 'The maximum value should be greater than or equal to the minimum value', }; diff --git a/packages/dooringx-lib/src/locale/zh-CN.ts b/packages/dooringx-lib/src/locale/zh-CN.ts index d1d5110..1a14454 100644 --- a/packages/dooringx-lib/src/locale/zh-CN.ts +++ b/packages/dooringx-lib/src/locale/zh-CN.ts @@ -2,7 +2,7 @@ * @Author: yehuozhili * @Date: 2021-08-27 10:20:15 * @LastEditors: yehuozhili - * @LastEditTime: 2021-09-27 21:11:43 + * @LastEditTime: 2022-01-13 13:42:51 * @FilePath: \dooringx\packages\dooringx-lib\src\locale\zh-CN.ts */ export const zhCN = { @@ -35,4 +35,13 @@ export const zhCN = { 'right.containerColor': '容器底色', 'right.bodyColor': 'body底色', title: '标题', + 'system.setting': '系统设置', + 'settings.openabsorb': '开启吸附', + on: '开', + off: '关', + 'settings.absorbindent': '吸附间距', + 'settings.min': '画布缩放最小值', + 'settings.max': '画布缩放最大值', + 'settings.autofocus': '动画面板点击自动滚动聚焦', + 'error.minmax': '最大值应大于等于最小值', }; diff --git a/packages/dooringx-plugin-template/package.json b/packages/dooringx-plugin-template/package.json index 513abb9..b088b52 100644 --- a/packages/dooringx-plugin-template/package.json +++ b/packages/dooringx-plugin-template/package.json @@ -1,6 +1,6 @@ { "name": "dooringx-plugin-template", - "version": "0.11.8", + "version": "0.11.9", "description": "> TODO: description", "author": "yehuozhili <673632758@qq.com>", "homepage": "https://github.com/H5-Dooring/dooringx#readme", diff --git a/packages/dooringx-plugin-template/template/template.json b/packages/dooringx-plugin-template/template/template.json index b13aa45..62df5ba 100644 --- a/packages/dooringx-plugin-template/template/template.json +++ b/packages/dooringx-plugin-template/template/template.json @@ -40,7 +40,7 @@ "@rollup/plugin-node-resolve": "^13.0.4", "@rollup/plugin-url": "^6.1.0", "@svgr/rollup": "^5.5.0", - "dooringx-lib": "^0.11.8", + "dooringx-lib": "^0.11.9", "postcss": "^8.3.6", "rollup-plugin-peer-deps-external": "^2.2.4", "rollup-plugin-postcss": "^4.0.1",