vxe-pc-ui
Version:
A vue based PC component library
1 lines • 2.3 kB
JavaScript
;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:[],setup(l,e){const{slots:c,emit:r}=e,t=(0,_vue.inject)("$xeTabs",null);var i=_xeUtils.default.uniqueId();const v=(0,_ui.useSize)(l)["computeSize"],d=(0,_vue.ref)(),_=(0,_vue.ref)(),f=(0,_vue.reactive)({animationDuration:0}),n={refElem:d},p=(0,_vue.computed)(()=>{var e=l["content"];return""+(e||"")});var u=(0,_vue.computed)(()=>t?t.reactData.resizeFlag:null);const o={},m={xID:i,props:l,context:e,reactData:f,getRefMaps:()=>n,getComputeMaps:()=>o};const a=()=>{var t=l["speed"],i=_.value;if(i){let e=46;"fast"===t?e=118:"slow"===t&&(e=18),f.animationDuration=Math.ceil(i.scrollWidth/e)}};Object.assign(m,{dispatchEvent:(e,t,i)=>{r(e,(0,_ui.createEvent)(i,{$noticeBar:m},t))}},{});return(0,_vue.watch)(u,()=>{a()}),(0,_vue.onMounted)(()=>{_ui.globalEvents.on(m,"resize",a),a()}),(0,_vue.onBeforeUnmount)(()=>{_ui.globalEvents.off(m,"resize")}),m.renderVN=()=>{var{vertical:e,duration:t,direction:i}=l,r=f["animationDuration"],n=v.value,u=p.value,o=c.default,a=c.prefix,s=c.suffix;return(0,_vue.h)("div",{ref:d,class:["vxe-notice-bar","is--"+(e?"vertical":"horizontal"),"dir--"+(i||"left"),{["size--"+n]:n}]},[a?(0,_vue.h)("div",{class:"vxe-notice-bar--prefix"},a({})):(0,_ui.renderEmptyElement)(m),(0,_vue.h)("div",{class:"vxe-notice-bar--content"},[(0,_vue.h)("div",{ref:_,class:"vxe-notice-bar--inner"},[(0,_vue.h)("div",{class:"vxe-notice-bar--wrapper",style:{animationDuration:t?(0,_dom.toCssUnit)(t,"s"):r+"s"}},o?o({}):u)])]),s?(0,_vue.h)("div",{class:"vxe-notice-bar--suffix"},s({})):(0,_ui.renderEmptyElement)(m)])},m},render(){return this.renderVN()}});