mirror of
https://git-qiuchenly.yltfspace.com/QiuChenly/corepatch
synced 2025-11-25 05:40:27 +08:00
### 后端更新 性能优化 - Redis、数据库索引优化, 复杂联表查询查询速度从10秒降低到500ms 功能增强 - 统一文件上传 API - 论坛权限管理优化 ### 前端更新 问题修复 - 统一错误提示、组件复用、图标本地化、密码加密传输、大文件分片上传 新增功能 - 全局通知系统、WebSocket 实时消息、图标批量同步、IP 封禁管理、应用版本批量查询、头像上传、TypeScript 类型完善、讨论区功能增强 代码优化 - 删除冗余组件、统一 API 错误处理、优化代码结构、统一 UI 风格
11 lines
2.5 KiB
JavaScript
11 lines
2.5 KiB
JavaScript
import{d as e,r as l,f as o,w as n,o as a,a as t,k as s,m as i,c,b as d,g as r,v as u,i as v,j as p,l as w,t as m,q as f,F as k,y as h,T as g,n as y,e as E}from"./Cf-ihD4f.js"
|
|
import{_ as L,a as _}from"./C_NDl53k.js"
|
|
const x={class:"select-selected"},C=["onClick"],b=_(e({__name:"CustomSelect",props:{modelValue:{},options:{},placeholder:{default:"请选择"}},emits:["update:modelValue"],setup(e,{emit:_}){const b=e,V=_,j=l(!1),z=l(null),H=l(null),R=l({top:"0px",left:"0px",width:"200px"}),$=o(()=>b.options.find(e=>e.value===b.modelValue)||null),W=()=>{j.value&&z.value&&y(()=>{const e=z.value.getBoundingClientRect(),l=48*b.options.length+16,o=window.innerHeight-e.bottom,n=e.top
|
|
let a=e.bottom+8,t=e.left,s=e.width
|
|
o<l&&n>o&&(a=e.top-l-8),t+s>window.innerWidth&&(t=window.innerWidth-s-16),t<16&&(t=16),a<16&&(a=16),a+l>window.innerHeight-16&&(a=window.innerHeight-l-16),R.value={top:`${a}px`,left:`${t}px`,width:`${s}px`}})},q=()=>{j.value=!j.value,j.value&&W()},B=e=>{const l=e.target
|
|
z.value&&z.value.contains(l)||H.value&&H.value.contains(l)||(j.value=!1)}
|
|
return n(j,e=>{e?(W(),window.addEventListener("scroll",W,!0),window.addEventListener("resize",W)):(window.removeEventListener("scroll",W,!0),window.removeEventListener("resize",W))}),a(()=>{document.addEventListener("click",B)}),t(()=>{document.removeEventListener("click",B),window.removeEventListener("scroll",W,!0),window.removeEventListener("resize",W)}),(l,o)=>{var n,a
|
|
return E(),s("div",{class:"custom-select-wrapper",ref_key:"wrapperRef",ref:z},[i("div",{class:d(["custom-select",{open:j.value}]),onClick:q},[i("div",x,[r(L,{icon:(null==(n=$.value)?void 0:n.icon)||"",class:"select-icon"},null,8,["icon"]),i("span",null,u((null==(a=$.value)?void 0:a.label)||e.placeholder),1),r(L,{icon:"fluent-color:chevron-down-24",class:d(["select-arrow",{rotated:j.value}])},null,8,["class"])])],2),(E(),c(g,{to:"body"},[r(v,{name:"dropdown-fade"},{default:p(()=>[j.value?(E(),s("div",{key:0,ref_key:"dropdownRef",ref:H,class:"select-dropdown",style:f(R.value),onClick:o[0]||(o[0]=m(()=>{},["stop"]))},[(E(!0),s(k,null,h(e.options,l=>(E(),s("div",{key:l.value,class:d(["select-option",{active:e.modelValue===l.value}]),onClick:e=>{return o=l.value,V("update:modelValue",o),void(j.value=!1)
|
|
var o}},[r(L,{icon:l.icon,class:"option-icon"},null,8,["icon"]),i("span",null,u(l.label),1),e.modelValue===l.value?(E(),c(L,{key:0,icon:"fluent-color:checkmark-24",class:"option-check"})):w("",!0)],10,C))),128))],4)):w("",!0)]),_:1})]))],512)}}}),[["__scopeId","data-v-3ceed415"]])
|
|
export{b as C}
|