@topthink/components 1.0.66 → 1.0.68

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.
@@ -0,0 +1,66 @@
1
+ import e from"sweetalert2/dist/sweetalert2.js";import t from"sweetalert2-react-content";import{jsx as n,jsxs as r,Fragment as o}from"react/jsx-runtime";import{useRef as i,useState as a,useEffect as s,createContext as c,Fragment as l,useContext as d,useCallback as u,useMemo as h,forwardRef as f,Children as m,lazy as p,Suspense as g,createElement as y,useImperativeHandle as x}from"react";import{OverlayTrigger as b,Tooltip as v,Spinner as w,Button as k,Modal as C,Alert as N,Card as S,Pagination as z,Offcanvas as B}from"react-bootstrap";import{uniqueId as P,values as T,debounce as j}from"lodash";import H from"axios";import $ from"query-string";import*as A from"retry-axios";import E from"rc-notification";import L,{css as F}from"styled-components";import O from"classnames";import{useAsyncCallback as D}from"react-async-hook";const M=t(e),I={confirmButtonText:"确定",cancelButtonText:"取消"},U={confirm:async e=>{const{isConfirmed:t}=await M.fire({...I,icon:"warning",showCancelButton:!0,...e,async preConfirm(t){if(e.preConfirm)try{return await e.preConfirm(t)}catch(e){return e instanceof Error&&M.showValidationMessage(e.message),!1}return!0}});return t},success:e=>{M.fire({...I,toast:!0,position:"top",icon:"success",timer:2e3,showConfirmButton:!1,...e})},error:e=>{M.fire({...I,toast:!0,position:"top",icon:"error",timer:5e3,showConfirmButton:!1,...e})},close:e=>{M.close(e)},defaults:I};const R=c({});function _(e){return t=>{let{resolve:r,destroy:o,message:c}=t;const[l,f]=function(e){const t=i(null),[n,r]=a(e);return s((()=>{t.current&&(t.current(),t.current=null)}),[n]),[n,(e,n)=>{t.current="function"==typeof n?n:null,r(e)}]}(!0),m=d(R),p=u((e=>{f(!1,(()=>{r(e)}))}),[f,r]),g=h((()=>({show:l,onHide:()=>p(),onExited:()=>o(),container:m.container})),[l,p,o]);return n(e,{resolve:p,state:g,message:c})}}function q(e){return t=>new Promise((r=>{const o=n(e,{resolve:r,destroy:()=>{J(o)},message:t});Y(o)}))}let V=()=>{},G=new Set;const Y=e=>{G=new Set(G),G.add(e),V(G)},J=e=>{G=new Set(G),G.delete(e),V(G)};function K(e,t){return q(_(e))(t)}function Q(e){let{tooltip:t,children:r,placement:o="bottom"}=e;return n(b,{placement:o,overlay:n(v,{id:P(),children:t}),children:r})}const W=c(!1),X=f(((e,t)=>{let{loading:i,percent:a,disabled:s,children:c,tooltip:l,variant:u,...h}=e;d(W)&&!u&&(u="link"),i&&(s=!0,c=r(o,{children:[n(w,{ref:t,as:"span",size:"sm",role:"status","aria-hidden":"true",animation:"border"}),a?r("span",{className:"ms-2",children:[a,"%"]}):null]}));const f=n(k,{ref:t,...h,variant:u,disabled:s,children:c});return l?n(Q,{tooltip:l,children:n("span",{className:"d-inline-block",children:f})}):f})),Z=function(e){let{state:t,message:{title:o,message:i,okText:a,cancelText:s},resolve:c}=e;return r(C,{centered:!0,...t,children:[n(C.Header,{children:n(C.Title,{as:"h5",children:o||"确认"})}),n(C.Body,{children:i}),r(C.Footer,{children:[n(X,{variant:"secondary",onClick:()=>c(),children:s||"取消"}),n(X,{onClick:()=>c(!0),children:a||"确定"})]})]})};const ee=e=>{let{header:t,children:i,footer:s,closable:c=!0,show:l,cancelText:d="取消",okText:u="确定",onOk:f,onCancel:m,onHide:p,okButtonProps:g,bodyAs:y,headerAs:x="h5",confirmLoading:b=!1,...v}=e;const[w,k]=a(!1),N=h((()=>n(X,{loading:w||b,variant:"primary",onClick:async e=>{k(!0);try{await(f?.(e)),e.defaultPrevented||p?.()}finally{k(!1)}},...g,children:u})),[g,u,f,p,w,b]),S=h((()=>n(X,{variant:"secondary",onClick:e=>{m?.(e),e.defaultPrevented||p?.()},children:d})),[m,p,d]);switch(typeof s){case"undefined":s=r(o,{children:[S,N]});break;case"function":s=s({okButton:N,cancelButton:S})}return r(C,{...v,onHide:p,show:l,children:[t&&n(C.Header,{closeButton:c,children:n(C.Title,{as:x,children:t})}),n(C.Body,{as:y,children:i}),s&&n(C.Footer,{children:s})]})};let te;ee.Message=function(e){const[t,r]=a(G);return s((()=>{V=r}),[]),n(R.Provider,{value:e,children:Array.from(t).map(((e,t)=>n(l,{children:e},`message-${t}`)))})},ee.confirm=function(e){return q(_(Z))(e)},ee.show=K;const ne={};const re=e=>{let{type:t,...r}=e;!function(e){if(te)return e(te);E.newInstance({...ne,prefixCls:"notification",maxCount:5,style:{top:20,right:20}},(t=>{te?e(te):(te=t,e(t))}))}((e=>{r.duration=3;let o=t;if("error"===t)o="danger",r.duration=r.closable?0:5;r.content=n(N,{variant:o,children:r.content}),e.notice(r)}))},oe=["error","success","info"].reduce(((e,t)=>(e[t]=(e,n)=>{re({...n,type:t,content:e})},e)),{});function ie(e){return e&&"object"==typeof e}oe.defaults=ne,A.attach(),H.defaults.raxConfig={retryDelay:2e3,backoffType:"static",shouldRetry:e=>{let{config:t,response:n}=e;return!(t.raxConfig?.retryDecider&&!t.raxConfig.retryDecider())&&("GET"===t.method?.toUpperCase()&&449===n?.status)}},H.defaults.maxContentLength=1/0,H.defaults.maxBodyLength=1/0,H.defaults.baseURL="/api",H.defaults.authTokenName="authorization",H.interceptors.request.use((e=>{const t=e.authTokenName;if(t){const n=localStorage.getItem(t);n&&(e.headers={Authorization:`Bearer ${n}`,...e.headers})}return e}),(e=>Promise.reject(e))),H.interceptors.response.use((e=>(201===e.status&&e.data.location&&(window.location.href=e.data.location,e.data=void 0),e)),(e=>{if(H.isAxiosError(e)&&e.response){const{data:t,status:n}=e.response;401===n?(e.errors="Unauthorized",oe.error("Unauthorized")):ie(t)?422===n?e.errors=t:"message"in t&&(e.errors=t.message):e.errors=t}return Promise.reject(e)}));const ae=H.isAxiosError,se=e=>{if(!H.isAxiosError(e))throw e;{let t=e.errors;"string"!=typeof e.errors&&(t=Object.values(e.errors).join("<br />")),oe.error(t)}},ce=async function(e){e="string"==typeof e?{url:e}:e;const{data:t}=await H.request({paramsSerializer:function(e){return $.stringify(e,{sort:!1,skipNull:!0,skipEmptyString:!0,arrayFormat:"bracket"})},...e});return t};ce.defaults=H.defaults,ce.interceptors=H.interceptors;const le=()=>{const e=i(!1);return s((()=>(e.current=!1,()=>{e.current=!0})),[]),e};function de(e){const t=le(),[n,r]=a(e);return[n,u((e=>{t.current||r(e)}),[])]}const ue=function(e){let{state:t,message:r,resolve:o}=e;const a=i(!0),{result:c,checkUrl:l,onComplete:d}=r,[u,h]=de(!1);return s((()=>{ce({url:l,method:"post",data:{order_no:c.order_no},raxConfig:{shouldRetry:e=>a.current&&449===e.response?.status}}).then((()=>{d?.(),o()})).catch((()=>null))}),[]),n(ee,{...t,centered:!0,onHide:()=>{a.current=!1,t.onHide()},backdrop:"static",header:"支付结果",okText:"已完成支付",okButtonProps:{loading:u},onOk:async e=>{e.preventDefault();try{h(!0),await ce({url:l,method:"post",data:{order_no:c.order_no},raxConfig:{shouldRetry:()=>!1}}),d?.(),o()}catch{}finally{h(!1)}},cancelText:"取消",children:"请在新打开的页面上进行支付,支付完成后再关闭此窗口"})};function he(e){const{result:t}=e;window.open(t.pay_url),K(ue,e)}const fe=L.div`
2
+ padding: 48px 32px;
3
+ `,me=L.div`
4
+ margin-bottom: 24px;
5
+ text-align: center;
6
+ font-size: 72px;
7
+ `,pe=L.div`
8
+ color: rgba(0, 0, 0, .85);
9
+ font-size: 24px;
10
+ line-height: 1.8;
11
+ text-align: center;
12
+ `,ge=L.div`
13
+ margin-top: 32px;
14
+ text-align: center;
15
+ `,ye={success:n("i",{className:"bi bi-check-circle-fill text-success"}),error:n("i",{className:"bi bi-exclamation-circle-fill text-danger"}),info:n("i",{className:"bi bi-info-circle-fill text-info"}),warning:n("i",{className:"bi bi-exclamation-triangle-fill text-warning"})};function xe(e){let{status:t,title:o,icon:i,extra:a}=e;return!i&&t&&(i=ye[t]),r(fe,{children:[i&&n(me,{children:i}),o&&n(pe,{children:o}),a&&n(ge,{children:a})]})}L.div`
16
+ position: relative;
17
+ `;const be=L.div`
18
+ display: ${e=>e.active?"flex":"none"};
19
+ position: absolute;
20
+ top: 0 !important;
21
+ left: 0 !important;
22
+ width: 100%;
23
+ height: 100%;
24
+ text-align: center;
25
+ vertical-align: middle;
26
+ padding: 1em;
27
+ background-color: ${e=>e.inverted?"rgba(255, 255, 255, .85)":"rgba(0, 0, 0, .85)"};
28
+ opacity: ${e=>e.active?1:0};
29
+ line-height: 1;
30
+ animation-fill-mode: both;
31
+ animation-duration: .5s;
32
+ transition: background-color .5s linear;
33
+ flex-direction: column;
34
+ align-items: center;
35
+ justify-content: center;
36
+ user-select: none;
37
+ will-change: opacity;
38
+ z-index: 990;
39
+ `;function ve(e){let{loading:t=!0,children:o,variant:i="primary",animation:a="border",wrap:s,...c}=e;return t?(o&&(o=n("p",{className:"mt-3 text-secondary",children:o})),o=r(be,{inverted:!0,active:!0,children:[n(w,{animation:a,variant:i,...c}),o]}),s?n(we,{$height:"number"==typeof s?s:150,children:o}):o):null}const we=L.div`
40
+ position: relative;
41
+ height: ${e=>`${e.$height}px`};
42
+ `;function ke(e){let{children:t,title:i,className:a,...s}=e;return n(S,{className:O("border-0 shadow-sm mb-3",a),...s,children:r("div",{className:"card-body",children:[i&&r(o,{children:[n("h5",{children:i}),n("hr",{})]}),t]})})}function Ce(e){let{errors:t}=e;return t?n(N,{variant:"danger",children:n("ul",{className:"mb-0",children:"string"==typeof t?n("li",{children:t}):Object.entries(t).map((e=>{let[t,r]=e;return n("li",{children:r},t)}))})}):null}function Ne(e){let{children:t,className:r,size:o="small",direction:i="horizontal"}=e;"string"==typeof o&&(o={small:8,middle:16,large:24}[o]);const a=m.map(t,(e=>{if(e)return n(ze,{children:e})}));return n(Se,{className:r,$direction:i,$size:o,children:a})}const Se=L.div`
43
+ display: inline-flex;
44
+ align-items: center;
45
+ gap: ${e=>e.$size}px;
46
+
47
+ ${e=>"vertical"===e.$direction&&F`
48
+ display: flex;
49
+ flex-direction: column;
50
+ align-items: inherit;
51
+ `}
52
+ `,ze=L.div`
53
+
54
+ `,Be=p((()=>import("./steps-b_BcYIwk.js"))),Pe=p((()=>import("./steps-b_BcYIwk.js").then((e=>{let{Step:t}=e;return{default:t}}))));function Te(e){return n(g,{fallback:null,children:n(Be,{...e})})}const je=function(e){return n(g,{fallback:null,children:n(Pe,{...e})})};function He(e){let{title:t,content:o,footer:i}=e;return r(ke,{children:[n(Ee,{children:t}),n(Ae,{children:o}),i&&n($e,{children:i})]})}Te.Step=je;const $e=L.div`
55
+ margin-top: 9px;
56
+ padding-top: 10px;
57
+ border-top: 1px solid #f0f0f0;
58
+ color: rgba(0, 0, 0, .65);
59
+ `,Ae=L.div`
60
+ color: rgba(0, 0, 0, .85);
61
+ font-size: 24px;
62
+ `,Ee=L.div`
63
+ margin-bottom: 4px;
64
+ color: rgba(0, 0, 0, .45);
65
+ font-size: 1.1rem;
66
+ `;function Le(){}function Fe(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e}function Oe(e){let{total:t=0,onChange:r=Le,defaultCurrent:o=1,defaultPageSize:i=10,className:c,...l}=e;const[d,f]=a(o),[m,p]=a(i);s((()=>{Fe(l.current)&&f(l.current)}),[l.current]),s((()=>{Fe(l.pageSize)&&p(l.pageSize)}),[l.pageSize]);const g=h((()=>Math.floor((t-1)/m)+1),[t,m]),y=u((e=>()=>{e!==d&&(f(e),r(e,m))}),[r,d,m]),x=d-1>0?d-1:0,b=d+1<g?d+1:g,v=[];let w=null,k=null,C=null,N=null;if(g<=7)for(let e=1;e<=g;e+=1){const t=d===e;v.push(n(z.Item,{active:t,onClick:y(e),children:e},e))}else{N=n(z.Last,{onClick:y(g)},"last"),C=n(z.First,{onClick:y(1)},"first"),w=n(z.Prev,{onClick:y(x)},"prev"),k=n(z.Next,{onClick:y(b)},"next");let e=Math.max(1,d-2),t=Math.min(d+2,g);d-1<=2&&(t=5),g-d<=2&&(e=g-4);for(let r=e;r<=t;r+=1){const e=d===r;v.push(n(z.Item,{active:e,onClick:y(r),children:r},r))}d-1>=4&&3!==d&&v.unshift(w),g-d>=4&&d!==g-2&&v.push(k),1!==e&&v.unshift(C),t!==g&&v.push(N)}return n(z,{className:c,children:v})}function De(e){let{className:t,value:r,locale:i="zh-CN",currency:a=!0,options:s={}}=e;const c=h((()=>{let e;return e=a?{style:"currency",currency:"CNY"}:{minimumFractionDigits:2},new Intl.NumberFormat(i,{...e,...s})}),[a,i,s]);return t?n("span",{className:t,children:c.format(r)}):n(o,{children:c.format(r)})}function Me(e){let{loading:t,disabled:r,children:o,...i}=e;return n(k,{...i,disabled:t||r,children:t?"Loading…":o})}const Ie=p((()=>import("./image-zoom-OrIPGqh0.js")));function Ue(e){return n(g,{fallback:null,children:n(Ie,{...e})})}function Re(e){let{url:t,method:n,confirm:r,onSuccess:o,children:i,disabled:a,as:s=X,...c}=e;const[l,d]=de(!1),h=u((async e=>{e.preventDefault();try{if(d(!0),r&&!await ee.confirm({message:r}))return;const e="string"==typeof t?{url:t,method:n}:{method:n,...t},i=await ce(e);o&&o(i)}catch(e){se(e)}finally{d(!1)}}),[t,n,d]);return y(s,{...c,disabled:a||l,onClick:h},i)}const _e=p((()=>import("./index-oPMscx3h.js"))),qe=f(((e,t)=>n(g,{fallback:null,children:n(_e,{...e,ref:t})}))),Ve=p((()=>import("./index-mlGSIgGo.js"))),Ge=f(((e,t)=>n(g,{fallback:null,children:n(Ve,{...e,ref:t})})));let Ye=0;function Je(){let{onHide:e,onShow:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[n,r]=a(!1),[o,i]=a(`visible-${Ye}`),s=u((()=>{r(!1),e&&e()}),[r,e]),c=u((()=>{i("visible-"+ ++Ye)}),[i,Ye]);return{visible:n,show:u((()=>{r(!0),t&&t()}),[r,t]),hide:s,state:{show:n,onHide:s,onExited:c,key:o}}}const Ke=f(((e,t)=>{let{text:i,onOk:a,modalProps:s,children:c,onShow:l,onHide:d,confirmLoading:u,as:h=X,...f}=e;const{state:m,show:p,hide:g}=Je({onShow:l,onHide:d});x(t,(()=>({close:g})));const b=y(h,{...f,onClick:p},i);return r(o,{children:[b,n(ee,{header:i,...s,...m,confirmLoading:u,onOk:async e=>{if(a){!1===await a()&&e.preventDefault()}},children:c})]})}));function Qe(e){let{text:t,onSuccess:o,buttonProps:s,modalProps:c,children:l,...d}=e;const[h,f]=a(!1),m=i(null),p=i(null),g=u((()=>(p.current?.submit(),!1)),[]),y=u((e=>{o&&o(e),m.current?.close()}),[o]);return n(Ke,{ref:m,text:t,...s,modalProps:c,onOk:g,confirmLoading:h,children:r(qe,{...d,onSubmitting:f,ref:p,onSuccess:y,children:[l,n("input",{type:"submit",hidden:!0})]})})}function We(e){let{header:t,children:o,closable:i=!0,show:a,onHide:s,bodyAs:c,headerAs:l="h5",...d}=e;return r(B,{...d,onHide:s,show:a,children:[t&&n(B.Header,{closeButton:i,children:n(B.Title,{as:l,children:t})}),n(B.Body,{as:c,children:o})]})}const Xe=f(((e,t)=>{let{text:i,offcanvasProps:a,children:s,onShow:c,onHide:l,as:d=X,...u}=e;const{state:h,show:f,hide:m}=Je({onShow:c,onHide:l});x(t,(()=>({close:m})));const p=y(d,{...u,onClick:f},i);return r(o,{children:[p,n(We,{header:i,...a,...h,children:s})]})}));function Ze(e){let{manual:t,refreshDeps:n,...r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{execute:o,currentParams:i,error:a,...c}=D((async t=>(e="string"==typeof e?{url:e}:e,await ce({...e,...t}))),r);s((()=>{if(!t&&!n)try{o()}catch{}}),[]),s((()=>{n&&l()}),n);const l=u((async()=>{try{i?await o(...i):await o()}catch{}}),[o,i]);if(a&&ae(a)){const e=a.errors;a=new Error("string"==typeof e?e:T(e).join(""))}return{refresh:l,execute:o,error:a,...c}}function et(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const n=i(e);return s((()=>{n.current=e})),u((function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.current?.(...t)}),t)}function tt(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=((e,t)=>e!==t)}=e,i=et(r),s=et(o),[c,l]=a(n),d=void 0!==t,u=d?t:c,h=et((e=>{const t="function"==typeof e?e(u):e;s(u,t)&&(d||l(t),i(t))}),[d,i,u,s]);return[u,h]}function nt(e,t,n){const r=i(e),o=i(j(e,t,n));return s((()=>{r.current=e})),s((()=>{o.current=j((function(){r.current(...arguments)}),t,n)}),[t,n]),o.current}export{X as B,ke as C,Ce as E,qe as F,Ue as I,ve as L,U as M,De as N,Xe as O,Oe as P,xe as R,Ne as S,W as T,tt as a,de as b,oe as c,Te as d,je as e,He as f,Me as g,Re as h,ie as i,Ge as j,Qe as k,Ke as l,ee as m,We as n,Q as o,Ze as p,Je as q,ce as r,ae as s,se as t,nt as u,he as w};
@@ -1,4 +1,4 @@
1
- import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import n from"rc-table";import{unstable_batchedUpdates as o}from"react-dom";import{FormControl as a,Table as i}from"react-bootstrap";import{useUrlSearchParams as c}from"use-url-search-params";import{isEqual as l,omit as s}from"lodash";import*as d from"react";import{useState as u,useCallback as p,useRef as m,useEffect as h,useMemo as f,memo as g,forwardRef as v,useImperativeHandle as y}from"react";import{B as b,u as x,P as w,a as j,r as C,N as k,L as S,T as E,C as O,S as V}from"./index-pG5lx8DP.js";import z from"styled-components";import N from"./index-v9WA_wvo.js";import"sweetalert2/dist/sweetalert2.js";import"sweetalert2-react-content";import"axios";import"query-string";import"retry-axios";import"rc-notification";import"classnames";import"react-async-hook";import"@topthink/json-form";const H=function(t){let{indeterminate:r=!1,...n}=t;const o=m(null);return h((()=>{o.current&&(o.current.indeterminate=r)}),[r]),e("input",{ref:o,...n,className:"form-check-input",type:"checkbox"})};var q;function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},K.apply(this,arguments)}const M=e=>d.createElement("svg",K({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",viewBox:"0 0 1024 1024"},e),q||(q=d.createElement("path",{d:"M252.069 906.496h520.283c89.582 0 134.144-44.562 134.144-132.846V250.331c0-88.283-44.562-132.845-134.144-132.845H252.069c-89.143 0-134.583 44.141-134.583 132.845V773.67c0 88.704 45.44 132.845 134.583 132.845zm1.28-68.992c-42.844 0-66.853-22.71-66.853-67.291V253.806c0-44.58 24.01-67.292 66.853-67.292h517.723c42.423 0 66.432 22.711 66.432 67.292v516.388c0 44.58-24.01 67.292-66.432 67.292zM511.78 714.496c22.71 0 36.425-15.854 36.425-40.704V547.365H682.35c24.009 0 40.722-12.874 40.722-35.584 0-23.132-15.854-36.426-40.722-36.426H548.206V340.773c0-24.85-13.715-40.704-36.425-40.704s-35.566 16.713-35.566 40.722v134.583H342.49c-24.85 0-41.142 13.275-41.142 36.407 0 22.71 17.152 35.584 41.142 35.584h133.724v126.427c0 23.99 12.855 40.704 35.566 40.704"})));var B;function P(){return P=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},P.apply(this,arguments)}const F=e=>d.createElement("svg",P({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",viewBox:"0 0 1024 1024"},e),B||(B=d.createElement("path",{d:"M252.069 906.496h520.283c89.582 0 134.144-44.562 134.144-132.846V250.331c0-88.283-44.562-132.845-134.144-132.845H252.069c-89.143 0-134.583 44.141-134.583 132.845V773.67c0 88.704 45.44 132.845 134.583 132.845zm1.28-68.992c-42.844 0-66.853-22.71-66.853-67.291V253.806c0-44.58 24.01-67.292 66.853-67.292h517.723c42.423 0 66.432 22.711 66.432 67.292v516.388c0 44.58-24.01 67.292-66.432 67.292zm86.582-289.719h344.576c23.991 0 40.704-12.855 40.704-35.566 0-23.15-15.433-36.425-40.704-36.425H339.931c-24.868 0-40.722 13.276-40.722 36.425 0 22.711 16.713 35.566 40.722 35.566"})));function T(r){let{data:n,options:o,columns:a,onSearch:i}=r;const[c,s]=u(0),[d,m]=u(n);h((()=>{l(n,d)||(m(n),s((e=>e+1)))}),[n]);const[g,v,y]=f((()=>{const e={"ui:col":10,"ui:order":o.order},t={},r={};o.fields.forEach((n=>{const i=a.find((e=>e.dataIndex===n));if(i){const a=i.title;if("string"==typeof a){if(e[n]={"ui:col":4,"ui:labelCol":3,"ui:placeholder":"请输入",...o.ui?.[n]},i.valueEnum){const t=i.valueEnum;return e[n]["ui:placeholder"]="请选择",r[n]={title:a,type:"string",enum:Object.keys(t).flatMap((e=>"string"==typeof t[e].text?[e]:[])),enumNames:Object.keys(t).flatMap((e=>{const r=t[e].text;return"string"==typeof r?[r]:[]}))}}t[n]=void 0,r[n]={title:a,type:"string"}}}})),o.extraFields&&Object.entries(o.extraFields).forEach((n=>{let[a,i]=n;e[a]={"ui:col":4,"ui:labelCol":3,"ui:placeholder":"请输入",...o.ui?.[a]},t[a]=void 0,r[a]={title:i,type:"string"}}));return[{type:"object",properties:r},e,t]}),[o.fields,o.extraFields]),x=p((e=>{let{formData:t}=e;m(t),i({...y,...t})}),[i,y]),w=p((()=>{i(y)}),[i,y]);return e(_,{children:e(N,{formContext:{layout:"horizontal"},schema:g,uiSchema:v,onSubmit:x,formData:d,children:e("div",{className:"col-2 ms-auto mt-auto",children:t("div",{className:"justify-content-end d-flex gap-2 ",children:[e(b,{className:"px-4",onClick:w,variant:"secondary",children:"重置"}),e(b,{className:"px-4",type:"submit",variant:"primary",children:"查询"})]})})})},c)}const _=z.div`
1
+ import{jsx as e,jsxs as t,Fragment as r}from"react/jsx-runtime";import n from"rc-table";import{unstable_batchedUpdates as o}from"react-dom";import{FormControl as a,Table as i}from"react-bootstrap";import{useUrlSearchParams as c}from"use-url-search-params";import{isEqual as l,omit as s}from"lodash";import*as d from"react";import{useState as u,useCallback as p,useRef as m,useEffect as h,useMemo as f,memo as g,forwardRef as v,useImperativeHandle as y}from"react";import{B as b,u as x,P as w,a as j,r as C,N as k,L as S,T as E,C as O,S as V}from"./index-WNXBQWc1.js";import z from"styled-components";import N from"./index-oPMscx3h.js";import"sweetalert2/dist/sweetalert2.js";import"sweetalert2-react-content";import"axios";import"query-string";import"retry-axios";import"rc-notification";import"classnames";import"react-async-hook";import"@topthink/json-form";const H=function(t){let{indeterminate:r=!1,...n}=t;const o=m(null);return h((()=>{o.current&&(o.current.indeterminate=r)}),[r]),e("input",{ref:o,...n,className:"form-check-input",type:"checkbox"})};var q;function K(){return K=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},K.apply(this,arguments)}const M=e=>d.createElement("svg",K({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",viewBox:"0 0 1024 1024"},e),q||(q=d.createElement("path",{d:"M252.069 906.496h520.283c89.582 0 134.144-44.562 134.144-132.846V250.331c0-88.283-44.562-132.845-134.144-132.845H252.069c-89.143 0-134.583 44.141-134.583 132.845V773.67c0 88.704 45.44 132.845 134.583 132.845zm1.28-68.992c-42.844 0-66.853-22.71-66.853-67.291V253.806c0-44.58 24.01-67.292 66.853-67.292h517.723c42.423 0 66.432 22.711 66.432 67.292v516.388c0 44.58-24.01 67.292-66.432 67.292zM511.78 714.496c22.71 0 36.425-15.854 36.425-40.704V547.365H682.35c24.009 0 40.722-12.874 40.722-35.584 0-23.132-15.854-36.426-40.722-36.426H548.206V340.773c0-24.85-13.715-40.704-36.425-40.704s-35.566 16.713-35.566 40.722v134.583H342.49c-24.85 0-41.142 13.275-41.142 36.407 0 22.71 17.152 35.584 41.142 35.584h133.724v126.427c0 23.99 12.855 40.704 35.566 40.704"})));var B;function P(){return P=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var r=arguments[t];for(var n in r)Object.prototype.hasOwnProperty.call(r,n)&&(e[n]=r[n])}return e},P.apply(this,arguments)}const F=e=>d.createElement("svg",P({xmlns:"http://www.w3.org/2000/svg",width:16,height:16,fill:"currentColor",viewBox:"0 0 1024 1024"},e),B||(B=d.createElement("path",{d:"M252.069 906.496h520.283c89.582 0 134.144-44.562 134.144-132.846V250.331c0-88.283-44.562-132.845-134.144-132.845H252.069c-89.143 0-134.583 44.141-134.583 132.845V773.67c0 88.704 45.44 132.845 134.583 132.845zm1.28-68.992c-42.844 0-66.853-22.71-66.853-67.291V253.806c0-44.58 24.01-67.292 66.853-67.292h517.723c42.423 0 66.432 22.711 66.432 67.292v516.388c0 44.58-24.01 67.292-66.432 67.292zm86.582-289.719h344.576c23.991 0 40.704-12.855 40.704-35.566 0-23.15-15.433-36.425-40.704-36.425H339.931c-24.868 0-40.722 13.276-40.722 36.425 0 22.711 16.713 35.566 40.722 35.566"})));function T(r){let{data:n,options:o,columns:a,onSearch:i}=r;const[c,s]=u(0),[d,m]=u(n);h((()=>{l(n,d)||(m(n),s((e=>e+1)))}),[n]);const[g,v,y]=f((()=>{const e={"ui:col":10,"ui:order":o.order},t={},r={};o.fields.forEach((n=>{const i=a.find((e=>e.dataIndex===n));if(i){const a=i.title;if("string"==typeof a){if(e[n]={"ui:col":4,"ui:labelCol":3,"ui:placeholder":"请输入",...o.ui?.[n]},i.valueEnum){const t=i.valueEnum;return e[n]["ui:placeholder"]="请选择",r[n]={title:a,type:"string",enum:Object.keys(t).flatMap((e=>"string"==typeof t[e].text?[e]:[])),enumNames:Object.keys(t).flatMap((e=>{const r=t[e].text;return"string"==typeof r?[r]:[]}))}}t[n]=void 0,r[n]={title:a,type:"string"}}}})),o.extraFields&&Object.entries(o.extraFields).forEach((n=>{let[a,i]=n;e[a]={"ui:col":4,"ui:labelCol":3,"ui:placeholder":"请输入",...o.ui?.[a]},t[a]=void 0,r[a]={title:i,type:"string"}}));return[{type:"object",properties:r},e,t]}),[o.fields,o.extraFields]),x=p((e=>{let{formData:t}=e;m(t),i({...y,...t})}),[i,y]),w=p((()=>{i(y)}),[i,y]);return e(_,{children:e(N,{formContext:{layout:"horizontal"},schema:g,uiSchema:v,onSubmit:x,formData:d,children:e("div",{className:"col-2 ms-auto mt-auto",children:t("div",{className:"justify-content-end d-flex gap-2 ",children:[e(b,{className:"px-4",onClick:w,variant:"secondary",children:"重置"}),e(b,{className:"px-4",type:"submit",variant:"primary",children:"查询"})]})})})},c)}const _=z.div`
2
2
  margin-bottom: 1rem;
3
3
  `;function D(t){let{keyword:r,onKeywordChange:n}=t;const[o,i]=u(r),c=x(n,500);h((()=>{i(r)}),[r]);const l=p((e=>{i(e.target.value),c(e.target.value)}),[c,i]);return e(a,{value:o,onChange:l,type:"search",placeholder:"Search..."})}const I=z.thead`
4
4
  th {
@@ -1 +1 @@
1
- import{jsx as t}from"react/jsx-runtime";import o,{getRegistry as r}from"@topthink/json-form";import*as a from"react";import{forwardRef as e,useState as n,useCallback as i}from"react";import s from"axios";import{b as l,r as m,B as p}from"./index-pG5lx8DP.js";import{mapValues as c}from"lodash";import"sweetalert2/dist/sweetalert2.js";import"sweetalert2-react-content";import"react-bootstrap";import"query-string";import"retry-axios";import"rc-notification";import"styled-components";import"classnames";import"react-async-hook";const d=require("ajv-i18n/localize/zh"),u=a.lazy((()=>import("./editor-widget-CQ3zv-Xu.js"))),f=o=>t(a.Suspense,{fallback:null,children:t(u,{...o})}),y={upload:function(o){let{options:a,...e}=o;const{widgets:n}=r();return a.endpoint&&(a.onUpload=async t=>{const o=new FormData;o.set("file",t);const{url:r,value:e}=await m({url:a.endpoint,method:"post",data:o});return{url:r,value:e}}),t(n.upload,{...e,options:a})},editor:function(o){let{options:r,...a}=o;return r.endpoint&&(r.onUpload=async t=>{const o=new FormData;o.set("file",t);const{url:a}=await m({url:r.endpoint,method:"post",data:o});return a}),t(f,{...a,options:r})},typeahead:function(o){let{options:a,...e}=o;const{widgets:n}=r();return a.endpoint&&(a.onSearch=async t=>{let{value:o,query:r}=t;return await m({url:a.endpoint,params:{value:o,query:r}})}),t(n.typeahead,{...e,options:a})}},h=e(((r,a)=>{let{action:e,method:u="post",onSuccess:f,formData:h,onSubmitting:w,onSubmit:g,onChange:b,submitText:x="提交",transformData:v,children:D,...j}=r;const[S,k]=n(),[q,_]=l(!1),[z,E]=n(h),C=i((async(t,o)=>{if(!q)try{if(_(!0),w&&w(!0),e){let{formData:o}=t;v&&(o=v(o));try{const t=await m({url:e,method:u,data:o});return k(void 0),f&&await f(t),t}catch(t){if(!s.isAxiosError(t))throw t;k((t=>{const o=t.errors;return"string"==typeof o?{__errors:[o]}:c(o,(t=>({__errors:[t]})))})(t))}}else if(g)return await g(t,o)}finally{_(!1),w&&w(!1)}}),[e,u,g]),F=i((t=>{const{formData:o}=t;E(o),b&&b(t)}),[E,b]),N=i((t=>(t=t.map((t=>({keyword:t.name,dataPath:t.property,...t}))),d(t),t)),[]),U=t(p,{className:"px-4",loading:q,type:"submit",variant:"primary",children:x});return"function"==typeof D&&(D=D({submit:U,loading:q})),t(o,{ref:a,extraErrors:S,onSubmit:C,transformErrors:N,noHtml5Validate:!0,noValidate:!0,...j,formData:z,onChange:F,widgets:y,children:D||t("div",{className:"col-12",children:U})})}));export{h as default};
1
+ import{jsx as t}from"react/jsx-runtime";import o,{getRegistry as r}from"@topthink/json-form";import*as a from"react";import{forwardRef as e,useState as n,useCallback as i}from"react";import s from"axios";import{b as l,r as m,B as p}from"./index-WNXBQWc1.js";import{mapValues as c}from"lodash";import"sweetalert2/dist/sweetalert2.js";import"sweetalert2-react-content";import"react-bootstrap";import"query-string";import"retry-axios";import"rc-notification";import"styled-components";import"classnames";import"react-async-hook";const d=require("ajv-i18n/localize/zh"),u=a.lazy((()=>import("./editor-widget-CQ3zv-Xu.js"))),f=o=>t(a.Suspense,{fallback:null,children:t(u,{...o})}),y={upload:function(o){let{options:a,...e}=o;const{widgets:n}=r();return a.endpoint&&(a.onUpload=async t=>{const o=new FormData;o.set("file",t);const{url:r,value:e}=await m({url:a.endpoint,method:"post",data:o});return{url:r,value:e}}),t(n.upload,{...e,options:a})},editor:function(o){let{options:r,...a}=o;return r.endpoint&&(r.onUpload=async t=>{const o=new FormData;o.set("file",t);const{url:a}=await m({url:r.endpoint,method:"post",data:o});return a}),t(f,{...a,options:r})},typeahead:function(o){let{options:a,...e}=o;const{widgets:n}=r();return a.endpoint&&(a.onSearch=async t=>{let{value:o,query:r}=t;return await m({url:a.endpoint,params:{value:o,query:r}})}),t(n.typeahead,{...e,options:a})}},h=e(((r,a)=>{let{action:e,method:u="post",onSuccess:f,formData:h,onSubmitting:w,onSubmit:g,onChange:b,submitText:x="提交",transformData:v,children:D,...j}=r;const[S,k]=n(),[q,_]=l(!1),[z,E]=n(h),C=i((async(t,o)=>{if(!q)try{if(_(!0),w&&w(!0),e){let{formData:o}=t;v&&(o=v(o));try{const t=await m({url:e,method:u,data:o});return k(void 0),f&&await f(t),t}catch(t){if(!s.isAxiosError(t))throw t;k((t=>{const o=t.errors;return"string"==typeof o?{__errors:[o]}:c(o,(t=>({__errors:[t]})))})(t))}}else if(g)return await g(t,o)}finally{_(!1),w&&w(!1)}}),[e,u,g]),F=i((t=>{const{formData:o}=t;E(o),b&&b(t)}),[E,b]),N=i((t=>(t=t.map((t=>({keyword:t.name,dataPath:t.property,...t}))),d(t),t)),[]),U=t(p,{className:"px-4",loading:q,type:"submit",variant:"primary",children:x});return"function"==typeof D&&(D=D({submit:U,loading:q})),t(o,{ref:a,extraErrors:S,onSubmit:C,transformErrors:N,noHtml5Validate:!0,noValidate:!0,...j,formData:z,onChange:F,widgets:y,children:D||t("div",{className:"col-12",children:U})})}));export{h as default};
package/es/index.js CHANGED
@@ -1 +1 @@
1
- export{B as Button,C as Card,E as Error,F as Form,I as ImageZoom,L as Loader,g as LoadingButton,M as Message,m as Modal,l as ModalButton,k as ModalForm,N as NumberFormat,P as Pagination,h as RequestButton,R as Result,S as Space,f as Statistic,e as Step,d as Steps,j as Table,c as Toast,n as Tooltip,i as isRecord,q as isRequestError,r as request,s as showRequestError,a as useControllableState,u as useDebounce,p as useOverlayState,o as useRequest,b as useSafeState,w as waitPayComplete}from"./index-pG5lx8DP.js";export{StyleSheetManager,ThemeProvider,createGlobalStyle,css,keyframes,default as styled}from"styled-components";export{useAsync,useAsyncCallback}from"react-async-hook";import"sweetalert2/dist/sweetalert2.js";import"sweetalert2-react-content";import"react/jsx-runtime";import"react";import"react-bootstrap";import"lodash";import"axios";import"query-string";import"retry-axios";import"rc-notification";import"classnames";
1
+ export{B as Button,C as Card,E as Error,F as Form,I as ImageZoom,L as Loader,g as LoadingButton,M as Message,m as Modal,l as ModalButton,k as ModalForm,N as NumberFormat,n as Offcanvas,O as OffcanvasButton,P as Pagination,h as RequestButton,R as Result,S as Space,f as Statistic,e as Step,d as Steps,j as Table,c as Toast,o as Tooltip,i as isRecord,s as isRequestError,r as request,t as showRequestError,a as useControllableState,u as useDebounce,q as useOverlayState,p as useRequest,b as useSafeState,w as waitPayComplete}from"./index-WNXBQWc1.js";export{StyleSheetManager,ThemeProvider,createGlobalStyle,css,keyframes,default as styled}from"styled-components";export{useAsync,useAsyncCallback}from"react-async-hook";import"sweetalert2/dist/sweetalert2.js";import"sweetalert2-react-content";import"react/jsx-runtime";import"react";import"react-bootstrap";import"lodash";import"axios";import"query-string";import"retry-axios";import"rc-notification";import"classnames";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@topthink/components",
3
- "version": "1.0.66",
3
+ "version": "1.0.68",
4
4
  "scripts": {
5
5
  "prebuild": "rimraf es types",
6
6
  "build": "rollup -c --environment NODE_ENV:production",
@@ -20,7 +20,7 @@
20
20
  "@toast-ui/editor": "^3.2.2",
21
21
  "@toast-ui/react-editor": "^3.2.3",
22
22
  "@topthink/bootstrap": "^1.0.23",
23
- "@topthink/json-form": "^1.0.49",
23
+ "@topthink/json-form": "^1.0.50",
24
24
  "@types/styled-components": "^5.1.11",
25
25
  "ajv-i18n": "^4.0.0",
26
26
  "axios": "^0.27.2",
@@ -64,5 +64,5 @@
64
64
  },
65
65
  "author": "yunwuxin <tzzhangyajun@qq.com> (https://github.com/yunwuxin)",
66
66
  "license": "MIT",
67
- "gitHead": "5ed65686bb49d3ef39f1ecbefccd553b04dc26f6"
67
+ "gitHead": "0c474edfc159055f7e0d4c16a95b8fc5b0c94a3a"
68
68
  }
package/scss/app.scss CHANGED
@@ -1,7 +1,7 @@
1
- @import "~@topthink/bootstrap/scss/bootstrap";
2
- @import "notification";
3
-
4
- .btn-link {
5
- padding: 0;
6
- }
7
-
1
+ @import "~@topthink/bootstrap/scss/bootstrap";
2
+ @import "notification";
3
+
4
+ .btn-link {
5
+ padding: 0;
6
+ }
7
+
@@ -1,92 +1,92 @@
1
- .notification {
2
- position: fixed;
3
- z-index: 1100;
4
-
5
- &-notice {
6
- border-radius: 3px 3px;
7
- box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
8
- border: 0 solid rgba(0, 0, 0, 0);;
9
- background: #fff;
10
- display: block;
11
- width: auto;
12
- line-height: 1.5;
13
- position: relative;
14
- margin: 10px 0;
15
- max-width: 300px;
16
- white-space: pre-wrap;
17
-
18
- &-close {
19
- position: absolute;
20
- right: 5px;
21
- top: 3px;
22
- color: #000;
23
- cursor: pointer;
24
- outline: none;
25
- font-size: 16px;
26
- font-weight: 700;
27
- line-height: 1;
28
- text-shadow: 0 1px 0 #fff;
29
- filter: alpha(opacity=20);
30
- opacity: .2;
31
- text-decoration: none;
32
-
33
- &-x:after {
34
- content: '×';
35
- }
36
-
37
- &:hover {
38
- opacity: 1;
39
- filter: alpha(opacity=100);
40
- text-decoration: none;
41
- }
42
- }
43
- }
44
-
45
- @mixin fade-effect {
46
- animation-duration: 0.3s;
47
- animation-fill-mode: both;
48
- animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2);
49
- }
50
-
51
- &-fade-appear,
52
- &-fade-enter {
53
- opacity: 0;
54
-
55
- @include fade-effect;
56
- animation-play-state: paused;
57
- }
58
-
59
- &-fade-leave {
60
- @include fade-effect;
61
- animation-play-state: paused;
62
- }
63
-
64
- &-fade-appear#{&}-fade-appear-active,
65
- &-fade-enter#{&}-fade-enter-active {
66
- animation-name: rcNotificationFadeIn;
67
- animation-play-state: running;
68
- }
69
-
70
- &-fade-leave#{&}-fade-leave-active {
71
- animation-name: rcDialogFadeOut;
72
- animation-play-state: running;
73
- }
74
-
75
- @keyframes rcNotificationFadeIn {
76
- 0% {
77
- opacity: 0;
78
- }
79
- 100% {
80
- opacity: 1;
81
- }
82
- }
83
-
84
- @keyframes rcDialogFadeOut {
85
- 0% {
86
- opacity: 1;
87
- }
88
- 100% {
89
- opacity: 0;
90
- }
91
- }
92
- }
1
+ .notification {
2
+ position: fixed;
3
+ z-index: 1100;
4
+
5
+ &-notice {
6
+ border-radius: 3px 3px;
7
+ box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
8
+ border: 0 solid rgba(0, 0, 0, 0);;
9
+ background: #fff;
10
+ display: block;
11
+ width: auto;
12
+ line-height: 1.5;
13
+ position: relative;
14
+ margin: 10px 0;
15
+ max-width: 300px;
16
+ white-space: pre-wrap;
17
+
18
+ &-close {
19
+ position: absolute;
20
+ right: 5px;
21
+ top: 3px;
22
+ color: #000;
23
+ cursor: pointer;
24
+ outline: none;
25
+ font-size: 16px;
26
+ font-weight: 700;
27
+ line-height: 1;
28
+ text-shadow: 0 1px 0 #fff;
29
+ filter: alpha(opacity=20);
30
+ opacity: .2;
31
+ text-decoration: none;
32
+
33
+ &-x:after {
34
+ content: '×';
35
+ }
36
+
37
+ &:hover {
38
+ opacity: 1;
39
+ filter: alpha(opacity=100);
40
+ text-decoration: none;
41
+ }
42
+ }
43
+ }
44
+
45
+ @mixin fade-effect {
46
+ animation-duration: 0.3s;
47
+ animation-fill-mode: both;
48
+ animation-timing-function: cubic-bezier(0.55, 0, 0.55, 0.2);
49
+ }
50
+
51
+ &-fade-appear,
52
+ &-fade-enter {
53
+ opacity: 0;
54
+
55
+ @include fade-effect;
56
+ animation-play-state: paused;
57
+ }
58
+
59
+ &-fade-leave {
60
+ @include fade-effect;
61
+ animation-play-state: paused;
62
+ }
63
+
64
+ &-fade-appear#{&}-fade-appear-active,
65
+ &-fade-enter#{&}-fade-enter-active {
66
+ animation-name: rcNotificationFadeIn;
67
+ animation-play-state: running;
68
+ }
69
+
70
+ &-fade-leave#{&}-fade-leave-active {
71
+ animation-name: rcDialogFadeOut;
72
+ animation-play-state: running;
73
+ }
74
+
75
+ @keyframes rcNotificationFadeIn {
76
+ 0% {
77
+ opacity: 0;
78
+ }
79
+ 100% {
80
+ opacity: 1;
81
+ }
82
+ }
83
+
84
+ @keyframes rcDialogFadeOut {
85
+ 0% {
86
+ opacity: 1;
87
+ }
88
+ 100% {
89
+ opacity: 0;
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,16 @@
1
+ import { ElementType, ForwardRefExoticComponent, PropsWithChildren, PropsWithoutRef, ReactNode, RefAttributes } from 'react';
2
+ import { ButtonProps } from 'react-bootstrap';
3
+ import { OffcanvasProps } from './offcanvas';
4
+ export interface OffcanvasButtonProps extends Omit<ButtonProps, 'as'> {
5
+ text: ReactNode;
6
+ offcanvasProps?: Omit<OffcanvasProps, 'children'>;
7
+ onShow?: () => void;
8
+ onHide?: () => void;
9
+ as?: ElementType | ButtonProps['as'];
10
+ }
11
+ export interface OffcanvasType {
12
+ close: () => void;
13
+ }
14
+ type OffcanvasButtonType = ForwardRefExoticComponent<PropsWithoutRef<PropsWithChildren<OffcanvasButtonProps>> & RefAttributes<OffcanvasType>>;
15
+ declare const OffcanvasButton: OffcanvasButtonType;
16
+ export default OffcanvasButton;
@@ -0,0 +1,11 @@
1
+ import { ElementType, ReactNode } from 'react';
2
+ import { OffcanvasProps as ReactOffcanvasProps } from 'react-bootstrap';
3
+ export interface OffcanvasProps extends ReactOffcanvasProps {
4
+ children: ReactNode;
5
+ header?: ReactNode;
6
+ closable?: boolean;
7
+ show?: boolean;
8
+ bodyAs?: ElementType;
9
+ headerAs?: ElementType;
10
+ }
11
+ export default function Offcanvas({ header, children, closable, show, onHide, bodyAs, headerAs, ...rest }: OffcanvasProps): JSX.Element;
package/types/index.d.ts CHANGED
@@ -21,6 +21,8 @@ export { default as Table, TableProps, Columns, TableType } from './components/t
21
21
  export { default as ModalForm, ModalFormProps } from './components/modal-form';
22
22
  export { default as ModalButton, ModalType, ModalButtonProps } from './components/modal-button';
23
23
  export { default as Modal, ModalProps, MessageProps } from './components/modal';
24
+ export { default as OffcanvasButton, OffcanvasType, OffcanvasButtonProps } from './components/offcanvas-button';
25
+ export { default as Offcanvas, OffcanvasProps } from './components/offcanvas';
24
26
  export { default as Tooltip } from './components/tooltip';
25
27
  export { default as useRequest } from './hooks/use-request';
26
28
  export { default as useOverlayState } from './hooks/use-overlay-state';
@@ -1,66 +0,0 @@
1
- import e from"sweetalert2/dist/sweetalert2.js";import t from"sweetalert2-react-content";import{jsx as n,jsxs as r,Fragment as o}from"react/jsx-runtime";import{useRef as i,useState as a,useEffect as s,createContext as c,Fragment as l,useContext as d,useCallback as u,useMemo as f,forwardRef as h,Children as m,lazy as p,Suspense as g,createElement as y,useImperativeHandle as x}from"react";import{OverlayTrigger as b,Tooltip as v,Spinner as w,Button as k,Modal as C,Alert as N,Card as z,Pagination as S}from"react-bootstrap";import{uniqueId as P,values as j,debounce as B}from"lodash";import T from"axios";import $ from"query-string";import*as H from"retry-axios";import E from"rc-notification";import L,{css as F}from"styled-components";import A from"classnames";import{useAsyncCallback as D}from"react-async-hook";const M=t(e),O={confirmButtonText:"确定",cancelButtonText:"取消"},I={confirm:async e=>{const{isConfirmed:t}=await M.fire({...O,icon:"warning",showCancelButton:!0,...e,async preConfirm(t){if(e.preConfirm)try{return await e.preConfirm(t)}catch(e){return e instanceof Error&&M.showValidationMessage(e.message),!1}return!0}});return t},success:e=>{M.fire({...O,toast:!0,position:"top",icon:"success",timer:2e3,showConfirmButton:!1,...e})},error:e=>{M.fire({...O,toast:!0,position:"top",icon:"error",timer:5e3,showConfirmButton:!1,...e})},close:e=>{M.close(e)},defaults:O};const U=c({});function R(e){return t=>{let{resolve:r,destroy:o,message:c}=t;const[l,h]=function(e){const t=i(null),[n,r]=a(e);return s((()=>{t.current&&(t.current(),t.current=null)}),[n]),[n,(e,n)=>{t.current="function"==typeof n?n:null,r(e)}]}(!0),m=d(U),p=u((e=>{h(!1,(()=>{r(e)}))}),[h,r]),g=f((()=>({show:l,onHide:()=>p(),onExited:()=>o(),container:m.container})),[l,p,o]);return n(e,{resolve:p,state:g,message:c})}}function _(e){return t=>new Promise((r=>{const o=n(e,{resolve:r,destroy:()=>{Y(o)},message:t});G(o)}))}let q=()=>{},V=new Set;const G=e=>{V=new Set(V),V.add(e),q(V)},Y=e=>{V=new Set(V),V.delete(e),q(V)};function J(e,t){return _(R(e))(t)}function K(e){let{tooltip:t,children:r,placement:o="bottom"}=e;return n(b,{placement:o,overlay:n(v,{id:P(),children:t}),children:r})}const Q=c(!1),W=h(((e,t)=>{let{loading:i,percent:a,disabled:s,children:c,tooltip:l,variant:u,...f}=e;d(Q)&&!u&&(u="link"),i&&(s=!0,c=r(o,{children:[n(w,{ref:t,as:"span",size:"sm",role:"status","aria-hidden":"true",animation:"border"}),a?r("span",{className:"ms-2",children:[a,"%"]}):null]}));const h=n(k,{ref:t,...f,variant:u,disabled:s,children:c});return l?n(K,{tooltip:l,children:n("span",{className:"d-inline-block",children:h})}):h})),X=function(e){let{state:t,message:{title:o,message:i,okText:a,cancelText:s},resolve:c}=e;return r(C,{centered:!0,...t,children:[n(C.Header,{children:n(C.Title,{as:"h5",children:o||"确认"})}),n(C.Body,{children:i}),r(C.Footer,{children:[n(W,{variant:"secondary",onClick:()=>c(),children:s||"取消"}),n(W,{onClick:()=>c(!0),children:a||"确定"})]})]})};const Z=e=>{let{header:t,children:i,footer:s,closable:c=!0,show:l,cancelText:d="取消",okText:u="确定",onOk:h,onCancel:m,onHide:p,okButtonProps:g,bodyAs:y,headerAs:x="h5",confirmLoading:b=!1,...v}=e;const[w,k]=a(!1),N=f((()=>n(W,{loading:w||b,variant:"primary",onClick:async e=>{k(!0);try{await(h?.(e)),e.defaultPrevented||p?.()}finally{k(!1)}},...g,children:u})),[g,u,h,p,w,b]),z=f((()=>n(W,{variant:"secondary",onClick:e=>{m?.(e),e.defaultPrevented||p?.()},children:d})),[m,p,d]);switch(typeof s){case"undefined":s=r(o,{children:[z,N]});break;case"function":s=s({okButton:N,cancelButton:z})}return r(C,{...v,onHide:p,show:l,children:[t&&n(C.Header,{closeButton:c,children:n(C.Title,{as:x,children:t})}),n(C.Body,{as:y,children:i}),s&&n(C.Footer,{children:s})]})};let ee;Z.Message=function(e){const[t,r]=a(V);return s((()=>{q=r}),[]),n(U.Provider,{value:e,children:Array.from(t).map(((e,t)=>n(l,{children:e},`message-${t}`)))})},Z.confirm=function(e){return _(R(X))(e)},Z.show=J;const te={};const ne=e=>{let{type:t,...r}=e;!function(e){if(ee)return e(ee);E.newInstance({...te,prefixCls:"notification",maxCount:5,style:{top:20,right:20}},(t=>{ee?e(ee):(ee=t,e(t))}))}((e=>{r.duration=3;let o=t;if("error"===t)o="danger",r.duration=r.closable?0:5;r.content=n(N,{variant:o,children:r.content}),e.notice(r)}))},re=["error","success","info"].reduce(((e,t)=>(e[t]=(e,n)=>{ne({...n,type:t,content:e})},e)),{});function oe(e){return e&&"object"==typeof e}re.defaults=te,H.attach(),T.defaults.raxConfig={retryDelay:2e3,backoffType:"static",shouldRetry:e=>{let{config:t,response:n}=e;return!(t.raxConfig?.retryDecider&&!t.raxConfig.retryDecider())&&("GET"===t.method?.toUpperCase()&&449===n?.status)}},T.defaults.maxContentLength=1/0,T.defaults.maxBodyLength=1/0,T.defaults.baseURL="/api",T.defaults.authTokenName="authorization",T.interceptors.request.use((e=>{const t=e.authTokenName;if(t){const n=localStorage.getItem(t);n&&(e.headers={Authorization:`Bearer ${n}`,...e.headers})}return e}),(e=>Promise.reject(e))),T.interceptors.response.use((e=>(201===e.status&&e.data.location&&(window.location.href=e.data.location,e.data=void 0),e)),(e=>{if(T.isAxiosError(e)&&e.response){const{data:t,status:n}=e.response;401===n?(e.errors="Unauthorized",re.error("Unauthorized")):oe(t)?422===n?e.errors=t:"message"in t&&(e.errors=t.message):e.errors=t}return Promise.reject(e)}));const ie=T.isAxiosError,ae=e=>{if(!T.isAxiosError(e))throw e;{let t=e.errors;"string"!=typeof e.errors&&(t=Object.values(e.errors).join("<br />")),re.error(t)}},se=async function(e){e="string"==typeof e?{url:e}:e;const{data:t}=await T.request({paramsSerializer:function(e){return $.stringify(e,{sort:!1,skipNull:!0,skipEmptyString:!0,arrayFormat:"bracket"})},...e});return t};se.defaults=T.defaults,se.interceptors=T.interceptors;const ce=()=>{const e=i(!1);return s((()=>(e.current=!1,()=>{e.current=!0})),[]),e};function le(e){const t=ce(),[n,r]=a(e);return[n,u((e=>{t.current||r(e)}),[])]}const de=function(e){let{state:t,message:r,resolve:o}=e;const a=i(!0),{result:c,checkUrl:l,onComplete:d}=r,[u,f]=le(!1);return s((()=>{se({url:l,method:"post",data:{order_no:c.order_no},raxConfig:{shouldRetry:e=>a.current&&449===e.response?.status}}).then((()=>{d?.(),o()})).catch((()=>null))}),[]),n(Z,{...t,centered:!0,onHide:()=>{a.current=!1,t.onHide()},backdrop:"static",header:"支付结果",okText:"已完成支付",okButtonProps:{loading:u},onOk:async e=>{e.preventDefault();try{f(!0),await se({url:l,method:"post",data:{order_no:c.order_no},raxConfig:{shouldRetry:()=>!1}}),d?.(),o()}catch{}finally{f(!1)}},cancelText:"取消",children:"请在新打开的页面上进行支付,支付完成后再关闭此窗口"})};function ue(e){const{result:t}=e;window.open(t.pay_url),J(de,e)}const fe=L.div`
2
- padding: 48px 32px;
3
- `,he=L.div`
4
- margin-bottom: 24px;
5
- text-align: center;
6
- font-size: 72px;
7
- `,me=L.div`
8
- color: rgba(0, 0, 0, .85);
9
- font-size: 24px;
10
- line-height: 1.8;
11
- text-align: center;
12
- `,pe=L.div`
13
- margin-top: 32px;
14
- text-align: center;
15
- `,ge={success:n("i",{className:"bi bi-check-circle-fill text-success"}),error:n("i",{className:"bi bi-exclamation-circle-fill text-danger"}),info:n("i",{className:"bi bi-info-circle-fill text-info"}),warning:n("i",{className:"bi bi-exclamation-triangle-fill text-warning"})};function ye(e){let{status:t,title:o,icon:i,extra:a}=e;return!i&&t&&(i=ge[t]),r(fe,{children:[i&&n(he,{children:i}),o&&n(me,{children:o}),a&&n(pe,{children:a})]})}L.div`
16
- position: relative;
17
- `;const xe=L.div`
18
- display: ${e=>e.active?"flex":"none"};
19
- position: absolute;
20
- top: 0 !important;
21
- left: 0 !important;
22
- width: 100%;
23
- height: 100%;
24
- text-align: center;
25
- vertical-align: middle;
26
- padding: 1em;
27
- background-color: ${e=>e.inverted?"rgba(255, 255, 255, .85)":"rgba(0, 0, 0, .85)"};
28
- opacity: ${e=>e.active?1:0};
29
- line-height: 1;
30
- animation-fill-mode: both;
31
- animation-duration: .5s;
32
- transition: background-color .5s linear;
33
- flex-direction: column;
34
- align-items: center;
35
- justify-content: center;
36
- user-select: none;
37
- will-change: opacity;
38
- z-index: 990;
39
- `;function be(e){let{loading:t=!0,children:o,variant:i="primary",animation:a="border",wrap:s,...c}=e;return t?(o&&(o=n("p",{className:"mt-3 text-secondary",children:o})),o=r(xe,{inverted:!0,active:!0,children:[n(w,{animation:a,variant:i,...c}),o]}),s?n(ve,{$height:"number"==typeof s?s:150,children:o}):o):null}const ve=L.div`
40
- position: relative;
41
- height: ${e=>`${e.$height}px`};
42
- `;function we(e){let{children:t,title:i,className:a,...s}=e;return n(z,{className:A("border-0 shadow-sm mb-3",a),...s,children:r("div",{className:"card-body",children:[i&&r(o,{children:[n("h5",{children:i}),n("hr",{})]}),t]})})}function ke(e){let{errors:t}=e;return t?n(N,{variant:"danger",children:n("ul",{className:"mb-0",children:"string"==typeof t?n("li",{children:t}):Object.entries(t).map((e=>{let[t,r]=e;return n("li",{children:r},t)}))})}):null}function Ce(e){let{children:t,className:r,size:o="small",direction:i="horizontal"}=e;"string"==typeof o&&(o={small:8,middle:16,large:24}[o]);const a=m.map(t,(e=>{if(e)return n(ze,{children:e})}));return n(Ne,{className:r,$direction:i,$size:o,children:a})}const Ne=L.div`
43
- display: inline-flex;
44
- align-items: center;
45
- gap: ${e=>e.$size}px;
46
-
47
- ${e=>"vertical"===e.$direction&&F`
48
- display: flex;
49
- flex-direction: column;
50
- align-items: inherit;
51
- `}
52
- `,ze=L.div`
53
-
54
- `,Se=p((()=>import("./steps-b_BcYIwk.js"))),Pe=p((()=>import("./steps-b_BcYIwk.js").then((e=>{let{Step:t}=e;return{default:t}}))));function je(e){return n(g,{fallback:null,children:n(Se,{...e})})}const Be=function(e){return n(g,{fallback:null,children:n(Pe,{...e})})};function Te(e){let{title:t,content:o,footer:i}=e;return r(we,{children:[n(Ee,{children:t}),n(He,{children:o}),i&&n($e,{children:i})]})}je.Step=Be;const $e=L.div`
55
- margin-top: 9px;
56
- padding-top: 10px;
57
- border-top: 1px solid #f0f0f0;
58
- color: rgba(0, 0, 0, .65);
59
- `,He=L.div`
60
- color: rgba(0, 0, 0, .85);
61
- font-size: 24px;
62
- `,Ee=L.div`
63
- margin-bottom: 4px;
64
- color: rgba(0, 0, 0, .45);
65
- font-size: 1.1rem;
66
- `;function Le(){}function Fe(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e}function Ae(e){let{total:t=0,onChange:r=Le,defaultCurrent:o=1,defaultPageSize:i=10,className:c,...l}=e;const[d,h]=a(o),[m,p]=a(i);s((()=>{Fe(l.current)&&h(l.current)}),[l.current]),s((()=>{Fe(l.pageSize)&&p(l.pageSize)}),[l.pageSize]);const g=f((()=>Math.floor((t-1)/m)+1),[t,m]),y=u((e=>()=>{e!==d&&(h(e),r(e,m))}),[r,d,m]),x=d-1>0?d-1:0,b=d+1<g?d+1:g,v=[];let w=null,k=null,C=null,N=null;if(g<=7)for(let e=1;e<=g;e+=1){const t=d===e;v.push(n(S.Item,{active:t,onClick:y(e),children:e},e))}else{N=n(S.Last,{onClick:y(g)},"last"),C=n(S.First,{onClick:y(1)},"first"),w=n(S.Prev,{onClick:y(x)},"prev"),k=n(S.Next,{onClick:y(b)},"next");let e=Math.max(1,d-2),t=Math.min(d+2,g);d-1<=2&&(t=5),g-d<=2&&(e=g-4);for(let r=e;r<=t;r+=1){const e=d===r;v.push(n(S.Item,{active:e,onClick:y(r),children:r},r))}d-1>=4&&3!==d&&v.unshift(w),g-d>=4&&d!==g-2&&v.push(k),1!==e&&v.unshift(C),t!==g&&v.push(N)}return n(S,{className:c,children:v})}function De(e){let{className:t,value:r,locale:i="zh-CN",currency:a=!0,options:s={}}=e;const c=f((()=>{let e;return e=a?{style:"currency",currency:"CNY"}:{minimumFractionDigits:2},new Intl.NumberFormat(i,{...e,...s})}),[a,i,s]);return t?n("span",{className:t,children:c.format(r)}):n(o,{children:c.format(r)})}function Me(e){let{loading:t,disabled:r,children:o,...i}=e;return n(k,{...i,disabled:t||r,children:t?"Loading…":o})}const Oe=p((()=>import("./image-zoom-OrIPGqh0.js")));function Ie(e){return n(g,{fallback:null,children:n(Oe,{...e})})}function Ue(e){let{url:t,method:n,confirm:r,onSuccess:o,children:i,disabled:a,as:s=W,...c}=e;const[l,d]=le(!1),f=u((async e=>{e.preventDefault();try{if(d(!0),r&&!await Z.confirm({message:r}))return;const e="string"==typeof t?{url:t,method:n}:{method:n,...t},i=await se(e);o&&o(i)}catch(e){ae(e)}finally{d(!1)}}),[t,n,d]);return y(s,{...c,disabled:a||l,onClick:f},i)}const Re=p((()=>import("./index-v9WA_wvo.js"))),_e=h(((e,t)=>n(g,{fallback:null,children:n(Re,{...e,ref:t})}))),qe=p((()=>import("./index-u-j9apcM.js"))),Ve=h(((e,t)=>n(g,{fallback:null,children:n(qe,{...e,ref:t})})));let Ge=0;function Ye(){let{onHide:e,onShow:t}=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};const[n,r]=a(!1),[o,i]=a(`visible-${Ge}`),s=u((()=>{r(!1),e&&e()}),[r,e]),c=u((()=>{i("visible-"+ ++Ge)}),[i,Ge]);return{visible:n,show:u((()=>{r(!0),t&&t()}),[r,t]),hide:s,state:{show:n,onHide:s,onExited:c,key:o}}}const Je=h(((e,t)=>{let{text:i,onOk:a,modalProps:s,children:c,onShow:l,onHide:d,confirmLoading:u,as:f=W,...h}=e;const{state:m,show:p,hide:g}=Ye({onShow:l,onHide:d});x(t,(()=>({close:g})));const b=y(f,{...h,onClick:p},i);return r(o,{children:[b,n(Z,{header:i,...s,...m,confirmLoading:u,onOk:async e=>{if(a){!1===await a()&&e.preventDefault()}},children:c})]})}));function Ke(e){let{text:t,onSuccess:o,buttonProps:s,modalProps:c,children:l,...d}=e;const[f,h]=a(!1),m=i(null),p=i(null),g=u((()=>(p.current?.submit(),!1)),[]),y=u((e=>{o&&o(e),m.current?.close()}),[o]);return n(Je,{ref:m,text:t,...s,modalProps:c,onOk:g,confirmLoading:f,children:r(_e,{...d,onSubmitting:h,ref:p,onSuccess:y,children:[l,n("input",{type:"submit",hidden:!0})]})})}function Qe(e){let{manual:t,refreshDeps:n,...r}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},{execute:o,currentParams:i,error:a,...c}=D((async t=>(e="string"==typeof e?{url:e}:e,await se({...e,...t}))),r);s((()=>{if(!t&&!n)try{o()}catch{}}),[]),s((()=>{n&&l()}),n);const l=u((async()=>{try{i?await o(...i):await o()}catch{}}),[o,i]);if(a&&ie(a)){const e=a.errors;a=new Error("string"==typeof e?e:j(e).join(""))}return{refresh:l,execute:o,error:a,...c}}function We(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[];const n=i(e);return s((()=>{n.current=e})),u((function(){for(var e=arguments.length,t=new Array(e),r=0;r<e;r++)t[r]=arguments[r];return n.current?.(...t)}),t)}function Xe(e){const{value:t,defaultValue:n,onChange:r,shouldUpdate:o=((e,t)=>e!==t)}=e,i=We(r),s=We(o),[c,l]=a(n),d=void 0!==t,u=d?t:c,f=We((e=>{const t="function"==typeof e?e(u):e;s(u,t)&&(d||l(t),i(t))}),[d,i,u,s]);return[u,f]}function Ze(e,t,n){const r=i(e),o=i(B(e,t,n));return s((()=>{r.current=e})),s((()=>{o.current=B((function(){r.current(...arguments)}),t,n)}),[t,n]),o.current}export{W as B,we as C,ke as E,_e as F,Ie as I,be as L,I as M,De as N,Ae as P,ye as R,Ce as S,Q as T,Xe as a,le as b,re as c,je as d,Be as e,Te as f,Me as g,Ue as h,oe as i,Ve as j,Ke as k,Je as l,Z as m,K as n,Qe as o,Ye as p,ie as q,se as r,ae as s,Ze as u,ue as w};