@yongdall/pages 0.1.1 → 0.2.0

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/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{Command as e,Menu as t,Pagination as n,Search as r,User as i,createComputed as a,createQuickFilters as o,createShowField as s,createState as c,createStore as l,effect as u,filterPermission as d,formLayoutsService as f,getAuthorizations as p,getPatternFields as m,modelService as h,renderForm as g,runPattern as _,showFilterDialog as v,waitAbortSignal as y,watch as b,webRoot as x}from"@yongdall/web";import S from"@yongdall/web/plugin";import{Check as C,Source as w}from"@neeloong/table";function T(e,t,n,r,i){let o=document.createElement(`a`);o.appendChild(document.createTextNode(r.label||r.title||``));let{page:s,path:c,uri:l,command:d}=r,f=a(()=>!!e(r)),p=``,m=r.target;return s?(p=new URL(c?.[0]===`/`?`${s}${c}`:`${s}/${c||``}`,x).href,m||=`_self`):l?p=l:d&&(p=t(r)),u(()=>{let e=f.get();o.disabled=e,o.ariaDisabled=e?`true`:`false`,e?(o.removeAttribute(`tabindex`),o.removeAttribute(`href`)):(o.tabIndex=0,p&&(o.href=p))},i),o.addEventListener(`click`,e=>{f.get()&&(e.preventDefault(),e.stopPropagation())}),p&&m&&(o.target=m??`_blank`),!p&&d&&o.addEventListener(`click`,e=>{f.get()||e.defaultPrevented||n(r)}),o}S.importStyle(`@neeloong/table/style.css`);async function E(l){let f=l.ident;if(f.type!==`model`)return l.setError(404);if(!l.search.slice(1)){let e=l.define?.defaultQuery;e&&l.setPath(`?${e.replaceAll(`#`,`%23`)}${l.hash}`,!0)}let g=a(()=>r.parse(l.search.slice(1)));function y(e){let t=r.stringify({...g.get(),...e},!0);t!==l.search.slice(1)&&l.setPath(`?${t}`,!0)}let x=l.container;l.panel=!0;let S=l.createHeader(),E=S?.container||x.appendChild(document.createElement(`div`)),D=S?.container||E.appendChild(document.createElement(`div`));D.classList.add(`QueryFilters`);let O=h(f.model);l.title=l.define?.title||`列表`,l.mode=`flex`;let k=await O.loadScript();if(l.destroyed)return;let A=k?.label||k.id||``;l.title=l.define?.title||(A?`列表:${A}`:`列表`);let j=c([]),M=new w({idKey:`_`,parentKey:`parent`}),N=c([]),P=a(()=>new Set(N.get())),F=a(()=>{let e=P.get();return j.get().filter(t=>e.has(t._))}),I=k.fields,L=Object.entries(I).filter(([,{type:e}])=>e&&typeof e!=`object`),R=L.filter(([,e])=>e.primary).map(([e])=>e),z=k.labelPattern||``,B=[];for(let{field:e,width:t,label:n}of l.define?.fields||[]){if(!e||!Object.hasOwn(I,e))continue;let r=I[e];if(!r)continue;let i=r.type;!i||typeof i!=`string`||B.push({name:e,width:t||void 0,title:n||r.label||``,field:r})}if(!B.length){for(let[e,t]of L)if(B.push({name:e,title:t.label||``,field:t}),B.length>=4)break}let V=[...new Set([...B.map(e=>e.name),...R,...m(z)])];u(()=>M.setValue(j.get()),l.signal);let H=B.map(({name:e,field:t,title:n,width:r})=>({field:e,title:n,width:r,resizable:!0,render(n){let r=document.createElement(`div`),i=s(e,t,{},n.data);return r.appendChild(i.root),{root:r,destroy(){i.destroy()},setHidden(){},update(){i.destroy(),r.innerHTML=``,i=s(e,t,{},n.data),r.appendChild(i.root)}}}}));H.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`a`),r=_(z,t)||R.map(e=>t[e]).join(`$`);return n.href=l.toUrl(``,{...f,page:void 0,workspace:void 0,continuation:void 0,setting:!1,id:R.map(e=>t[e]).join(`$`)}),n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(){n.innerHTML=``,n.href=l.toUrl(``,{...f,page:void 0,workspace:void 0,continuation:void 0,setting:!1,id:R.map(e=>t[e]).join(`$`)}),n.appendChild(document.createTextNode(r))}}}}),H.unshift({field:`_`,extensions:[C],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let U=M.createGroup(H,2),W=document.createElement(`table`);U.createHeader(W.appendChild(document.createElement(`div`))),U.createBody(W.appendChild(document.createElement(`div`)));let G=new n,{limit:K,page:q}=g.get();K&&(G.size=K),q&&(G.page=q),G.listen(()=>{y({limit:G.size,page:G.page})});let J=0,Y=c(!1);async function X(){if(!l.destroyed&&!Y.get())try{Y.set(!0),J++;let e=J,t=g.get(),n=l.define,r=await O.query({...t,where:[...t.where||[],...n?.where||[]],or:n?.orWhere,select:V});if(l.destroyed||e!==J)return;l.loading=!1,j.set(r.documents.map(e=>({...e,_:R.map(t=>e[t]).join(`$`)}))),G.total=r.total}finally{Y.set(!1)}}function Z(){v(k,g.get().where,x).then(e=>{y({where:e})}).catch(()=>{})}let Q=l.toUrl(``,{...f,page:void 0,workspace:void 0,input:`*`,setting:!1,id:void 0});if(l.renderSides(l.define?.sides||[],{type:`documents`,pageIdent:f,model:k,get checkedDocuments(){return F.get()},get documents(){return j.get()},get where(){return g.get().where},set where(e){y({where:e})},get orWhere(){return g.get().orWhere},set orWhere(e){y({orWhere:e})}}),S){let n={type:`documents`,pageIdent:f,model:k,get checkedDocuments(){return F.get()},get documents(){return j.get()}},r=T.bind(null,t=>{switch(t.command){case`refresh`:return Y.get()}return e.disabled(n,t)},t=>{switch(t.command){case`create`:return Q}return e.toHref(n,t)},t=>{if(!l.destroyed){switch(t.command){case`refresh`:return X();case`filter`:return Z()}return e.exec(n,t)}}),o=l.define?.menus;o?.length||(o=[{label:`创建`,command:`create`,children:[],buttons:[]},{label:`刷新`,command:`refresh`,children:[],buttons:[]},{label:`过滤`,command:`filter`,children:[],buttons:[]}]);let s=a(()=>{let e=i.permissions;return e?p(k.permissions||[],e):{has(){return!0}}}),c=a(()=>{let e=i.permissions;return e?t.filter(o,t=>{let n=t.permission;return n?d(n,e,{has(e){return s.get().has(e)}}):!0},!1):o});S.setMenu(c.get(),r)}else{let e=E.appendChild(document.createElement(`button`)).appendChild(document.createElement(`a`));e.appendChild(document.createTextNode(`创建`)),e.href=Q;let t=E.appendChild(document.createElement(`button`));t.appendChild(document.createTextNode(`刷新`)),t.addEventListener(`click`,X),b(()=>Y.get(),e=>t.disabled=e,{immediate:!0,signal:l.signal});let n=E.appendChild(document.createElement(`button`));n.appendChild(document.createTextNode(`过滤`)),n.addEventListener(`click`,()=>{Z()})}o({get(){return g.get().where||[]},set(e){y({where:e}),X()}},D,l.define?.filters||[],{fields:k.fields,signal:l.signal,inline:!0}),x.appendChild(W),(l.createFooter()?.container||x.appendChild(document.createElement(`div`))).appendChild(G.root),b(()=>g.get(),X,{signal:l.signal}),await X()}async function D(n){n.title=`详情`;let r=n.ident;if(r.type!==`model`)return n.setError(404);let o=n.container;n.panel=!0;let s=n.createHeader(),m=s?.container||o.appendChild(document.createElement(`div`)),v=h(r.model),b=r.id,x=v.document(b),S=n.define?.forms.view?.layoutId,[C,w]=await Promise.all([v.loadScript(),S&&f(S).load().catch(()=>null)||null]);if(n.destroyed)return;let E=C?.label||C.id||``,D=E?`详情:${E}`:`详情`;n.title=D;let O=l(C);O.readonly=!0;let k=g(C,O,o.appendChild(document.createElement(`div`)),{enableLink:!0,editable:!1},w?.layout,w?.type);y(n.signal).then(()=>{k()});let A=c(!1),j=c(!1);u(()=>n.loading=j.get()||!A.get(),n.signal);async function M(){if(!j.get()&&!n.destroyed){j.set(!0);try{let e=await x.get();if(n.destroyed)return;O.reset(e),O.readonly=!0,n.title=_(C?.labelPattern,e)||D}finally{A.set(!0),j.set(!1)}}}if(n.renderSides(n.define?.sides||[],{type:`document`,pageIdent:r,model:C,get document(){return O.value},get store(){return O}}),s){let o={type:`document`,pageIdent:r,model:C,get document(){return O.value},get store(){return O}},c=T.bind(null,t=>{switch(t.command){case`refresh`:return j.get()||!A.get()}return e.disabled(o,t)},t=>{switch(t.command){case`edit`:return n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0});case`copy`:return n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0,input:`*`})}return e.toHref(o,t)},t=>{if(!n.destroyed){switch(t.command){case`refresh`:return M()}return e.exec(o,t)}}),l=n.define?.menus;l?.length||(l=[{label:`刷新`,command:`refresh`,children:[],buttons:[]},{label:`编辑`,command:`edit`,children:[],buttons:[]}]);let u=a(()=>{let e=i.permissions;return e?p(C.permissions||[],e,O.value):{has(){return!0}}}),f=a(()=>{let e=i.permissions;return e?t.filter(l,t=>{let n=t.permission;return n?d(n,e,{has(e){return u.get().has(e)}}):!0},!1):l});s.setMenu(f.get(),c)}else{let e=m.appendChild(document.createElement(`button`)),t=e.appendChild(document.createElement(`a`));t.appendChild(document.createTextNode(`编辑`)),t.href=n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0}),u(()=>e.disabled=j.get()||!A.get(),n.signal)}await M()}async function O(n){n.title=`编辑`;let r=n.ident;if(r.type!==`model`)return n.setError(404);let o=n.container;n.panel=!0;let s=n.createHeader(),m=s?.container||o.appendChild(document.createElement(`div`)),v=h(r.model),b=r.id,x=v.document(b),S=n.define?.forms.edit?.layoutId,[C,w]=await Promise.all([v.loadScript(),S&&f(S).load().catch(()=>null)||null]);if(n.destroyed)return;let E=C?.label||C.id||``,D=E?`编辑:${E}`:`编辑`;n.title=D;let O=l(C);u(()=>{n.unsaved=O.changed},n.signal);let k=g(C,O,o.appendChild(document.createElement(`div`)),{enableLink:!0,editable:!0},w?.layout,w?.type);y(n.signal).then(()=>{k()});let A=c(!1),j=c(!1);u(()=>n.loading=j.get()||!A.get(),n.signal);function M(e){let t=_(C?.labelPattern,e);t?n.title=t?`编辑:${t}`:`编辑`:n.title=D}async function N(){if(!j.get()&&!n.destroyed){j.set(!0);try{let e=await x.get();if(n.destroyed)return;O.reset(e,!1),M(e)}finally{A.set(!0),j.set(!1)}}}async function P(){if(!(j.get()||!A.get())&&!n.destroyed){j.set(!0);try{let e=await x.update(O.value);if(!e||(M(e),n.destroyed))return;O.reset(e,!1)}finally{j.set(!1)}}}if(n.renderSides(n.define?.sides||[],{type:`editDocument`,pageIdent:r,model:C,get document(){return O.value},get store(){return O}}),s){let o={type:`editDocument`,pageIdent:r,model:C,get document(){return O.value},get store(){return O}},c=T.bind(null,t=>{switch(t.command){case`save`:case`refresh`:return j.get()||!A.get()}return e.disabled(o,t)},t=>{switch(t.command){case`copy`:return n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0,input:`*`})}return e.toHref(o,t)},t=>{if(!n.destroyed){switch(t.command){case`refresh`:return N();case`save`:return P()}return e.exec(o,t)}}),l=n.define?.menus;l?.length||(l=[{label:`刷新`,command:`refresh`,children:[],buttons:[]},{label:`更新`,command:`save`,children:[],buttons:[]}]);let u=a(()=>{let e=i.permissions;return e?p(C.permissions||[],e,O.value):{has(){return!0}}}),f=a(()=>{let e=i.permissions;return e?t.filter(l,t=>{let n=t.permission;return n?d(n,e,{has(e){return u.get().has(e)}}):!0},!1):l});s.setMenu(f.get(),c)}else{let e=m.appendChild(document.createElement(`button`));e.disabled=!0,e.appendChild(document.createTextNode(`更新`)),u(()=>e.disabled=j.get()||!A.get(),n.signal),e.addEventListener(`click`,async()=>{P()})}await N()}function k(e){e.title=`!代办`,e.panel=!0,e.container.appendChild(document.createTextNode(`!代办`)),e.loading=!1}function A(e){e.title=`设置`,e.panel=!0,e.container.appendChild(document.createTextNode(`设置`)),e.loading=!1}function j(e){e.title=`搜索`,e.panel=!0,e.container.appendChild(document.createTextNode(`搜索`)),e.loading=!1}function M(e){e.title=`状态管理`,e.panel=!0,e.container.appendChild(document.createTextNode(`状态管理`)),e.loading=!1}async function N(n){let r=n.ident;if(r.type!==`model`)return n.setError(404);let o=h(r.model),s=n.container;n.panel=!0;let p=n.createHeader(),m=p?.container||s.appendChild(document.createElement(`div`)),v=n.define,b=v?.forms.new?.layoutId,[x,S]=await Promise.all([o.loadScript(),b&&f(b).load().catch(()=>null)||null]);if(n.destroyed||!x)return;let C=l(x);C.new=!0,u(()=>{n.unsaved=!C.changed},n.signal);let w=g(x,C,s.appendChild(document.createElement(`div`)),{enableLink:!0,editable:!0},S?.layout,S?.type);y(n.signal).then(()=>{w()});let E=c(!1);async function D(){if(!E.get()){E.set(!0);try{return await o.create(C.value)}finally{E.set(!1)}}}async function O(){let e=await D();e&&(n.open(`.`,{...r,page:void 0,continuation:void 0,setting:void 0,input:void 0,edit:!1,id:e.id},!0),n.destroy(!0))}if(n.renderSides(n.define?.sides||[],{type:`createDocument`,pageIdent:r,model:x,get document(){return C.value},get store(){return C}}),p){let o={type:`createDocument`,pageIdent:r,model:x,get document(){return C.value},get store(){return C}},s=T.bind(null,t=>{switch(t.command){case`create`:case`createGoto`:return E.get()}return e.disabled(o,t)},t=>e.toHref(o,t),t=>{if(!n.destroyed){switch(t.command){case`create`:return D();case`createGoto`:return O()}return e.exec(o,t)}}),c=n.define?.menus;c?.length||(c=[{label:`创建`,command:`createGoto`,children:[],buttons:[]}]);let l=a(()=>{let e=i.permissions;return e?t.filter(c,t=>{let n=t.permission;return n?d(n,e):!0},!1):c});p.setMenu(l.get(),s)}else{let e=m.appendChild(document.createElement(`button`));e.disabled=!0,e.appendChild(document.createTextNode(`创建`)),e.addEventListener(`click`,()=>{O()}),u(()=>{e.disabled=E.get()},n.signal)}if(r.id){let e=await o.document(r.id);if(n.destroyed)return;let t=_(x?.labelPattern,e);t&&(n.title=`复制:${t}`),C.reset(e)}else C.reset({});n.loading=!1;let k=x?.label||x.id||``;n.title=v?.title||(k?`新建:${k}`:`新建`)}function P(e){let t=e.ident;if(t.type===`model`){if(e.title=e.define?.title||`新建`,(t.input||`*`)!==`*`)return N(e);e.open(e.path,{...t,setting:!1,input:`${Math.random()}`.slice(2)},!0),e.destroy(!0)}}function F(e){e.open(`.`,{...e.ident,page:void 0,workspace:void 0,continuation:void 0,setting:void 0,id:void 0},!0),e.destroy(!0)}export{D as details,O as edit,E as list,P as new,j as search,A as settings,M as status,F as toMain,k as todo};
1
+ import{Command as e,Menu as t,Pagination as n,Search as r,User as i,createComputed as a,createQuickFilters as o,createShowField as s,createState as c,createStore as l,effect as u,filterPermission as d,formLayoutsService as f,getAuthorizations as p,getPatternFields as m,modelService as h,renderForm as g,runPattern as _,showFilterDialog as v,watch as y,webRoot as b}from"@yongdall/web";import x from"@yongdall/web/plugin";import{Check as S,Source as C}from"@neeloong/table";function w(e,t,n,r,i){let o=document.createElement(`a`);o.appendChild(document.createTextNode(r.label||r.title||``));let{page:s,path:c,uri:l,command:d}=r,f=a(()=>!!e(r)),p=``,m=r.target;return s?(p=new URL(c?.[0]===`/`?`${s}${c}`:`${s}/${c||``}`,b).href,m||=`_self`):l?p=l:d&&(p=t(r)),u(()=>{let e=f.get();o.disabled=e,o.ariaDisabled=e?`true`:`false`,e?(o.removeAttribute(`tabindex`),o.removeAttribute(`href`)):(o.tabIndex=0,p&&(o.href=p))},i),o.addEventListener(`click`,e=>{f.get()&&(e.preventDefault(),e.stopPropagation())}),p&&m&&(o.target=m??`_blank`),!p&&d&&o.addEventListener(`click`,e=>{f.get()||e.defaultPrevented||n(r)}),o}x.importStyle(`@neeloong/table/style.css`);async function T(l){let f=l.ident;if(f.type!==`model`)return l.setError(404);if(!l.search.slice(1)){let e=l.define?.defaultQuery;e&&l.setPath(`?${e.replaceAll(`#`,`%23`)}${l.hash}`,!0)}let g=a(()=>r.parse(l.search.slice(1)));function b(e){let t=r.stringify({...g.get(),...e},!0);t!==l.search.slice(1)&&l.setPath(`?${t}`,!0)}let x=l.container;l.panel=!0;let T=h(f.model);l.title=l.define?.title||`列表`,l.mode=`flex`;let E=await T.loadScript();if(l.destroyed)return;if(!E)return l.setError(404);let D=E?.label||E.id||``;l.title=l.define?.title||(D?`列表:${D}`:`列表`);let O=c([]),k=new C({idKey:`_`,parentKey:`parent`}),A=c([]),j=a(()=>new Set(A.get())),M=a(()=>{let e=j.get();return O.get().filter(t=>e.has(t._))}),N=E.fields,P=Object.entries(N).filter(([,{type:e}])=>e&&typeof e!=`object`),F=P.filter(([,e])=>e.primary).map(([e])=>e),I=E.labelPattern||``,L=[];for(let{field:e,width:t,label:n}of l.define?.fields||[]){if(!e||!Object.hasOwn(N,e))continue;let r=N[e];if(!r)continue;let i=r.type;!i||typeof i!=`string`||L.push({name:e,width:t||void 0,title:n||r.label||``,field:r})}if(!L.length){for(let[e,t]of P)if(L.push({name:e,title:t.label||``,field:t}),L.length>=4)break}let R=[...new Set([...L.map(e=>e.name),...F,...m(I)])];u(()=>k.setValue(O.get()),l.signal);let z=L.map(({name:e,field:t,title:n,width:r})=>({field:e,title:n,width:r,resizable:!0,render(n){let r=document.createElement(`div`),i=s(e,t,{},n.data);return r.appendChild(i.root),{root:r,destroy(){i.destroy()},setHidden(){},update(){i.destroy(),r.innerHTML=``,i=s(e,t,{},n.data),r.appendChild(i.root)}}}}));z.unshift({field:`_`,width:200,resizable:!0,render(e){let t=e.data,n=document.createElement(`a`),r=_(I,t)||F.map(e=>t[e]).join(`$`);return n.href=l.toUrl(``,{...f,page:void 0,workspace:void 0,continuation:void 0,setting:!1,id:F.map(e=>t[e]).join(`$`)}),n.appendChild(document.createTextNode(r)),{root:n,destroy(){},setHidden(){},update(){n.innerHTML=``,n.href=l.toUrl(``,{...f,page:void 0,workspace:void 0,continuation:void 0,setting:!1,id:F.map(e=>t[e]).join(`$`)}),n.appendChild(document.createTextNode(r))}}}}),z.unshift({field:`_`,extensions:[S],render(e){return{root:document.createElement(`div`),destroy(){},setHidden(){},update(){}}}});let B=k.createGroup(z,2),V=document.createElement(`table`);B.createHeader(V.appendChild(document.createElement(`div`))),B.createBody(V.appendChild(document.createElement(`div`)));let H=new n,{limit:U,page:W}=g.get();U&&(H.size=U),W&&(H.page=W),H.listen(()=>{b({limit:H.size,page:H.page})});let G=0,K=c(!1);async function q(){if(!l.destroyed&&!K.get())try{K.set(!0),G++;let e=G,t=g.get(),n=l.define,r=await T.query({...t,where:[...t.where||[],...n?.where||[]],or:n?.orWhere,select:R,total:!0});if(l.destroyed||e!==G)return;l.loading=!1,O.set(r.documents.map(e=>({...e,_:F.map(t=>e[t]).join(`$`)}))),H.total=r.total}finally{K.set(!1)}}function J(){E&&v(E,g.get().where,x).then(e=>{b({where:e})}).catch(()=>{})}let Y=l.toUrl(``,{...f,page:void 0,workspace:void 0,input:`*`,setting:!1,id:void 0});l.renderSides(l.define?.sides||[],{type:`documents`,pageIdent:f,model:E,get checkedDocuments(){return M.get()},get documents(){return O.get()},get where(){return g.get().where},set where(e){b({where:e})},get orWhere(){return g.get().orWhere},set orWhere(e){b({orWhere:e})}});let X={type:`documents`,pageIdent:f,model:E,get checkedDocuments(){return M.get()},get documents(){return O.get()}},ee=w.bind(null,t=>{switch(t.command){case`refresh`:return K.get()}return e.disabled(X,t)},t=>{switch(t.command){case`create`:return Y}return e.toHref(X,t)},t=>{if(!l.destroyed){switch(t.command){case`refresh`:return q();case`filter`:return J()}return e.exec(X,t)}}),Z=l.define?.menus;Z?.length||(Z=[{label:`创建`,command:`create`,children:[],buttons:[]},{label:`刷新`,command:`refresh`,children:[],buttons:[]},{label:`过滤`,command:`filter`,children:[],buttons:[]}]);let te=a(()=>{let e=i.permissions;return e.size<0?{has(){return!0}}:p(E.permissions||[],e)}),ne=a(()=>{let e=i.permissions;return e.size<0?Z:t.filter(Z,t=>{let n=t.permission;return n?d(n,e,{has(e){return te.get().has(e)}}):!0},!1)}),Q=l.createHeader();u(()=>Q.setMenu(ne.get(),ee),l.signal);let $=Q.container;$.classList.add(`QueryFilters`),o({get(){return g.get().where||[]},set(e){b({where:e}),q()}},$,l.define?.filters||[],{fields:E.fields,signal:l.signal,inline:!0}),x.appendChild(V),l.createFooter().container.appendChild(H.root),y(()=>g.get(),q,{signal:l.signal}),await q()}async function E(n){n.title=`详情`;let r=n.ident;if(r.type!==`model`)return n.setError(404);n.panel=!0;let o=h(r.model),s=r.id,m=o.document(s),v=n.define?.forms?.view?.layoutId,[y,b]=await Promise.all([o.loadScript(),v&&f(v).load().catch(()=>null)||null]);if(n.destroyed)return;if(!y)return n.setError(404);let x=y?.label||y.id||``,S=x?`详情:${x}`:`详情`;n.title=S;let C=l(y);C.readonly=!0,g(C,n.container,{model:y,editable:!1,signal:n.signal,enableLink:!0,layout:b?.layout,type:b?.type});let T=c(!1),E=c(!1);u(()=>n.loading=E.get()||!T.get(),n.signal);async function D(){if(!E.get()&&!n.destroyed){E.set(!0);try{let e=await m.get();if(n.destroyed)return;C.reset(e),C.readonly=!0,n.title=_(y?.labelPattern,e)||S}finally{T.set(!0),E.set(!1)}}}n.renderSides(n.define?.sides||[],{type:`document`,pageIdent:r,model:y,get document(){return C.value},get store(){return C}});let O={type:`document`,pageIdent:r,model:y,get document(){return C.value},get store(){return C}},k=w.bind(null,t=>{switch(t.command){case`refresh`:return E.get()||!T.get()}return e.disabled(O,t)},t=>{switch(t.command){case`edit`:return n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0});case`copy`:return n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0,input:`*`})}return e.toHref(O,t)},t=>{if(!n.destroyed){switch(t.command){case`refresh`:return D()}return e.exec(O,t)}}),A=n.define?.menus;A?.length||(A=[{label:`刷新`,command:`refresh`,children:[],buttons:[]},{label:`编辑`,command:`edit`,children:[],buttons:[]}]);let j=a(()=>{let e=i.permissions;return e.size<0?{has(){return!0}}:p(y.permissions||[],e,C.value)}),M=a(()=>{let e=i.permissions;return e.size<0?A:t.filter(A,t=>{let n=t.permission;return n?d(n,e,{has(e){return j.get().has(e)}}):!0},!1)}),N=n.createHeader();u(()=>N.setMenu(M.get(),k),n.signal),await D()}async function D(n){n.title=`编辑`;let r=n.ident;if(r.type!==`model`)return n.setError(404);n.panel=!0;let o=h(r.model),s=r.id,m=o.document(s),v=n.define?.forms?.edit?.layoutId,[y,b]=await Promise.all([o.loadScript(),v&&f(v).load().catch(()=>null)||null]);if(n.destroyed)return;if(!y)return n.setError(404);let x=y?.label||y.id||``,S=x?`编辑:${x}`:`编辑`;n.title=S;let C=l(y);u(()=>{n.unsaved=C.changed},n.signal),g(C,n.container,{model:y,editable:!0,signal:n.signal,enableLink:!0,layout:b?.layout,type:b?.type});let T=c(!1),E=c(!1);u(()=>n.loading=E.get()||!T.get(),n.signal);function D(e){let t=_(y?.labelPattern,e);t?n.title=t?`编辑:${t}`:`编辑`:n.title=S}async function O(){if(!E.get()&&!n.destroyed){E.set(!0);try{let e=await m.get();if(n.destroyed)return;C.reset(e,!1),D(e)}finally{T.set(!0),E.set(!1)}}}async function k(){if(!(E.get()||!T.get())&&!n.destroyed){E.set(!0);try{let e=await m.update(C.value);if(!e||(D(e),n.destroyed))return;C.reset(e,!1)}finally{E.set(!1)}}}n.renderSides(n.define?.sides||[],{type:`editDocument`,pageIdent:r,model:y,get document(){return C.value},get store(){return C}});let A={type:`editDocument`,pageIdent:r,model:y,get document(){return C.value},get store(){return C}},j=w.bind(null,t=>{switch(t.command){case`save`:case`refresh`:return E.get()||!T.get()}return e.disabled(A,t)},t=>{switch(t.command){case`copy`:return n.toUrl(``,{...r,page:void 0,workspace:void 0,setting:!1,edit:!0,input:`*`})}return e.toHref(A,t)},t=>{if(!n.destroyed){switch(t.command){case`refresh`:return O();case`save`:return k()}return e.exec(A,t)}}),M=n.define?.menus;M?.length||(M=[{label:`刷新`,command:`refresh`,children:[],buttons:[]},{label:`更新`,command:`save`,children:[],buttons:[]}]);let N=a(()=>{let e=i.permissions;return e.size<0?{has(){return!0}}:p(y.permissions||[],e,C.value)}),P=a(()=>{let e=i.permissions;return e.size<0?M:t.filter(M,t=>{let n=t.permission;return n?d(n,e,{has(e){return N.get().has(e)}}):!0},!1)}),F=n.createHeader();u(()=>F.setMenu(P.get(),j),n.signal),await O()}function O(e){e.title=`!代办`,e.panel=!0,e.container.appendChild(document.createTextNode(`!代办`)),e.loading=!1}function k(e){e.title=`设置`,e.panel=!0,e.container.appendChild(document.createTextNode(`设置`)),e.loading=!1}function A(e){e.title=`搜索`,e.panel=!0,e.container.appendChild(document.createTextNode(`搜索`)),e.loading=!1}function j(e){e.title=`状态管理`,e.panel=!0,e.container.appendChild(document.createTextNode(`状态管理`)),e.loading=!1}async function M(n){let r=n.ident;if(r.type!==`model`)return n.setError(404);let o=h(r.model);n.panel=!0;let s=n.define,p=s?.forms?.new?.layoutId,[m,v]=await Promise.all([o.loadScript(),p&&f(p).load().catch(()=>null)||null]);if(n.destroyed)return;if(!m)return n.setError(404);let y=l(m);y.new=!0,u(()=>{n.unsaved=!y.changed},n.signal),g(y,n.container,{model:m,editable:!0,signal:n.signal,enableLink:!0,layout:v?.layout,type:v?.type});let b=c(!1);async function x(){if(!b.get()){b.set(!0);try{return await o.create(y.value)}finally{b.set(!1)}}}async function S(){let e=await x();e&&(n.open(`.`,{...r,page:void 0,continuation:void 0,setting:void 0,input:void 0,edit:!1,id:e.id},!0),n.destroy(!0))}n.renderSides(n.define?.sides||[],{type:`createDocument`,pageIdent:r,model:m,get document(){return y.value},get store(){return y}});let C={type:`createDocument`,pageIdent:r,model:m,get document(){return y.value},get store(){return y}},T=w.bind(null,t=>{switch(t.command){case`create`:case`createGoto`:return b.get()}return e.disabled(C,t)},t=>e.toHref(C,t),t=>{if(!n.destroyed){switch(t.command){case`create`:return x();case`createGoto`:return S()}return e.exec(C,t)}}),E=n.define?.menus;E?.length||(E=[{label:`创建`,command:`createGoto`,children:[],buttons:[]}]);let D=a(()=>{let e=i.permissions;return e.size<0?E:t.filter(E,t=>{let n=t.permission;return n?d(n,e):!0},!1)}),O=n.createHeader();if(u(()=>O.setMenu(D.get(),T),n.signal),r.id){let e=await o.document(r.id);if(n.destroyed)return;let t=_(m?.labelPattern,e);t&&(n.title=`复制:${t}`),y.reset(e)}else y.reset({});n.loading=!1;let k=m?.label||m.id||``;n.title=s?.title||(k?`新建:${k}`:`新建`)}function N(e){let t=e.ident;if(t.type===`model`){if(e.title=e.define?.title||`新建`,(t.input||`*`)!==`*`)return M(e);e.open(e.path,{...t,setting:!1,input:`${Math.random()}`.slice(2)},!0),e.destroy(!0)}}function P(e){e.open(`.`,{...e.ident,page:void 0,workspace:void 0,continuation:void 0,setting:void 0,id:void 0},!0),e.destroy(!0)}export{E as details,D as edit,T as list,N as new,A as search,k as settings,j as status,P as toMain,O as todo};
2
2
  //# sourceMappingURL=index.mjs.map
package/index.mjs.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":[],"sources":["../../packages/pages/createMenuItem.mjs","../../packages/pages/list/index.mjs","../../packages/pages/details/index.mjs","../../packages/pages/edit/index.mjs","../../packages/pages/todo/index.mjs","../../packages/pages/settings/index.mjs","../../packages/pages/search/index.mjs","../../packages/pages/status/index.mjs","../../packages/pages/new/index.mjs","../../packages/pages/toMain.mjs"],"sourcesContent":["import { createComputed, effect, webRoot } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n\n\n\n/**\n * \n * @param {(menu: Menu) => boolean} disabled \n * @param {(menu: Menu) => void} exec \n * @param {(menu: Menu) => string} toHref \n * @param {Menu} menu \n * @param {AbortSignal} signal \n * @returns {HTMLElement}\n */\nexport default function createMenuItem(disabled, toHref, exec, menu, signal) {\n\tconst link = document.createElement('a');\n\tlink.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\n\tconst { page, path, uri, command } = menu;\n\tconst isDisabled = createComputed(() => Boolean(disabled(menu)));\n\n\tlet href = '';\n\tlet target = menu.target;\n\tif (page) {\n\n\t\thref = new URL(path?.[0] === '/' ? `${page}${path}` : `${page}/${path || ''}`, webRoot).href;\n\t\tif (!target) { target = '_self' }\n\t} else if (uri) {\n\t\thref = uri;\n\t} else if (command) {\n\t\thref = toHref(menu);\n\t}\n\n\teffect(() => {\n\t\tconst disabled = isDisabled.get();\n\t\t// @ts-ignore\n\t\tlink.disabled = disabled;\n\t\tlink.ariaDisabled = disabled ? 'true' : 'false';\n\t\tif (disabled) {\n\t\t\tlink.removeAttribute('tabindex');\n\t\t\tlink.removeAttribute('href');\n\t\t} else {\n\t\t\tlink.tabIndex = 0;\n\t\t\tif (href) { link.href = href; }\n\t\t}\n\t}, signal);\n\tlink.addEventListener('click', (e) => {\n\t\tif (!isDisabled.get()) { return; }\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t});\n\n\tif (href && target) { link.target = target ?? '_blank'; }\n\tif (!href && command) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\texec(menu);\n\t\t});\n\t}\n\treturn link;\n\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createQuickFilters, createState, effect, filterPermission, getAuthorizations, Menu, User, watch } from '@yongdall/web';\nimport { Pagination, modelService, createShowField, runPattern, getPatternFields, showFilterDialog, Search } from '@yongdall/web';\nimport Plugin from '@yongdall/web/plugin';\nimport { Body, Check, Group, Header, Source, Tree } from '@neeloong/table';\nimport createMenuItem from '../createMenuItem.mjs';\n/** @import { FieldScriptConfiguration } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nPlugin.importStyle('@neeloong/table/style.css');\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tif (!ctx.search.slice(1)) {\n\t\tconst defaultQuery = ctx.define?.defaultQuery;\n\t\tif (defaultQuery) {\n\t\t\tctx.setPath(`?${defaultQuery.replaceAll('#', '%23')}${ctx.hash}`, true);\n\t\t}\n\t}\n\tconst search = createComputed(() => Search.parse(ctx.search.slice(1)));\n\t/**\n\t * \n\t * @param {*} data \n\t */\n\tfunction setSearch(data) {\n\t\tconst s = Search.stringify({ ...search.get(), ...data }, true);\n\t\tif (s === ctx.search.slice(1)) { return; }\n\t\tctx.setPath(`?${s}`, true);\n\t}\n\tconst container = ctx.container;\n\tctx.panel = true;\n\tconst header = ctx.createHeader();\n\tconst headerContainer = header?.container || container.appendChild(document.createElement('div'));\n\tconst queryFilterContainer = header?.container || headerContainer.appendChild(document.createElement('div'));\n\tqueryFilterContainer.classList.add('QueryFilters')\n\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.title = ctx.define?.title || '列表';\n\tctx.mode = 'flex';\n\tlet modelDefine = await currentModel.loadScript();\n\tif (ctx.destroyed) { return; }\n\tconst label = modelDefine?.label || modelDefine.id || '';\n\tctx.title = ctx.define?.title || (label ? `列表:${label}` : '列表');\n\n\tconst idKey = '_';\n\tconst documents = createState(/** @type {any[]} */([]));\n\tconst source = new Source({ idKey, parentKey: 'parent' });\n\tconst checkedIds = createState(/** @type {any[]} */([]));\n\n\tconst checkedIdSet = createComputed(() => new Set(checkedIds.get()));\n\tconst checked = createComputed(() => {\n\t\tconst set = checkedIdSet.get();\n\t\tconst list = documents.get();\n\t\treturn list.filter(v => set.has(v[idKey]));\n\t});\n\n\n\n\tconst fields = modelDefine.fields;\n\tconst allFields = Object.entries(fields).filter(([, { type }]) => type && typeof type !== 'object');\n\tconst idFields = allFields.filter(([, v]) => v.primary).map(([v]) => v);\n\tconst labelPattern = modelDefine.labelPattern || '';\n\n\t/** @type {{name: string; width?: number; title: string; field: FieldScriptConfiguration}[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label } of ctx.define?.fields || []) {\n\t\tif (!field) { continue; }\n\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\tconst f = fields[field];\n\t\tif (!f) { continue; }\n\t\tconst type = f.type;\n\t\tif (!type || typeof type !== 'string') { continue; }\n\t\tallFieldsShow.push({ name: field, width: width || undefined, title: label || f.label || '', field: f });\n\t}\n\tif (!allFieldsShow.length) {\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\tconst queryFields = [...new Set([\n\t\t...allFieldsShow.map(v => v.name),\n\t\t...idFields,\n\t\t...getPatternFields(labelPattern),\n\t])];\n\n\n\teffect(() => source.setValue(documents.get()), ctx.signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tlet f = createShowField(name, field, {}, c.data);\n\t\t\troot.appendChild(f.root);\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = createShowField(name, field, {}, c.data);\n\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tlet r = c.data;\n\t\t\tconst root = document.createElement('a');\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tcontinuation: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t});\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t\t\t...pageIdent,\n\t\t\t\t\t\tpage: undefined,\n\t\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\t\tcontinuation: undefined,\n\t\t\t\t\t\tsetting: false,\n\t\t\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t\t\t});\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tcolumns.unshift({\n\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\treturn {\n\t\t\t\troot: document.createElement('div'),\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\n\n\tconst group = source.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tgroup.createHeader(listTable.appendChild(document.createElement('div')));\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\tconst pagination = new Pagination();\n\tconst { limit, page } = search.get();\n\tif (limit) { pagination.size = limit; }\n\tif (page) { pagination.page = page; }\n\n\tpagination.listen(() => {\n\t\tsetSearch({\n\t\t\tlimit: pagination.size,\n\t\t\tpage: pagination.page,\n\t\t});\n\t});\n\tlet k = 0;\n\tlet disabled = createState(false);\n\tasync function request() {\n\t\tif (ctx.destroyed) { return; }\n\t\tif (disabled.get()) { return; }\n\t\ttry {\n\t\t\tdisabled.set(true);\n\t\t\tk++;\n\t\t\tconst v = k;\n\t\t\tconst query = search.get();\n\t\t\tconst define = ctx.define;\n\t\t\tconst list = await currentModel.query({\n\t\t\t\t...query,\n\t\t\t\twhere: [...query.where || [], ...define?.where || []],\n\t\t\t\tor: define?.orWhere,\n\t\t\t\tselect: queryFields,\n\t\t\t});\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tif (v !== k) { return; }\n\t\t\tctx.loading = false;\n\t\t\tdocuments.set(\n\t\t\t\tlist.documents.map(v => ({ ...v, _: idFields.map(k => v[k]).join('$') }))\n\t\t\t);\n\t\t\tpagination.total = list.total;\n\t\t} finally {\n\t\t\tdisabled.set(false);\n\n\t\t}\n\t}\n\tfunction updateFilters() {\n\t\tshowFilterDialog(modelDefine, search.get().where, container).then(values => {\n\t\t\tsetSearch({ where: values });\n\t\t}).catch(() => { });\n\t}\n\n\tconst createURL = ctx.toUrl('', {\n\t\t...pageIdent,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tinput: '*',\n\t\tsetting: false,\n\t\tid: undefined,\n\t});\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel: modelDefine,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t\tget where() { return search.get().where; },\n\t\tset where(where) { setSearch({ where }); },\n\t\tget orWhere() { return search.get().orWhere; },\n\t\tset orWhere(orWhere) { setSearch({ orWhere }); },\n\t});\n\tif (header) {\n\t\t/*** @type {Command.Options} */\n\t\tconst commandOptions = {\n\t\t\ttype: 'documents',\n\t\t\tpageIdent,\n\t\t\tmodel: modelDefine,\n\t\t\tget checkedDocuments() { return checked.get(); },\n\t\t\tget documents() { return documents.get(); },\n\t\t};\n\t\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'refresh': return disabled.get();\n\t\t\t}\n\t\t\treturn Command.disabled(commandOptions, menu);\n\t\t}, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'create': return createURL;\n\t\t\t}\n\t\t\treturn Command.toHref(commandOptions, menu);\n\t\t}, (menu) => {\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'refresh': return request();\n\t\t\t\tcase 'filter': return updateFilters();\n\t\t\t}\n\t\t\treturn Command.exec(commandOptions, menu);\n\t\t});\n\t\tlet menus = ctx.define?.menus;\n\t\tif (!menus?.length) {\n\t\t\tmenus = [\n\t\t\t\t{ label: '创建', command: 'create', children: [], buttons: [] },\n\t\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\t\t{ label: '过滤', command: 'filter', children: [], buttons: [] },\n\t\t\t];\n\t\t}\n\t\tconst authorizations = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return { has() { return true; } }; }\n\t\t\treturn getAuthorizations(modelDefine.permissions || [], permissions);\n\n\t\t});\n\t\tconst currentMenus = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return menus; }\n\t\t\treturn Menu.filter(menus, menu => {\n\t\t\t\tconst permission = menu.permission;\n\t\t\t\tif (!permission) { return true; }\n\t\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\t\thas(p) {\n\t\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, false);\n\t\t});\n\t\theader.setMenu(currentMenus.get(), createMenu);\n\t} else {\n\n\t\tconst createButton = headerContainer.appendChild(document.createElement('button'));\n\t\tconst createLink = createButton.appendChild(document.createElement('a'));\n\t\tcreateLink.appendChild(document.createTextNode('创建'));\n\t\tcreateLink.href = createURL;\n\n\t\tconst reloadButton = headerContainer.appendChild(document.createElement('button'));\n\t\treloadButton.appendChild(document.createTextNode('刷新'));\n\t\treloadButton.addEventListener('click', request);\n\t\twatch(() => disabled.get(), disabled => reloadButton.disabled = disabled, { immediate: true, signal: ctx.signal });\n\n\t\tconst filterButton = headerContainer.appendChild(document.createElement('button'));\n\t\tfilterButton.appendChild(document.createTextNode('过滤'));\n\t\tfilterButton.addEventListener('click', () => { updateFilters(); });\n\t}\n\tcreateQuickFilters({\n\t\tget() { return search.get().where || []; },\n\t\tset(where) {\n\t\t\tsetSearch({ where });\n\t\t\trequest();\n\t},\n\t}, queryFilterContainer, ctx.define?.filters || [], {\n\t\tfields: modelDefine.fields,\n\t\tsignal: ctx.signal,\n\t\tinline: true,\n\t});\n\tcontainer.appendChild(listTable);\n\tconst footer = ctx.createFooter()?.container || container.appendChild(document.createElement('div'));\n\tfooter.appendChild(pagination.root);\n\n\n\twatch(() => search.get(), request, {signal: ctx.signal});\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '详情';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tconst container = ctx.container;\n\tctx.panel = true;\n\tconst header = ctx.createHeader();\n\tconst headerContainer = header?.container || container.appendChild(document.createElement('div'));\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms.view?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `详情:${label}` : '详情';\n\tctx.title = title;\n\tconst store = createStore(model);\n\tstore.readonly = true;\n\tconst destroyForm = renderForm(\n\t\tmodel,\n\t\tstore,\n\t\tcontainer.appendChild(document.createElement('div')),\n\t\t{ enableLink: true, editable: false },\n\t\tlayout?.layout,\n\t\tlayout?.type,\n\t);\n\twaitAbortSignal(ctx.signal).then(() => { destroyForm(); });\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document);\n\t\t\tstore.readonly = true;\n\t\t\tctx.title = runPattern(model?.labelPattern, document) || title;\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tif (header) {\n\t\t/*** @type {Command.Options} */\n\t\tconst commandOptions = {\n\t\t\ttype: 'document',\n\t\t\tpageIdent,\n\t\t\tmodel,\n\t\t\tget document() { return store.value; },\n\t\t\tget store() { return store; },\n\t\t};\n\t\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t\t}\n\t\t\treturn Command.disabled(commandOptions, menu);\n\t\t}, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'edit': return ctx.toUrl('', {\n\t\t\t\t\t...pageIdent,\n\t\t\t\t\tpage: undefined,\n\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\tsetting: false,\n\t\t\t\t\tedit: true,\n\t\t\t\t});\n\t\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t\t...pageIdent,\n\t\t\t\t\tpage: undefined,\n\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\tsetting: false,\n\t\t\t\t\tedit: true,\n\t\t\t\t\tinput: '*',\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn Command.toHref(commandOptions, menu);\n\t\t}, menu => {\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'refresh': return request();\n\t\t\t}\n\t\t\treturn Command.exec(commandOptions, menu);\n\t\t});\n\n\t\tlet menus = ctx.define?.menus;\n\t\tif (!menus?.length) {\n\t\t\tmenus = [\n\t\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\t\t{ label: '编辑', command: 'edit', children: [], buttons: [] },\n\t\t\t];\n\t\t}\n\t\tconst authorizations = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return { has() { return true; } }; }\n\t\t\treturn getAuthorizations(model.permissions || [], permissions, store.value);\n\n\t\t});\n\t\tconst currentMenus = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return menus; }\n\t\t\treturn Menu.filter(menus, menu => {\n\t\t\t\tconst permission = menu.permission;\n\t\t\t\tif (!permission) { return true; }\n\t\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\t\thas(p) {\n\t\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, false);\n\t\t});\n\t\theader.setMenu(currentMenus.get(), createMenu);\n\t} else {\n\t\tconst createButton = headerContainer.appendChild(document.createElement('button'));\n\t\tconst createLink = createButton.appendChild(document.createElement('a'));\n\t\tcreateLink.appendChild(document.createTextNode('编辑'));\n\t\tcreateLink.href = ctx.toUrl('', {\n\t\t\t...pageIdent,\n\t\t\tpage: undefined,\n\t\t\tworkspace: undefined,\n\t\t\tsetting: false,\n\t\t\tedit: true,\n\t\t});\n\t\teffect(() => createButton.disabled = requesting.get() || !loaded.get(), ctx.signal);\n\t}\n\n\n\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '编辑';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tconst container = ctx.container;\n\tctx.panel = true;\n\tconst header = ctx.createHeader();\n\tconst headerContainer = header?.container || container.appendChild(document.createElement('div'));\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms.edit?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `编辑:${label}` : '编辑';\n\tctx.title = title;\n\tconst store = createStore(model);\n\teffect(() => { ctx.unsaved = store.changed; }, ctx.signal);\n\tconst destroyForm = renderForm(\n\t\tmodel,\n\t\tstore,\n\t\tcontainer.appendChild(document.createElement('div')),\n\t\t{ enableLink: true, editable: true },\n\t\tlayout?.layout,\n\t\tlayout?.type,\n\t);\n\twaitAbortSignal(ctx.signal).then(() => { destroyForm(); });\n\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {Record<string, any>} document \n\t */\n\tfunction setTitle(document) {\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = label ? `编辑:${label}` : '编辑';\n\t\t} else {\n\t\t\tctx.title = title;\n\t\t}\n\t}\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document, false);\n\t\t\tsetTitle(document);\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tasync function save() {\n\t\tif (requesting.get() || !loaded.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst data = await currentDocument.update(store.value);\n\t\t\tif (!data) { return; }\n\t\t\tsetTitle(data);\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(data, false);\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tif (header) {\n\t\t/*** @type {Command.Options} */\n\t\tconst commandOptions = {\n\t\t\ttype: 'editDocument',\n\t\t\tpageIdent,\n\t\t\tmodel,\n\t\t\tget document() { return store.value; },\n\t\t\tget store() { return store; },\n\t\t};\n\t\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'save': case 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t\t}\n\t\t\treturn Command.disabled(commandOptions, menu);\n\t\t}, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t\t...pageIdent,\n\t\t\t\t\tpage: undefined,\n\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\tsetting: false,\n\t\t\t\t\tedit: true,\n\t\t\t\t\tinput: '*',\n\t\t\t\t});\n\t\t\t}\n\t\t\treturn Command.toHref(commandOptions, menu);\n\t\t}, menu => {\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'refresh': return request();\n\t\t\t\tcase 'save': return save();\n\t\t\t}\n\t\t\treturn Command.exec(commandOptions, menu);\n\t\t});\n\n\t\tlet menus = ctx.define?.menus;\n\t\tif (!menus?.length) {\n\t\t\tmenus = [\n\t\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\t\t{ label: '更新', command: 'save', children: [], buttons: [] },\n\t\t\t];\n\t\t}\n\t\tconst authorizations = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return { has() { return true; } }; }\n\t\t\treturn getAuthorizations(model.permissions || [], permissions, store.value);\n\t\t});\n\t\tconst currentMenus = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return menus; }\n\t\t\treturn Menu.filter(menus, menu => {\n\t\t\t\tconst permission = menu.permission;\n\t\t\t\tif (!permission) { return true; }\n\t\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\t\thas(p) {\n\t\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}, false);\n\t\t});\n\t\theader.setMenu(currentMenus.get(), createMenu);\n\t} else {\n\t\tconst button = headerContainer.appendChild(document.createElement('button'));\n\t\tbutton.disabled = true;\n\t\tbutton.appendChild(document.createTextNode('更新'));\n\t\teffect(() => button.disabled = requesting.get() || !loaded.get(), ctx.signal);\n\t\tbutton.addEventListener('click', async () => { save(); });\n\t}\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '!代办'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('!代办'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '设置'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('设置'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '搜索'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('搜索'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '状态管理'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('状态管理'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { createStore, Command, formLayoutsService, modelService, renderForm, runPattern, Menu, User, filterPermission, createComputed, createState, effect, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n/**\n * \n * @param {PageContext} ctx \n */\nasync function create(ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tconst currentModel = modelService(pageIdent.model);\n\tconst container = ctx.container;\n\tctx.panel = true;\n\tconst header = ctx.createHeader();\n\tconst headerContainer = header?.container || container.appendChild(document.createElement('div'));\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms.new?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) {\n\t\t// TODO:\n\t\treturn;\n\t}\n\tconst store = createStore(model);\n\tstore.new = true;\n\teffect(() => { ctx.unsaved = !store.changed; }, ctx.signal);\n\tconst destroyForm = renderForm(\n\t\tmodel,\n\t\tstore,\n\t\tcontainer.appendChild(document.createElement('div')),\n\t\t{ enableLink: true, editable: true },\n\t\tlayout?.layout,\n\t\tlayout?.type,\n\t);\n\twaitAbortSignal(ctx.signal).then(() => { destroyForm(); });\n\tconst creating = createState(false);\n\tasync function create() {\n\t\tif (creating.get()) { return; }\n\t\tcreating.set(true);\n\t\ttry {\n\t\t\treturn await currentModel.create(store.value);\n\t\t} finally {\n\t\t\tcreating.set(false);\n\t\t}\n\n\t}\n\tasync function createGoto() {\n\t\tconst data = await create();\n\t\tif (!data) { return; }\n\t\tctx.open(`.`, {\n\t\t\t...pageIdent,\n\t\t\t// @ts-ignore\n\t\t\tpage: undefined,\n\t\t\t// @ts-ignore\n\t\t\tcontinuation: undefined,\n\t\t\tsetting: undefined,\n\t\t\tinput: undefined,\n\t\t\tedit: false,\n\t\t\tid: data.id,\n\t\t}, true);\n\t\t// TODO: \n\t\tctx.destroy(true);\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\tif (header) {\n\t\t/*** @type {Command.Options} */\n\t\tconst commandOptions = {\n\t\t\ttype: 'createDocument',\n\t\t\tpageIdent,\n\t\t\tmodel,\n\t\t\tget document() { return store.value; },\n\t\t\tget store() { return store; },\n\t\t};\n\n\t\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'create': case 'createGoto': { return creating.get(); }\n\t\t\t}\n\t\t\treturn Command.disabled(commandOptions, menu);\n\t\t}, menu => {\n\t\t\treturn Command.toHref(commandOptions, menu);\n\t\t}, menu => {\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tswitch (menu.command) {\n\t\t\t\tcase 'create': return create();\n\t\t\t\tcase 'createGoto': return createGoto();\n\t\t\t}\n\t\t\treturn Command.exec(commandOptions, menu);\n\t\t});\n\n\t\tlet menus = ctx.define?.menus;\n\t\tif (!menus?.length) {\n\t\t\tmenus = [\n\t\t\t\t{ label: '创建', command: 'createGoto', children: [], buttons: [] },\n\t\t\t];\n\t\t}\n\t\tconst currentMenus = createComputed(() => {\n\t\t\tconst permissions = User.permissions;\n\t\t\tif (!permissions) { return menus; }\n\t\t\treturn Menu.filter(menus, menu => {\n\t\t\t\tconst permission = menu.permission;\n\t\t\t\tif (!permission) { return true; }\n\t\t\t\treturn filterPermission(permission, permissions);\n\t\t\t}, false);\n\t\t});\n\t\theader.setMenu(currentMenus.get(), createMenu);\n\n\t} else {\n\n\t\tconst button = headerContainer.appendChild(document.createElement('button'));\n\t\tbutton.disabled = true;\n\t\tbutton.appendChild(document.createTextNode('创建'));\n\n\t\tbutton.addEventListener('click', () => { createGoto(); });\n\t\teffect(() => { button.disabled = creating.get(); }, ctx.signal);\n\t}\n\t// TODO: 从查询参数中获取初始数据\n\tif (pageIdent.id) {\n\t\tconst document = await currentModel.document(pageIdent.id);\n\t\tif (ctx.destroyed) { return; }\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = `复制:${label}`;\n\t\t}\n\t\tstore.reset(document);\n\t} else {\n\t\tstore.reset({});\n\t}\n\tctx.loading = false;\n\tconst label = model?.label || model.id || '';\n\tctx.title = define?.title || (label ? `新建:${label}` : '新建');\n}\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') {\n\t\treturn;\n\t\t// TODO:\n\t}\n\tctx.title = ctx.define?.title || '新建';\n\tif ((pageIdent.input || '*') !== '*') {\n\t\treturn create(ctx);\n\t}\n\tctx.open(ctx.path, {\n\t\t...pageIdent,\n\t\tsetting: false,\n\t\tinput: `${Math.random()}`.slice(2),\n\t}, true);\n\tctx.destroy(true);\n}\n","/** @import { PageContext } from '@yongdall/web' */\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function toMain(ctx) {\n\tctx.open(`.`, {\n\t\t...ctx.ident,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tcontinuation: undefined,\n\t\tsetting: undefined,\n\t\tid: undefined,\n\t}, true)\n\tctx.destroy(true);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":[],"sources":["../../packages/pages/createMenuItem.mjs","../../packages/pages/list/index.mjs","../../packages/pages/details/index.mjs","../../packages/pages/edit/index.mjs","../../packages/pages/todo/index.mjs","../../packages/pages/settings/index.mjs","../../packages/pages/search/index.mjs","../../packages/pages/status/index.mjs","../../packages/pages/new/index.mjs","../../packages/pages/toMain.mjs"],"sourcesContent":["import { createComputed, effect, webRoot } from '@yongdall/web';\n/** @import { Menu } from '@yongdall/web' */\n\n\n\n/**\n * \n * @param {(menu: Menu) => boolean} disabled \n * @param {(menu: Menu) => void} exec \n * @param {(menu: Menu) => string} toHref \n * @param {Menu} menu \n * @param {AbortSignal} signal \n * @returns {HTMLElement}\n */\nexport default function createMenuItem(disabled, toHref, exec, menu, signal) {\n\tconst link = document.createElement('a');\n\tlink.appendChild(document.createTextNode(menu.label || menu.title || ''));\n\n\tconst { page, path, uri, command } = menu;\n\tconst isDisabled = createComputed(() => Boolean(disabled(menu)));\n\n\tlet href = '';\n\tlet target = menu.target;\n\tif (page) {\n\n\t\thref = new URL(path?.[0] === '/' ? `${page}${path}` : `${page}/${path || ''}`, webRoot).href;\n\t\tif (!target) { target = '_self' }\n\t} else if (uri) {\n\t\thref = uri;\n\t} else if (command) {\n\t\thref = toHref(menu);\n\t}\n\n\teffect(() => {\n\t\tconst disabled = isDisabled.get();\n\t\t// @ts-ignore\n\t\tlink.disabled = disabled;\n\t\tlink.ariaDisabled = disabled ? 'true' : 'false';\n\t\tif (disabled) {\n\t\t\tlink.removeAttribute('tabindex');\n\t\t\tlink.removeAttribute('href');\n\t\t} else {\n\t\t\tlink.tabIndex = 0;\n\t\t\tif (href) { link.href = href; }\n\t\t}\n\t}, signal);\n\tlink.addEventListener('click', (e) => {\n\t\tif (!isDisabled.get()) { return; }\n\t\te.preventDefault();\n\t\te.stopPropagation();\n\t});\n\n\tif (href && target) { link.target = target ?? '_blank'; }\n\tif (!href && command) {\n\t\tlink.addEventListener('click', (e) => {\n\t\t\tif (isDisabled.get()) { return; }\n\t\t\tif (e.defaultPrevented) { return; }\n\t\t\texec(menu);\n\t\t});\n\t}\n\treturn link;\n\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createQuickFilters, createState, effect, filterPermission, getAuthorizations, Menu, User, watch } from '@yongdall/web';\nimport { Pagination, modelService, createShowField, runPattern, getPatternFields, showFilterDialog, Search } from '@yongdall/web';\nimport Plugin from '@yongdall/web/plugin';\nimport { Body, Check, Group, Header, Source, Tree } from '@neeloong/table';\nimport createMenuItem from '../createMenuItem.mjs';\n/** @import { FieldScriptConfiguration } from '@yongdall/web' */\n/** @import { ColumnOptions } from '@neeloong/table' */\nPlugin.importStyle('@neeloong/table/style.css');\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tif (!ctx.search.slice(1)) {\n\t\tconst defaultQuery = ctx.define?.defaultQuery;\n\t\tif (defaultQuery) {\n\t\t\tctx.setPath(`?${defaultQuery.replaceAll('#', '%23')}${ctx.hash}`, true);\n\t\t}\n\t}\n\tconst search = createComputed(() => Search.parse(ctx.search.slice(1)));\n\t/**\n\t * \n\t * @param {*} data \n\t */\n\tfunction setSearch(data) {\n\t\tconst s = Search.stringify({ ...search.get(), ...data }, true);\n\t\tif (s === ctx.search.slice(1)) { return; }\n\t\tctx.setPath(`?${s}`, true);\n\t}\n\tconst container = ctx.container;\n\tctx.panel = true;\n\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.title = ctx.define?.title || '列表';\n\tctx.mode = 'flex';\n\tlet modelDefine = await currentModel.loadScript();\n\tif (ctx.destroyed) { return; }\n\tif (!modelDefine) { return ctx.setError(404); }\n\tconst label = modelDefine?.label || modelDefine.id || '';\n\tctx.title = ctx.define?.title || (label ? `列表:${label}` : '列表');\n\n\tconst idKey = '_';\n\tconst documents = createState(/** @type {any[]} */([]));\n\tconst source = new Source({ idKey, parentKey: 'parent' });\n\tconst checkedIds = createState(/** @type {any[]} */([]));\n\n\tconst checkedIdSet = createComputed(() => new Set(checkedIds.get()));\n\tconst checked = createComputed(() => {\n\t\tconst set = checkedIdSet.get();\n\t\tconst list = documents.get();\n\t\treturn list.filter(v => set.has(v[idKey]));\n\t});\n\n\n\n\tconst fields = modelDefine.fields;\n\tconst allFields = Object.entries(fields).filter(([, { type }]) => type && typeof type !== 'object');\n\tconst idFields = allFields.filter(([, v]) => v.primary).map(([v]) => v);\n\tconst labelPattern = modelDefine.labelPattern || '';\n\n\t/** @type {{name: string; width?: number; title: string; field: FieldScriptConfiguration}[]} */\n\tconst allFieldsShow = [];\n\tfor (const { field, width, label } of ctx.define?.fields || []) {\n\t\tif (!field) { continue; }\n\t\tif (!Object.hasOwn(fields, field)) { continue; }\n\t\tconst f = fields[field];\n\t\tif (!f) { continue; }\n\t\tconst type = f.type;\n\t\tif (!type || typeof type !== 'string') { continue; }\n\t\tallFieldsShow.push({ name: field, width: width || undefined, title: label || f.label || '', field: f });\n\t}\n\tif (!allFieldsShow.length) {\n\t\tfor (const [name, field] of allFields) {\n\t\t\tallFieldsShow.push({ name, title: field.label || '', field });\n\t\t\tif (allFieldsShow.length >= 4) { break; }\n\t\t}\n\t}\n\tconst queryFields = [...new Set([\n\t\t...allFieldsShow.map(v => v.name),\n\t\t...idFields,\n\t\t...getPatternFields(labelPattern),\n\t])];\n\n\n\teffect(() => source.setValue(documents.get()), ctx.signal);\n\t/** @type {ColumnOptions[]} */\n\tconst columns = allFieldsShow.map(({ name, field, title, width }) => ({\n\t\tfield: name, title, width, resizable: true, render(c) {\n\t\t\tconst root = document.createElement('div');\n\t\t\tlet f = createShowField(name, field, {}, c.data);\n\t\t\troot.appendChild(f.root);\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t},\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t\tf.destroy();\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\tf = createShowField(name, field, {}, c.data);\n\t\t\t\t\troot.appendChild(f.root);\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t}));\n\tcolumns.unshift({\n\t\tfield: '_', width: 200, resizable: true, render(c) {\n\t\t\tlet r = c.data;\n\t\t\tconst root = document.createElement('a');\n\t\t\tconst label = runPattern(labelPattern, r) || idFields.map(v => r[v]).join('$');\n\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tcontinuation: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t});\n\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\treturn {\n\t\t\t\troot,\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t\troot.innerHTML = '';\n\t\t\t\t\troot.href = ctx.toUrl('', {\n\t\t\t\t\t\t...pageIdent,\n\t\t\t\t\t\tpage: undefined,\n\t\t\t\t\t\tworkspace: undefined,\n\t\t\t\t\t\tcontinuation: undefined,\n\t\t\t\t\t\tsetting: false,\n\t\t\t\t\t\tid: idFields.map(v => r[v]).join('$'),\n\t\t\t\t\t});\n\t\t\t\t\troot.appendChild(document.createTextNode(label));\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\tcolumns.unshift({\n\t\tfield: '_', extensions: [Check], render(c) {\n\t\t\treturn {\n\t\t\t\troot: document.createElement('div'),\n\t\t\t\tdestroy() { },\n\t\t\t\tsetHidden() { },\n\t\t\t\tupdate() {\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\t});\n\n\n\tconst group = source.createGroup(columns, 2);\n\n\tconst listTable = document.createElement('table');\n\tgroup.createHeader(listTable.appendChild(document.createElement('div')));\n\tgroup.createBody(listTable.appendChild(document.createElement('div')));\n\n\tconst pagination = new Pagination();\n\tconst { limit, page } = search.get();\n\tif (limit) { pagination.size = limit; }\n\tif (page) { pagination.page = page; }\n\n\tpagination.listen(() => {\n\t\tsetSearch({\n\t\t\tlimit: pagination.size,\n\t\t\tpage: pagination.page,\n\t\t});\n\t});\n\tlet k = 0;\n\tlet disabled = createState(false);\n\tasync function request() {\n\t\tif (ctx.destroyed) { return; }\n\t\tif (disabled.get()) { return; }\n\t\ttry {\n\t\t\tdisabled.set(true);\n\t\t\tk++;\n\t\t\tconst v = k;\n\t\t\tconst query = search.get();\n\t\t\tconst define = ctx.define;\n\t\t\tconst list = await currentModel.query({\n\t\t\t\t...query,\n\t\t\t\twhere: [...query.where || [], ...define?.where || []],\n\t\t\t\tor: define?.orWhere,\n\t\t\t\tselect: queryFields,\n\t\t\t\ttotal: true,\n\t\t\t});\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tif (v !== k) { return; }\n\t\t\tctx.loading = false;\n\t\t\tdocuments.set(\n\t\t\t\tlist.documents.map(v => ({ ...v, _: idFields.map(k => v[k]).join('$') }))\n\t\t\t);\n\t\t\tpagination.total = list.total;\n\t\t} finally {\n\t\t\tdisabled.set(false);\n\n\t\t}\n\t}\n\tfunction updateFilters() {\n\t\tif (!modelDefine) { return; }\n\t\tshowFilterDialog(modelDefine, search.get().where, container).then(values => {\n\t\t\tsetSearch({ where: values });\n\t\t}).catch(() => { });\n\t}\n\n\tconst createURL = ctx.toUrl('', {\n\t\t...pageIdent,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tinput: '*',\n\t\tsetting: false,\n\t\tid: undefined,\n\t});\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel: modelDefine,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t\tget where() { return search.get().where; },\n\t\tset where(where) { setSearch({ where }); },\n\t\tget orWhere() { return search.get().orWhere; },\n\t\tset orWhere(orWhere) { setSearch({ orWhere }); },\n\t});\n\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'documents',\n\t\tpageIdent,\n\t\tmodel: modelDefine,\n\t\tget checkedDocuments() { return checked.get(); },\n\t\tget documents() { return documents.get(); },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return disabled.get();\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': return createURL;\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, (menu) => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'filter': return updateFilters();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '创建', command: 'create', children: [], buttons: [] },\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\t{ label: '过滤', command: 'filter', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(modelDefine.permissions || [], permissions);\n\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\tconst headerContainer = header.container;\n\theaderContainer.classList.add('QueryFilters');\n\tcreateQuickFilters({\n\t\tget() { return search.get().where || []; },\n\t\tset(where) {\n\t\t\tsetSearch({ where });\n\t\t\trequest();\n\t\t},\n\t}, headerContainer, ctx.define?.filters || [], {\n\t\tfields: modelDefine.fields,\n\t\tsignal: ctx.signal,\n\t\tinline: true,\n\t});\n\tcontainer.appendChild(listTable);\n\tconst footer = ctx.createFooter();\n\tfooter.container.appendChild(pagination.root);\n\n\n\twatch(() => search.get(), request, { signal: ctx.signal });\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '详情';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tctx.panel = true;\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.view?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `详情:${label}` : '详情';\n\tctx.title = title;\n\tconst store = createStore(model);\n\tstore.readonly = true;\n\trenderForm(store, ctx.container, {\n\t\tmodel,\n\t\teditable: false,\n\t\tsignal: ctx.signal,\n\t\tenableLink: true,\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document);\n\t\t\tstore.readonly = true;\n\t\t\tctx.title = runPattern(model?.labelPattern, document) || title;\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'document',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'edit': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t});\n\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t\tinput: '*',\n\t\t\t});\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\t{ label: '编辑', command: 'edit', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || [], permissions, store.value);\n\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\n\n\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { Command, createComputed, createState, createStore, effect, filterPermission, formLayoutsService, getAuthorizations, Menu, modelService, renderForm, runPattern, User, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default async function (ctx) {\n\tctx.title = '编辑';\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tctx.panel = true;\n\tconst currentModel = modelService(pageIdent.model);\n\tconst id = /** @type {string} */(pageIdent.id);\n\tconst currentDocument = currentModel.document(id);\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.edit?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst label = model?.label || model.id || '';\n\tconst title = label ? `编辑:${label}` : '编辑';\n\tctx.title = title;\n\tconst store = createStore(model);\n\teffect(() => { ctx.unsaved = store.changed; }, ctx.signal);\n\trenderForm(store, ctx.container, {\n\t\tmodel,\n\t\teditable: true,\n\t\tsignal: ctx.signal,\n\t\tenableLink: true,\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\n\n\tconst loaded = createState(false);\n\tconst requesting = createState(false);\n\teffect(() => ctx.loading = requesting.get() || !loaded.get(), ctx.signal);\n\n\n\n\t/**\n\t * \n\t * @param {Record<string, any>} document \n\t */\n\tfunction setTitle(document) {\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = label ? `编辑:${label}` : '编辑';\n\t\t} else {\n\t\t\tctx.title = title;\n\t\t}\n\t}\n\n\tasync function request() {\n\t\tif (requesting.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst document = await currentDocument.get();\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(document, false);\n\t\t\tsetTitle(document);\n\t\t} finally {\n\t\t\tloaded.set(true);\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\tasync function save() {\n\t\tif (requesting.get() || !loaded.get()) { return; }\n\t\tif (ctx.destroyed) { return; }\n\t\trequesting.set(true);\n\t\ttry {\n\t\t\tconst data = await currentDocument.update(store.value);\n\t\t\tif (!data) { return; }\n\t\t\tsetTitle(data);\n\t\t\tif (ctx.destroyed) { return; }\n\t\t\tstore.reset(data, false);\n\t\t} finally {\n\t\t\trequesting.set(false);\n\t\t}\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'editDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'save': case 'refresh': { return requesting.get() || !loaded.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'copy': return ctx.toUrl('', {\n\t\t\t\t...pageIdent,\n\t\t\t\tpage: undefined,\n\t\t\t\tworkspace: undefined,\n\t\t\t\tsetting: false,\n\t\t\t\tedit: true,\n\t\t\t\tinput: '*',\n\t\t\t});\n\t\t}\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'refresh': return request();\n\t\t\tcase 'save': return save();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '刷新', command: 'refresh', children: [], buttons: [] },\n\t\t\t{ label: '更新', command: 'save', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst authorizations = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return { has() { return true; } }; }\n\t\treturn getAuthorizations(model.permissions || [], permissions, store.value);\n\t});\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions, {\n\t\t\t\thas(p) {\n\t\t\t\t\treturn authorizations.get().has(p);\n\t\t\t\t}\n\t\t\t});\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\tawait request();\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '!代办'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('!代办'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '设置'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('设置'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '搜索'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('搜索'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\n\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tctx.title = '状态管理'\n\tctx.panel = true;\n\tctx.container.appendChild(document.createTextNode('状态管理'))\n\tctx.loading = false;\n}\n","/** @import { PageContext } from '@yongdall/web' */\nimport { createStore, Command, formLayoutsService, modelService, renderForm, runPattern, Menu, User, filterPermission, createComputed, createState, effect, waitAbortSignal } from '@yongdall/web';\nimport createMenuItem from '../createMenuItem.mjs';\n\n/**\n * \n * @param {PageContext} ctx \n */\nasync function create(ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') { return ctx.setError(404); }\n\tconst currentModel = modelService(pageIdent.model);\n\tctx.panel = true;\n\tconst define = ctx.define;\n\tconst layoutId = define?.forms?.new?.layoutId;\n\tconst [model, layout] = await Promise.all([\n\t\tcurrentModel.loadScript(),\n\t\tlayoutId && formLayoutsService(layoutId).load().catch(() => null) || null\n\t]);\n\tif (ctx.destroyed) { return; }\n\tif (!model) { return ctx.setError(404); }\n\tconst store = createStore(model);\n\tstore.new = true;\n\teffect(() => { ctx.unsaved = !store.changed; }, ctx.signal);\n\trenderForm(store, ctx.container, {\n\t\tmodel, editable: true,\n\t\tsignal: ctx.signal,\n\t\tenableLink: true,\n\t\tlayout: layout?.layout,\n\t\ttype: layout?.type\n\t});\n\tconst creating = createState(false);\n\tasync function create() {\n\t\tif (creating.get()) { return; }\n\t\tcreating.set(true);\n\t\ttry {\n\t\t\treturn await currentModel.create(store.value);\n\t\t} finally {\n\t\t\tcreating.set(false);\n\t\t}\n\n\t}\n\tasync function createGoto() {\n\t\tconst data = await create();\n\t\tif (!data) { return; }\n\t\tctx.open(`.`, {\n\t\t\t...pageIdent,\n\t\t\t// @ts-ignore\n\t\t\tpage: undefined,\n\t\t\t// @ts-ignore\n\t\t\tcontinuation: undefined,\n\t\t\tsetting: undefined,\n\t\t\tinput: undefined,\n\t\t\tedit: false,\n\t\t\tid: data.id,\n\t\t}, true);\n\t\t// TODO: \n\t\tctx.destroy(true);\n\t}\n\n\tctx.renderSides(ctx.define?.sides || [], {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t});\n\t/*** @type {Command.Options} */\n\tconst commandOptions = {\n\t\ttype: 'createDocument',\n\t\tpageIdent,\n\t\tmodel,\n\t\tget document() { return store.value; },\n\t\tget store() { return store; },\n\t};\n\n\tconst createMenu = createMenuItem.bind(null, menu => {\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': case 'createGoto': { return creating.get(); }\n\t\t}\n\t\treturn Command.disabled(commandOptions, menu);\n\t}, menu => {\n\t\treturn Command.toHref(commandOptions, menu);\n\t}, menu => {\n\t\tif (ctx.destroyed) { return; }\n\t\tswitch (menu.command) {\n\t\t\tcase 'create': return create();\n\t\t\tcase 'createGoto': return createGoto();\n\t\t}\n\t\treturn Command.exec(commandOptions, menu);\n\t});\n\n\tlet menus = ctx.define?.menus;\n\tif (!menus?.length) {\n\t\tmenus = [\n\t\t\t{ label: '创建', command: 'createGoto', children: [], buttons: [] },\n\t\t];\n\t}\n\tconst currentMenus = createComputed(() => {\n\t\tconst permissions = User.permissions;\n\t\tif (permissions.size < 0) { return menus; }\n\t\treturn Menu.filter(menus, menu => {\n\t\t\tconst permission = menu.permission;\n\t\t\tif (!permission) { return true; }\n\t\t\treturn filterPermission(permission, permissions);\n\t\t}, false);\n\t});\n\tconst header = ctx.createHeader();\n\teffect(() => header.setMenu(currentMenus.get(), createMenu), ctx.signal);\n\t// TODO: 从查询参数中获取初始数据\n\tif (pageIdent.id) {\n\t\tconst document = await currentModel.document(pageIdent.id);\n\t\tif (ctx.destroyed) { return; }\n\t\tconst label = runPattern(model?.labelPattern, document);\n\t\tif (label) {\n\t\t\tctx.title = `复制:${label}`;\n\t\t}\n\t\tstore.reset(document);\n\t} else {\n\t\tstore.reset({});\n\t}\n\tctx.loading = false;\n\tconst label = model?.label || model.id || '';\n\tctx.title = define?.title || (label ? `新建:${label}` : '新建');\n}\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function (ctx) {\n\tconst pageIdent = ctx.ident;\n\tif (pageIdent.type !== 'model') {\n\t\treturn;\n\t\t// TODO:\n\t}\n\tctx.title = ctx.define?.title || '新建';\n\tif ((pageIdent.input || '*') !== '*') {\n\t\treturn create(ctx);\n\t}\n\tctx.open(ctx.path, {\n\t\t...pageIdent,\n\t\tsetting: false,\n\t\tinput: `${Math.random()}`.slice(2),\n\t}, true);\n\tctx.destroy(true);\n}\n","/** @import { PageContext } from '@yongdall/web' */\n/**\n * \n * @param {PageContext} ctx \n */\nexport default function toMain(ctx) {\n\tctx.open(`.`, {\n\t\t...ctx.ident,\n\t\tpage: undefined,\n\t\tworkspace: undefined,\n\t\tcontinuation: undefined,\n\t\tsetting: undefined,\n\t\tid: undefined,\n\t}, true)\n\tctx.destroy(true);\n}\n"],"mappings":"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"}
package/package.json CHANGED
@@ -1,17 +1,17 @@
1
1
  {
2
2
  "name": "@yongdall/pages",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "exports": {
5
5
  ".": "./index.mjs"
6
6
  },
7
7
  "dependencies": {},
8
8
  "devDependencies": {
9
9
  "@neeloong/table": "^0.0.2",
10
- "@yongdall/web": "^0.1.0"
10
+ "@yongdall/web": "^0.2.0"
11
11
  },
12
12
  "peerDependencies": {
13
13
  "@neeloong/table": "^0.0.2",
14
- "@yongdall/web": "^0.1.0"
14
+ "@yongdall/web": "^0.2.0"
15
15
  },
16
16
  "main": "./index.mjs",
17
17
  "type": "module"