zy-react-library 1.2.26 → 1.2.27
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.
|
@@ -1 +1 @@
|
|
|
1
|
-
import{InfoCircleOutlined as e}from"@ant-design/icons";import{Input as r,DatePicker as
|
|
1
|
+
import{InfoCircleOutlined as e}from"@ant-design/icons";import{Input as r,DatePicker as t,Form as n,Col as l,Divider as s,Row as a,Button as o,Checkbox as d,Radio as i,Select as u,InputNumber as p,Tooltip as c}from"antd";import m from"dayjs";import{FORM_ITEM_RENDER_ENUM as h}from"../../enum/formItemRender/index.js";import{jsx as y,Fragment as E,jsxs as b}from"react/jsx-runtime";const{TextArea:T}=r,{RangePicker:f}=t,I=({options:I,labelCol:v,gutter:A=24,span:R=12,collapse:Y=!1,useAutoGenerateRequired:D=!0,initialValues:C})=>{const N=n.useFormInstance(),w=()=>{const e=N.getFieldsValue();return 0===Object.keys(e).length&&C?C:e},P=e=>"function"==typeof e.componentProps?e.componentProps(w()):e.componentProps||{},U=e=>{const r="function"==typeof e.formItemProps?e.formItemProps(w()):e.formItemProps||{};return[h.DATE,h.DATE_MONTH,h.DATE_YEAR,h.DATETIME].includes(e.render)&&(r.getValueFromEvent=(e,r)=>r,r.getValueProps=e=>({value:e?m(e):void 0})),[h.DATE_WEEK].includes(e.render)&&(r.getValueFromEvent=(e,r)=>r,r.getValueProps=e=>({value:e?m(e,"YYYY-wo"):void 0})),[h.DATE_RANGE,h.DATETIME_RANGE].includes(e.render)&&(r.getValueFromEvent=(e,r)=>r,r.getValueProps=e=>({value:Array.isArray(e)?e.map(e=>e?m(e):void 0):void 0})),r},M=e=>"function"==typeof e?e(w()):e??!0,x=e=>{if(e.render===h.DIVIDER)return[];const r=[];switch(e.render||h.INPUT){case h.INPUT:!1!==e.useConstraints&&r.push({max:50,message:"最多输入50字符"});break;case h.TEXTAREA:!1!==e.useConstraints&&r.push({max:500,message:"最多输入500字符"});break;case h.INPUT_NUMBER:case h.NUMBER:!1!==e.useConstraints&&r.push({pattern:/^(\d+)(\.\d{1,2})?$/,message:"请输入正确的数字,最多保留两位小数"}),!1!==e.useConstraints&&r.push({validator:(e,r)=>r&&Math.abs(Number.parseFloat(r))>999999999?Promise.reject("输入数值超出安全范围"):Promise.resolve()});break;case h.INTEGER:!1!==e.useConstraints&&r.push({pattern:/^(\d+)$/,message:"请输入正确的整数"}),!1!==e.useConstraints&&r.push({validator:(e,r)=>r&&Math.abs(Number.parseFloat(r))>999999999?Promise.reject("输入数值超出安全范围"):Promise.resolve()})}if(!D)return e.rules?Array.isArray(e.rules)?[...e.rules,...r]:[e.rules,...r]:r;if(M(e.required)){const t=!e.render||[h.INPUT,h.TEXTAREA,h.INPUT_NUMBER,h.NUMBER,h.INTEGER].includes(e.render);return r.push({required:!0,message:`${t?"请输入":"请选择"}${e.label}`}),e.rules&&(Array.isArray(e.rules)?r.push(...e.rules):r.push(e.rules)),r}return e.rules?Array.isArray(e.rules)?[...e.rules,...r]:[e.rules,...r]:r},g=e=>e.key||e.name,B=e=>{const r=e.render===h.DIVIDER?24:e.span??R,t=e.labelCol??(24===r?{span:v.span/2}:v);return{span:r,labelCol:t,wrapperCol:e.wrapperCol??{span:24-t.span}}},_=(e,r)=>({value:e[r.valueKey],label:"function"==typeof r.labelKey?r.labelKey(e):e[r.labelKey],disabled:e.disabled}),k=e=>{const n=P(e),s=(e=>({valueKey:e?.itemsField?.valueKey||"bianma",labelKey:e?.itemsField?.labelKey||"name"}))(e),o=e.render||h.INPUT,c=e.placeholder||`请${[h.INPUT,h.TEXTAREA,h.INPUT_NUMBER,h.NUMBER,h.INTEGER].includes(o)?"输入":"选择"}${e.label}`;switch(o){case h.INPUT:return y(r,{placeholder:c,maxLength:!1!==e.useConstraints?50:9999,...n});case h.TEXTAREA:return y(T,{placeholder:c,maxLength:!1!==e.useConstraints?500:9999,showCount:!0,rows:3,...n});case h.INPUT_NUMBER:case h.NUMBER:case h.INTEGER:return y(p,{placeholder:c,style:{width:"100%"},...n});case h.SELECT:return y(u,{placeholder:c,showSearch:!0,allowClear:!0,optionFilterProp:"children",...n,children:(e.items||[]).map(e=>{const{value:r,label:t,disabled:n}=_(e,s);return y(u.Option,{value:r,disabled:n,children:t},r)})});case h.RADIO:return y(i.Group,{...n,children:(e.items||[]).map(e=>{const{value:r,label:t,disabled:n}=_(e,s);return y(i,{value:r,disabled:n,children:t},r)})});case h.CHECKBOX:return y(d.Group,{...n,children:e.checkboxCol?y(a,{children:(e.items||[]).map(r=>{const{value:t,label:n,disabled:a}=_(r,s);return y(l,{span:e.checkboxCol,children:y(d,{value:t,disabled:a,children:n})},t)})}):(e.items||[]).map(e=>{const{value:r,label:t,disabled:n}=_(e,s);return y(d,{value:r,disabled:n,children:t},r)})});case h.DATE:return y(t,{placeholder:c,format:"YYYY-MM-DD",style:{width:"100%"},...n});case h.DATE_MONTH:return y(t,{picker:"month",placeholder:c,format:"YYYY-MM",style:{width:"100%"},...n});case h.DATE_YEAR:return y(t,{picker:"year",placeholder:c,format:"YYYY",style:{width:"100%"},...n});case h.DATE_WEEK:return y(t,{picker:"week",placeholder:c,format:"YYYY-wo",style:{width:"100%"},...n});case h.DATE_RANGE:return y(f,{placeholder:[`请选择开始${e.label}`,`请选择结束${e.label}`],format:"YYYY-MM-DD",style:{width:"100%"},...n});case h.DATETIME:return y(t,{showTime:!0,placeholder:c,format:"YYYY-MM-DD HH:mm:ss",style:{width:"100%"},...n});case h.DATETIME_RANGE:return y(f,{showTime:!0,placeholder:[`请选择开始${e.label}`,`请选择结束${e.label}`],format:"YYYY-MM-DD HH:mm:ss",style:{width:"100%"},...n});case h.DIVIDER:return null;default:return o}},V=r=>r.tip?b(E,{children:[r.label,y(c,{title:r.tip,children:y(e,{style:{marginLeft:4,fontSize:12}})})]}):r.label,F=({option:e,style:r,col:t,index:s})=>{const a=U(e);return delete a.dependencies,delete a.shouldUpdate,("function"==typeof(o=e.hidden)?o(w()):o)?null:y(l,{span:t.span,style:r,children:y(n.Item,{name:e.name,label:V(e),rules:x(e),labelCol:t.labelCol,wrapperCol:t.wrapperCol,preserve:!1,...a,children:k(e)})},g(e)||s);var o},$=({option:e,style:r,col:t,index:a})=>{const o=P(e);return e.customizeRender?y(l,{span:t.span,style:r,children:e.render},g(e)||a):e.onlyForLabel?y(n.Item,{name:e.name,noStyle:!0,preserve:!1,children:y("input",{type:"hidden"})},g(e)||a):e.render===h.DIVIDER?y(l,{span:t.span,style:r,children:y(s,{orientation:"left",...o,children:e.label})},g(e)||a):null};return y(E,{children:I.map((e,r)=>{const t=B(e),s=(e=>Y&&e>=3?{display:"none"}:void 0)(r),d=U(e);return $({option:e,style:s,col:t,index:r})||(e.render===h.FORM_LIST?((e,r,t,s)=>{const d=(e=>{const r={showAddButton:!0,showRemoveButton:!0,addButtonText:"添加",removeButtonText:"删除",options:[],addDefaultValue:{},addInsertIndex:void 0};return"function"==typeof e.formListUniqueProps?{...r,...e.formListUniqueProps(w())}:{...r,...e.formListUniqueProps||{}}})(e),i=P(e);return y(l,{span:t.span,style:s,children:y(n.List,{name:e.name,...i,children:(e,{add:r,remove:t,move:i})=>y(E,{children:e.map((e,u)=>{const p=((e,r,t,n,l,s)=>"function"==typeof e?e(r,t,{field:r,fieldIndex:t,add:n,remove:l,move:s}):e??[])(d.options,e,u,r,t,i);return y(a,{gutter:A,children:p.map((a,i)=>{const c=B(a),m=U(a);delete m.dependencies,delete m.shouldUpdate;const h={option:a,style:s,col:c,index:`${u}_${i}`};return $(h)||(i===p.length-1?y(l,{span:c.span,style:s,children:y(n.Item,{label:V(a),labelCol:c.labelCol,wrapperCol:c.wrapperCol,preserve:!1,required:M(a.required),...m,children:b("div",{style:{display:"flex",gap:10,alignItems:"center",justifyContent:"space-between"},children:[y("div",{style:{flex:1},children:y(n.Item,{noStyle:!0,rules:x(a),name:a.name,children:k(a)})}),u>=1?d.showRemoveButton&&y(o,{type:"primary",danger:!0,onClick:()=>t(e.name),children:d.removeButtonText}):d.showAddButton&&y(o,{type:"primary",onClick:()=>r(d.addDefaultValue,d.addInsertIndex),children:d.addButtonText})]})})},g(a)||i):F(h))})},e.key)})})})},g(e)||r)})(e,r,t,s):(e.shouldUpdate??e.dependencies)||(d.shouldUpdate??d.dependencies)?((e,r,t,l)=>{const s=U(e);return y(n.Item,{noStyle:!0,preserve:!1,shouldUpdate:e.shouldUpdate??s.shouldUpdate,dependencies:e.dependencies??s.dependencies,children:()=>F({option:e,style:t,col:l,index:r})},g(e)||r)})(e,r,s,t):F({option:e,style:s,col:t,index:r}))})})};I.displayName="FormItemsRenderer";export{I as default};
|
|
@@ -19,6 +19,8 @@ export declare const FORM_ITEM_RENDER_ENUM: {
|
|
|
19
19
|
INPUT_NUMBER: "inputNumber";
|
|
20
20
|
/** 映射为 antd InputNumber */
|
|
21
21
|
NUMBER: "number";
|
|
22
|
+
/** 映射为 antd InputNumber */
|
|
23
|
+
INTEGER: "number";
|
|
22
24
|
/** 映射为 antd Select */
|
|
23
25
|
SELECT: "select";
|
|
24
26
|
/** 映射为 antd Radio.Group */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
const e={INPUT:"input",TEXTAREA:"textarea",INPUT_NUMBER:"inputNumber",NUMBER:"number",SELECT:"select",RADIO:"radio",CHECKBOX:"checkbox",DATE:"date",DATE_MONTH:"dateMonth",DATE_YEAR:"dateYear",DATE_WEEK:"dateWeek",DATE_RANGE:"dateRange",DATETIME:"datetime",DATETIME_RANGE:"datetimeRange",DIVIDER:"divider",FORM_LIST:"formList"};export{e as FORM_ITEM_RENDER_ENUM};
|
|
1
|
+
const e={INPUT:"input",TEXTAREA:"textarea",INPUT_NUMBER:"inputNumber",NUMBER:"number",INTEGER:"number",SELECT:"select",RADIO:"radio",CHECKBOX:"checkbox",DATE:"date",DATE_MONTH:"dateMonth",DATE_YEAR:"dateYear",DATE_WEEK:"dateWeek",DATE_RANGE:"dateRange",DATETIME:"datetime",DATETIME_RANGE:"datetimeRange",DIVIDER:"divider",FORM_LIST:"formList"};export{e as FORM_ITEM_RENDER_ENUM};
|