UNPKG

tdesign-mobile-vue

Version:
1 lines 21.6 kB
{"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 } 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 { reconvertUnit } from '../shared';\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(InfoCircleFilledIcon),\n error: h(InfoCircleFilledIcon),\n};\nconst closeBtnDefault = h(CloseIcon);\nlet messageIndex = -1;\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) {\n return 0;\n }\n const gap = typeof props.gap === 'boolean' ? 12 : reconvertUnit(props.gap);\n\n return (gap + (rect.value?.height || 0)) * messageIndex;\n };\n\n const changeNumToStr = (arr: TdMessageProps['offset'] = []) => {\n return arr.map(function (item, index) {\n const value = reconvertUnit(item);\n return index === 0 ? `${value + getGap()}px` : `${value}px`;\n });\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","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","reconvertUnit","height","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","isString","_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","val","prefixIconContent","defaultNode","computedContent","closeBtnContent","_createVNode","Transition","default","_default"],"mappings":"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"}