fix(icons): render FA glyphs in the SPA picker grid and harden item clicks

The server catalog ships bare glyph names, but the SPA grid preview
composed "fas home" instead of "fas fa-home" — every FA icon rendered
blank (the old curated lists carried the fa- prefix, so the regression
appeared with the catalog switch).

Item clicks move from per-element @click to a delegated panel handler
reading data-icon (immunity to DOM-replacing extensions/userscripts,
matching the PHP picker's pattern), and selecting now closes the
popover so the choice is visible in the field immediately.
This commit is contained in:
kate522 committed 2026-09-06 15:48:52 +08:00
1 parent 27d8a9ea71
commit 39bafb65c4
12 files changed
+33 -20

No files matched your search

@@ -0,0 +1 @@
import{aa as q,a1 as i,W as _,a2 as b,a3 as s,a4 as l,f,Y as I,a5 as K,ab as Y,c as z,w as Z,b as ve,X as E,ac as _e,R as ee,N as R,ad as ye,I as ge,Z as ke,r as B,$ as we,F as be,a6 as he,l as Se,ae as Ce,af as xe,n as Ae}from"./vendor-vue.BxZIRU0_.js";import{u as Te,A as Ie,n as ze,g as te}from"./shared-api.DieGsdVx.js";import{a as O}from"./shared-api.DnsQ5cxS.js";import{_ as Ue}from"./index.js";import{u as Pe}from"./vendor-naive.CKYCZmXD.js";import"./FaIcon.NZ6TDkNu.js";import"./FaIconPicker.C_p6xA0k.js";import"./vendor-misc.bELTaXdf.js";import"./level.E3ANSDAX.js";import"./badge.CKTsmH1z.js";const Ve={__name:"TencentConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:Y(["clear-secret","restore-secret"],["update:modelValue"]),setup(U,{emit:P}){const n=q(U,"modelValue"),k=P;function A(u){k("clear-secret",u),n.value={...n.value,[u]:""}}function y(u,e){e!==""&&k("restore-secret",u)}const d=z(()=>{const u=n.value;return!!(u.secret_id&&u.secret_key&&u.app_id&&u.app_secret_key)});return(u,e)=>{const w=i("n-divider"),m=i("n-a"),g=i("n-alert"),v=i("n-input"),C=i("n-form-item"),x=i("n-button"),h=i("n-tag"),$=i("n-space"),M=i("n-form");return _(),b(M,{"label-placement":"left","label-width":"130"},{default:s(()=>[l($,{vertical:"",style:{width:"100%"}},{default:s(()=>[l(w,{"title-placement":"left"},{default:s(()=>[...e[8]||(e[8]=[f("云 API 密钥(用于 TC3 签名)",-1)])]),_:1}),l(g,{type:"warning",style:{"margin-bottom":"12px"}},{default:s(()=>[e[10]||(e[10]=f(" 请从 ",-1)),l(m,{href:"https://console.cloud.tencent.com/cam/capi",target:"_blank"},{default:s(()=>[...e[9]||(e[9]=[f("访问管理控制台 → API 密钥管理",-1)])]),_:1}),e[11]||(e[11]=f(" 获取。建议使用子账号密钥并仅授予 ",-1)),e[12]||(e[12]=I("code",null,"QcloudCaptchaFullAccess",-1)),e[13]||(e[13]=f(" 权限。 ",-1))]),_:1}),l(C,{label:"SecretId"},{default:s(()=>[l(v,{value:n.value.secret_id,"onUpdate:value":e[0]||(e[0]=o=>n.value.secret_id=o),placeholder:"腾讯云 API SecretId",autocomplete:"off"},null,8,["value"])]),_:1}),l(C,{label:"SecretKey"},{default:s(()=>[l(v,{value:n.value.secret_key,"onUpdate:value":[e[1]||(e[1]=o=>n.value.secret_key=o),e[2]||(e[2]=o=>y("secret_key",o))],type:"password",placeholder:"腾讯云 API SecretKey",autocomplete:"new-password","show-password-on":"click"},null,8,["value"]),n.value.secret_key==="***"?(_(),b(x,{key:0,size:"tiny",type:"error",ghost:"",style:{"margin-left":"8px"},onClick:e[3]||(e[3]=o=>A("secret_key"))},{default:s(()=>[...e[14]||(e[14]=[f("清除",-1)])]),_:1})):K("",!0)]),_:1}),l(w,{"title-placement":"left"},{default:s(()=>[...e[15]||(e[15]=[f("验证码密钥",-1)])]),_:1}),l(C,{label:"CaptchaAppId"},{default:s(()=>[l(v,{value:n.value.app_id,"onUpdate:value":e[4]||(e[4]=o=>n.value.app_id=o),placeholder:"从验证码控制台获取 CaptchaAppId",autocomplete:"off"},null,8,["value"])]),_:1}),l(C,{label:"AppSecretKey"},{feedback:s(()=>[...e[17]||(e[17]=[f("请从「验证管理 → 基础配置」完整复制,注意区分 I/l/1/O/0",-1)])]),default:s(()=>[l(v,{value:n.value.app_secret_key,"onUpdate:value":[e[5]||(e[5]=o=>n.value.app_secret_key=o),e[6]||(e[6]=o=>y("app_secret_key",o))],type:"password",placeholder:"从验证码控制台获取 AppSecretKey",autocomplete:"new-password","show-password-on":"click"},null,8,["value"]),n.value.app_secret_key==="***"?(_(),b(x,{key:0,size:"tiny",type:"error",ghost:"",style:{"margin-left":"8px"},onClick:e[7]||(e[7]=o=>A("app_secret_key"))},{default:s(()=>[...e[16]||(e[16]=[f("清除",-1)])]),_:1})):K("",!0)]),_:1}),l(g,{type:"info",style:{"margin-bottom":"12px"}},{default:s(()=>[...e[18]||(e[18]=[f(" 腾讯云验证码 2.0 — 验证类型(滑动拼图、文字点选、空间语义等)请在",-1),I("a",{href:"https://console.cloud.tencent.com/captcha/graphical",target:"_blank"},"验证码控制台",-1),f("配置。 ",-1)])]),_:1}),d.value?(_(),b(h,{key:0,type:"success",size:"small"},{default:s(()=>[...e[19]||(e[19]=[f("✓ 已完整配置",-1)])]),_:1})):(_(),b(h,{key:1,type:"warning",size:"small"},{default:s(()=>[...e[20]||(e[20]=[f("未完成配置",-1)])]),_:1}))]),_:1})]),_:1})}}},De={__name:"AliyunConfig",props:{modelValue:{type:Object,default:()=>({})},modelModifiers:{}},emits:Y(["clear-secret","restore-secret"],["update:modelValue"]),setup(U,{emit:P}){const n=q(U,"modelValue"),k=P;function A(u){k("clear-secret",u),n.value={...n.value,[u]:""}}function y(u,e){e!==""&&k("restore-secret",u)}const d=z(()=>{const u=n.value;return!!(u.region&&u.prefix&&u.scene_id&&u.access_key_id&&u.access_key_secret)});return(u,e)=>{const w=i("n-divider"),m=i("n-select"),g=i("n-form-item"),v=i("n-input"),C=i("n-button"),x=i("n-alert"),h=i("n-tag"),$=i("n-space"),M=i("n-form");return _(),b(M,{"label-placement":"left","label-width":"130"},{default:s(()=>[l($,{vertical:"",style:{width:"100%"}},{default:s(()=>[l(w,{"title-placement":"left"},{default:s(()=>[...e[7]||(e[7]=[f("前端配置",-1)])]),_:1}),l(g,{label:"所属Line truncated