UNPKG

ant-design-x-vue

Version:
2 lines (1 loc) 4.12 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const t=require("vue"),g=require("../chunks/helper-chunk.js"),j=require("ant-design-vue"),A=require("../_util/hooks/use-x-component-config.js");require("../x-provider/index.js");const E=require("./hooks/useTypedEffect.js"),F=require("./hooks/useTypingConfig.js"),O=require("./loading.js"),I=require("./style/index.js"),X=require("./context.js"),M=require("../x-provider/hooks/use-x-provider-context.js"),z=t.defineComponent({name:"AXBubble",__name:"Bubble",props:{prefixCls:{type:String,required:!1},rootClassName:{type:String,required:!1},styles:{type:Object,required:!1,default:()=>({})},classNames:{type:Object,required:!1,default:()=>({})},avatar:{type:[Object,Function],required:!1},placement:{type:String,required:!1,default:"start"},loading:{type:Boolean,required:!1,default:!1},typing:{type:null,required:!1},content:{type:null,required:!1,default:""},messageRender:{type:Function,required:!1},loadingRender:{type:Function,required:!1},variant:{type:String,required:!1,default:"filled"},shape:{type:String,required:!1},_key:{type:[Number,String],required:!1},onTypingComplete:{type:null,required:!1},header:{type:null,required:!1},footer:{type:null,required:!1}},setup(e,{expose:m}){const b=g.createPropsRestProxy(e,["prefixCls","rootClassName","classNames","styles","avatar","placement","loading","loadingRender","typing","content","messageRender","variant","shape","onTypingComplete","header","footer","_key"]);t.toRef(e,"content"),t.toRef(e,"prefixCls");const n=t.useSlots(),f=t.ref(e.content);t.watch(()=>e.content,()=>{f.value=e.content});const{onUpdate:u}=t.unref(X.useBubbleContextInject()),y=t.ref(null),{direction:h,getPrefixCls:C}=M.default(),a=C("bubble",e.prefixCls),l=A.default("bubble"),[N,q,V,v]=F.default(()=>e.typing),[r,o]=E.default(f,N,q,V),i=t.ref(!1);t.watch(r,()=>{u==null||u()}),t.watchEffect(()=>{var s;!o.value&&!e.loading?i.value||(i.value=!0,(s=e.onTypingComplete)==null||s.call(e)):i.value=!1});const[x,k,R]=I.default(()=>a),S=t.computed(()=>[a,e.rootClassName,l.value.className,k.value,R,`${a}-${e.placement}`,{[`${a}-rtl`]:h.value==="rtl"},{[`${a}-typing`]:o.value&&!e.loading&&!e.messageRender&&!n.message&&!v.value}]),$=s=>Array.isArray(s)&&s.every(t.isVNode),P=t.computed(()=>n.avatar?n.avatar():typeof e.avatar=="function"?e.avatar():t.isVNode(e.avatar)||$(e.avatar)?e.avatar:t.createVNode(j.Avatar,e.avatar,null)),T=t.computed(()=>n.message?n.message({content:r.value}):e.messageRender?e.messageRender(r.value):r.value),w=t.computed(()=>e.loading?n.loading?n.loading():e.loadingRender?e.loadingRender():t.createVNode(O.default,{prefixCls:a},null):t.createVNode(t.Fragment,null,[T.value,o.value&&t.toValue(v)])),B=t.computed(()=>{const s=t.createVNode("div",{style:{...l.value.styles.content,...e.styles.content},class:[`${a}-content`,`${a}-content-${e.variant}`,{[`${a}-content-${e.shape}`]:e.shape},l.value.classNames.content,e.classNames.content]},[t.toValue(w)]),c=n.header?n.header({content:r.value,info:{key:e._key}}):typeof e.header=="function"?e.header(r.value,{key:e._key}):e.header,d=n.footer?n.footer({content:r.value,info:{key:e._key}}):typeof e.footer=="function"?e.footer(r.value,{key:e._key}):e.footer;return c||d?t.createVNode("div",{class:`${a}-content-wrapper`},[c&&t.createVNode("div",{class:[`${a}-header`,l.value.classNames.header,e.classNames.header],style:{...l.value.styles.header,...e.styles.header}},[c]),s,d&&t.createVNode("div",{class:[`${a}-footer`,l.value.classNames.footer,e.classNames.footer],style:{...l.value.styles.footer,...e.styles.footer}},[d])]):s});return m({nativeElement:y}),()=>x(t.createVNode("div",t.mergeProps({style:{...l.value.style},class:t.toValue(S)},b,{ref:y}),[(n.avatar||e.avatar)&&t.createVNode("div",{style:{...l.value.styles.avatar,...e.styles.avatar},class:[`${a}-avatar`,l.value.classNames.avatar,e.classNames.avatar]},[t.toValue(P)]),t.toValue(B)]))}}),D=g._export_sfc(z,[["__file","/Users/wangzhichao/办公/code/github/ant-design-x-vue-pure/ant-design-x-vue/src/bubble/Bubble.vue"]]);exports.default=D;