diff --git a/src/_common b/src/_common index ba004bca..c4e7f4f2 160000 --- a/src/_common +++ b/src/_common @@ -1 +1 @@ -Subproject commit ba004bca90d1f484ccb701653ed6b8748bd8a161 +Subproject commit c4e7f4f27fd3608b4b514b5bce3f0152a560173a diff --git a/src/notice-bar/NoticeBar.tsx b/src/notice-bar/NoticeBar.tsx index 4f4b6e20..d2f4df6e 100644 --- a/src/notice-bar/NoticeBar.tsx +++ b/src/notice-bar/NoticeBar.tsx @@ -14,7 +14,9 @@ import useDefaultProps from '../hooks/useDefaultProps'; import { noticeBarDefaultProps } from './defaultProps'; import noop from '../_util/noop'; -export interface NoticeBarProps extends TdNoticeBarProps, StyledProps {} +export interface NoticeBarProps extends TdNoticeBarProps, StyledProps { + touchable?: Boolean; +} type IconType = ReturnType; @@ -108,6 +110,7 @@ const NoticeBar: React.FC = (props) => { theme = 'info', visible, defaultVisible, + touchable = false, onClick, } = useDefaultProps(props, noticeBarDefaultProps); @@ -179,7 +182,7 @@ const NoticeBar: React.FC = (props) => { setTimeout(() => { const listDOMWidth = listDOM.current?.getBoundingClientRect().width; const itemDOMWidth = itemDOM.current?.getBoundingClientRect().width; - if (itemDOMWidth > listDOMWidth) { + if (marquee || itemDOMWidth > listDOMWidth) { updateAnimationFrame({ offset: -itemDOMWidth, duration: itemDOMWidth / animationSettingValue.current.scroll.speed, @@ -273,7 +276,8 @@ const NoticeBar: React.FC = (props) => { loop direction={direction} duration={2000} - height={22} + touchable={touchable} + style={{ height: 'var(--td-notice-bar-height, 22px)' }} > {content.map((item, index) => ( diff --git a/src/swiper/Swiper.tsx b/src/swiper/Swiper.tsx index c3b38563..d3c4bf29 100644 --- a/src/swiper/Swiper.tsx +++ b/src/swiper/Swiper.tsx @@ -10,6 +10,7 @@ import forwardRefWithStatics from '../_util/forwardRefWithStatics'; export interface SwiperProps extends TdSwiperProps, StyledProps { children?: React.ReactNode; + touchable?: Boolean; } const Swiper = forwardRefWithStatics( @@ -29,6 +30,7 @@ const Swiper = forwardRefWithStatics( className, style, children, + touchable = true, // 是否可以通过手势滑动 } = props; const { classPrefix } = useConfig(); @@ -179,11 +181,15 @@ const Swiper = forwardRefWithStatics( }, duration + 50); // 多 50ms 的间隔时间防止动画未执行完就跳转了 }, [currentIndex, swiperItemLength, duration, direction]); - /** ****************************************************************** - * 触摸事件处理方法 - */ // 触摸滑动事件 - 开始 const handleTouchStart = (e: React.TouchEvent) => { + if ( + !touchable || + // avoid resetting position on multi-finger touch + e.touches.length > 1 + ) + return; + e.stopPropagation(); isHovering.current = true; clearTimer(); @@ -197,6 +203,7 @@ const Swiper = forwardRefWithStatics( // 触摸滑动事件 - 滑动中 const handleTouchMove = useCallback( (e: React.TouchEvent) => { + if (!touchable) return; e.stopPropagation(); if (moveStartSite) { @@ -221,11 +228,12 @@ const Swiper = forwardRefWithStatics( } } }, - [setTouchMoveDistance, moveStartSite, direction, currentIndex, loop, childrenLength], + [setTouchMoveDistance, moveStartSite, direction, currentIndex, loop, childrenLength, touchable], ); // 触摸滑动事件 - 结束 const handleTouchEnd = (e: React.TouchEvent) => { + if (!touchable) return; e.stopPropagation(); if (touchMoveDistance / swiperOuterWidth <= -0.3) { // swiperTo(currentIndex + 1, { source: 'touch' }); diff --git a/test/snap/__snapshots__/csr.test.jsx.snap b/test/snap/__snapshots__/csr.test.jsx.snap index 03b6b8a8..a913e1c6 100644 --- a/test/snap/__snapshots__/csr.test.jsx.snap +++ b/test/snap/__snapshots__/csr.test.jsx.snap @@ -33440,7 +33440,7 @@ exports[`csr snapshot test > csr test src/notice-bar/_example/mobile.tsx 1`] = ` >
csr test src/notice-bar/_example/mobile.tsx 1`] = ` >
csr test src/notice-bar/_example/mobile.tsx 1`] = `
csr test src/notice-bar/_example/mobile.tsx 1`] = `
csr test src/notice-bar/_example/mobile.tsx 1`] = `
csr test src/notice-bar/_example/mobile.tsx 1`] = `
csr test src/notice-bar/_example/mobile.tsx 1`] = `
csr test src/notice-bar/_example/mobile.tsx 1`] = `
csr test src/notice-bar/_example/scrolling.tsx 1`] >
csr test src/notice-bar/_example/scrolling.tsx 1`] >
csr test src/notice-bar/_example/scrolling.tsx 1`]
csr test src/notice-bar/_example/scrolling.tsx 1`]
csr test src/notice-bar/_example/scrolling.tsx 1`]
csr test src/notice-bar/_example/scrolling.tsx 1`]
csr test src/notice-bar/_example/scrolling.tsx 1`]
csr test src/notice-bar/_example/scrolling.tsx 1`]
ssr test src/notice-bar/_example/event.tsx 1`] = `" exports[`ssr snapshot test > ssr test src/notice-bar/_example/iconDemo.tsx 1`] = `"
提示文字描述提示文字描述提示文字描述
"`; -exports[`ssr snapshot test > ssr test src/notice-bar/_example/mobile.tsx 1`] = `"

NoticeBar 公告栏

在导航栏下方,用于给用户显示提示消息。

01 组件类型

纯文字的公告栏

这是一条普通的通知消息

带图标静态公告栏

提示文字描述提示文字描述提示文字描述

带关闭的公告栏

这是一条普通的通知信息

带入口的公告栏

这是一条普通的消息通知

自定样式的公告栏

提示文字描述提示文字描述提示文字描述

自定义内容的公告栏

提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述详情

02 组件状态

公告栏类型有普通(info)、警示(warning)、成功(success)、错误(error)

默认状态公告栏默认状态公告栏
成功状态公告栏成功状态公告栏
警示状态公告栏警示状态公告栏
错误状态公告栏错误状态公告栏

03 可滚动的公告栏

可滚动公告栏有水平 (horizontal) 和垂直 (vertical)

提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; +exports[`ssr snapshot test > ssr test src/notice-bar/_example/mobile.tsx 1`] = `"

NoticeBar 公告栏

在导航栏下方,用于给用户显示提示消息。

01 组件类型

纯文字的公告栏

这是一条普通的通知消息

带图标静态公告栏

提示文字描述提示文字描述提示文字描述

带关闭的公告栏

这是一条普通的通知信息

带入口的公告栏

这是一条普通的消息通知

自定样式的公告栏

提示文字描述提示文字描述提示文字描述

自定义内容的公告栏

提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述详情

02 组件状态

公告栏类型有普通(info)、警示(warning)、成功(success)、错误(error)

默认状态公告栏默认状态公告栏
成功状态公告栏成功状态公告栏
警示状态公告栏警示状态公告栏
错误状态公告栏错误状态公告栏

03 可滚动的公告栏

可滚动公告栏有水平 (horizontal) 和垂直 (vertical)

提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; -exports[`ssr snapshot test > ssr test src/notice-bar/_example/scrolling.tsx 1`] = `"
提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; +exports[`ssr snapshot test > ssr test src/notice-bar/_example/scrolling.tsx 1`] = `"
提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; exports[`ssr snapshot test > ssr test src/notice-bar/_example/suffixIcon.tsx 1`] = `"
这是一条普通的通知信息
"`; diff --git a/test/snap/__snapshots__/ssr.test.jsx.snap b/test/snap/__snapshots__/ssr.test.jsx.snap index 98475edd..14a1a426 100644 --- a/test/snap/__snapshots__/ssr.test.jsx.snap +++ b/test/snap/__snapshots__/ssr.test.jsx.snap @@ -282,9 +282,9 @@ exports[`ssr snapshot test > ssr test src/notice-bar/_example/event.tsx 1`] = `" exports[`ssr snapshot test > ssr test src/notice-bar/_example/iconDemo.tsx 1`] = `"
提示文字描述提示文字描述提示文字描述
"`; -exports[`ssr snapshot test > ssr test src/notice-bar/_example/mobile.tsx 1`] = `"

NoticeBar 公告栏

在导航栏下方,用于给用户显示提示消息。

01 组件类型

纯文字的公告栏

这是一条普通的通知消息

带图标静态公告栏

提示文字描述提示文字描述提示文字描述

带关闭的公告栏

这是一条普通的通知信息

带入口的公告栏

这是一条普通的消息通知

自定样式的公告栏

提示文字描述提示文字描述提示文字描述

自定义内容的公告栏

提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述详情

02 组件状态

公告栏类型有普通(info)、警示(warning)、成功(success)、错误(error)

默认状态公告栏默认状态公告栏
成功状态公告栏成功状态公告栏
警示状态公告栏警示状态公告栏
错误状态公告栏错误状态公告栏

03 可滚动的公告栏

可滚动公告栏有水平 (horizontal) 和垂直 (vertical)

提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; +exports[`ssr snapshot test > ssr test src/notice-bar/_example/mobile.tsx 1`] = `"

NoticeBar 公告栏

在导航栏下方,用于给用户显示提示消息。

01 组件类型

纯文字的公告栏

这是一条普通的通知消息

带图标静态公告栏

提示文字描述提示文字描述提示文字描述

带关闭的公告栏

这是一条普通的通知信息

带入口的公告栏

这是一条普通的消息通知

自定样式的公告栏

提示文字描述提示文字描述提示文字描述

自定义内容的公告栏

提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述提示文字描述详情

02 组件状态

公告栏类型有普通(info)、警示(warning)、成功(success)、错误(error)

默认状态公告栏默认状态公告栏
成功状态公告栏成功状态公告栏
警示状态公告栏警示状态公告栏
错误状态公告栏错误状态公告栏

03 可滚动的公告栏

可滚动公告栏有水平 (horizontal) 和垂直 (vertical)

提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; -exports[`ssr snapshot test > ssr test src/notice-bar/_example/scrolling.tsx 1`] = `"
提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; +exports[`ssr snapshot test > ssr test src/notice-bar/_example/scrolling.tsx 1`] = `"
提示文字描述提示文字描述提示文字描述提示文字描述文
提示文字描述提示文字描述提示文字描述提示文字描述文
莫使金樽空对月
君不见
高堂明镜悲白发
朝如青丝暮成雪
人生得意须尽欢
莫使金樽空对月
君不见
"`; exports[`ssr snapshot test > ssr test src/notice-bar/_example/suffixIcon.tsx 1`] = `"
这是一条普通的通知信息
"`;