UNPKG

vxe-pc-ui

Version:
1 lines 2.52 kB
Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _vue=require("vue"),_comp=require("../../ui/src/comp"),_xeUtils=_interopRequireDefault(require("xe-utils")),_ui=require("../../ui"),_dom=require("../../ui/src/dom");function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var _default=exports.default=(0,_comp.defineVxeComponent)({name:"VxeNoticeBar",props:{duration:[String,Number],direction:{type:String,default:()=>(0,_ui.getConfig)().noticeBar.direction},speed:{type:String,default:()=>(0,_ui.getConfig)().noticeBar.speed},content:String,vertical:Boolean,loop:{type:Boolean},size:{type:String,default:()=>(0,_ui.getConfig)().noticeBar.size||(0,_ui.getConfig)().size}},emits:["start","end"],setup(c,e){let{slots:d,emit:r}=e,t=(0,_vue.inject)("$xeTabs",null);var i=_xeUtils.default.uniqueId();let _=(0,_ui.useSize)(c).computeSize,p=(0,_vue.ref)(),f=(0,_vue.ref)(),m=(0,_vue.reactive)({animationStatus:!1,animationDuration:0}),n={refElem:p},x=(0,_vue.computed)(()=>{var e=c.content;return""+(e||"")});var a=(0,_vue.computed)(()=>t?t.reactData.resizeFlag:null);let o={},g={xID:i,props:c,context:e,reactData:m,getRefMaps:()=>n,getComputeMaps:()=>o},u=(e,t,i)=>{r(e,(0,_ui.createEvent)(i,{$noticeBar:g},t))};i={dispatchEvent:u};let s=()=>{var t=c.speed,i=f.value;if(i){let e=46;"fast"===t?e=118:"slow"===t&&(e=18),m.animationDuration=Math.ceil(i.scrollWidth/e)}},b=e=>{m.animationStatus=!0,u("start",{status:!0},e)},h=e=>{m.animationStatus=!1,u("end",{status:!1},e)};Object.assign(g,i,{});return(0,_vue.watch)(a,()=>{s()}),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(g,"resize",s),s()}),(0,_vue.onBeforeUnmount)(()=>{_ui.globalEvents.off(g,"resize")}),g.renderVN=()=>{var{vertical:e,duration:t,direction:i,loop:r}=c,{animationDuration:n,animationStatus:a}=m,o=_.value,u=x.value,s=d.default,l=d.prefix,v=d.suffix;return(0,_vue.h)("div",{ref:p,class:["vxe-notice-bar","is--"+(e?"vertical":"horizontal"),"dir--"+(i||"left"),{["size--"+o]:o,"is--loop":r}]},[l?(0,_vue.h)("div",{class:"vxe-notice-bar--prefix"},l({})):(0,_ui.renderEmptyElement)(g),(0,_vue.h)("div",{class:"vxe-notice-bar--content"},[(0,_vue.h)("div",{ref:f,class:"vxe-notice-bar--inner"},[(0,_vue.h)("div",{class:["vxe-notice-bar--wrapper","is--"+(a?"progress":"end")],style:{animationDuration:t?(0,_dom.toCssUnit)(t,"s"):n+"s"},onAnimationstart:b,onAnimationend:h},s?s({}):u)])]),v?(0,_vue.h)("div",{class:"vxe-notice-bar--suffix"},v({})):(0,_ui.renderEmptyElement)(g)])},g},render(){return this.renderVN()}});