tdesign-mobile-vue
Version:
tdesign-mobile-vue
1 lines • 22.5 kB
Source Map (JSON)
{"version":3,"file":"message.mjs","sources":["../../src/message/message.tsx"],"sourcesContent":["import { h, ref, computed, watch, defineComponent, toRefs, reactive, nextTick, onMounted, Transition } from 'vue';\nimport { CheckCircleFilledIcon, CloseIcon, InfoCircleFilledIcon, ErrorCircleFilledIcon } from 'tdesign-icons-vue-next';\nimport { isString, isObject } from 'lodash-es';\n\nimport Link from '../link';\nimport props from './props';\nimport { MessageMarquee, TdMessageProps } from './type';\nimport config from '../config';\nimport { hasStyleUnit } from '../_common/js/utils/helper';\nimport useVModel from '../hooks/useVModel';\nimport { usePrefixClass } from '../hooks/useClass';\nimport { useTNodeJSX, useContent } from '../hooks/tnode';\n\nconst { prefix } = config;\nconst iconDefault = {\n info: h(InfoCircleFilledIcon),\n success: h(CheckCircleFilledIcon),\n warning: h(ErrorCircleFilledIcon),\n error: h(ErrorCircleFilledIcon),\n};\nconst closeBtnDefault = h(CloseIcon);\nlet messageIndex = -1;\n\nexport interface MessagePluginOptions extends TdMessageProps {\n /**\n * 指定消息组件的挂载容器,默认挂载到 `document.body`。可传入 DOM 元素,将消息渲染到指定容器内\n * @default document.body\n */\n context?: Element;\n}\n\nexport default defineComponent({\n name: `${prefix}-message`,\n props,\n setup(props, context) {\n const messageClass = usePrefixClass('message');\n const renderTNodeJSX = useTNodeJSX();\n const renderContent = useContent();\n const messageRef = ref<HTMLElement>(null);\n const rect = ref<DOMRect>();\n\n // 初始化动画相关数据\n const state = reactive({\n duration: 0,\n offset: 0,\n listWidth: 0,\n itemWidth: 0,\n scroll: {\n marquee: false,\n speed: 50,\n loop: -1, // 值为 -1 表示循环播放,值为 0 表示不循环播放\n delay: 300,\n },\n });\n\n const { visible, modelValue } = toRefs(props);\n const [currentVisible, setVisible] = useVModel(visible, modelValue, props.defaultVisible);\n\n const rootClasses = computed(() => ({\n [`${messageClass.value}`]: true,\n [`${messageClass.value}--${props.theme}`]: true,\n [`${messageClass.value}-align--${props.align}`]: !!props.align,\n }));\n\n const textWrapClasses = computed(() => ({\n [`${messageClass.value}__text-wrap`]: true,\n [`${messageClass.value}__text-nowrap`]: props.marquee,\n }));\n\n const getGap = () => {\n if (props.single) return 0;\n let gap = parseFloat(String(props.gap)) || 0;\n if (props.gap === true) gap = 12;\n return (gap + (rect.value?.height || 0)) * messageIndex;\n };\n\n // 将 offset 项转换为 CSS 长度值,index === 0 时叠加 gap\n const toCSSValue = (val: string | number, gap: number): string => {\n if (isString(val) && hasStyleUnit(val)) {\n return gap ? `calc(${val} + ${gap}px)` : val;\n }\n return `${(parseFloat(String(val)) || 0) + gap}px`;\n };\n\n const changeNumToStr = (arr: TdMessageProps['offset'] = []) => {\n return arr.map((item, index) => toCSSValue(item, index === 0 ? getGap() : 0));\n };\n\n const getMessageStylesOffset = (offset: TdMessageProps['offset']) => {\n rect.value = messageRef.value?.getBoundingClientRect() as DOMRect;\n const arr = changeNumToStr(offset);\n\n return {\n top: arr[0],\n right: arr[1],\n left: arr[1],\n };\n };\n\n const rootStyles = computed(() => {\n const { offset } = props;\n const offsetStyle: any = offset ? getMessageStylesOffset(offset) : [];\n return {\n zIndex: props.zIndex,\n ...offsetStyle,\n };\n });\n\n // link\n const linkContent = computed(() => {\n if (typeof props.link === 'function' || context.slots?.link) {\n return renderTNodeJSX('link');\n }\n\n if (isObject(props.link) || isString(props.link)) {\n const _link = isObject(props.link) ? { ...props.link } : { content: props.link };\n return h(Link, { theme: 'primary', ..._link });\n }\n return null;\n });\n\n // 动画\n const animateStyle = computed(() => ({\n transform: state.offset ? `translateX(${state.offset}px)` : '',\n transitionDuration: `${state.duration}s`,\n transitionTimingFunction: 'linear',\n }));\n\n const textWrapDOM = ref();\n const textDOM = ref();\n\n const handleScrolling = () => {\n if (!props?.marquee || (isObject(props?.marquee) && (props?.marquee as MessageMarquee))?.loop === 0) {\n return;\n }\n\n const { loop, speed, delay } = state.scroll;\n\n state.scroll = {\n marquee: true,\n // 负数统一当作循环播放\n loop: Math.max(\n props.marquee === true || (props.marquee as MessageMarquee)?.loop == null\n ? loop\n : (props.marquee as MessageMarquee)?.loop,\n -1,\n ),\n // 速度必须为正数\n speed: Math.max(\n props.marquee === true || (props.marquee as MessageMarquee)?.speed == null\n ? speed\n : (props.marquee as MessageMarquee)?.speed,\n 1,\n ),\n // 延迟不可为负数\n delay: Math.max(\n props.marquee === true || (props.marquee as MessageMarquee)?.delay == null\n ? delay\n : (props.marquee as MessageMarquee)?.delay,\n 0,\n ),\n };\n state.offset = 0;\n\n // 设置动画\n setTimeout(() => {\n const textWrapDOMWidth = textWrapDOM.value?.getBoundingClientRect().width;\n const textDOMWidth = textDOM.value?.getBoundingClientRect().width;\n state.offset = -textDOMWidth;\n state.duration = textDOMWidth / state.scroll.speed;\n state.listWidth = textWrapDOMWidth;\n state.itemWidth = textDOMWidth;\n }, state.scroll.delay);\n };\n\n // 动画结束后,初始化动画\n const handleTransitionend = () => {\n resetTransition();\n\n if (state.scroll.loop === -1) {\n return;\n }\n\n state.scroll.loop = --state.scroll.loop;\n\n if (state.scroll.loop === 0) {\n state.scroll.marquee = false;\n }\n };\n\n const resetTransition = () => {\n state.duration = 0;\n state.offset = state.listWidth;\n\n setTimeout(() => {\n state.offset = -state.itemWidth;\n state.duration = (state.itemWidth + state.listWidth) / state.scroll.speed;\n }, 0);\n };\n\n const onLinkClick = (e: MouseEvent) => {\n props.onLinkClick?.({ e });\n };\n\n const onCloseBtnClick = (e: MouseEvent) => {\n props.onCloseBtnClick?.({ e });\n setVisible(false);\n };\n\n const handleDuration = () => {\n if (props.duration > 0) {\n setTimeout(() => {\n props.onDurationEnd?.();\n setVisible(false);\n }, props.duration);\n }\n };\n\n onMounted(() => {\n nextTick(() => {\n if (currentVisible.value) {\n handleScrolling();\n }\n });\n });\n\n const updateMessageIndex = (isAdd = true) => {\n if (props.single) return;\n if (isAdd) {\n messageIndex += 1;\n } else {\n messageIndex -= 1;\n }\n };\n\n watch(\n () => currentVisible.value,\n (val) => {\n if (val === false) {\n updateMessageIndex(false);\n return;\n }\n updateMessageIndex(true);\n setVisible(true);\n handleDuration();\n nextTick(handleScrolling);\n },\n );\n\n return () => {\n const prefixIconContent = renderTNodeJSX('icon', { defaultNode: iconDefault?.[props.theme || 'info'] });\n const computedContent = renderContent('default', 'content');\n const closeBtnContent = renderTNodeJSX('closeBtn', { defaultNode: closeBtnDefault });\n\n return (\n <Transition name=\"message\">\n {currentVisible.value && (\n <div ref={messageRef} class={rootClasses.value} style={rootStyles.value}>\n {prefixIconContent && <div class={`${messageClass.value}__icon--left`}>{prefixIconContent}</div>}\n <div ref={textWrapDOM} class={textWrapClasses.value}>\n <div\n ref={textDOM}\n class={`${messageClass.value}__text`}\n style={state.scroll.marquee ? animateStyle.value : ''}\n onTransitionend={handleTransitionend}\n >\n {computedContent}\n </div>\n </div>\n {linkContent.value && (\n <div class={`${messageClass.value}__link`} onClick={onLinkClick}>\n {linkContent.value}\n </div>\n )}\n {closeBtnContent && (\n <div\n class={[`${messageClass.value}__close-wrap`, `${messageClass.value}__icon--right`]}\n onClick={onCloseBtnClick}\n >\n {closeBtnContent}\n </div>\n )}\n </div>\n )}\n </Transition>\n );\n };\n },\n});\n"],"names":["prefix","config","iconDefault","info","h","InfoCircleFilledIcon","success","CheckCircleFilledIcon","warning","ErrorCircleFilledIcon","error","closeBtnDefault","CloseIcon","messageIndex","defineComponent","name","props","setup","context","messageClass","usePrefixClass","renderTNodeJSX","useTNodeJSX","renderContent","useContent","messageRef","ref","rect","state","reactive","duration","offset","listWidth","itemWidth","scroll","marquee","speed","loop","delay","_toRefs","toRefs","visible","modelValue","_useVModel","useVModel","defaultVisible","_useVModel2","_slicedToArray","currentVisible","setVisible","rootClasses","computed","_defineProperty","concat","value","theme","align","textWrapClasses","getGap","_rect$value","single","gap","parseFloat","String","height","toCSSValue","val","isString","hasStyleUnit","changeNumToStr","arr","arguments","length","undefined","map","item","index","getMessageStylesOffset","_messageRef$value","getBoundingClientRect","top","right","left","rootStyles","offsetStyle","_objectSpread","zIndex","linkContent","_context$slots","link","slots","isObject","_link","content","Link","animateStyle","transform","transitionDuration","transitionTimingFunction","textWrapDOM","textDOM","handleScrolling","_ref3","_props2$marquee","_props2$marquee2","_props2$marquee3","_props2$marquee4","_props2$marquee5","_props2$marquee6","_state$scroll","Math","max","setTimeout","_textWrapDOM$value","_textDOM$value","textWrapDOMWidth","width","textDOMWidth","handleTransitionend","resetTransition","onLinkClick","e","_props2$onLinkClick","onCloseBtnClick","_props2$onCloseBtnCli","handleDuration","_props2$onDurationEnd","onDurationEnd","onMounted","nextTick","updateMessageIndex","isAdd","watch","prefixIconContent","defaultNode","computedContent","closeBtnContent","_createVNode","Transition","default","_default"],"mappings":"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"}