@tachybase/plugin-field-china-region
Version:
Provides data and field type for administrative divisions of China.
2 lines (1 loc) • 2.12 kB
JavaScript
(function(n,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("@tachybase/client"),require("@tachybase/schema")):typeof define=="function"&&define.amd?define(["exports","@tachybase/client","@tachybase/schema"],e):(n=typeof globalThis!="undefined"?globalThis:n||self,e(n["@tachybase/plugin-field-china-region"]={},n["@tachybase/client"],n["@tachybase/schema"]))})(this,function(n,e,s){"use strict";var P=Object.defineProperty,R=Object.defineProperties;var S=Object.getOwnPropertyDescriptors;var m=Object.getOwnPropertySymbols;var x=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable;var y=(n,e,s)=>e in n?P(n,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):n[e]=s,b=(n,e)=>{for(var s in e||(e={}))x.call(e,s)&&y(n,s,e[s]);if(m)for(var s of m(e))C.call(e,s)&&y(n,s,e[s]);return n},v=(n,e)=>R(n,S(e));var L=(n,e,s)=>new Promise((d,u)=>{var f=a=>{try{l(s.next(a))}catch(i){u(i)}},t=a=>{try{l(s.throw(a))}catch(i){u(i)}},l=a=>a.done?d(a.value):Promise.resolve(a.value).then(f,t);l((s=s.apply(n,e)).next())});const d=t=>{const a=s.useField().componentProps.maxLevel;return e.useRequest({resource:"chinaRegions",action:"list",params:{sort:"code",paginate:!1,filter:{level:1}}},v(b({},t),{onSuccess(i){var r;t==null||t.onSuccess({data:((r=i==null?void 0:i.data)==null?void 0:r.map(c=>(a!==1&&(c.isLeaf=!1),c)))||[]})},manual:!0}))},u=()=>{const t=e.useAPIClient(),l=s.useField(),a=l.componentProps.maxLevel;return(i,r)=>{var g;const c=i[i.length-1];((g=c==null?void 0:c.children)==null?void 0:g.length)>0||(c.loading=!0,t.resource("chinaRegions").list({sort:"code",paginate:!1,filter:{parentCode:c.code}}).then(({data:o})=>{var p;r?r(o):(c.loading=!1,c.children=((p=o==null?void 0:o.data)==null?void 0:p.map(h=>(a>h.level&&(h.isLeaf=!1),h)))||[]),l.dataSource=[...l.dataSource]}).catch(o=>{console.error(o)}))}};class f extends e.Plugin{load(){return L(this,null,function*(){this.app.addScopes({useChinaRegionDataSource:d,useChinaRegionLoadData:u})})}}n.ChinaRegionPlugin=f,n.default=f,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});