UNPKG

ant-design-x-vue

Version:

Craft AI-driven interfaces effortlessly

2 lines (1 loc) 3.4 kB
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("vue"),U=require("../chunks/helper-chunk.js"),z=require("../chunks/module-chunk.js"),O=require("../_util/hooks/use-event-callback.js"),X=require("../_util/pick-attrs.js");require("../x-provider/index.js");const $=require("./Bubble.js"),j=require("./hooks/useDisplayData.js"),F=require("./hooks/useListData.js"),K=require("./style/index.js"),v=require("../_util/hooks/use-state.js"),W=require("./context.js"),p=require("../x-provider/hooks/use-x-provider-context.js"),G=1,J=e.defineComponent({name:"AXBubbleList",inheritAttrs:!1,__name:"BubbleList",props:e.mergeDefaults({prefixCls:null,rootClassName:null,items:null,autoScroll:{type:Boolean},roles:null,onScroll:{type:Function}},{autoScroll:!0}),setup(n,{expose:E}){const I=U.createPropsRestProxy(n,["prefixCls","rootClassName","items","autoScroll","roles","onScroll"]);e.toRef(n,"roles"),e.toRef(n,"items"),e.toRef(n,"prefixCls");const V=e.useAttrs(),r=e.useSlots(),w=e.computed(()=>X.default(e.mergeProps(I,V),{attr:!0,aria:!0})),C=e.ref(n.items),x=e.ref(n.roles);e.watch(()=>n.items,()=>{C.value=n.items}),e.watch(()=>n.roles,()=>{x.value=n.roles});const a=e.ref(null),d=e.ref({}),{getPrefixCls:N}=p.default(),S=N("bubble",n.prefixCls),P=`${S}-list`,[T,D,b]=K.default(S),[A,q]=v.default(!1);e.watchPostEffect(()=>{q(!0),e.onWatcherCleanup(()=>{q(!1)})});const B=F.default(C,x),[c,L]=j.default(B),[m,h]=v.default(!0),[g,R]=v.default(0),k=o=>{var t;const l=o.target;h(l.scrollHeight-Math.abs(l.scrollTop)-l.clientHeight<=G),(t=n.onScroll)==null||t.call(n,o)};e.watch([g,a,m],()=>{n.autoScroll&&e.unref(a)&&e.unref(m)&&e.nextTick(()=>{e.unref(a).scrollTo({top:e.unref(a).scrollHeight})})}),e.watch(()=>e.unref(c).length,()=>{var o;if(n.autoScroll){const l=(o=e.unref(c)[e.unref(c).length-2])==null?void 0:o.key,t=e.unref(d)[l];if(t){const{nativeElement:u}=t,{top:i=0,bottom:f=0}=(u==null?void 0:u.getBoundingClientRect())??{},{top:s,bottom:M}=e.unref(a).getBoundingClientRect();i<M&&f>s&&(R(e.unref(g)+1),h(!0))}}});const y=O.useEventCallback(()=>{n.autoScroll&&R(e.unref(g)+1)}),H=e.computed(()=>({onUpdate:y}));return E({nativeElement:a,scrollTo:({key:o,offset:l,behavior:t="smooth",block:u})=>{if(typeof l=="number")e.unref(a).scrollTo({top:l,behavior:t});else if(o!==void 0){const i=e.unref(d)[o];if(i){const f=e.unref(c).findIndex(s=>s.key===o);h(f===e.unref(c).length-1),i.nativeElement.scrollIntoView({behavior:t,block:u})}}}}),()=>T(e.createVNode(W.BubbleContextProvider,{value:H.value},{default:()=>[e.createVNode("div",e.mergeProps(w.value,{class:z.classnames(P,n.rootClassName,D.value,b,{[`${P}-reach-end`]:m.value}),ref:a,onScroll:k}),[e.renderList(e.unref(c),({key:o,onTypingComplete:l,...t})=>{var u,i,f;return e.createVNode($.default,e.mergeProps(t,{avatar:r.avatar?()=>{var s;return(s=r.avatar)==null?void 0:s.call(r,{item:{key:o,...t}})}:t.avatar,header:((u=r.header)==null?void 0:u.call(r,{item:{key:o,...t}}))??t.header,footer:((i=r.footer)==null?void 0:i.call(r,{item:{key:o,...t}}))??t.footer,loadingRender:r.loading?()=>r.loading({item:{key:o,...t}}):t.loadingRender,content:((f=r.message)==null?void 0:f.call(r,{item:{key:o,...t}}))??t.content,key:o,_key:o,ref:s=>{s?d.value[o]=s:delete d.value[o]},typing:A.value?t.typing:!1,onTypingComplete:()=>{l==null||l(),L(o)}}),null)})])]}))}});exports.default=J;