@shwfed/config 2.9.13 → 2.10.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/mcp.mjs +5020 -3637
- package/dist/module.json +1 -1
- package/dist/preview/assets/{FieldGroup.vue_vue_type_script_setup_true_lang-DZ_H-YRf.js → FieldGroup.vue_vue_type_script_setup_true_lang-CuFusz5A.js} +1 -1
- package/dist/preview/assets/{badge-DoNuZh0A.js → badge-D5FPHSix.js} +1 -1
- package/dist/preview/assets/{config-DTEJOYqA.js → config-BHPiQ1lB.js} +1 -1
- package/dist/preview/assets/{config-C6Cm7DWx.js → config-BWC-Zw21.js} +1 -1
- package/dist/preview/assets/{config-YGBoSq6x.js → config-Bg94Z7XN.js} +1 -1
- package/dist/preview/assets/{config-CLsjWZz2.js → config-BqSL4UAL.js} +1 -1
- package/dist/preview/assets/{config-ugF_BOWz.js → config-CeRBpZbE.js} +1 -1
- package/dist/preview/assets/{config-BDDuqAht.js → config-CfjcFb_E.js} +1 -1
- package/dist/preview/assets/{config-Bhc_Vu67.js → config-DNUKa3lN.js} +1 -1
- package/dist/preview/assets/{config-D4rFsdGO.js → config-DVjZmomc.js} +1 -1
- package/dist/preview/assets/{config-tdZMdIN3.js → config-Djv6EQBY.js} +1 -1
- package/dist/preview/assets/{config-CIYui2J_.js → config-PNpa6ENz.js} +1 -1
- package/dist/preview/assets/{config-Cla0Qngs.js → config-ucxtM3wX.js} +1 -1
- package/dist/preview/assets/{config-BrNZsgV0.js → config-urZuasV7.js} +1 -1
- package/dist/preview/assets/{definition.vue_vue_type_script_setup_true_lang-CgNXv26P.js → definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js} +1 -1
- package/dist/preview/assets/index-BE9O1XgB.js +1 -0
- package/dist/preview/assets/{index-CzzwZ7bp.css → index-BnJ5p1Mx.css} +1 -1
- package/dist/preview/assets/{index-C3FdepLE.js → index-DCRQGu0g.js} +1 -1
- package/dist/preview/assets/index-yvElpEK3.js +743 -0
- package/dist/preview/assets/{item-DecwNzYq.js → item-CTkdtkvl.js} +1 -1
- package/dist/preview/assets/{runtime-DtP98Km5.js → runtime-3rajYvjp.js} +1 -1
- package/dist/preview/assets/{runtime-C8Ufkmiw.js → runtime-4A3oiig9.js} +1 -1
- package/dist/preview/assets/{runtime-blb90Fhv.js → runtime-BOGZFWxF.js} +1 -1
- package/dist/preview/assets/{runtime-BK7KNEyN.js → runtime-BqroTX7H.js} +1 -1
- package/dist/preview/assets/{runtime-DSUjc0Pk.js → runtime-CBBae0-H.js} +1 -1
- package/dist/preview/assets/{runtime-CYpXd7Pq.js → runtime-CBuV3vwL.js} +1 -1
- package/dist/preview/assets/{runtime-CjPtRd-T.js → runtime-CI8yzwXd.js} +1 -1
- package/dist/preview/assets/{runtime-C5hqSHRW.js → runtime-CcyhgOum.js} +1 -1
- package/dist/preview/assets/{runtime-C3dmOj9s.js → runtime-CkQ-mNoH.js} +1 -1
- package/dist/preview/assets/{runtime-DZ_AwduQ.js → runtime-DmxKfudS.js} +1 -1
- package/dist/preview/assets/{schema-meta-DWUHNP8E.js → schema-meta-BFzIzGiN.js} +1 -1
- package/dist/preview/index.html +2 -2
- package/dist/runtime/components/actions/components/triggers-field.vue +12 -12
- package/dist/runtime/components/config/use-editor.js +1 -1
- package/dist/runtime/components/config/utils/validation-error.d.ts +1 -1
- package/dist/runtime/components/config/utils/validation-error.js +40 -7
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.markdown/runtime.vue +3 -3
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue +6 -5
- package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/runtime.vue +6 -5
- package/dist/runtime/components/form/fields/2026-04-24/com.shwfed.form.field.combobox.single/runtime.vue +10 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/runtime.vue +8 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/runtime.vue +10 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/runtime.vue +8 -6
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetimerange/runtime.vue +10 -8
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.time/runtime.vue +7 -5
- package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.timerange/runtime.vue +8 -6
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.number/runtime.vue +7 -6
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.numberrange/runtime.vue +9 -7
- package/dist/runtime/components/form/fields/2026-04-28/com.shwfed.form.field.switch/runtime.vue +4 -3
- package/dist/runtime/components/form/fields/2026-04-29/com.shwfed.form.field.combobox.single/runtime.vue +8 -6
- package/dist/runtime/components/form/fields/2026-05-12/com.shwfed.form.field.upload/runtime.vue +5 -4
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.combobox.single.remote/runtime.vue +12 -10
- package/dist/runtime/components/form/fields/2026-05-13/com.shwfed.form.field.list/runtime.vue +5 -4
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.checkbox.group/runtime.vue +9 -7
- package/dist/runtime/components/form/fields/2026-05-17/com.shwfed.form.field.radio.group/runtime.vue +9 -7
- package/dist/runtime/components/form/fields/2026-05-23/com.shwfed.form.field.tree.multi/runtime.vue +13 -15
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.month/runtime.vue +8 -6
- package/dist/runtime/components/form/fields/2026-05-24/com.shwfed.form.field.monthrange/runtime.vue +10 -8
- package/dist/runtime/components/form/fields/2026-05-25/com.shwfed.form.field.combobox.multi/runtime.vue +10 -8
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.multi/runtime.vue +13 -14
- package/dist/runtime/components/form/fields/2026-05-26/com.shwfed.form.field.tree.combobox.single/runtime.vue +13 -14
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.multi/runtime.vue +14 -12
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.combobox.single/runtime.vue +14 -12
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.multi/runtime.vue +13 -14
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.combobox.single/runtime.vue +13 -14
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.multi/runtime.vue +13 -15
- package/dist/runtime/components/form/fields/2026-05-28/com.shwfed.form.field.tree.single/runtime.vue +15 -16
- package/dist/runtime/components/form/fields/2026-06-09/com.shwfed.form.field.upload/runtime.vue +8 -7
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/config.d.vue.ts +175 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/config.vue +782 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/config.vue.d.ts +175 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/runtime.d.vue.ts +8 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/runtime.vue +413 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/runtime.vue.d.ts +8 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.d.ts +214 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.multi/schema.js +191 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/config.d.vue.ts +175 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/config.vue +782 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/config.vue.d.ts +175 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/runtime.d.vue.ts +8 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/runtime.vue +426 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/runtime.vue.d.ts +8 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.d.ts +214 -0
- package/dist/runtime/components/form/fields/2026-06-14/com.shwfed.form.field.combobox.single/schema.js +191 -0
- package/dist/runtime/components/form/fields/2026-06-14/combobox-migrate.d.ts +18 -0
- package/dist/runtime/components/form/fields/2026-06-14/combobox-migrate.js +36 -0
- package/dist/runtime/components/form/utils/state.d.ts +11 -0
- package/dist/runtime/components/form/utils/state.js +5 -0
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.combobox-single/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.number-input/runtime.vue +16 -3
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.switch.local/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-20/com.shwfed.table.column.text-input/runtime.vue +17 -3
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-remote/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-24/com.shwfed.table.column.combobox-single.remote.options-static/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-remote/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-25/com.shwfed.table.column.combobox-multi.remote.options-static/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-multi.remote/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-26/com.shwfed.table.column.combobox-single.remote/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-multi/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-27/com.shwfed.table.column.tree-combobox-single/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-multi/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.combobox-single/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-multi/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-05-28/com.shwfed.table.column.tree-combobox-single/runtime.vue +5 -1
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.d.vue.ts +179 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue +942 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/config.vue.d.ts +179 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/runtime.d.vue.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/runtime.vue +499 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/runtime.vue.d.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.d.ts +223 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-multi/schema.js +276 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.d.vue.ts +179 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue +942 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/config.vue.d.ts +179 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/runtime.d.vue.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/runtime.vue +438 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/runtime.vue.d.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.d.ts +223 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.combobox-single/schema.js +276 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.d.vue.ts +123 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue +646 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/config.vue.d.ts +123 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/runtime.d.vue.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/runtime.vue +500 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/runtime.vue.d.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.d.ts +83 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-multi/schema.js +179 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.d.vue.ts +121 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue +577 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/config.vue.d.ts +121 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/runtime.d.vue.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/runtime.vue +465 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/runtime.vue.d.ts +9 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.d.ts +80 -0
- package/dist/runtime/components/table/columns/2026-06-14/com.shwfed.table.column.tree-combobox-single/schema.js +171 -0
- package/dist/runtime/components/table/columns/2026-06-14/combobox-migrate.d.ts +18 -0
- package/dist/runtime/components/table/columns/2026-06-14/combobox-migrate.js +36 -0
- package/dist/runtime/components/table/columns/2026-06-14/tree-combobox-shared.d.ts +35 -0
- package/dist/runtime/components/table/columns/2026-06-14/tree-combobox-shared.js +31 -0
- package/dist/runtime/components/table/index.d.vue.ts +2 -0
- package/dist/runtime/components/table/index.vue +24 -0
- package/dist/runtime/components/table/index.vue.d.ts +2 -0
- package/dist/runtime/components/table/utils/shared.d.ts +1 -0
- package/dist/runtime/components/table/utils/shared.js +7 -13
- package/dist/runtime/components/ui/input-group/InputGroupNumberField.vue +1 -1
- package/dist/runtime/share/expression.js +1 -0
- package/package.json +1 -1
- package/dist/preview/assets/index-B-QhiviS.js +0 -1
- package/dist/preview/assets/index-CWMhB7z4.js +0 -735
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as O,v as M,x as k,y,o as q,c as E,z,b as A,A as x,B as i,C as J,D as L,E as s,F as T,G as V,H as D,I as G,J as H,K,L as g,M as P,N as b,O as U}from"./index-
|
|
1
|
+
import{d as O,v as M,x as k,y,o as q,c as E,z,b as A,A as x,B as i,C as J,D as L,E as s,F as T,G as V,H as D,I as G,J as H,K,L as g,M as P,N as b,O as U}from"./index-yvElpEK3.js";import W from"./index-DCRQGu0g.js";const X=O({name:"ShwfedBlockAnimatedNumberItem",__name:"item",props:{item:{}},setup(h){const n=h,j=P(),a=x(void 0),m=x(0);function u(){return K(j)}function S(e){if(typeof e=="number"&&Number.isFinite(e))return e;if(typeof e=="string"&&e.trim()!==""){const t=Number(e);return Number.isFinite(t)?t:0}return 0}const d=i(()=>a.value===void 0?g():U(a.value));function v(e){if(!e)return"";try{const t=b(s(e,{...u(),json:d.value}));return t==null?"":String(t)}catch{return""}}const w=i(()=>v(n.item.prefix)),C=i(()=>v(n.item.suffix));function F(e){if(e)try{const t=b(s(e,{...u(),json:d.value}));return t==null?void 0:typeof t=="string"||typeof t=="object"?t:String(t)}catch{return}}const I=i(()=>F(n.item.style));async function r(){const e=n.item.dataSource,t=u(),_=J(function*(){let o=g();e.request&&(o=yield*L(yield*s(e.request,t)));const B=yield*s(e.value,{...t,json:o});return{json:T(o),value:B}});try{const o=await V(D(_,G));a.value=o.json,m.value=S(o.value)}catch(o){console.warn("[shwfed-animated-number] fetch failed",o)}}const l=i(()=>(n.item.pollingInterval??0)>0),N=i(()=>Math.max(1,n.item.pollingInterval??1)*1e3),c=H(),{pause:p,resume:f}=M(()=>{r()},N,{immediate:!1});return k(()=>{r(),l.value&&c.value&&f()}),y(c,e=>{l.value&&(e?(r(),f()):p())}),y(()=>[n.item.dataSource.request??"",n.item.dataSource.value,n.item.pollingInterval??0].join("|"),()=>{r(),l.value&&c.value?f():p()}),(e,t)=>(q(),E(A(W),{value:m.value,prefix:w.value,suffix:C.value,style:z(I.value)},null,8,["value","prefix","suffix","style"]))}});export{X as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as r,aR as f,aS as u,aM as g,aP as p,c as d,b as m,E as l,K as x,aQ as E,M as h,o as _}from"./index-
|
|
1
|
+
import{d as r,aR as f,aS as u,aM as g,aP as p,c as d,b as m,E as l,K as x,aQ as E,M as h,o as _}from"./index-yvElpEK3.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const B=r({name:"ShwfedHttpRequestActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,i=h(),s=(t,c)=>l(t,{...x(i),...c}),o=E(),a=f(()=>u(g(o,e.config.before,s),()=>p(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,channel:o,triggers:{success:e.config.onSuccess,warning:e.config.onWarning,error:e.config.onError,info:e.config.onInfo}})));return(t,c)=>(_(),d(b,{"action-id":n.buttonId,effect:m(a)},null,8,["action-id","effect"]))}});export{B as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{_ as o}from"./definition.vue_vue_type_script_setup_true_lang-
|
|
1
|
+
import{_ as o}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";import{d as n,c,b as a,o as f,aT as i}from"./index-yvElpEK3.js";const _=n({name:"ShwfedPrototypeActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(t){const e=i;return(r,s)=>(f(),c(o,{"action-id":t.buttonId,effect:a(e)},null,8,["action-id","effect"]))}});export{_ as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as s,Y as M,aW as b,C as p,a1 as c,aX as x,N,c as T,w as d,b as u,A as k,Q as L,aQ as S,aY as w,o as A,j as I,z as V,a as r,aZ as Y,a_ as $,aD as j,M as z,a$ as f,V as m,b0 as F}from"./index-
|
|
1
|
+
import{d as s,Y as M,aW as b,C as p,a1 as c,aX as x,N,c as T,w as d,b as u,A as k,Q as L,aQ as S,aY as w,o as A,j as I,z as V,a as r,aZ as Y,a_ as $,aD as j,M as z,a$ as f,V as m,b0 as F}from"./index-yvElpEK3.js";import{_ as H}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const R=s({name:"ShwfedModalLayoutActionRuntime",__name:"runtime",props:{buttonId:{},config:{},buttonTitle:{}},setup(n){const a=n,{locale:l}=M(),v=e=>{},h=z(),i=L(f,void 0),C=S(),o=k(null),g=b(a.buttonId,{close:()=>w(()=>{o.value?.()})},C),_=s({name:"ModalBoundaryBridge",setup(e,{slots:t}){return $(h),m(F,g),i&&m(f,i),()=>t.default?.()}}),E=(e,t)=>j()?.(e,t),y=p(function*(){const e=c(a.config.modalTitle,l.value)??c(a.buttonTitle,l.value)??"",{modal:t,close:B}=yield*x({title:e,width:a.config.modalWidth});o.value=()=>N(B()),yield*t,o.value=null});return(e,t)=>(A(),T(H,{"action-id":n.buttonId,effect:u(y)},{default:d(()=>[I("div",{style:V(n.config.modalMinHeight?`min-height: ${n.config.modalMinHeight}`:void 0)},[r(u(_),null,{default:d(()=>[r(Y,{"slot-value":n.config.slot,configure:v,"find-entry":E},null,8,["slot-value"])]),_:1})],4)]),_:1},8,["action-id","effect"]))}});export{R as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as r,aR as f,aM as d,c as u,b as m,aQ as p,o as l,E as g,K as h,M as _}from"./index-
|
|
1
|
+
import{d as r,aR as f,aM as d,c as u,b as m,aQ as p,o as l,E as g,K as h,M as _}from"./index-yvElpEK3.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const x=r({name:"ShwfedEventDispatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const c=e,s=_(),a=(n,t)=>g(n,{...h(s),...t}),o=p(),i=f(()=>d(o,c.config.triggers,a));return(n,t)=>(l(),u(C,{"action-id":e.buttonId,effect:m(i)},null,8,["action-id","effect"]))}});export{x as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as b,aR as E,C as _,aY as r,aM as m,b1 as S,b2 as j,c as v,b as x,E as B,K as C,aQ as L,M as R,o as k}from"./index-
|
|
1
|
+
import{d as b,aR as E,C as _,aY as r,aM as m,b1 as S,b2 as j,c as v,b as x,E as B,K as C,aQ as L,M as R,o as k}from"./index-yvElpEK3.js";import{_ as T}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const q=b({name:"ShwfedHttpDownloadActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(d){const c=d,g=R(),t=(e,n)=>B(e,{...C(g),...n}),l=L(),p=new Set(["success","error","warning","info"]);function f(e){const n=URL.createObjectURL(e),o=document.createElement("a");o.href=n,o.download=e.name,document.body.appendChild(o),o.click(),o.remove(),URL.revokeObjectURL(n)}const y=E(()=>_(function*(){const{template:e,messageExpression:n,resultExpression:o}=c.config,u=yield*t(e.request);if(!e.download){const s=yield*u.file();return yield*r(()=>f(s)),yield*m(l,c.config.onSuccess,t)}const a={json:yield*u.json()},i=o===void 0?"success":yield*S(t(o,a),s=>p.has(s)?s:"success");if(n!==void 0){const s=yield*t(n,a);yield*r(()=>j[i](s))}if(i==="success"||i==="info"){const h=yield*(yield*t(e.download,a)).file();yield*r(()=>f(h))}const w={success:c.config.onSuccess,warning:c.config.onWarning,error:c.config.onError,info:c.config.onInfo};return yield*m(l,w[i],t)}));return(e,n)=>(k(),v(T,{"action-id":d.buttonId,effect:x(y)},null,8,["action-id","effect"]))}});export{q as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as f,aR as u,aU as l,aV as d,c as m,b as w,E as p,K as _,M as g,o as h}from"./index-
|
|
1
|
+
import{d as f,aR as u,aU as l,aV as d,c as m,b as w,E as p,K as _,M as g,o as h}from"./index-yvElpEK3.js";import{_ as b}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";function v(){return{resolve:e=>({href:new URL(e,window.location.href).href})}}function x(e,t){return window.location.assign(e),Promise.resolve()}const B=f({name:"ShwfedNavigationActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(e){const t=e,i=v(),a=g(),r=(n,o)=>p(n,{..._(a),...o});function c(n){try{return new URL(n,window.location.href).origin!==window.location.origin}catch{return!1}}const s=u(()=>l(r(t.config.url),n=>d(async()=>{const o=c(n);if(t.config.mode==="_blank"){window.open(o?n:i.resolve(n).href,"_blank");return}await x(n)})));return(n,o)=>(h(),m(b,{"action-id":e.buttonId,effect:w(s)},null,8,["action-id","effect"]))}});export{B as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as u,Y as i,c as l,b as p,B as m,o as d,h as f,a1 as _,aN as k,E as w,K as x,M as g}from"./index-
|
|
1
|
+
import{d as u,Y as i,c as l,b as p,B as m,o as d,h as f,a1 as _,aN as k,E as w,K as x,M as g}from"./index-yvElpEK3.js";const B=u({name:"ShwfedMarkdownItemRuntime",__name:"runtime",props:{config:{}},setup(s){const o=s,{locale:t}=i(),a=g(),c=(e,n)=>w(e,{...x(a),...n}),r=m(()=>{const e=_(o.config.content,t.value)??"";return k(e,c)});return(e,n)=>(d(),l(p(f),{"data-slot":"buttons-markdown",source:r.value,class:"prose prose-sm prose-zinc px-1"},null,8,["source"]))}});export{B as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as f,Y as g,C as l,aM as u,a1 as d,aN as p,aO as m,aP as x,c as E,b as _,E as h,K as C,aQ as w,M as b,o as k}from"./index-
|
|
1
|
+
import{d as f,Y as g,C as l,aM as u,a1 as d,aN as p,aO as m,aP as x,c as E,b as _,E as h,K as C,aQ as w,M as b,o as k}from"./index-yvElpEK3.js";import{_ as I}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const M=f({name:"ShwfedHttpRequestConfirmActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(c){const n=c,{locale:i}=g(),a=b(),s=(e,o)=>h(e,{...C(a),...o}),t=w(),r=l(function*(){yield*u(t,n.config.before,s);const e=d(n.config.markdown,i.value)??"",o=p(e,s);(yield*m({content:o,icon:n.config.icon,color:n.config.color}))||(yield*x(n.config.expression,s,{messageExpression:n.config.messageExpression,resultExpression:n.config.resultExpression,channel:t,triggers:{success:n.config.onSuccess,warning:n.config.onWarning,error:n.config.onError,info:n.config.onInfo}}))});return(e,o)=>(k(),E(I,{"action-id":c.buttonId,effect:_(r)},null,8,["action-id","effect"]))}});export{M as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as l,b3 as g,aR as A,aU as y,aM as b,c as _,b as h,E as S,K as j,aQ as k,b4 as C,M as B,o as E}from"./index-
|
|
1
|
+
import{d as l,b3 as g,aR as A,aU as y,aM as b,c as _,b as h,E as S,K as j,aQ as k,b4 as C,M as B,o as E}from"./index-yvElpEK3.js";import{_ as M}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const F=l({name:"ShwfedStateWriteActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(s){const a=s,f=B(),c=(e,t)=>S(e,{...j(f),...t}),n=g(),o=n.kind==="form"&&n.parent?n.parent:n,u=k(),m=C((e,t,r)=>{if(Array.isArray(e[t])&&Array.isArray(r))return e[t]=r,!0});function i(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function p(e,t){return i(e)&&i(t)?m({...t},e):t}const d=A(()=>y(c(a.config.expression),e=>{for(const t of Object.keys(e)){const r=p(o.getAt(t),e[t]);o.setAt(t,r)}return b(u,a.config.onSuccess,c)}));return(e,t)=>(E(),_(M,{"action-id":s.buttonId,effect:h(d)},null,8,["action-id","effect"]))}});export{F as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{d as f,Y as u,aR as p,aS as d,aM as l,b5 as m,a1 as g,c as x,b as h,E,K as _,aQ as b,o as B,M as k}from"./index-
|
|
1
|
+
import{d as f,Y as u,aR as p,aS as d,aM as l,b5 as m,a1 as g,c as x,b as h,E,K as _,aQ as b,o as B,M as k}from"./index-yvElpEK3.js";import{_ as C}from"./definition.vue_vue_type_script_setup_true_lang-BzryfjdG.js";const I=f({name:"ShwfedHttpRequestBatchActionRuntime",__name:"runtime",props:{buttonId:{},config:{}},setup(n){const e=n,{locale:a}=u(),c=k(),s=(t,o)=>E(t,{..._(c),...o}),i=b(),r=p(()=>d(l(i,e.config.before,s),()=>m(e.config.expression,s,{messageExpression:e.config.messageExpression,resultExpression:e.config.resultExpression,continueOnError:e.config.continueOnError,markdown:g(e.config.markdown,a.value)??""})));return(t,o)=>(B(),x(C,{"action-id":n.buttonId,effect:h(r)},null,8,["action-id","effect"]))}});export{I as default};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{p as o,q as l,r as p}from"./index-
|
|
1
|
+
import{p as o,q as l,r as p}from"./index-yvElpEK3.js";function i(n){switch(n._tag){case"TypeLiteral":return n;case"Transformation":return i(n.to);case"Refinement":return i(n.from);case"Suspend":return i(n.f());default:return null}}function d(n,t){const e=i(n.ast);return e?e.propertySignatures.find(r=>r.name===t)??null:null}function y(n){const t=n.type;if(t._tag==="Union"&&n.isOptional){const e=t.types.find(r=>r._tag!=="UndefinedKeyword");if(e)return e}return t}function c(n,t,e){const r=d(n,t);if(!r)return;const u=e(r);if(o(u))return u.value;const f=y(r),s=e(f);if(o(s))return s.value;if(f!==r.type){const a=e(r.type);if(o(a))return a.value}}function m(n,t){return c(n,t,l)}function v(n,t){return c(n,t,p)}export{v as a,m as g};
|
package/dist/preview/index.html
CHANGED
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
`--primary`, the primary button variant renders as transparent. */
|
|
11
11
|
body { --primary: #009689; }
|
|
12
12
|
</style>
|
|
13
|
-
<script type="module" crossorigin src="./assets/index-
|
|
14
|
-
<link rel="stylesheet" crossorigin href="./assets/index-
|
|
13
|
+
<script type="module" crossorigin src="./assets/index-yvElpEK3.js"></script>
|
|
14
|
+
<link rel="stylesheet" crossorigin href="./assets/index-BnJ5p1Mx.css">
|
|
15
15
|
</head>
|
|
16
16
|
<body>
|
|
17
17
|
<div id="app"></div>
|
|
@@ -78,10 +78,10 @@ function addTrigger(option) {
|
|
|
78
78
|
function updateParams(index, params) {
|
|
79
79
|
emit("update:triggers", props.triggers.map((t, i) => i === index ? { ...t, params } : t));
|
|
80
80
|
}
|
|
81
|
-
const
|
|
82
|
-
function
|
|
83
|
-
if (
|
|
84
|
-
else
|
|
81
|
+
const expanded = ref(/* @__PURE__ */ new Set());
|
|
82
|
+
function toggleExpanded(key) {
|
|
83
|
+
if (expanded.value.has(key)) expanded.value.delete(key);
|
|
84
|
+
else expanded.value.add(key);
|
|
85
85
|
}
|
|
86
86
|
function opConfigFor(trigger) {
|
|
87
87
|
if (!trigger.compatibilityDate) return void 0;
|
|
@@ -200,12 +200,12 @@ function rowConfig(rowKey) {
|
|
|
200
200
|
>
|
|
201
201
|
<button
|
|
202
202
|
type="button"
|
|
203
|
-
:aria-expanded="
|
|
204
|
-
:aria-label="
|
|
205
|
-
@click="
|
|
203
|
+
:aria-expanded="expanded.has(row.key)"
|
|
204
|
+
:aria-label="expanded.has(row.key) ? '\u6298\u53E0\u53C2\u6570' : '\u5C55\u5F00\u53C2\u6570'"
|
|
205
|
+
@click="toggleExpanded(row.key)"
|
|
206
206
|
>
|
|
207
207
|
<Icon
|
|
208
|
-
:icon="
|
|
208
|
+
:icon="expanded.has(row.key) ? 'fluent:chevron-down-20-regular' : 'fluent:chevron-right-20-regular'"
|
|
209
209
|
/>
|
|
210
210
|
</button>
|
|
211
211
|
</InputGroupButton>
|
|
@@ -228,12 +228,12 @@ function rowConfig(rowKey) {
|
|
|
228
228
|
<!-- Parameterized op: its own `config.vue`, bound to the trigger's
|
|
229
229
|
`params`. Param-less ops and dangling rows render nothing here.
|
|
230
230
|
`v-show` (not `v-if`) so the editor stays mounted while collapsed —
|
|
231
|
-
its draft state and continuous validation keep running.
|
|
232
|
-
row-scope wrapper provides this row's step roster
|
|
233
|
-
outputs) to the param editor's ExpressionEditors. -->
|
|
231
|
+
its draft state and continuous validation keep running. Rows start
|
|
232
|
+
collapsed; the row-scope wrapper provides this row's step roster
|
|
233
|
+
(earlier rows' outputs) to the param editor's ExpressionEditors. -->
|
|
234
234
|
<div
|
|
235
235
|
v-if="opConfigFor(row.trigger)"
|
|
236
|
-
v-show="
|
|
236
|
+
v-show="expanded.has(row.key)"
|
|
237
237
|
class="mt-2 rounded-md border border-zinc-200 bg-zinc-50/50 p-3"
|
|
238
238
|
>
|
|
239
239
|
<TriggerRowScope :roster="stepRosterFor(index)">
|
|
@@ -389,7 +389,7 @@ export function useConfigEditor(model, options = {}) {
|
|
|
389
389
|
validationError.value = formatValidationError(err, (i) => {
|
|
390
390
|
const b = topSlotEditor.blocks.value[i];
|
|
391
391
|
return b ? topSlotEditor.getBlockLabel(b) : void 0;
|
|
392
|
-
});
|
|
392
|
+
}, draft.value);
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
395
|
function reset() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function formatValidationError(err: unknown, blockLabelAt: (index: number) => string | undefined): string;
|
|
1
|
+
export declare function formatValidationError(err: unknown, blockLabelAt: (index: number) => string | undefined, rootData?: unknown): string;
|
|
@@ -3,9 +3,43 @@ function isDiscriminatorMiss(issue) {
|
|
|
3
3
|
const last = issue.path[issue.path.length - 1];
|
|
4
4
|
return (last === "type" || last === "compatibilityDate") && issue.message.startsWith('Expected "');
|
|
5
5
|
}
|
|
6
|
-
function
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
function isObject(v) {
|
|
7
|
+
return typeof v === "object" && v !== null;
|
|
8
|
+
}
|
|
9
|
+
function localeText(v) {
|
|
10
|
+
if (!Array.isArray(v)) return void 0;
|
|
11
|
+
for (const item of v) {
|
|
12
|
+
if (isObject(item) && typeof item.message === "string" && item.message.trim()) {
|
|
13
|
+
return item.message.trim();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
return void 0;
|
|
17
|
+
}
|
|
18
|
+
function nodeLabel(node) {
|
|
19
|
+
if (!isObject(node)) return void 0;
|
|
20
|
+
return localeText(node.label) ?? localeText(node.title) ?? (typeof node.displayName === "string" && node.displayName.trim() ? node.displayName.trim() : void 0) ?? (typeof node.type === "string" ? node.type : void 0);
|
|
21
|
+
}
|
|
22
|
+
function describePath(path, rootData, blockLabelAt) {
|
|
23
|
+
const segs = [];
|
|
24
|
+
let node = rootData;
|
|
25
|
+
let labeledTopBlock = false;
|
|
26
|
+
for (let i = 0; i < path.length; i++) {
|
|
27
|
+
const seg = path[i];
|
|
28
|
+
node = isObject(node) ? node[seg] : void 0;
|
|
29
|
+
const isLeaf = i === path.length - 1;
|
|
30
|
+
if (typeof seg === "number") {
|
|
31
|
+
const isTopBlock = !labeledTopBlock && path[i - 1] === "blocks" && path[i - 2] === "slot";
|
|
32
|
+
if (isTopBlock) {
|
|
33
|
+
labeledTopBlock = true;
|
|
34
|
+
segs.push(blockLabelAt(seg) ?? nodeLabel(node) ?? `#${seg}`);
|
|
35
|
+
} else {
|
|
36
|
+
segs.push(nodeLabel(node) ?? `#${seg}`);
|
|
37
|
+
}
|
|
38
|
+
} else if (isLeaf) {
|
|
39
|
+
segs.push(String(seg));
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return segs;
|
|
9
43
|
}
|
|
10
44
|
function fallback(err) {
|
|
11
45
|
if (err instanceof Error) return err.message;
|
|
@@ -15,7 +49,7 @@ function fallback(err) {
|
|
|
15
49
|
return String(err);
|
|
16
50
|
}
|
|
17
51
|
}
|
|
18
|
-
export function formatValidationError(err, blockLabelAt) {
|
|
52
|
+
export function formatValidationError(err, blockLabelAt, rootData) {
|
|
19
53
|
if (!ParseResult.isParseError(err)) return fallback(err);
|
|
20
54
|
try {
|
|
21
55
|
const issues = ParseResult.ArrayFormatter.formatErrorSync(err);
|
|
@@ -23,9 +57,8 @@ export function formatValidationError(err, blockLabelAt) {
|
|
|
23
57
|
const picked = real.length > 0 ? real : issues;
|
|
24
58
|
const first = picked[0];
|
|
25
59
|
if (!first) return fallback(err);
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const prefix = label ? `\u300C${label}\u300D\uFF1A` : "";
|
|
60
|
+
const segs = describePath(first.path, rootData, blockLabelAt);
|
|
61
|
+
const prefix = segs.length > 0 ? `\u300C${segs.join(" \u203A ")}\u300D\uFF1A` : "";
|
|
29
62
|
const suffix = picked.length > 1 ? `\uFF08\u8FD8\u6709 ${picked.length - 1} \u4E2A\u95EE\u9898\uFF09` : "";
|
|
30
63
|
return `${prefix}${first.message}${suffix}`;
|
|
31
64
|
} catch {
|
package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.markdown/runtime.vue
CHANGED
|
@@ -6,20 +6,20 @@ import { celBindings, injectCELContext } from "../../../../../utils/cel-context"
|
|
|
6
6
|
import { getLocalizedText } from "../../../../../share/locale";
|
|
7
7
|
import { Markdown } from "../../../../ui/markdown";
|
|
8
8
|
import { interpolateMarkdown } from "../../../../table/utils/runtime";
|
|
9
|
-
import {
|
|
9
|
+
import { useFormScope } from "../../../utils/state";
|
|
10
10
|
defineOptions({ name: "ShwfedMarkdownFieldRuntime" });
|
|
11
11
|
const props = defineProps({
|
|
12
12
|
fieldId: { type: String, required: true },
|
|
13
13
|
config: { type: null, required: true }
|
|
14
14
|
});
|
|
15
15
|
const { locale } = useI18n();
|
|
16
|
-
const
|
|
16
|
+
const formScope = useFormScope();
|
|
17
17
|
const inherited = injectCELContext();
|
|
18
18
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
19
19
|
const source = computed(() => {
|
|
20
20
|
const template = getLocalizedText(props.config.content, locale.value) ?? "";
|
|
21
21
|
if (!template) return "";
|
|
22
|
-
return interpolateMarkdown(template, $cel, { form: state.value ?? {} });
|
|
22
|
+
return interpolateMarkdown(template, $cel, { form: formScope.state.value ?? {} });
|
|
23
23
|
});
|
|
24
24
|
</script>
|
|
25
25
|
|
package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.text/runtime.vue
CHANGED
|
@@ -13,14 +13,14 @@ import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
|
13
13
|
import { useFieldValue } from "../../../utils/field-value";
|
|
14
14
|
import { useFieldValidation } from "../../../utils/validation";
|
|
15
15
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
16
|
-
import {
|
|
16
|
+
import { useFormScope } from "../../../utils/state";
|
|
17
17
|
defineOptions({ name: "ShwfedTextFieldRuntime" });
|
|
18
18
|
const props = defineProps({
|
|
19
19
|
fieldId: { type: String, required: true },
|
|
20
20
|
config: { type: null, required: true }
|
|
21
21
|
});
|
|
22
22
|
const { locale } = useI18n();
|
|
23
|
-
const
|
|
23
|
+
const formScope = useFormScope();
|
|
24
24
|
const inherited = injectCELContext();
|
|
25
25
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
26
26
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -33,7 +33,7 @@ const tooltipText = computed(
|
|
|
33
33
|
function evalBool(expression, label) {
|
|
34
34
|
if (!expression) return false;
|
|
35
35
|
try {
|
|
36
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
36
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
37
37
|
} catch (err) {
|
|
38
38
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
39
39
|
return false;
|
|
@@ -90,9 +90,10 @@ function handleClear() {
|
|
|
90
90
|
</FieldLabel>
|
|
91
91
|
<div
|
|
92
92
|
v-if="effectiveReadonly"
|
|
93
|
-
class="min-h-9 py-1.5 text-sm
|
|
93
|
+
class="min-h-9 py-1.5 text-sm"
|
|
94
|
+
:class="draft ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
94
95
|
>
|
|
95
|
-
{{ draft || "
|
|
96
|
+
{{ draft || "-" }}
|
|
96
97
|
</div>
|
|
97
98
|
<InputGroup
|
|
98
99
|
v-else
|
package/dist/runtime/components/form/fields/2026-04-22/com.shwfed.form.field.textarea/runtime.vue
CHANGED
|
@@ -12,14 +12,14 @@ import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
|
12
12
|
import { useFieldValue } from "../../../utils/field-value";
|
|
13
13
|
import { useFieldValidation } from "../../../utils/validation";
|
|
14
14
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
15
|
-
import {
|
|
15
|
+
import { useFormScope } from "../../../utils/state";
|
|
16
16
|
defineOptions({ name: "ShwfedTextareaFieldRuntime" });
|
|
17
17
|
const props = defineProps({
|
|
18
18
|
fieldId: { type: String, required: true },
|
|
19
19
|
config: { type: null, required: true }
|
|
20
20
|
});
|
|
21
21
|
const { locale } = useI18n();
|
|
22
|
-
const
|
|
22
|
+
const formScope = useFormScope();
|
|
23
23
|
const inherited = injectCELContext();
|
|
24
24
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
25
25
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -33,7 +33,7 @@ const maxLength = computed(() => props.config.maxLength);
|
|
|
33
33
|
function evalBool(expression, label) {
|
|
34
34
|
if (!expression) return false;
|
|
35
35
|
try {
|
|
36
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
36
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
37
37
|
} catch (err) {
|
|
38
38
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
39
39
|
return false;
|
|
@@ -85,9 +85,10 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
|
|
|
85
85
|
</FieldLabel>
|
|
86
86
|
<div
|
|
87
87
|
v-if="effectiveReadonly"
|
|
88
|
-
class="min-h-9 py-1.5 text-sm whitespace-pre-wrap
|
|
88
|
+
class="min-h-9 py-1.5 text-sm whitespace-pre-wrap"
|
|
89
|
+
:class="draft ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
89
90
|
>
|
|
90
|
-
{{ draft || "
|
|
91
|
+
{{ draft || "-" }}
|
|
91
92
|
</div>
|
|
92
93
|
<InputGroup v-else>
|
|
93
94
|
<InputGroupTextarea
|
|
@@ -21,7 +21,7 @@ import { Markdown } from "../../../../ui/markdown";
|
|
|
21
21
|
import { Popover, PopoverAnchor, PopoverContent, PopoverTrigger } from "../../../../ui/popover";
|
|
22
22
|
import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
23
23
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
24
|
-
import { useFormState } from "../../../utils/state";
|
|
24
|
+
import { useFormScope, useFormState } from "../../../utils/state";
|
|
25
25
|
defineOptions({ name: "ShwfedComboboxSingleFieldRuntime" });
|
|
26
26
|
const props = defineProps({
|
|
27
27
|
fieldId: { type: String, required: true },
|
|
@@ -47,7 +47,8 @@ const { locale, t } = useI18n({
|
|
|
47
47
|
}
|
|
48
48
|
}
|
|
49
49
|
});
|
|
50
|
-
const {
|
|
50
|
+
const { getAt, setAt } = useFormState();
|
|
51
|
+
const formScope = useFormScope();
|
|
51
52
|
const inherited = injectCELContext();
|
|
52
53
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
53
54
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -60,7 +61,7 @@ const tooltipText = computed(
|
|
|
60
61
|
function evalBool(expression, label) {
|
|
61
62
|
if (!expression) return false;
|
|
62
63
|
try {
|
|
63
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
64
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
64
65
|
} catch (err) {
|
|
65
66
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
66
67
|
return false;
|
|
@@ -74,7 +75,7 @@ const isReadonly = computed(
|
|
|
74
75
|
const effectiveReadonly = computed(() => isReadonly.value || props.config.derived?.mode === "formula");
|
|
75
76
|
function valueOf(option) {
|
|
76
77
|
try {
|
|
77
|
-
return Effect.runSync($cel(props.config.optionValue, { form: state.value ?? {}, option }));
|
|
78
|
+
return Effect.runSync($cel(props.config.optionValue, { form: formScope.state.value ?? {}, option }));
|
|
78
79
|
} catch (err) {
|
|
79
80
|
console.error(`[shwfed-form] failed to evaluate optionValue for ${props.fieldId}:`, err);
|
|
80
81
|
return void 0;
|
|
@@ -83,12 +84,12 @@ function valueOf(option) {
|
|
|
83
84
|
function labelOf(option) {
|
|
84
85
|
const tpl = getLocalizedText(props.config.optionLabel, locale.value) ?? "";
|
|
85
86
|
if (!tpl) return "";
|
|
86
|
-
return interpolateMarkdown(tpl, $cel, { form: state.value ?? {}, option });
|
|
87
|
+
return interpolateMarkdown(tpl, $cel, { form: formScope.state.value ?? {}, option });
|
|
87
88
|
}
|
|
88
89
|
const entries = computed(() => {
|
|
89
90
|
let raw;
|
|
90
91
|
try {
|
|
91
|
-
raw = Effect.runSync($cel(props.config.options, { form: state.value ?? {} }));
|
|
92
|
+
raw = Effect.runSync($cel(props.config.options, { form: formScope.state.value ?? {} }));
|
|
92
93
|
} catch (err) {
|
|
93
94
|
console.error(`[shwfed-form] failed to evaluate options for ${props.fieldId}:`, err);
|
|
94
95
|
return [];
|
|
@@ -175,9 +176,10 @@ function handleClear() {
|
|
|
175
176
|
</FieldLabel>
|
|
176
177
|
<div
|
|
177
178
|
v-if="effectiveReadonly"
|
|
178
|
-
class="min-h-9 py-1.5 text-sm
|
|
179
|
+
class="min-h-9 py-1.5 text-sm"
|
|
180
|
+
:class="selectedLabel ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
179
181
|
>
|
|
180
|
-
{{ selectedLabel || "
|
|
182
|
+
{{ selectedLabel || "-" }}
|
|
181
183
|
</div>
|
|
182
184
|
<Popover
|
|
183
185
|
v-else
|
package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.date/runtime.vue
CHANGED
|
@@ -12,14 +12,15 @@ import { Markdown } from "../../../../ui/markdown";
|
|
|
12
12
|
import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
13
13
|
import { useFieldValidation } from "../../../utils/validation";
|
|
14
14
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
15
|
-
import { useFormState } from "../../../utils/state";
|
|
15
|
+
import { useFormScope, useFormState } from "../../../utils/state";
|
|
16
16
|
defineOptions({ name: "ShwfedDateFieldRuntime" });
|
|
17
17
|
const props = defineProps({
|
|
18
18
|
fieldId: { type: String, required: true },
|
|
19
19
|
config: { type: null, required: true }
|
|
20
20
|
});
|
|
21
21
|
const { locale } = useI18n();
|
|
22
|
-
const {
|
|
22
|
+
const { getAt, setAt } = useFormState();
|
|
23
|
+
const formScope = useFormScope();
|
|
23
24
|
const inherited = injectCELContext();
|
|
24
25
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
25
26
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -32,7 +33,7 @@ const tooltipText = computed(
|
|
|
32
33
|
function evalBool(expression, label) {
|
|
33
34
|
if (!expression) return false;
|
|
34
35
|
try {
|
|
35
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
36
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
36
37
|
} catch (err) {
|
|
37
38
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
38
39
|
return false;
|
|
@@ -54,7 +55,7 @@ const shortcuts = computed(() => {
|
|
|
54
55
|
name: preset.label,
|
|
55
56
|
value: () => {
|
|
56
57
|
try {
|
|
57
|
-
const d = Effect.runSync($cel(preset.value, { form: state.value ?? {} }));
|
|
58
|
+
const d = Effect.runSync($cel(preset.value, { form: formScope.state.value ?? {} }));
|
|
58
59
|
return formatDate(d, resolvedValueFormat.value);
|
|
59
60
|
} catch (err) {
|
|
60
61
|
console.error(`[shwfed-form] failed to evaluate preset "${preset.value}" for ${props.fieldId}:`, err);
|
|
@@ -115,9 +116,10 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
|
|
|
115
116
|
</FieldLabel>
|
|
116
117
|
<div
|
|
117
118
|
v-if="effectiveReadonly"
|
|
118
|
-
class="min-h-9 py-1.5 text-sm
|
|
119
|
+
class="min-h-9 py-1.5 text-sm"
|
|
120
|
+
:class="model ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
119
121
|
>
|
|
120
|
-
{{ model || "
|
|
122
|
+
{{ model || "-" }}
|
|
121
123
|
</div>
|
|
122
124
|
<DatePicker
|
|
123
125
|
v-else
|
package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.daterange/runtime.vue
CHANGED
|
@@ -12,14 +12,15 @@ import { Markdown } from "../../../../ui/markdown";
|
|
|
12
12
|
import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
13
13
|
import { useFieldValidation } from "../../../utils/validation";
|
|
14
14
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
15
|
-
import { useFormState } from "../../../utils/state";
|
|
15
|
+
import { useFormScope, useFormState } from "../../../utils/state";
|
|
16
16
|
defineOptions({ name: "ShwfedDateRangeFieldRuntime" });
|
|
17
17
|
const props = defineProps({
|
|
18
18
|
fieldId: { type: String, required: true },
|
|
19
19
|
config: { type: null, required: true }
|
|
20
20
|
});
|
|
21
21
|
const { locale } = useI18n();
|
|
22
|
-
const {
|
|
22
|
+
const { getAt, setAt } = useFormState();
|
|
23
|
+
const formScope = useFormScope();
|
|
23
24
|
const inherited = injectCELContext();
|
|
24
25
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
25
26
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -35,7 +36,7 @@ const tooltipText = computed(
|
|
|
35
36
|
function evalBool(expression, label) {
|
|
36
37
|
if (!expression) return false;
|
|
37
38
|
try {
|
|
38
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
39
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
39
40
|
} catch (err) {
|
|
40
41
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
41
42
|
return false;
|
|
@@ -57,8 +58,8 @@ const shortcuts = computed(() => {
|
|
|
57
58
|
name: preset.label,
|
|
58
59
|
value: () => {
|
|
59
60
|
try {
|
|
60
|
-
const start = Effect.runSync($cel(preset.start, { form: state.value ?? {} }));
|
|
61
|
-
const end = Effect.runSync($cel(preset.end, { form: state.value ?? {} }));
|
|
61
|
+
const start = Effect.runSync($cel(preset.start, { form: formScope.state.value ?? {} }));
|
|
62
|
+
const end = Effect.runSync($cel(preset.end, { form: formScope.state.value ?? {} }));
|
|
62
63
|
return [
|
|
63
64
|
formatDate(start, resolvedValueFormat.value),
|
|
64
65
|
formatDate(end, resolvedValueFormat.value)
|
|
@@ -113,7 +114,7 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
|
|
|
113
114
|
});
|
|
114
115
|
const readonlyText = computed(() => {
|
|
115
116
|
const v = model.value;
|
|
116
|
-
if (!v) return
|
|
117
|
+
if (!v) return null;
|
|
117
118
|
return `${v[0]} ~ ${v[1]}`;
|
|
118
119
|
});
|
|
119
120
|
</script>
|
|
@@ -145,9 +146,10 @@ const readonlyText = computed(() => {
|
|
|
145
146
|
</FieldLabel>
|
|
146
147
|
<div
|
|
147
148
|
v-if="effectiveReadonly"
|
|
148
|
-
class="min-h-9 py-1.5 text-sm
|
|
149
|
+
class="min-h-9 py-1.5 text-sm"
|
|
150
|
+
:class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
149
151
|
>
|
|
150
|
-
{{ readonlyText }}
|
|
152
|
+
{{ readonlyText || "-" }}
|
|
151
153
|
</div>
|
|
152
154
|
<DateRangePicker
|
|
153
155
|
v-else
|
package/dist/runtime/components/form/fields/2026-04-27/com.shwfed.form.field.datetime/runtime.vue
CHANGED
|
@@ -12,14 +12,15 @@ import { Markdown } from "../../../../ui/markdown";
|
|
|
12
12
|
import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
13
13
|
import { useFieldValidation } from "../../../utils/validation";
|
|
14
14
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
15
|
-
import { useFormState } from "../../../utils/state";
|
|
15
|
+
import { useFormScope, useFormState } from "../../../utils/state";
|
|
16
16
|
defineOptions({ name: "ShwfedDateTimeFieldRuntime" });
|
|
17
17
|
const props = defineProps({
|
|
18
18
|
fieldId: { type: String, required: true },
|
|
19
19
|
config: { type: null, required: true }
|
|
20
20
|
});
|
|
21
21
|
const { locale } = useI18n();
|
|
22
|
-
const {
|
|
22
|
+
const { getAt, setAt } = useFormState();
|
|
23
|
+
const formScope = useFormScope();
|
|
23
24
|
const inherited = injectCELContext();
|
|
24
25
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
25
26
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -32,7 +33,7 @@ const tooltipText = computed(
|
|
|
32
33
|
function evalBool(expression, label) {
|
|
33
34
|
if (!expression) return false;
|
|
34
35
|
try {
|
|
35
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
36
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
36
37
|
} catch (err) {
|
|
37
38
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
38
39
|
return false;
|
|
@@ -54,7 +55,7 @@ const shortcuts = computed(() => {
|
|
|
54
55
|
name: preset.label,
|
|
55
56
|
value: () => {
|
|
56
57
|
try {
|
|
57
|
-
const d = Effect.runSync($cel(preset.value, { form: state.value ?? {} }));
|
|
58
|
+
const d = Effect.runSync($cel(preset.value, { form: formScope.state.value ?? {} }));
|
|
58
59
|
return formatDate(d, resolvedValueFormat.value);
|
|
59
60
|
} catch (err) {
|
|
60
61
|
console.error(`[shwfed-form] failed to evaluate preset "${preset.value}" for ${props.fieldId}:`, err);
|
|
@@ -115,9 +116,10 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
|
|
|
115
116
|
</FieldLabel>
|
|
116
117
|
<div
|
|
117
118
|
v-if="effectiveReadonly"
|
|
118
|
-
class="min-h-9 py-1.5 text-sm
|
|
119
|
+
class="min-h-9 py-1.5 text-sm"
|
|
120
|
+
:class="model ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
119
121
|
>
|
|
120
|
-
{{ model || "
|
|
122
|
+
{{ model || "-" }}
|
|
121
123
|
</div>
|
|
122
124
|
<DatePicker
|
|
123
125
|
v-else
|
|
@@ -12,14 +12,15 @@ import { Markdown } from "../../../../ui/markdown";
|
|
|
12
12
|
import { DEFAULT_FIELD_ORIENTATION } from "../../../utils/common";
|
|
13
13
|
import { useFieldValidation } from "../../../utils/validation";
|
|
14
14
|
import { useFormReadonly } from "../../../utils/readonly";
|
|
15
|
-
import { useFormState } from "../../../utils/state";
|
|
15
|
+
import { useFormScope, useFormState } from "../../../utils/state";
|
|
16
16
|
defineOptions({ name: "ShwfedDateTimeRangeFieldRuntime" });
|
|
17
17
|
const props = defineProps({
|
|
18
18
|
fieldId: { type: String, required: true },
|
|
19
19
|
config: { type: null, required: true }
|
|
20
20
|
});
|
|
21
21
|
const { locale } = useI18n();
|
|
22
|
-
const {
|
|
22
|
+
const { getAt, setAt } = useFormState();
|
|
23
|
+
const formScope = useFormScope();
|
|
23
24
|
const inherited = injectCELContext();
|
|
24
25
|
const $cel = (expression, context) => _rawCel(expression, { ...celBindings(inherited), ...context });
|
|
25
26
|
const labelText = computed(() => getLocalizedText(props.config.label, locale.value));
|
|
@@ -35,7 +36,7 @@ const tooltipText = computed(
|
|
|
35
36
|
function evalBool(expression, label) {
|
|
36
37
|
if (!expression) return false;
|
|
37
38
|
try {
|
|
38
|
-
return Effect.runSync($cel(expression, { form: state.value ?? {} }));
|
|
39
|
+
return Effect.runSync($cel(expression, { form: formScope.state.value ?? {} }));
|
|
39
40
|
} catch (err) {
|
|
40
41
|
console.error(`[shwfed-form] failed to evaluate ${label} for ${props.fieldId}:`, err);
|
|
41
42
|
return false;
|
|
@@ -57,8 +58,8 @@ const shortcuts = computed(() => {
|
|
|
57
58
|
name: preset.label,
|
|
58
59
|
value: () => {
|
|
59
60
|
try {
|
|
60
|
-
const start = Effect.runSync($cel(preset.start, { form: state.value ?? {} }));
|
|
61
|
-
const end = Effect.runSync($cel(preset.end, { form: state.value ?? {} }));
|
|
61
|
+
const start = Effect.runSync($cel(preset.start, { form: formScope.state.value ?? {} }));
|
|
62
|
+
const end = Effect.runSync($cel(preset.end, { form: formScope.state.value ?? {} }));
|
|
62
63
|
return [
|
|
63
64
|
formatDate(start, resolvedValueFormat.value),
|
|
64
65
|
formatDate(end, resolvedValueFormat.value)
|
|
@@ -113,7 +114,7 @@ const { isRequired, errors, warnings, visible } = useFieldValidation({
|
|
|
113
114
|
});
|
|
114
115
|
const readonlyText = computed(() => {
|
|
115
116
|
const v = model.value;
|
|
116
|
-
if (!v) return
|
|
117
|
+
if (!v) return null;
|
|
117
118
|
return `${v[0]} ~ ${v[1]}`;
|
|
118
119
|
});
|
|
119
120
|
</script>
|
|
@@ -145,9 +146,10 @@ const readonlyText = computed(() => {
|
|
|
145
146
|
</FieldLabel>
|
|
146
147
|
<div
|
|
147
148
|
v-if="effectiveReadonly"
|
|
148
|
-
class="min-h-9 py-1.5 text-sm
|
|
149
|
+
class="min-h-9 py-1.5 text-sm"
|
|
150
|
+
:class="readonlyText ? 'text-zinc-700' : 'font-mono text-zinc-300 select-none'"
|
|
149
151
|
>
|
|
150
|
-
{{ readonlyText }}
|
|
152
|
+
{{ readonlyText || "-" }}
|
|
151
153
|
</div>
|
|
152
154
|
<DateRangePicker
|
|
153
155
|
v-else
|