@nocobase/plugin-field-m2m-array 1.4.0-alpha → 1.4.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,4 +7,4 @@
7
7
  * For more information, please refer to: https://www.nocobase.com/agreement.
8
8
  */
9
9
 
10
- (function(t,n){typeof exports=="object"&&typeof module!="undefined"?n(exports,require("@nocobase/client"),require("@nocobase/utils/client"),require("react/jsx-runtime"),require("@formily/react"),require("antd"),require("react"),require("react-router-dom")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","@nocobase/utils/client","react/jsx-runtime","@formily/react","antd","react","react-router-dom"],n):(t=typeof globalThis!="undefined"?globalThis:t||self,n(t["@nocobase/plugin-field-m2m-array"]={},t["@nocobase/client"],t["@nocobase/utils"],t.jsxRuntime,t["@formily/react"],t.antd,t.react,t["react-router-dom"]))})(this,function(t,n,u,K,g,q,l,I){"use strict";var P=Object.defineProperty;var G=(t,n,u)=>n in t?P(t,n,{enumerable:!0,configurable:!0,writable:!0,value:u}):t[n]=u;var m=(t,n,u)=>(G(t,typeof n!="symbol"?n+"":n,u),u);var T=(t,n,u)=>new Promise((K,g)=>{var q=p=>{try{I(u.next(p))}catch(h){g(h)}},l=p=>{try{I(u.throw(p))}catch(h){g(h)}},I=p=>p.done?K(p.value):Promise.resolve(p.value).then(q,l);I((u=u.apply(t,n)).next())});const p="field-m2m-array";function h(e){var y;return((y=e==null?void 0:e.filterTargetKey)==null?void 0:y[0])||(e==null?void 0:e.filterTargetKey)||(e==null?void 0:e.getPrimaryKey())||"id"}class j extends n.CollectionFieldInterface{constructor(){super(...arguments);m(this,"name","mbm");m(this,"type","object");m(this,"group","relation");m(this,"order",6);m(this,"title",u.tval("Many to many (array)",{ns:p}));m(this,"description",u.tval("Many to many (array) description",{ns:p}));m(this,"isAssociation",!0);m(this,"default",{type:"belongsToArray",uiSchema:{"x-component":"AssociationField","x-component-props":{multiple:!0}}});m(this,"availableTypes",["belongsToArray"]);m(this,"properties",{"uiSchema.title":{type:"string",title:'{{t("Field display name")}}',required:!0,"x-decorator":"FormItem","x-component":"Input"},name:{type:"string",title:'{{t("Field name")}}',required:!0,"x-disabled":"{{ !createOnly }}","x-decorator":"FormItem","x-component":"Input",description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}"},grid:{type:"void","x-component":"Grid",properties:{row1:{type:"void","x-component":"Grid.Row",properties:{col11:{type:"void","x-component":"Grid.Col",properties:{source:{type:"void",title:'{{t("Source collection")}}',"x-decorator":"FormItem","x-component":"SourceCollection"}}},col12:{type:"void","x-component":"Grid.Col",properties:{target:{type:"string",title:'{{t("Target collection")}}',required:!0,"x-reactions":['{{useAsyncDataSource(loadCollections, ["file"])}}'],"x-decorator":"FormItem","x-component":"Select","x-disabled":"{{ !createOnly }}"}}}}},row2:{type:"void","x-component":"Grid.Row",properties:{col21:{type:"void","x-component":"Grid.Col",properties:{foreignKey:{type:"string",title:'{{t("Foreign key")}}',required:!0,default:'{{ useNewId("f_") }}',description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}","x-decorator":"FormItem","x-component":"MBMForeignKey","x-validator":"uid","x-disabled":"{{ !createOnly }}"}}},col22:{type:"void","x-component":"Grid.Col",properties:{targetKey:{type:"string",title:'{{t("Target key")}}',"x-decorator":"FormItem","x-component":"MBMTargetKey","x-disabled":"{{ !createOnly }}",description:"{{t('Field values must be unique.')}}"}}}}}}}});m(this,"filterable",{nested:!0,children:[]})}schemaInitialize(o,{field:b,block:M,readPretty:f,targetCollection:s}){var c;o["x-component-props"]=o["x-component-props"]||{},o["x-component-props"].fieldNames=o["x-component-props"].fieldNames||{value:h(s)},o["x-component-props"].fieldNames.label=((c=o["x-component-props"].fieldNames)==null?void 0:c.label)||(s==null?void 0:s.titleField)||h(s),["Table","Kanban"].includes(M)&&(o["x-component-props"]=o["x-component-props"]||{},o["x-component-props"].ellipsis=!0,o["x-component-props"].size="small")}}const A=()=>{const{collectionName:e,name:y}=n.useRecord(),{name:o}=I.useParams(),{getCollection:b}=n.useCollectionManager_deprecated(),M=g.useForm(),{target:f}=M.values||{},s=l.useMemo(()=>{var r;return(r=b(e||y,o))==null?void 0:r.fields},[e,o]),c=l.useMemo(()=>{var r;return(r=b(f,o))==null?void 0:r.fields},[f,o]),x=l.useMemo(()=>c==null?void 0:c.filter(r=>(r.primaryKey||r.unique)&&r.interface),[c]),C=l.useMemo(()=>s==null?void 0:s.filter(r=>["set","array"].includes(r.type)&&r.interface==="json"),[s]);return{targetKeys:x,foreignKeys:C}},B=g.observer(e=>{const{disabled:y}=e,[o,b]=l.useState([]),M=n.useRecord(),f=g.useField(),{type:s,template:c}=M,x=M[f.props.name],C=n.useCompile(),[r,i]=l.useState(x||(c==="view"?null:f.initialValue)),{foreignKeys:a}=A();l.useEffect(()=>{const v=a;if(v){const S=v.map(d=>{var F;return{value:d.name,label:C(((F=d.uiSchema)==null?void 0:F.title)||d.name)}});if(b(S),x){const d=S.find(F=>F.value===x);i((d==null?void 0:d.label)||x)}}},[s]);const w=c==="view"?q.Select:q.AutoComplete;return K.jsx("div",{children:K.jsx(w,{disabled:y,value:r,options:o,showSearch:!0,onDropdownVisibleChange:v=>T(this,null,function*(){const S=a;S&&v&&b(S.map(d=>{var F;return{value:d.name,label:C(((F=d.uiSchema)==null?void 0:F.title)||d.name)}}))}),onChange:(v,S)=>{var d;(d=e==null?void 0:e.onChange)==null||d.call(e,v),i(S.label||v)}})})},{displayName:"MBMForeignKey"}),O=g.observer(e=>{const{value:y,disabled:o}=e,{targetKey:b}=n.useRecord(),[M,f]=l.useState([]),[s,c]=l.useState(y||b),x=n.useCompile(),C=g.useField();C.required=!0;const{targetKeys:r}=A();return l.useEffect(()=>{r&&f(r.map(i=>{var a;return{value:i.name,label:x(((a=i==null?void 0:i.uiSchema)==null?void 0:a.title)||i.title||i.name)}}))},[r]),K.jsx("div",{children:K.jsx(q.Select,{showSearch:!0,options:M,onDropdownVisibleChange:i=>T(this,null,function*(){r&&i&&f(r.map(a=>{var w;return{value:a.name,label:x(((w=a==null?void 0:a.uiSchema)==null?void 0:w.title)||a.title||a.name)}}))}),onChange:i=>{var a;(a=e==null?void 0:e.onChange)==null||a.call(e,i),c(i)},value:s,disabled:o})})},{displayName:"MBMTargetKey"});class N extends n.Plugin{afterAdd(){return T(this,null,function*(){})}beforeLoad(){return T(this,null,function*(){})}load(){return T(this,null,function*(){this.app.addComponents({MBMForeignKey:B,MBMTargetKey:O}),this.app.dataSourceManager.addFieldInterfaces([j])})}}t.PluginM2MArrayClient=N,t.default=N,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
10
+ (function(t,e){typeof exports=="object"&&typeof module!="undefined"?e(exports,require("@nocobase/client"),require("@nocobase/utils/client"),require("react/jsx-runtime"),require("@formily/react"),require("antd"),require("react"),require("react-router-dom")):typeof define=="function"&&define.amd?define(["exports","@nocobase/client","@nocobase/utils/client","react/jsx-runtime","@formily/react","antd","react","react-router-dom"],e):(t=typeof globalThis!="undefined"?globalThis:t||self,e(t["@nocobase/plugin-field-m2m-array"]={},t["@nocobase/client"],t["@nocobase/utils"],t.jsxRuntime,t["@formily/react"],t.antd,t.react,t["react-router-dom"]))})(this,function(t,e,d,F,x,q,u,I){"use strict";var O=Object.defineProperty;var G=(t,e,d)=>e in t?O(t,e,{enumerable:!0,configurable:!0,writable:!0,value:d}):t[e]=d;var m=(t,e,d)=>(G(t,typeof e!="symbol"?e+"":e,d),d);var h=(t,e,d)=>new Promise((F,x)=>{var q=p=>{try{I(d.next(p))}catch(T){x(T)}},u=p=>{try{I(d.throw(p))}catch(T){x(T)}},I=p=>p.done?F(p.value):Promise.resolve(p.value).then(q,u);I((d=d.apply(t,e)).next())});const p="field-m2m-array";class T extends e.CollectionFieldInterface{constructor(){super(...arguments);m(this,"name","mbm");m(this,"type","object");m(this,"group","relation");m(this,"order",6);m(this,"title",d.tval("Many to many (array)",{ns:p}));m(this,"description",d.tval("Many to many (array) description",{ns:p}));m(this,"isAssociation",!0);m(this,"default",{type:"belongsToArray",uiSchema:{"x-component":"AssociationField","x-component-props":{multiple:!0}}});m(this,"availableTypes",["belongsToArray"]);m(this,"properties",{"uiSchema.title":{type:"string",title:'{{t("Field display name")}}',required:!0,"x-decorator":"FormItem","x-component":"Input"},name:{type:"string",title:'{{t("Field name")}}',required:!0,"x-disabled":"{{ !createOnly }}","x-decorator":"FormItem","x-component":"Input",description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}"},grid:{type:"void","x-component":"Grid",properties:{row1:{type:"void","x-component":"Grid.Row",properties:{col11:{type:"void","x-component":"Grid.Col",properties:{source:{type:"void",title:'{{t("Source collection")}}',"x-decorator":"FormItem","x-component":"SourceCollection"}}},col12:{type:"void","x-component":"Grid.Col",properties:{target:{type:"string",title:'{{t("Target collection")}}',required:!0,"x-reactions":['{{useAsyncDataSource(loadCollections, ["file"])}}'],"x-decorator":"FormItem","x-component":"Select","x-disabled":"{{ !createOnly }}"}}}}},row2:{type:"void","x-component":"Grid.Row",properties:{col21:{type:"void","x-component":"Grid.Col",properties:{foreignKey:{type:"string",title:'{{t("Foreign key")}}',required:!0,default:'{{ useNewId("f_") }}',description:"{{t('Randomly generated and can be modified. Support letters, numbers and underscores, must start with an letter.')}}","x-decorator":"FormItem","x-component":"MBMForeignKey","x-validator":"uid","x-disabled":"{{ !createOnly }}"}}},col22:{type:"void","x-component":"Grid.Col",properties:{targetKey:{type:"string",title:'{{t("Target key")}}',"x-decorator":"FormItem","x-component":"MBMTargetKey","x-disabled":"{{ !createOnly }}",description:"{{t('Field values must be unique.')}}"}}}}}}}});m(this,"filterable",{nested:!0,children:[]})}schemaInitialize(n,{field:g,block:b,readPretty:y,targetCollection:s}){var c;n["x-component-props"]=n["x-component-props"]||{},n["x-component-props"].fieldNames=n["x-component-props"].fieldNames||{value:e.getUniqueKeyFromCollection(s)},n["x-component-props"].fieldNames.label=((c=n["x-component-props"].fieldNames)==null?void 0:c.label)||(s==null?void 0:s.titleField)||e.getUniqueKeyFromCollection(s),["Table","Kanban"].includes(b)&&(n["x-component-props"]=n["x-component-props"]||{},n["x-component-props"].ellipsis=!0,n["x-component-props"].size="small")}}const A=()=>{const{collectionName:r,name:K}=e.useRecord(),{name:n}=I.useParams(),{getCollection:g}=e.useCollectionManager_deprecated(),b=x.useForm(),{target:y}=b.values||{},s=u.useMemo(()=>{var o;return(o=g(r||K,n))==null?void 0:o.fields},[r,n]),c=u.useMemo(()=>{var o;return(o=g(y,n))==null?void 0:o.fields},[y,n]),f=u.useMemo(()=>c==null?void 0:c.filter(o=>(o.primaryKey||o.unique)&&o.interface),[c]),C=u.useMemo(()=>s==null?void 0:s.filter(o=>["set","array"].includes(o.type)&&o.interface==="json"),[s]);return{targetKeys:f,foreignKeys:C}},j=x.observer(r=>{const{disabled:K}=r,[n,g]=u.useState([]),b=e.useRecord(),y=x.useField(),{type:s,template:c}=b,f=b[y.props.name],C=e.useCompile(),[o,i]=u.useState(f||(c==="view"?null:y.initialValue)),{foreignKeys:a}=A();u.useEffect(()=>{const M=a;if(M){const v=M.map(l=>{var S;return{value:l.name,label:C(((S=l.uiSchema)==null?void 0:S.title)||l.name)}});if(g(v),f){const l=v.find(S=>S.value===f);i((l==null?void 0:l.label)||f)}}},[s]);const w=c==="view"?q.Select:q.AutoComplete;return F.jsx("div",{children:F.jsx(w,{disabled:K,value:o,options:n,showSearch:!0,onDropdownVisibleChange:M=>h(this,null,function*(){const v=a;v&&M&&g(v.map(l=>{var S;return{value:l.name,label:C(((S=l.uiSchema)==null?void 0:S.title)||l.name)}}))}),onChange:(M,v)=>{var l;(l=r==null?void 0:r.onChange)==null||l.call(r,M),i(v.label||M)}})})},{displayName:"MBMForeignKey"}),B=x.observer(r=>{const{value:K,disabled:n}=r,{targetKey:g}=e.useRecord(),[b,y]=u.useState([]),[s,c]=u.useState(K||g),f=e.useCompile(),C=x.useField();C.required=!0;const{targetKeys:o}=A();return u.useEffect(()=>{o&&y(o.map(i=>{var a;return{value:i.name,label:f(((a=i==null?void 0:i.uiSchema)==null?void 0:a.title)||i.title||i.name)}}))},[o]),F.jsx("div",{children:F.jsx(q.Select,{showSearch:!0,options:b,onDropdownVisibleChange:i=>h(this,null,function*(){o&&i&&y(o.map(a=>{var w;return{value:a.name,label:f(((w=a==null?void 0:a.uiSchema)==null?void 0:w.title)||a.title||a.name)}}))}),onChange:i=>{var a;(a=r==null?void 0:r.onChange)==null||a.call(r,i),c(i)},value:s,disabled:n})})},{displayName:"MBMTargetKey"});class N extends e.Plugin{afterAdd(){return h(this,null,function*(){})}beforeLoad(){return h(this,null,function*(){})}load(){return h(this,null,function*(){this.app.addComponents({MBMForeignKey:j,MBMTargetKey:B}),this.app.dataSourceManager.addFieldInterfaces([T])})}}t.PluginM2MArrayClient=N,t.default=N,Object.defineProperties(t,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
@@ -11,10 +11,10 @@ module.exports = {
11
11
  "@formily/react": "2.3.0",
12
12
  "antd": "5.12.8",
13
13
  "react": "18.2.0",
14
- "@nocobase/client": "1.4.0-alpha",
14
+ "@nocobase/client": "1.4.0-alpha.1",
15
15
  "react-router-dom": "6.21.0",
16
- "@nocobase/utils": "1.4.0-alpha",
17
- "@nocobase/database": "1.4.0-alpha",
18
- "@nocobase/server": "1.4.0-alpha",
19
- "@nocobase/data-source-manager": "1.4.0-alpha"
16
+ "@nocobase/utils": "1.4.0-alpha.1",
17
+ "@nocobase/database": "1.4.0-alpha.1",
18
+ "@nocobase/server": "1.4.0-alpha.1",
19
+ "@nocobase/data-source-manager": "1.4.0-alpha.1"
20
20
  };
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "displayName.zh-CN": "数据表字段:多对多 (数组)",
5
5
  "description": "Allows to create many to many relationships between two models by storing an array of unique keys of the target model.",
6
6
  "description.zh-CN": "支持通过在数组中存储目标表唯一键的方式建立多对多关系。",
7
- "version": "1.4.0-alpha",
7
+ "version": "1.4.0-alpha.1",
8
8
  "main": "dist/server/index.js",
9
9
  "peerDependencies": {
10
10
  "@nocobase/client": "1.x",
@@ -14,5 +14,5 @@
14
14
  "keywords": [
15
15
  "Collection fields"
16
16
  ],
17
- "gitHead": "f097a2bddec152522b5645bd5d451f4c866d2060"
17
+ "gitHead": "b42379db55cd8774d3543c8d6cdc566434d3f170"
18
18
  }