2023-09-06 18:53:48 +08:00

2 lines
4.4 KiB
JavaScript

import{c as U,v as H,d as W,T as G,r as x}from"./index-331c6de1.js";import{b as K,s as Q,d as S,a9 as J,$ as z,E as P,L as R,i as X,a1 as $}from"./index-e37943c3.js";import{d as O,b as Y,r as ee,c as C,o as te,e as m,v as T,x as N,Q as F,g as h,n as v,u as i,j as D,Z as oe,H as _,B as V,h as se,f as A,F as ne,y as Z,_ as ie,a8 as I,m as ae,aM as le}from"./base-d77b0726.js";import{E as w}from"./aria-60e0cdc6.js";import{u as re}from"./index-de9bede2.js";const j=["success","info","warning","error"],ce=K({customClass:{type:String,default:""},dangerouslyUseHTMLString:{type:Boolean,default:!1},duration:{type:Number,default:4500},icon:{type:Q},id:{type:String,default:""},message:{type:S([String,Object]),default:""},offset:{type:Number,default:0},onClick:{type:S(Function),default:()=>{}},onClose:{type:S(Function),required:!0},position:{type:String,values:["top-right","top-left","bottom-right","bottom-left"],default:"top-right"},showClose:{type:Boolean,default:!0},title:{type:String,default:""},type:{type:String,values:[...j,""],default:""},zIndex:{type:Number,default:0}}),ue={destroy:()=>!0},fe=["id"],de=["textContent"],pe={key:0},me=["innerHTML"],ve=O({name:"ElNotification"}),ye=O({...ve,props:ce,emits:ue,setup(e,{expose:n}){const o=e,s=Y("notification"),{Close:u}=J,a=ee(!1);let d;const p=C(()=>{const t=o.type;return t&&z[o.type]?s.m(t):""}),r=C(()=>o.type&&z[o.type]||o.icon),c=C(()=>o.position.endsWith("right")?"right":"left"),l=C(()=>o.position.startsWith("top")?"top":"bottom"),g=C(()=>({[l.value]:`${o.offset}px`,zIndex:o.zIndex}));function f(){o.duration>0&&({stop:d}=R(()=>{a.value&&b()},o.duration))}function M(){d==null||d()}function b(){a.value=!1}function q({code:t}){t===w.delete||t===w.backspace?M():t===w.esc?a.value&&b():f()}return te(()=>{f(),a.value=!0}),U(document,"keydown",q),n({visible:a,close:b}),(t,E)=>(m(),T(G,{name:i(s).b("fade"),onBeforeLeave:t.onClose,onAfterLeave:E[1]||(E[1]=L=>t.$emit("destroy")),persisted:""},{default:N(()=>[F(h("div",{id:t.id,class:v([i(s).b(),t.customClass,i(c)]),style:D(i(g)),role:"alert",onMouseenter:M,onMouseleave:f,onClick:E[0]||(E[0]=(...L)=>t.onClick&&t.onClick(...L))},[i(r)?(m(),T(i(P),{key:0,class:v([i(s).e("icon"),i(p)])},{default:N(()=>[(m(),T(oe(i(r))))]),_:1},8,["class"])):_("v-if",!0),h("div",{class:v(i(s).e("group"))},[h("h2",{class:v(i(s).e("title")),textContent:V(t.title)},null,10,de),F(h("div",{class:v(i(s).e("content")),style:D(t.title?void 0:{margin:0})},[se(t.$slots,"default",{},()=>[t.dangerouslyUseHTMLString?(m(),A(ne,{key:1},[_(" Caution here, message could've been compromised, never use user's input as message "),h("p",{innerHTML:t.message},null,8,me)],2112)):(m(),A("p",pe,V(t.message),1))])],6),[[H,t.message]]),t.showClose?(m(),T(i(P),{key:0,class:v(i(s).e("closeBtn")),onClick:W(b,["stop"])},{default:N(()=>[Z(i(u))]),_:1},8,["class","onClick"])):_("v-if",!0)],2)],46,fe),[[H,a.value]])]),_:3},8,["name","onBeforeLeave"]))}});var ge=ie(ye,[["__file","/home/runner/work/element-plus/element-plus/packages/components/notification/src/notification.vue"]]);const k={"top-left":[],"top-right":[],"bottom-left":[],"bottom-right":[]},B=16;let Ce=1;const y=function(e={},n=null){if(!X)return{close:()=>{}};(typeof e=="string"||I(e))&&(e={message:e});const o=e.position||"top-right";let s=e.offset||0;k[o].forEach(({vm:g})=>{var f;s+=(((f=g.el)==null?void 0:f.offsetHeight)||0)+B}),s+=B;const{nextZIndex:u}=re(),a=`notification_${Ce++}`,d=e.onClose,p={zIndex:u(),...e,offset:s,id:a,onClose:()=>{he(a,o,d)}};let r=document.body;$(e.appendTo)?r=e.appendTo:ae(e.appendTo)&&(r=document.querySelector(e.appendTo)),$(r)||(r=document.body);const c=document.createElement("div"),l=Z(ge,p,I(p.message)?{default:()=>p.message}:null);return l.appContext=n??y._context,l.props.onDestroy=()=>{x(null,c)},x(l,c),k[o].push({vm:l}),r.appendChild(c.firstElementChild),{close:()=>{l.component.exposed.visible.value=!1}}};j.forEach(e=>{y[e]=(n={})=>((typeof n=="string"||I(n))&&(n={message:n}),y({...n,type:e}))});function he(e,n,o){const s=k[n],u=s.findIndex(({vm:c})=>{var l;return((l=c.component)==null?void 0:l.props.id)===e});if(u===-1)return;const{vm:a}=s[u];if(!a)return;o==null||o(a);const d=a.el.offsetHeight,p=n.split("-")[0];s.splice(u,1);const r=s.length;if(!(r<1))for(let c=u;c<r;c++){const{el:l,component:g}=s[c].vm,f=Number.parseInt(l.style[p],10)-d-B;g.props.offset=f}}function be(){for(const e of Object.values(k))e.forEach(({vm:n})=>{n.component.exposed.visible.value=!1})}y.closeAll=be;y._context=null;const _e=le(y,"$notify");export{_e as E};