cnhis-design-vue 3.1.51-beta.1 → 3.1.51-beta.11

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.
Files changed (137) hide show
  1. package/README.md +87 -87
  2. package/es/components/base-search/src/index.vue2.js +1 -1
  3. package/es/components/bpmn-workflow/src/BpmnWorkflow.d.ts +0 -0
  4. package/es/components/bpmn-workflow/types/BpmnViewer.d.ts +1 -0
  5. package/es/components/bpmn-workflow/types/ModelingModule.d.ts +1 -0
  6. package/es/components/bpmn-workflow/types/MoveCanvasModule.d.ts +1 -0
  7. package/es/components/callback/index.d.ts +69 -0
  8. package/es/components/callback/index.js +1 -0
  9. package/es/components/callback/src/components/dialog/drawer.vue.d.ts +353 -0
  10. package/es/components/callback/src/components/dialog/drawer.vue.js +1 -0
  11. package/es/components/callback/src/components/dialog/drawer.vue2.js +1 -0
  12. package/es/components/callback/src/components/dialog/modal.vue.d.ts +166 -0
  13. package/es/components/callback/src/components/dialog/modal.vue.js +1 -0
  14. package/es/components/callback/src/components/dialog/modal.vue2.js +1 -0
  15. package/es/components/callback/src/components/popup/index.vue.d.ts +48 -0
  16. package/es/components/callback/src/components/popup/index.vue.js +1 -0
  17. package/es/components/callback/src/components/render/drawerIframe/index.vue.d.ts +62 -0
  18. package/es/components/callback/src/components/render/drawerIframe/index.vue.js +1 -0
  19. package/es/components/callback/src/components/render/drawerIframe/index.vue2.js +1 -0
  20. package/es/components/callback/src/components/render/enums.d.ts +5 -0
  21. package/es/components/callback/src/components/render/enums.js +1 -0
  22. package/es/components/callback/src/components/render/index.vue.d.ts +57 -0
  23. package/es/components/callback/src/components/render/index.vue.js +1 -0
  24. package/es/components/callback/src/components/render/popupMaps.d.ts +5702 -0
  25. package/es/components/callback/src/components/render/popupMaps.js +1 -0
  26. package/es/components/callback/src/index.vue.d.ts +68 -0
  27. package/es/components/callback/src/index.vue.js +1 -0
  28. package/es/components/callback/src/index.vue2.js +1 -0
  29. package/es/components/callback/src/types/index.d.ts +11 -0
  30. package/es/components/callback/style/callback-iconfont.ttf +0 -0
  31. package/es/components/callback/style/index.css +1 -0
  32. package/es/components/classification/src/index.vue2.js +1 -1
  33. package/es/components/expand-field/index.d.ts +0 -13
  34. package/es/components/expand-field/src/components/FormItemPerson.vue.d.ts +0 -13
  35. package/es/components/expand-field/src/components/PersonModal.vue.d.ts +0 -13
  36. package/es/components/expand-field/src/components/PersonModal.vue2.js +1 -1
  37. package/es/components/expand-field/src/components/form.vue.d.ts +0 -13
  38. package/es/components/expand-field/src/components/form.vue2.js +1 -1
  39. package/es/components/expand-field/src/index.vue.d.ts +0 -13
  40. package/es/components/expand-field/src/index.vue2.js +1 -1
  41. package/es/components/fabric-chart/src/hooks/surgicalAnesthesia/useCenter.js +1 -1
  42. package/es/components/fabric-chart/src/hooks/surgicalAnesthesia/useOther.js +1 -1
  43. package/es/components/form-config/index.d.ts +6 -2
  44. package/es/components/form-config/src/FormConfig.vue.d.ts +6 -2
  45. package/es/components/form-config/src/components/FormConfigCreator.vue.d.ts +3 -1
  46. package/es/components/form-config/src/components/FormConfigEdit.vue.d.ts +3 -1
  47. package/es/components/form-render/index.d.ts +3 -1
  48. package/es/components/form-render/src/FormRender.vue.d.ts +3 -1
  49. package/es/components/form-render/src/FormRender.vue2.js +1 -1
  50. package/es/components/form-render/src/FormRenderWrapper.vue.d.ts +3 -1
  51. package/es/components/form-render/src/components/renderer/remoteSearch.d.ts +79 -2
  52. package/es/components/form-render/src/components/renderer/remoteSearch.js +1 -1
  53. package/es/components/form-render/src/hooks/useFormEvent.d.ts +3 -1
  54. package/es/components/form-render/src/hooks/useFormEvent.js +1 -1
  55. package/es/components/form-render/src/hooks/useFormRenderOptions.d.ts +16 -10
  56. package/es/components/form-render/src/hooks/useFormRenderOptions.js +1 -1
  57. package/es/components/form-render/src/types/index.d.ts +4 -1
  58. package/es/components/iho-table/src/plugins/keyboardEventPlugin/index.js +1 -1
  59. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/hooks/useSelectOption.d.ts +2 -0
  60. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/hooks/useSelectOption.js +1 -1
  61. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/editSelect.d.ts +27 -0
  62. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/editSelect.js +1 -1
  63. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/index.js +1 -1
  64. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/selectRendererPlugin/selectUtils.js +1 -1
  65. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/index.js +1 -1
  66. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/separateUtils.d.ts +4 -3
  67. package/es/components/iho-table/src/plugins/rendererPlugins/editableWidgets/separateRendererPlugin/separateUtils.js +1 -1
  68. package/es/components/iho-table/src/plugins/varialbleHeightPlugin/index.js +1 -1
  69. package/es/components/iho-table/src/types/index.d.ts +7 -1
  70. package/es/components/index.css +1 -1
  71. package/es/components/index.d.ts +4 -3
  72. package/es/components/index.js +1 -1
  73. package/es/components/info-header/index.d.ts +6 -2
  74. package/es/components/info-header/src/InfoHeader.vue.d.ts +6 -2
  75. package/es/components/info-header/src/components/infoDescription/index.vue.d.ts +3 -1
  76. package/es/components/info-header/src/components/patientInfo/index.vue.d.ts +3 -1
  77. package/es/components/scale-view/src/ScaleView.vue2.js +1 -1
  78. package/es/components/scale-view/src/hooks/use-component.d.ts +615 -255
  79. package/es/components/select-label/index.d.ts +617 -256
  80. package/es/components/select-label/index.js +1 -1
  81. package/es/components/select-label/src/LabelFormContent.vue2.js +1 -1
  82. package/es/components/{iho-select-label/src/LabelFormContent.vue.d.ts → select-label/src/ihoLabel/IhoLabelFormContent.vue.d.ts} +5 -5
  83. package/es/components/select-label/src/ihoLabel/IhoLabelFormContent.vue.js +1 -0
  84. package/es/components/select-label/src/ihoLabel/IhoLabelFormContent.vue2.js +1 -0
  85. package/es/components/{iho-select-label/src/SelectLabel.vue.d.ts → select-label/src/ihoLabel/IhoSelectLabel.vue.d.ts} +7 -7
  86. package/es/components/select-label/src/ihoLabel/IhoSelectLabel.vue.js +1 -0
  87. package/es/components/select-label/src/ihoLabel/IhoSelectLabel.vue2.js +1 -0
  88. package/es/components/{iho-select-label/src/components/label-classify.vue.d.ts → select-label/src/ihoLabel/iho-label-classify.vue.d.ts} +1 -1
  89. package/es/components/select-label/src/ihoLabel/iho-label-classify.vue.js +1 -0
  90. package/es/components/select-label/src/ihoLabel/iho-label-classify.vue2.js +1 -0
  91. package/es/components/select-label/src/index.vue.d.ts +899 -0
  92. package/es/components/select-label/src/index.vue.js +1 -0
  93. package/es/components/select-label/src/index.vue2.js +1 -0
  94. package/es/components/select-person/src/SearchMultiple.vue.d.ts +0 -6
  95. package/es/components/shortcut-setter/index.d.ts +3 -1
  96. package/es/components/shortcut-setter/src/ShortcutSetter.vue.d.ts +3 -1
  97. package/es/components/table-export-field/src/components/ExportModal.vue.d.ts +3 -0
  98. package/es/components/table-filter/src/components/render-widget/components/SelectDynamicOption/index.vue2.js +1 -1
  99. package/es/components/table-filter/src/hooks/useAdvanced.js +1 -1
  100. package/es/env.d.ts +25 -25
  101. package/es/shared/assets/img/failure.png.js +1 -1
  102. package/es/shared/assets/img/no-permission.png.js +1 -1
  103. package/es/shared/assets/img/nodata.png.js +1 -1
  104. package/es/shared/assets/img/notfound.png.js +1 -1
  105. package/es/shared/assets/img/qr.png.js +1 -1
  106. package/es/shared/assets/img/success.png.js +1 -1
  107. package/es/shared/assets/img/video.png.js +1 -1
  108. package/es/shared/assets/img/video_default_cover.png.js +1 -1
  109. package/es/shared/assets/img/xb_big.png.js +1 -1
  110. package/es/shared/assets/img/xb_small.png.js +1 -1
  111. package/es/shared/components/VueDraggable/src/vuedraggable.d.ts +86 -0
  112. package/es/shared/directive/flexibleResize.d.ts +4 -0
  113. package/es/{components/classification/src → shared}/directive/flexibleResize.js +1 -1
  114. package/es/shared/directive/index.d.ts +1 -0
  115. package/es/shared/directive/index.js +1 -0
  116. package/es/shared/package.json.js +1 -1
  117. package/es/shared/types/business.d.ts +7 -0
  118. package/es/shared/utils/fabricjs/index.d.ts +6823 -0
  119. package/es/shared/utils/index.d.ts +3 -3
  120. package/es/shared/utils/index.js +1 -1
  121. package/es/shared/utils/tapable/index.d.ts +139 -0
  122. package/package.json +2 -2
  123. package/es/components/classification/src/directive/flexibleResize.d.ts +0 -28
  124. package/es/components/iho-select-label/index.d.ts +0 -363
  125. package/es/components/iho-select-label/index.js +0 -1
  126. package/es/components/iho-select-label/src/LabelFormContent.vue.js +0 -1
  127. package/es/components/iho-select-label/src/LabelFormContent.vue2.js +0 -1
  128. package/es/components/iho-select-label/src/SelectLabel.vue.js +0 -1
  129. package/es/components/iho-select-label/src/SelectLabel.vue2.js +0 -1
  130. package/es/components/iho-select-label/src/components/label-classify.vue.js +0 -1
  131. package/es/components/iho-select-label/src/components/label-classify.vue2.js +0 -1
  132. package/es/components/iho-select-label/style/iho-select-label-iconfont.ttf +0 -0
  133. package/es/components/iho-select-label/style/index.css +0 -1
  134. package/es/components/table-filter/src/types/tool.d.ts +0 -7
  135. /package/es/components/{iho-select-label → callback}/src/types/index.js +0 -0
  136. /package/es/components/{iho-select-label → select-label}/src/types/index.d.ts +0 -0
  137. /package/es/components/{table-filter/src/types/tool.js → select-label/src/types/index.js} +0 -0
@@ -1 +1 @@
1
- import{fabric as t}from"../../../../../shared/utils/fabricjs/index.js";import{drawPoint as e,drawText as i}from"../useDraw.js";import{useBirthProcessCumputedPoint as o}from"../useCumputedPoint.js";import{bus as n}from"../useEvent.js";import{useCommon as r}from"../useCommon.js";import"vue";import{getIndex as a}from"../../utils/index.js";import{cloneDeep as l}from"lodash-es";import"date-fns";import"../temperature/useShadow.js";import{OTHER_MENU as s}from"../../constants/index.js";import"naive-ui";import"@vueuse/core";function d(d,c,u,f,h,m,g,p,v){const{cumputedX:x,getXValue:k}=o(c),{getEqualXTypes:y,handleAddPrevent:X,isGridLimit:b}=r(d,u,c),{other:P,yCellHeight:w,xCellWidth:j,endX:C,originX:E,originY:z,endY:A,markHeight:L,event:S,topGridYCellHeight:I}=c,H=new Map,M=l(P);function T(){var o;if(!(null==(o=null==M?void 0:M.horizontal)?void 0:o.length))return;const n="horizontal";H.set(n,[]);const{horizontal:r}=M;let a=z+w/2;r.forEach(((o,r)=>{const{title:l,type:s,pointAttr:c={},textStyle:u={},data:f}=o;let h=null;f.forEach(((o,f)=>{const{time:m,value:g}=o,p=x(m);if(!B(p))return;const v=e(s,{...c,left:p,top:a}),k=p+v.width/2+2,y=i([k,a],{value:g,...u,originX:"left"}),X=new t.Group([v,y],{lockMovementY:!0,objectCaching:!1,hasControls:!1,hasBorders:!1,hoverCursor:"pointer"});Object.assign(X,{originLeft:p,iconHalfWidth:v.width/2,origin:{type:"other",key:n,dataIndex:r,index:f,data:o,title:l},limitX:{x1:E,x2:C-X.width}}),h&&(X.limitX.x1=h.left,h.limitX.x2=X.left,X.prevPoint=h,h.nextPoint=X),h=X,O(X),H.get(n).push(X),d.value.add(X)})),a+=w}))}function W(){var t;if(!(null==(t=null==M?void 0:M.vertical)?void 0:t.length))return;const i="vertical";H.set(i,[]);const{vertical:o}=M;o.forEach(((t,o)=>{const{textStyle:n={},data:r,time:a}=t,l=x(a);if(!B(l))return;let s=z+w/2;r.forEach(((t,r)=>{const a=e(String(t),{...n,lockMovementY:!0,left:l,originX:"left",top:s,origin:{type:"other",key:i,dataIndex:o,index:r,data:{value:t}}});s+=w,O(a),H.get(i).push(a),d.value.add(a)}));const c=H.get(i).filter((t=>t.origin.dataIndex===o)),u=Math.max(...c.map((t=>t.width))),f=l>C-u;c.forEach(((t,e,i)=>{t.siblingPoints=i.filter((e=>e.origin.index!==t.origin.index)),t.maxTextWidth=u,f&&t.setCoords().set("originX","right")}))}))}function Y(t,e="add"){const{dataIndex:i,data:o,index:n,key:r}=t,l=M[r],s=["mark"].includes(r)?l.dataList[i]:l[i];switch(e){case"remove":s.data.splice(n,1);break;case"change":s.data[n]=o;break;default:{const t=Array.isArray(o)?o[0].time:o.time,e=a(t,s.data),i=Array.isArray(o)?o:[o];s.data.splice(e,0,...i);break}}V(t)}function V(t){var e;const{key:i}=t;switch(null==(e=d.value)||e.remove(...H.get(i)),H.delete(i),i){case"horizontal":T();break;case"vertical":W();break;case"mark":G()}}function G(){if(!(null==P?void 0:P.mark)||!L)return;const{title:t,titleStyle:o,pointAttr:n,dataList:r}=P.mark,a=i([E-5,A+L/2],{value:t,...o,originX:"right"});d.value.add(a);const l=A+L,s=[];r.forEach((t=>{const{time:i,list:o=[]}=t,r=x(i);if(!B(r))return;let a=A;o.forEach((t=>{let i=!1;const o=e("circleAndText",{...n,text:t.text,left:r,top:a,origin:{data:t,key:"mark",type:"other"}}),c=o.height;a+c<=l&&a>=A?(o.set("top",a+c/2),a+=c):(i||(a=A,i=!0),o.set("top",a-c/2),a-=c),s.push(o),O(o),d.value.add(o)}))})),function(t){const e=t=>{var e,i;return null==(i=null==(e=t.origin)?void 0:e.data)?void 0:i.isStart},i=t.find((t=>e(t))),o=t.find((t=>!e(t)&&t.left>i.left)),n=t.filter((t=>!e(t)));t.forEach((t=>{const r={x1:E,x2:C};e(t)?(r.x2=o.left,t.otherPoints=n):(r.x1=i.left,t.startPoint=i),t.limitX=r}))}(s)}function O(t){if(S.hovered&&(t.on("mouseover",(()=>{q(t)})),t.on("mouseout",(()=>{f.show=!1}))),!S.evented)return;const{key:e}=t.origin,i=["mark","horizontal"].includes(e),o=["mark","vertical"].includes(e);t.on("moving",(()=>{i?function(t){t.setCoords(),t.left<t.limitX.x1&&t.set("left",t.limitX.x1);t.left>t.limitX.x2&&t.set("left",t.limitX.x2);if("mark"===t.origin.key){t.top<z&&t.set("top",z);const e=A+L-t.height/2;t.top>e&&t.set("top",e)}t.originLeft&&t.iconHalfWidth&&(t.originLeft=t.left+t.iconHalfWidth)}(t):(m(t),function(t){const e=t.left+t.maxTextWidth>C?"right":"left";t.setCoords().set({originX:e}),t.siblingPoints.forEach((i=>i.setCoords().set({originX:e,left:t.left})))}(t)),S.hovered&&q(t)})),t.on("mouseup",(n=>{var r;if(f.show=!1,1===n.button){i&&function(t){var e,i;if("mark"===t.origin.key){if((null==(i=null==(e=t.origin)?void 0:e.data)?void 0:i.isStart)&&t.otherPoints)t.otherPoints.forEach((e=>{e.limitX.x1=t.left}));else{const e=t.startPoint.otherPoints.map((t=>t.left)),i=Math.min(...e);t.startPoint.limitX.x2=i}return}t.prevPoint&&(t.prevPoint.limitX.x2=t.left);t.nextPoint&&(t.nextPoint.limitX.x1=t.left)}(t);const e=k(null!=(r=t.originLeft)?r:t.left),n={...t.origin,...o?{time:e}:{data:{...t.origin.data,time:e}}};d.value.discardActiveObject(),u("change",n)}3===n.button&&["horizontal","vertical"].includes(e)&&(h.point={x:t.left,y:t.top},h.show=!0,h.target=t,h.list=s.map((t=>({...t,renderItem:()=>t.label}))))}))}function q(t){var e;f.point={x:t.left,y:"mark"===t.origin.key?t.top:t.top+I/2},f.list=[`时间 ${k(null!=(e=t.originLeft)?e:t.left).slice(-5)}`],"mark"===t.origin.key&&f.list.unshift(t.origin.data.name+" "),f.show=!0}function B(t){return t>=E&&t<=C}return function(){var t;if(!(null==(t=null==M?void 0:M.horizontal)?void 0:t.length))return;const{horizontal:i}=M,o=E-5;let n=z+w/2;i.forEach(((t,i)=>{const{title:r,titleStyle:a={},defaultAddValue:l}=t,s=r&&e(r,{...a,originX:"right",left:o,top:n,origin:{defaultAddValue:l,dataIndex:i,type:"other",key:"horizontal",title:r},originLeft:o,originTop:n});var c;(c=s).on("moving",(()=>{c.set("originX","center"),b(c)?q(c):f.show=!1})),c.on("mouseup:before",(t=>{if(f.show=!1,0===t.e.button&&b(c))if(y(H.get("horizontal"),c.left,"key",j).includes(c.origin.key))X("repeat");else{const t={data:{time:k(c.left),value:c.origin.defaultAddValue},...c.origin};u("add",t),Y(t)}!function(t){t.setCoords().set({originX:"right",left:t.originLeft,top:t.originTop})}(c)})),d.value.add(s),n+=w}))}(),T(),W(),G(),n.on((()=>{const t="horizontal",e=g(H.get(t));e.length>0?p((()=>{const i=function(t){const e=t.reduce(((t,e)=>{const{dataIndex:i}=e.origin;return t[i]=t[i]?t[i].concat(e.origin):[e.origin],t}),{});return Object.keys(e).map((t=>{const i=e[t];return M.horizontal[t].data.splice(i[0].index,i.length),i})).flat()}(e);V({key:t}),u("remove",i)})):v()})),{clickMenu:function({item:t,target:e}){if(!e)return;const{type:i}=t,o={...e.origin,type:"other"};u(i,o),"remove"===i&&Y(o,i)}}}export{d as useOther};
1
+ import{fabric as t}from"../../../../../shared/utils/fabricjs/index.js";import{drawPoint as e,drawText as i}from"../useDraw.js";import{useBirthProcessCumputedPoint as o}from"../useCumputedPoint.js";import{bus as n}from"../useEvent.js";import{useCommon as r}from"../useCommon.js";import"vue";import{getIndex as a}from"../../utils/index.js";import{cloneDeep as l}from"lodash-es";import"date-fns";import"../temperature/useShadow.js";import{OTHER_MENU as s}from"../../constants/index.js";import"naive-ui";import"@vueuse/core";function d(d,c,u,f,h,m,g,p,v){const{cumputedX:x,getXValue:k}=o(c),{getEqualXTypes:y,handleAddPrevent:X,isGridLimit:b}=r(d,u,c),{other:P,yCellHeight:w,xCellWidth:j,endX:z,originX:C,originY:E,endY:A,markHeight:L,event:M,topGridYCellHeight:S}=c,I=new Map,T=l(P);function H(){var o;if(!(null==(o=null==T?void 0:T.horizontal)?void 0:o.length))return;const n="horizontal";I.set(n,[]);const{horizontal:r}=T;let a=E+w/2;r.forEach(((o,r)=>{const{title:l,type:s,pointAttr:c={},textStyle:u={},data:f}=o;let h=null;f.forEach(((o,f)=>{const{time:m,value:g}=o,p=x(m);if(!B(p))return;const v=e(s,{...c,left:p,top:a}),k=p+v.width/2+2,y=i([k,a],{value:g,...u,originX:"left"}),X=new t.Group([v,y],{lockMovementY:!0,objectCaching:!1,hasControls:!1,hasBorders:!1,hoverCursor:"pointer"});Object.assign(X,{originLeft:p,iconHalfWidth:v.width/2,origin:{type:"other",key:n,dataIndex:r,index:f,data:o,title:l},limitX:{x1:C,x2:z-X.width}}),h&&(X.limitX.x1=h.left,h.limitX.x2=X.left,X.prevPoint=h,h.nextPoint=X),h=X,O(X),I.get(n).push(X),d.value.add(X)})),a+=w}))}function W(){var t;if(!(null==(t=null==T?void 0:T.vertical)?void 0:t.length))return;const i="vertical";I.set(i,[]);const{vertical:o}=T;o.forEach(((t,o)=>{const{textStyle:n={},data:r,time:a}=t,l=x(a);if(!B(l))return;let s=E+w/2;r.forEach(((t,r)=>{const a=e(String(t),{...n,lockMovementY:!0,left:l,originX:"left",top:s,origin:{type:"other",key:i,dataIndex:o,index:r,data:{value:t}}});s+=w,O(a),I.get(i).push(a),d.value.add(a)}));const c=I.get(i).filter((t=>t.origin.dataIndex===o)),u=Math.max(...c.map((t=>t.width))),f=l>z-u;c.forEach(((t,e,i)=>{t.siblingPoints=i.filter((e=>e.origin.index!==t.origin.index)),t.maxTextWidth=u,f&&t.setCoords().set("originX","right")}))}))}function Y(t,e="add"){const{dataIndex:i,data:o,index:n,key:r}=t,l=T[r],s=["mark"].includes(r)?l.dataList[i]:l[i];switch(e){case"remove":s.data.splice(n,1);break;case"change":s.data[n]=o;break;default:{const t=Array.isArray(o)?o[0].time:o.time,e=a(t,s.data),i=Array.isArray(o)?o:[o];s.data.splice(e,0,...i);break}}V(t)}function V(t){var e;const{key:i}=t;switch(null==(e=d.value)||e.remove(...I.get(i)),I.delete(i),i){case"horizontal":H();break;case"vertical":W();break;case"mark":G()}}function G(){if(!(null==P?void 0:P.mark)||!L)return;const{title:t,titleStyle:o,pointAttr:n,dataList:r}=P.mark,a=i([C-5,A+L/2],{value:t,...o,originX:"right"});d.value.add(a);const l=A+L,s=[];r.forEach((t=>{const{time:i,list:o=[]}=t,r=x(i);if(!B(r))return;let a=A;o.forEach((t=>{let i=!1;const o=e("circleAndText",{...n,text:t.text,left:r,top:a,origin:{data:t,key:"mark",type:"other"}}),c=o.height;a+c<=l&&a>=A?(o.set("top",a+c/2),a+=c):(i||(a=A,i=!0),o.set("top",a-c/2),a-=c),s.push(o),O(o),d.value.add(o)}))})),function(t){const e=t=>{var e,i;return null==(i=null==(e=t.origin)?void 0:e.data)?void 0:i.isStart},i=t.find((t=>e(t))),o=t.find((t=>!e(t)&&t.left>i.left)),n=t.filter((t=>!e(t)));t.forEach((t=>{const r={x1:C,x2:z};e(t)?(r.x2=o.left,t.otherPoints=n):(r.x1=i.left,t.startPoint=i),t.limitX=r}))}(s)}function O(t){if(M.hovered&&(t.on("mouseover",(()=>{q(t)})),t.on("mouseout",(()=>{f.show=!1}))),!M.evented)return;const{key:e}=t.origin,i=["mark","horizontal"].includes(e),o=["mark","vertical"].includes(e);t.on("moving",(()=>{i?function(t){const e=t.origin.key,i="horizontal"===e;t.setCoords(),t.left<t.limitX.x1&&t.set("left",t.limitX.x1+(i?1:0));t.left>t.limitX.x2&&t.set("left",t.limitX.x2+(i?-1:0));if("mark"===e){t.top<E&&t.set("top",E);const e=A+L-t.height/2;t.top>e&&t.set("top",e)}i&&(t.originLeft=t.left+t.iconHalfWidth)}(t):(m(t),function(t){const e=t.left+t.maxTextWidth>z?"right":"left";t.setCoords().set({originX:e}),t.siblingPoints.forEach((i=>i.setCoords().set({originX:e,left:t.left})))}(t)),M.hovered&&q(t)})),t.on("mouseup",(n=>{var r;if(f.show=!1,1===n.button){i&&function(t){var e,i;if("mark"===t.origin.key){if((null==(i=null==(e=t.origin)?void 0:e.data)?void 0:i.isStart)&&t.otherPoints)t.otherPoints.forEach((e=>{e.limitX.x1=t.left}));else{const e=t.startPoint.otherPoints.map((t=>t.left)),i=Math.min(...e);t.startPoint.limitX.x2=i}return}t.prevPoint&&(t.prevPoint.limitX.x2=t.left);t.nextPoint&&(t.nextPoint.limitX.x1=t.left)}(t);const e=k(null!=(r=t.originLeft)?r:t.left),n={...t.origin,...o?{time:e}:{data:{...t.origin.data,time:e}}};d.value.discardActiveObject(),u("change",n)}3===n.button&&["horizontal","vertical"].includes(e)&&(h.point={x:t.left,y:t.top},h.show=!0,h.target=t,h.list=s.map((t=>({...t,renderItem:()=>t.label}))))}))}function q(t){f.point={x:t.left,y:"mark"===t.origin.key?t.top:t.top+S/2};const e=!t.origin.isMenu&&t.originLeft?t.originLeft:t.left;f.list=[`时间 ${k(e).slice(-5)}`],"mark"===t.origin.key&&f.list.unshift(t.origin.data.name+" "),f.show=!0}function B(t){return t>=C&&t<=z}return function(){var t;if(!(null==(t=null==T?void 0:T.horizontal)?void 0:t.length))return;const{horizontal:i}=T,o=C-5;let n=E+w/2;i.forEach(((t,i)=>{const{title:r,titleStyle:a={},defaultAddValue:l}=t,s=r&&e(r,{...a,originX:"right",left:o,top:n,origin:{defaultAddValue:l,dataIndex:i,type:"other",key:"horizontal",title:r,isMenu:!0},originLeft:o,originTop:n});var c;(c=s).on("moving",(()=>{c.set("originX","center"),b(c)?q(c):f.show=!1})),c.on("mouseup:before",(t=>{if(f.show=!1,0===t.e.button&&b(c))if(y(I.get("horizontal"),c.left,"key",j).includes(c.origin.key))X("repeat"),console.log("重复节点");else{const t={data:{time:k(c.left),value:c.origin.defaultAddValue},...c.origin};u("add",t),Y(t)}!function(t){t.setCoords().set({originX:"right",left:t.originLeft,top:t.originTop})}(c)})),d.value.add(s),n+=w}))}(),H(),W(),G(),n.on((()=>{const t="horizontal",e=g(I.get(t));e.length>0?p((()=>{const i=function(t){const e=t.reduce(((t,e)=>{const{dataIndex:i}=e.origin;return t[i]=t[i]?t[i].concat(e.origin):[e.origin],t}),{});return Object.keys(e).map((t=>{const i=e[t];return T.horizontal[t].data.splice(i[0].index,i.length),i})).flat()}(e);V({key:t}),u("remove",i)})):v()})),{clickMenu:function({item:t,target:e}){if(!e)return;const{type:i}=t,o={...e.origin,type:"other"};u(i,o),"remove"===i&&Y(o,i)}}}export{d as useOther};
@@ -7839,7 +7839,9 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
7839
7839
  onKeydown: (event: KeyboardEvent) => Promise<void>;
7840
7840
  clearSpan: (uuid: string) => void;
7841
7841
  exposeEvent: {
7842
- validate(path?: string): Promise<void>;
7842
+ validate(path?: string, { force }?: {
7843
+ force?: boolean | undefined;
7844
+ }): Promise<void>;
7843
7845
  getFormValues(needCombineExtendKey?: boolean): any;
7844
7846
  setFormValues(values: import("../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
7845
7847
  setFieldState(path: string, setter: (field: Partial<Pick<import("@formily/core").Field<any, any, any, any>, import("@formily/core").NonFunctionPropertyNames<{
@@ -14221,7 +14223,9 @@ declare const FormConfig: SFCWithInstall<import("vue").DefineComponent<{
14221
14223
  onKeydown: (event: KeyboardEvent) => Promise<void>;
14222
14224
  clearSpan: (uuid: string) => void;
14223
14225
  exposeEvent: {
14224
- validate(path?: string): Promise<void>;
14226
+ validate(path?: string, { force }?: {
14227
+ force?: boolean | undefined;
14228
+ }): Promise<void>;
14225
14229
  getFormValues(needCombineExtendKey?: boolean): any;
14226
14230
  setFormValues(values: import("../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
14227
14231
  setFieldState(path: string, setter: (field: Partial<Pick<import("@formily/core").Field<any, any, any, any>, import("@formily/core").NonFunctionPropertyNames<{
@@ -7841,7 +7841,9 @@ declare const _default: import("vue").DefineComponent<{
7841
7841
  onKeydown: (event: KeyboardEvent) => Promise<void>;
7842
7842
  clearSpan: (uuid: string) => void;
7843
7843
  exposeEvent: {
7844
- validate(path?: string): Promise<void>;
7844
+ validate(path?: string, { force }?: {
7845
+ force?: boolean | undefined;
7846
+ }): Promise<void>;
7845
7847
  getFormValues(needCombineExtendKey?: boolean): any;
7846
7848
  setFormValues(values: import("../../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
7847
7849
  setFieldState(path: string, setter: (field: Partial<Pick<import("../../../../es/components/form-render").Field<any, any, any, any>, import("../../../../es/components/form-render").NonFunctionPropertyNames<{
@@ -14223,7 +14225,9 @@ declare const _default: import("vue").DefineComponent<{
14223
14225
  onKeydown: (event: KeyboardEvent) => Promise<void>;
14224
14226
  clearSpan: (uuid: string) => void;
14225
14227
  exposeEvent: {
14226
- validate(path?: string): Promise<void>;
14228
+ validate(path?: string, { force }?: {
14229
+ force?: boolean | undefined;
14230
+ }): Promise<void>;
14227
14231
  getFormValues(needCombineExtendKey?: boolean): any;
14228
14232
  setFormValues(values: import("../../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
14229
14233
  setFieldState(path: string, setter: (field: Partial<Pick<import("../../../../es/components/form-render").Field<any, any, any, any>, import("../../../../es/components/form-render").NonFunctionPropertyNames<{
@@ -573,7 +573,9 @@ declare const _default: import("vue").DefineComponent<{}, {
573
573
  onKeydown: (event: KeyboardEvent) => Promise<void>;
574
574
  clearSpan: (uuid: string) => void;
575
575
  exposeEvent: {
576
- validate(path?: string): Promise<void>;
576
+ validate(path?: string, { force }?: {
577
+ force?: boolean | undefined;
578
+ }): Promise<void>;
577
579
  getFormValues(needCombineExtendKey?: boolean): any;
578
580
  setFormValues(values: AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
579
581
  setFieldState(path: string, setter: (field: Partial<Pick<import("../../../../../es/components/form-render").Field<any, any, any, any>, import("../../../../../es/components/form-render").NonFunctionPropertyNames<{
@@ -5945,7 +5945,9 @@ declare const _default: import("vue").DefineComponent<{
5945
5945
  onKeydown: (event: KeyboardEvent) => Promise<void>;
5946
5946
  clearSpan: (uuid: string) => void;
5947
5947
  exposeEvent: {
5948
- validate(path?: string): Promise<void>;
5948
+ validate(path?: string, { force }?: {
5949
+ force?: boolean | undefined;
5950
+ }): Promise<void>;
5949
5951
  getFormValues(needCombineExtendKey?: boolean): any;
5950
5952
  setFormValues(values: import("../../../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
5951
5953
  setFieldState(path: string, setter: (field: Partial<Pick<import("../../../../../es/components/form-render").Field<any, any, any, any>, import("../../../../../es/components/form-render").NonFunctionPropertyNames<{
@@ -560,7 +560,9 @@ declare const FormRender: SFCWithInstall<import("vue").DefineComponent<{}, {
560
560
  onKeydown: (event: KeyboardEvent) => Promise<void>;
561
561
  clearSpan: (uuid: string) => void;
562
562
  exposeEvent: {
563
- validate(path?: string): Promise<void>;
563
+ validate(path?: string, { force }?: {
564
+ force?: boolean | undefined;
565
+ }): Promise<void>;
564
566
  getFormValues(needCombineExtendKey?: boolean): any;
565
567
  setFormValues(values: import("../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
566
568
  setFieldState(path: string, setter: (field: Partial<Pick<import("@formily/core/esm/models/Field").Field<any, any, any, any>, import("@formily/core/esm/types").NonFunctionPropertyNames<{
@@ -555,7 +555,9 @@ declare const _default: import("vue").DefineComponent<{
555
555
  onKeydown: (event: KeyboardEvent) => Promise<void>;
556
556
  clearSpan: (uuid: string) => void;
557
557
  exposeEvent: {
558
- validate(path?: string): Promise<void>;
558
+ validate(path?: string, { force }?: {
559
+ force?: boolean | undefined;
560
+ }): Promise<void>;
559
561
  getFormValues(needCombineExtendKey?: boolean): any;
560
562
  setFormValues(values: AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
561
563
  setFieldState(path: string, setter: (field: Partial<Pick<Field<any, any, any, any>, import("@formily/core").NonFunctionPropertyNames<{
@@ -1 +1 @@
1
- import{defineComponent as e,ref as o,computed as t,provide as r,onMounted as s,onUnmounted as a,nextTick as i,openBlock as l,createBlock as n,unref as m,normalizeClass as d,normalizeStyle as p,withCtx as u,createElementBlock as c,createVNode as f,isRef as h,Fragment as y,renderList as g,createCommentVNode as j,createElementVNode as b,withKeys as k,toDisplayString as v,renderSlot as F}from"vue";import{useTheme as C}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isNumber as S,cloneDeep as H,isObject as x,isBoolean as A}from"lodash-es";import{createForm as L,onFieldValueChange as B,onFieldMount as O,onFieldUnmount as R,onFieldReact as w,onFormMount as _}from"@formily/core";import{FormProvider as D,FormConsumer as V}from"@formily/vue";import{NForm as I,NTabs as N,NTabPane as q,NConfigProvider as W}from"naive-ui";import{InjectionFormLifeCycleCaller as E,InjectionFormGraph as K}from"./constants/index.js";import{useAutoHidden as T}from"./hooks/useAutoHidden.js";import{useComplexOptionsSpan as U}from"./hooks/useComplexOptions.js";import{useFormDomEvent as G,useFormExposeEvent as M}from"./hooks/useFormEvent.js";import{useFormGraph as P}from"./hooks/useFormGraph.js";import{useFormRenderLifeCycle as J}from"./hooks/useFormRenderLifeCycle.js";import{useLowCodeEvent as $}from"./hooks/useLowCodeEvent.js";import{useLowCodeReactions as z}from"./hooks/useLowCodeReactions.js";import{useNuiThemeOverrides as Q}from"./hooks/useNuiThemeOverrides.js";import{useOperationalForm as X}from"./hooks/useOperationalForm.js";import{useWordbookSetting as Y}from"./hooks/useWordbookSetting.js";import"../../../shared/utils/index.js";import"@formily/path";import"@vicons/ionicons5";import"@vue/shared";import"../index.js";import{createObjSchema as Z}from"./utils/schema.js";import{useFieldListAdaptor as ee}from"./hooks/useFieldListAdaptor.js";import{useFieldVisitor as oe}from"./hooks/useFieldVisitor.js";import"../../../shared/utils/tapable/SyncHook.js";import"../../../shared/utils/tapable/SyncBailHook.js";import"../../../shared/utils/tapable/SyncWaterfallHook.js";import"../../../shared/utils/tapable/SyncLoopHook.js";import"../../../shared/utils/tapable/AsyncParallelHook.js";import"../../../shared/utils/tapable/AsyncParallelBailHook.js";import"../../../shared/utils/tapable/AsyncSeriesHook.js";import"../../../shared/utils/tapable/AsyncSeriesBailHook.js";import"../../../shared/utils/tapable/AsyncSeriesLoopHook.js";import"../../../shared/utils/tapable/AsyncSeriesWaterfallHook.js";import{validateMessageLocale as te}from"./hooks/useFormValidator.js";import{useAnchor as re}from"./hooks/useAnchor.js";import{useFormContext as se}from"./hooks/useFormContext.js";import"./hooks/useFormRenderOptions.js";const ae={key:0,style:{height:"54px"}},ie={style:{"white-space":"pre"}};var le=e({__name:"FormRender",props:{fieldList:{type:Array},initialData:{type:Object,default:()=>({})},fieldVisitor:{type:Object},column:{type:Number,default:24},maxHeight:{type:[Number,String],default:""},anchor:{type:Boolean,default:!1},parallelism:{type:Number,default:3},businessFormatter:{type:Function},schema:{type:Object},components:{type:Object,default:()=>({})},scope:{type:Object,default:()=>({})},annotation:{type:Object},consumer:{type:Boolean,default:!1},uuid:{type:String},lifeCycle:{type:Object},requestInstance:{type:Object},enterToNextWidget:{type:[Boolean,Function],default:!0},lowCodeReactions:{type:Array},operationalForm:{type:Object},linebarAutoHidden:{type:Boolean},bordered:{type:[Boolean,String],default:!0},outBordered:{type:Boolean,default:!1},uniqueCacheData:{type:Boolean,default:!1},forceClearable:Boolean},emits:["formChange","annotationChange","scroll"],setup(e,{expose:le,emit:ne}){const me=e,de=C(),{nuiThemeOverrides:pe}=Q();te();const ue=o(),ce=t((()=>S(me.maxHeight)?me.maxHeight+"px":me.maxHeight)),{SchemaField:fe,businessCollector:he,formItemDepsCollector:ye,changeContextCollector:ge,formUUID:je}=se(me,ne),{anchorBarRef:be,currentAnchor:ke,updateAnchorList:ve,anchorIdList:Fe,onScroll:Ce}=re(me,ne,ue,ye),{callLifeCycle:Se}=J(me);r(E,Se),Se("onSetup");const{trigger:He}=T(),{observeFormGraph:xe,setGraph:Ae,removeGraph:Le}=P();r(K,xe);const{lowCodeEventTrigger:Be}=$(),Oe=L({initialValues:me.initialData,effects(e){B("*",(o=>{const t=o.props.name.toString();he.trigger(e,t),ye.trigger(t),ne("formChange",{fieldInstance:o,fieldKey:t,fieldName:o.title,value:o.value,context:ge.getContext(t,o.value)}),Be(o),Re(t),_e(t),Ve(t,o.value)})),O("*",Ae),R("*",Le),me.linebarAutoHidden&&(w("*",He),_((e=>e.query("*").forEach(He)))),me.anchor&&w("*",ve)}}),{lowCodeReactionsHandler:Re,triggerAllReactionsHandler:we}=z(t((()=>me.lowCodeReactions)),Oe),{operationalFormHandler:_e,triggerAllOperationalFormHandler:De}=X(t((()=>me.operationalForm)),Oe),{wordbookSettingHandler:Ve}=Y(Oe,ge);s(we),s(De);const{schemaAdaptor:Ie}=ee(he);let Ne=me.fieldList||[];const qe=t((()=>me.schema?me.schema:me.fieldList?(Ne=oe().traverse(H(me.fieldList),me.fieldVisitor),Z(Ie(Ne,me))):Z({}))),{onKeydown:We}=G({formModel:Oe,formRenderRef:ue,props:me}),{clearSpan:Ee}=U();a((()=>Ee(je)));const Ke=M({formModel:Oe,formRenderRef:ue,formItemDepsCollector:ye,getFieldList:()=>Ne,formUUID:je});return le({formModel:Oe,validate:(e="*")=>Ke.validate(e),getFormValues:(e=!0)=>Ke.getFormValues(e),async setFormValues(e,o={},t=!1,r=!0){var s,a,l,n;let m=!0,d=!0;x(o)?(d=null==(s=o.needSplitExtendKey)||s,m=null==(a=o.avoidDependKeyConnection)||a,t=null!=(l=o.avoidBusinessConnection)&&l,r=null==(n=o.overwrite)||n):A(o)&&(d=o),t&&(he.triggerLock=!0),m&&(ye.triggerDisabled=!0),Ke.setFormValues(e,d,r),await i(),he.triggerLock=!1,ye.triggerDisabled=!1},setFieldState(e,o){Ke.setFieldState(e,o)},resetFields(e="*"){Ke.resetFields(e)},queryWidget:async e=>Ke.queryWidget(e),getFieldList:()=>Ne,async reload(){console.error("reload function is abstract,it should be overwrite!")}}),(o,t)=>(l(),n(m(I),{class:d(["form-render",{"form-render--out-border":e.outBordered}]),"require-mark-placement":"left",style:p(m(de))},{default:u((()=>[e.anchor?(l(),c("section",ae,[f(m(N),{value:m(ke),"onUpdate:value":t[0]||(t[0]=e=>h(ke)?ke.value=e:null),type:"line",ref_key:"anchorBarRef",ref:be},{default:u((()=>[(l(!0),c(y,null,g(m(Fe),(e=>(l(),n(m(q),{name:e.name,tab:e.title,key:e.name},null,8,["name","tab"])))),128))])),_:1},8,["value"])])):j("v-if",!0),f(m(W),{"theme-overrides":m(pe)},{default:u((()=>[b("section",{class:"form-render__wrapper",style:p({"--column":e.column,"--form-height":m(ce)}),ref_key:"formRenderRef",ref:ue,onScroll:t[1]||(t[1]=(...e)=>m(Ce)&&m(Ce)(...e)),onKeydownCapture:t[2]||(t[2]=k(((...e)=>m(We)&&m(We)(...e)),["enter"]))},[f(m(D),{form:m(Oe)},{default:u((()=>[f(m(fe),{schema:m(qe)},null,8,["schema"]),e.consumer?(l(),n(m(V),{key:0},{default:u((({form:e})=>[b("div",ie,v(JSON.stringify(e.values,null,2)),1)])),_:1})):j("v-if",!0),F(o.$slots,"default")])),_:3},8,["form"])],36)])),_:3},8,["theme-overrides"])])),_:3},8,["class","style"]))}});export{le as default};
1
+ import{defineComponent as e,ref as o,computed as t,provide as r,onMounted as s,onUnmounted as a,nextTick as i,openBlock as l,createBlock as n,unref as m,normalizeClass as d,normalizeStyle as p,withCtx as u,createElementBlock as c,createVNode as f,isRef as h,Fragment as y,renderList as g,createCommentVNode as j,createElementVNode as b,withKeys as k,toDisplayString as v,renderSlot as F}from"vue";import{useTheme as C}from"../../../shared/hooks/useTheme.js";import"@vueuse/core";import"date-fns";import{isNumber as S,cloneDeep as H,isObject as x,isBoolean as A}from"lodash-es";import{createForm as L,onFieldValueChange as B,onFieldMount as O,onFieldUnmount as R,onFieldReact as w,onFormMount as _}from"@formily/core";import{FormProvider as D,FormConsumer as V}from"@formily/vue";import{NForm as I,NTabs as N,NTabPane as q,NConfigProvider as W}from"naive-ui";import{InjectionFormLifeCycleCaller as E,InjectionFormGraph as K}from"./constants/index.js";import{useAutoHidden as T}from"./hooks/useAutoHidden.js";import{useComplexOptionsSpan as U}from"./hooks/useComplexOptions.js";import{useFormDomEvent as G,useFormExposeEvent as M}from"./hooks/useFormEvent.js";import{useFormGraph as P}from"./hooks/useFormGraph.js";import{useFormRenderLifeCycle as J}from"./hooks/useFormRenderLifeCycle.js";import{useLowCodeEvent as $}from"./hooks/useLowCodeEvent.js";import{useLowCodeReactions as z}from"./hooks/useLowCodeReactions.js";import{useNuiThemeOverrides as Q}from"./hooks/useNuiThemeOverrides.js";import{useOperationalForm as X}from"./hooks/useOperationalForm.js";import{useWordbookSetting as Y}from"./hooks/useWordbookSetting.js";import"../../../shared/utils/index.js";import"@formily/path";import"@vicons/ionicons5";import"@vue/shared";import"../index.js";import{createObjSchema as Z}from"./utils/schema.js";import{useFieldListAdaptor as ee}from"./hooks/useFieldListAdaptor.js";import{useFieldVisitor as oe}from"./hooks/useFieldVisitor.js";import"../../../shared/utils/tapable/SyncHook.js";import"../../../shared/utils/tapable/SyncBailHook.js";import"../../../shared/utils/tapable/SyncWaterfallHook.js";import"../../../shared/utils/tapable/SyncLoopHook.js";import"../../../shared/utils/tapable/AsyncParallelHook.js";import"../../../shared/utils/tapable/AsyncParallelBailHook.js";import"../../../shared/utils/tapable/AsyncSeriesHook.js";import"../../../shared/utils/tapable/AsyncSeriesBailHook.js";import"../../../shared/utils/tapable/AsyncSeriesLoopHook.js";import"../../../shared/utils/tapable/AsyncSeriesWaterfallHook.js";import{validateMessageLocale as te}from"./hooks/useFormValidator.js";import{useAnchor as re}from"./hooks/useAnchor.js";import{useFormContext as se}from"./hooks/useFormContext.js";import"./hooks/useFormRenderOptions.js";const ae={key:0,style:{height:"54px"}},ie={style:{"white-space":"pre"}};var le=e({__name:"FormRender",props:{fieldList:{type:Array},initialData:{type:Object,default:()=>({})},fieldVisitor:{type:Object},column:{type:Number,default:24},maxHeight:{type:[Number,String],default:""},anchor:{type:Boolean,default:!1},parallelism:{type:Number,default:3},businessFormatter:{type:Function},schema:{type:Object},components:{type:Object,default:()=>({})},scope:{type:Object,default:()=>({})},annotation:{type:Object},consumer:{type:Boolean,default:!1},uuid:{type:String},lifeCycle:{type:Object},requestInstance:{type:Object},enterToNextWidget:{type:[Boolean,Function],default:!0},lowCodeReactions:{type:Array},operationalForm:{type:Object},linebarAutoHidden:{type:Boolean},bordered:{type:[Boolean,String],default:!0},outBordered:{type:Boolean,default:!1},uniqueCacheData:{type:Boolean,default:!1},forceClearable:Boolean},emits:["formChange","annotationChange","scroll"],setup(e,{expose:le,emit:ne}){const me=e,de=C(),{nuiThemeOverrides:pe}=Q();te();const ue=o(),ce=t((()=>S(me.maxHeight)?me.maxHeight+"px":me.maxHeight)),{SchemaField:fe,businessCollector:he,formItemDepsCollector:ye,changeContextCollector:ge,formUUID:je}=se(me,ne),{anchorBarRef:be,currentAnchor:ke,updateAnchorList:ve,anchorIdList:Fe,onScroll:Ce}=re(me,ne,ue,ye),{callLifeCycle:Se}=J(me);r(E,Se),Se("onSetup");const{trigger:He}=T(),{observeFormGraph:xe,setGraph:Ae,removeGraph:Le}=P();r(K,xe);const{lowCodeEventTrigger:Be}=$(),Oe=L({initialValues:me.initialData,effects(e){B("*",(o=>{const t=o.props.name.toString();he.trigger(e,t),ye.trigger(t),ne("formChange",{fieldInstance:o,fieldKey:t,fieldName:o.title,value:o.value,context:ge.getContext(t,o.value)}),Be(o),Re(t),_e(t),Ve(t,o.value)})),O("*",Ae),R("*",Le),me.linebarAutoHidden&&(w("*",He),_((e=>e.query("*").forEach(He)))),me.anchor&&w("*",ve)}}),{lowCodeReactionsHandler:Re,triggerAllReactionsHandler:we}=z(t((()=>me.lowCodeReactions)),Oe),{operationalFormHandler:_e,triggerAllOperationalFormHandler:De}=X(t((()=>me.operationalForm)),Oe),{wordbookSettingHandler:Ve}=Y(Oe,ge);s(we),s(De);const{schemaAdaptor:Ie}=ee(he);let Ne=me.fieldList||[];const qe=t((()=>me.schema?me.schema:me.fieldList?(Ne=oe().traverse(H(me.fieldList),me.fieldVisitor),Z(Ie(Ne,me))):Z({}))),{onKeydown:We}=G({formModel:Oe,formRenderRef:ue,props:me}),{clearSpan:Ee}=U();a((()=>Ee(je)));const Ke=M({formModel:Oe,formRenderRef:ue,formItemDepsCollector:ye,getFieldList:()=>Ne,formUUID:je});return le({formModel:Oe,validate:(e="*",o={})=>Ke.validate(e,o),getFormValues:(e=!0)=>Ke.getFormValues(e),async setFormValues(e,o={},t=!1,r=!0){var s,a,l,n;let m=!0,d=!0;x(o)?(d=null==(s=o.needSplitExtendKey)||s,m=null==(a=o.avoidDependKeyConnection)||a,t=null!=(l=o.avoidBusinessConnection)&&l,r=null==(n=o.overwrite)||n):A(o)&&(d=o),t&&(he.triggerLock=!0),m&&(ye.triggerDisabled=!0),Ke.setFormValues(e,d,r),await i(),he.triggerLock=!1,ye.triggerDisabled=!1},setFieldState(e,o){Ke.setFieldState(e,o)},resetFields(e="*"){Ke.resetFields(e)},queryWidget:async e=>Ke.queryWidget(e),getFieldList:()=>Ne,async reload(){console.error("reload function is abstract,it should be overwrite!")}}),(o,t)=>(l(),n(m(I),{class:d(["form-render",{"form-render--out-border":e.outBordered}]),"require-mark-placement":"left",style:p(m(de))},{default:u((()=>[e.anchor?(l(),c("section",ae,[f(m(N),{value:m(ke),"onUpdate:value":t[0]||(t[0]=e=>h(ke)?ke.value=e:null),type:"line",ref_key:"anchorBarRef",ref:be},{default:u((()=>[(l(!0),c(y,null,g(m(Fe),(e=>(l(),n(m(q),{name:e.name,tab:e.title,key:e.name},null,8,["name","tab"])))),128))])),_:1},8,["value"])])):j("v-if",!0),f(m(W),{"theme-overrides":m(pe)},{default:u((()=>[b("section",{class:"form-render__wrapper",style:p({"--column":e.column,"--form-height":m(ce)}),ref_key:"formRenderRef",ref:ue,onScroll:t[1]||(t[1]=(...e)=>m(Ce)&&m(Ce)(...e)),onKeydownCapture:t[2]||(t[2]=k(((...e)=>m(We)&&m(We)(...e)),["enter"]))},[f(m(D),{form:m(Oe)},{default:u((()=>[f(m(fe),{schema:m(qe)},null,8,["schema"]),e.consumer?(l(),n(m(V),{key:0},{default:u((({form:e})=>[b("div",ie,v(JSON.stringify(e.values,null,2)),1)])),_:1})):j("v-if",!0),F(o.$slots,"default")])),_:3},8,["form"])],36)])),_:3},8,["theme-overrides"])])),_:3},8,["class","style"]))}});export{le as default};
@@ -558,7 +558,9 @@ declare const _default: import("vue").DefineComponent<{}, {
558
558
  onKeydown: (event: KeyboardEvent) => Promise<void>;
559
559
  clearSpan: (uuid: string) => void;
560
560
  exposeEvent: {
561
- validate(path?: string): Promise<void>;
561
+ validate(path?: string, { force }?: {
562
+ force?: boolean | undefined;
563
+ }): Promise<void>;
562
564
  getFormValues(needCombineExtendKey?: boolean): any;
563
565
  setFormValues(values: import("../../../../es/shared/types").AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
564
566
  setFieldState(path: string, setter: (field: Partial<Pick<import("../../../../es/components/form-render").Field<any, any, any, any>, import("../../../../es/components/form-render").NonFunctionPropertyNames<{
@@ -3,7 +3,7 @@ import { PropType } from 'vue';
3
3
  import { UrlConfig } from '../../../../../../es/components/form-render';
4
4
  export declare const REMOTE_SEARCH: import("vue").DefineComponent<{
5
5
  value: {
6
- type: PropType<String | null>;
6
+ type: PropType<string | null>;
7
7
  };
8
8
  requestCache: {
9
9
  type: BooleanConstructor;
@@ -22,17 +22,54 @@ export declare const REMOTE_SEARCH: import("vue").DefineComponent<{
22
22
  type: StringConstructor;
23
23
  default: string;
24
24
  };
25
+ showField: {
26
+ type: StringConstructor;
27
+ };
25
28
  urlConfig: {
26
29
  type: PropType<UrlConfig>;
27
30
  };
31
+ autograph: {
32
+ type: StringConstructor;
33
+ };
34
+ wordbook: {
35
+ type: PropType<Partial<{
36
+ level_num: number;
37
+ id: string;
38
+ name: string;
39
+ render_key: string[];
40
+ search_key: string[];
41
+ value_key: string;
42
+ queryParams: string[];
43
+ primary_key: string;
44
+ type: string;
45
+ level_key: string;
46
+ link_key: string;
47
+ link_key_split: string;
48
+ show_key: string | string[];
49
+ conObj: AnyObject[];
50
+ conObjFirstLevel: AnyObject[];
51
+ setting: Partial<{
52
+ cascading: {
53
+ 'form.name': string;
54
+ value: string;
55
+ }[];
56
+ }>;
57
+ }>>;
58
+ };
28
59
  onChange: {};
29
60
  useLoading: {
30
61
  type: BooleanConstructor;
31
62
  default: boolean;
32
63
  };
64
+ lazyRequest: {
65
+ type: BooleanConstructor;
66
+ default: boolean;
67
+ };
68
+ multiple: BooleanConstructor;
69
+ deletable: BooleanConstructor;
33
70
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:value"[], "update:value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
34
71
  value: {
35
- type: PropType<String | null>;
72
+ type: PropType<string | null>;
36
73
  };
37
74
  requestCache: {
38
75
  type: BooleanConstructor;
@@ -51,21 +88,61 @@ export declare const REMOTE_SEARCH: import("vue").DefineComponent<{
51
88
  type: StringConstructor;
52
89
  default: string;
53
90
  };
91
+ showField: {
92
+ type: StringConstructor;
93
+ };
54
94
  urlConfig: {
55
95
  type: PropType<UrlConfig>;
56
96
  };
97
+ autograph: {
98
+ type: StringConstructor;
99
+ };
100
+ wordbook: {
101
+ type: PropType<Partial<{
102
+ level_num: number;
103
+ id: string;
104
+ name: string;
105
+ render_key: string[];
106
+ search_key: string[];
107
+ value_key: string;
108
+ queryParams: string[];
109
+ primary_key: string;
110
+ type: string;
111
+ level_key: string;
112
+ link_key: string;
113
+ link_key_split: string;
114
+ show_key: string | string[];
115
+ conObj: AnyObject[];
116
+ conObjFirstLevel: AnyObject[];
117
+ setting: Partial<{
118
+ cascading: {
119
+ 'form.name': string;
120
+ value: string;
121
+ }[];
122
+ }>;
123
+ }>>;
124
+ };
57
125
  onChange: {};
58
126
  useLoading: {
59
127
  type: BooleanConstructor;
60
128
  default: boolean;
61
129
  };
130
+ lazyRequest: {
131
+ type: BooleanConstructor;
132
+ default: boolean;
133
+ };
134
+ multiple: BooleanConstructor;
135
+ deletable: BooleanConstructor;
62
136
  }>> & {
63
137
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
64
138
  }, {
65
139
  options: AnyObject[];
140
+ multiple: boolean;
66
141
  labelField: string;
67
142
  valueField: string;
143
+ lazyRequest: boolean;
68
144
  requestCache: boolean;
145
+ deletable: boolean;
69
146
  allowCreate: boolean;
70
147
  useLoading: boolean;
71
148
  }>;
@@ -1 +1 @@
1
- import{defineComponent as e,ref as l,computed as a,inject as u,watch as n,createVNode as o}from"vue";import{connect as t,mapProps as r}from"@formily/vue";import{HelpCircleSharp as i}from"@vicons/ionicons5";import{useVModel as s,useDebounceFn as v}from"@vueuse/core";import{isString as p,isArray as d,cloneDeep as m,isEqual as c}from"lodash-es";import{NSelect as f,NSpin as y,NEmpty as g,NTooltip as C,NIcon as h}from"naive-ui";import"../../../index.js";import{InjectionAsyncQueue as j,InjectionChangeContextCollector as F,InjectionFormItemDepsCollector as x}from"../../constants/index.js";import{createUrlConfigParams as b,formRenderLog as w}from"../../utils/index.js";import{useCommonInjection as K,useSelectOptionProps as S}from"../../hooks/useCommonInjection.js";import{assignUpdateValue as k,assignClearBindVisited as B,createVisitedSetter as L}from"../../utils/schema.js";import{useFormField as V}from"../../hooks/useFormField.js";const q=t(e({name:"FormRemoteSearch",props:{value:{type:String},requestCache:{type:Boolean,default:!0},options:{type:Array,default:()=>[]},allowCreate:Boolean,labelField:{type:String,default:"text"},valueField:{type:String,default:"value"},urlConfig:{type:Object},onChange:{},useLoading:{type:Boolean,default:!0}},emits:["update:value"],setup(e,{slots:t,emit:r}){const k=s(e,"value",r),{field:B,fieldKey:q}=V(),A=l(null),I=a((()=>{var l,a,u;return null!=(u=null!=(a=null==(l=e.urlConfig)?void 0:l.nameKey)?a:e.labelField)?u:"text"})),O=a((()=>{var l,a,u;return null!=(u=null!=(a=null==(l=e.urlConfig)?void 0:l.valueKey)?a:e.valueField)?u:"value"})),P=u(j),U=l(""),D=l(!1),R=v((async(l="",a="label")=>{if(U.value=l,!e.urlConfig)return A.value=null;try{D.value=!0,A.value=[],A.value=await P.addAsync(await b({config:{...e.urlConfig,params:{...e.urlConfig.params,["value"===a?O.value:"keyword"]:l}},cache:e.requestCache,field:B.value}))}catch(e){p(e)&&w(e)}finally{D.value=!1}})),z=a((()=>d(A.value)?A.value:d(e.options)?e.options:[])),{injectValueValidate:E,injectValueBindKey:G}=K();E(k);const H=G(k);n(k,(e=>{if(e&&!z.value.find((l=>l[O.value]===e)))return R(e,"value")}));u(F).setContext(q.value,(e=>{return{currentOption:m((l=e,z.value.find((e=>e[O.value]===l))))};var l}));const J=u(x);n((()=>e.urlConfig),((e,l)=>{c(e,l)||(A.value=null,e&&(J.setDeps(q.value,e.dependKey||[],(async()=>{A.value=null,k.value=null})),k.value&&R(k.value,"value")))}),{immediate:!0});const{menuProps:M,nodeProps:N}=S(),Q=a((()=>z.value.length||!e.allowCreate?z.value:U.value?[{[I.value]:U.value,[O.value]:U.value},...z.value]:z.value));async function T(e){D.value=e,e&&R()}function W(e){const l=e.alias||e[I.value];if(!l||!p(l))return"";const a=l;return e.desc?o("section",{style:{display:"flex",alignItems:"center",gap:"4px"}},[a,e.desc?o(C,null,{trigger:()=>o(h,{component:i},null),default:()=>e.desc}):null]):a}return()=>o(f,{remote:!0,filterable:!0,key:H.value,value:k.value,"onUpdate:value":e=>k.value=e,labelField:I.value,valueField:O.value,"menu-props":M,"node-props":N,onSearch:R,"onUpdate:show":T,options:Q.value,onFocus:L(B),renderLabel:W},{empty:()=>e.useLoading&&D.value?o(y,null,null):o(g,{description:"无数据"},null),...t})}}),r(k,B));export{q as REMOTE_SEARCH};
1
+ import{defineComponent as e,watch as l,inject as o,computed as a,createVNode as t}from"vue";import{connect as n,mapProps as u}from"@formily/vue";import{HelpCircleSharp as r}from"@vicons/ionicons5";import{useVModel as i,useDebounceFn as s}from"@vueuse/core";import{cloneDeep as p,isString as v}from"lodash-es";import{NSelect as d,NSpin as m,NEmpty as f,NTooltip as c,NIcon as y,NTag as g}from"naive-ui";import"../../../index.js";import{InjectionChangeContextCollector as h}from"../../constants/index.js";import{useCommonInjection as C,useSelectOptionProps as b}from"../../hooks/useCommonInjection.js";import{assignUpdateValue as j,assignClearBindVisited as F,createVisitedSetter as w}from"../../utils/schema.js";import{useFormField as x}from"../../hooks/useFormField.js";import{useUrlConfigOptions as B,useAutographOptions as K}from"../../hooks/useFormRenderOptions.js";const S=n(e({name:"FormRemoteSearch",props:{value:{type:String},requestCache:{type:Boolean,default:!0},options:{type:Array,default:()=>[]},allowCreate:Boolean,labelField:{type:String,default:"text"},valueField:{type:String,default:"value"},showField:{type:String},urlConfig:{type:Object},autograph:{type:String},wordbook:{type:Object},onChange:{},useLoading:{type:Boolean,default:!0},lazyRequest:{type:Boolean,default:!0},multiple:Boolean,deletable:Boolean},emits:["update:value"],setup(e,{slots:n,emit:u}){const j=i(e,"value",u),{field:F,fieldKey:S}=x(),{injectValueValidate:k,injectValueBindKey:O}=C();k(j);const D=O(j),R={onRequestConfigChange:({fetchData:e,valueKey:l})=>e(j.value,{[l]:j.value}),onDepsChange:({fetchData:e,valueKey:l})=>e(j.value,{[l]:j.value})},{labelKey:q,valueKey:L,showKey:P,fetchData:V,searchContent:I,fullOptions:U,loading:z}=e.urlConfig?B(e,j,R):K(e,j,R),A=s(((e="",l="label")=>V(e,{["value"===l?L.value:"keyword"]:e})),300);l(j,(e=>{if(e&&!U.value.find((l=>l[L.value]===e)))return A(e,"value")}));o(h).setContext(S.value,(e=>{return{currentOption:p((l=e,U.value.find((e=>e[L.value]===l))))};var l}));const{menuProps:T,nodeProps:$}=b(),E=a((()=>U.value.length||!e.allowCreate?U.value:I.value?[{[q.value]:I.value,[L.value]:I.value},...U.value]:U.value));async function G(e){z.value=e,e&&A()}function H(e){const l=e.alias||e[q.value];if(!l||!v(l))return"";const o=l;return e.desc?t("section",{style:{display:"flex",alignItems:"center",gap:"4px"}},[o,e.desc?t(c,null,{trigger:()=>t(y,{component:r},null),default:()=>e.desc}):null]):o}function J({option:l,handleClose:o}){var a;const n=null!=(a=P.value&&l[P.value])?a:l[q.value];if(!e.multiple)return n;return e.deletable?t(g,{closable:!0,onClose:function(e){e.stopPropagation(),o()}},{default:()=>n}):`${n};`}return()=>t(d,{remote:!0,filterable:!0,key:D.value,value:j.value,"onUpdate:value":e=>j.value=e,labelField:q.value,valueField:L.value,"menu-props":T,"node-props":$,onSearch:A,"onUpdate:show":G,options:E.value,onFocus:w(F),renderLabel:H,renderTag:J},{empty:()=>e.useLoading&&z.value?t(m,null,null):t(f,{description:"无数据"},null),...n})}}),u(j,F));export{S as REMOTE_SEARCH};
@@ -9,7 +9,9 @@ export declare function useFormExposeEvent({ formModel, formRenderRef, formUUID,
9
9
  getFieldList: () => FieldItem[];
10
10
  formItemDepsCollector: FormItemDepsCollector;
11
11
  }): {
12
- validate(path?: string): Promise<void>;
12
+ validate(path?: string, { force }?: {
13
+ force?: boolean | undefined;
14
+ }): Promise<void>;
13
15
  getFormValues(needCombineExtendKey?: boolean): any;
14
16
  setFormValues(values: AnyObject, needSplitExtendKey?: boolean, overwrite?: boolean): void;
15
17
  setFieldState(path: string, setter: (field: IFieldState) => void): void;
@@ -1 +1 @@
1
- import{arrayed as e,findAncestor as t}from"../../../../shared/utils/index.js";import{isField as r}from"@formily/core";import{Path as o}from"@formily/path";import{isObject as i}from"@vue/shared";import{promiseTimeout as n}from"@vueuse/shared";import{isArray as s,isString as a,isFunction as m}from"lodash-es";import{nextTick as f}from"vue";import"../../index.js";import{FormItemLineBarDepKeyPrepend as u,NESTED_FORM_ITEM_TYPE as l}from"../constants/index.js";import{queryDecoratorByAddress as d,queryInput as c,queryDecoratorByFieldKey as p,findNextWidget as g}from"../utils/dom.js";import{validateMessageParser as v,combineExtendKey as y,splitExtendKey as h}from"../utils/index.js";import{getParentLinebar as x}from"../utils/schema.js";function I({formModel:t,formRenderRef:n,formUUID:m,getFieldList:l,formItemDepsCollector:g}){return{validate(r="*"){return t.validate(r).catch((e=>Promise.reject(Array.isArray(e)?e.reduce(o,[]):e)));function o(t,r){if(!i(r))return t;let o=!1;return s(r.messages)&&r.messages.forEach((r=>{i(r)&&(t.push(...e(r).map(f)),o=!0)})),!o&&t.push(f(r)),t}function f(e){if(e.decoratorElement)return e;const r=t.query(e.path),o=r.get("title"),s=e.messages.map((e=>function(e,t){if(!t||!i(t.fieldItem))return e;const r=t.fieldItem.defined_error_msg;return v(r&&a(r)?r:e,t.fieldItem)}(e,r.get("decoratorProps")))),f=d(e.address,n.value,m);return{...e,messages:s,title:o,decoratorElement:f,...c(f)}}},getFormValues(e=!0){let r=t.getFormState().values;return e&&(r=y(l(),r)),r},setFormValues(e,i=!0,n=!0){i&&(e=h(l(),e)),t.setFieldState("*",(t=>{r(t)&&(n||o.existIn(e,t.path))&&(t.value=o.getIn(e,t.path))}))},setFieldState(e,r){t.setFieldState(e,r)},resetFields:(e="*")=>t.reset(e),queryWidget:async e=>n.value?await async function(e,t,r){if(!n.value)return s();const o=p(e,t,m);if(o)return s(o);const i=x(e,r);return i?(g.trigger(u+i,!0),await f(),s(p(e,t,m))):s();function s(e){return{decoratorElement:e,...c(e)}}}(e,n.value,l()):null}}function j({props:e,formRenderRef:r,formModel:o}){return{onKeydown:async function i(s){var a;if(e.enterToNextWidget&&s.target){if("TEXTAREA"===s.target.tagName&&!s.ctrlKey)return;s.preventDefault()}if(await n(0),Reflect.get(s,"stopCapture")||!e.enterToNextWidget||!r.value)return;const f=t(s.target,(e=>e.classList.contains("form-render__formItem")));if(!f)return;const u=`.form-render__formItem${l.map((e=>`:not([widget-type=${e}])`)).join("")}`,d=Array.from(r.value.querySelectorAll(u)),c=d.findIndex((e=>e.id===f.id));if(!~c)return;const{widget:p,field:v}=g(d,c,s.target);if(p)if(m(e.enterToNextWidget)){const t=v&&o.query(v).take();!t||e.enterToNextWidget(null==(a=t.decoratorProps)?void 0:a.fieldItem)?y():i({target:p})}else y();async function y(){await n(0),p.focus()}}}}export{j as useFormDomEvent,I as useFormExposeEvent};
1
+ import{arrayed as e,findAncestor as t}from"../../../../shared/utils/index.js";import{isField as r}from"@formily/core";import{Path as o}from"@formily/path";import{isObject as i}from"@vue/shared";import{promiseTimeout as n}from"@vueuse/shared";import{isArray as a,isString as s,isFunction as m}from"lodash-es";import{nextTick as f}from"vue";import"../../index.js";import{FormItemLineBarDepKeyPrepend as u,NESTED_FORM_ITEM_TYPE as l}from"../constants/index.js";import{queryDecoratorByAddress as d,queryInput as c,queryDecoratorByFieldKey as p,findNextWidget as g}from"../utils/dom.js";import{validateMessageParser as v,combineExtendKey as y,splitExtendKey as h}from"../utils/index.js";import{getParentLinebar as x}from"../utils/schema.js";function I({formModel:t,formRenderRef:n,formUUID:m,getFieldList:l,formItemDepsCollector:g}){return{validate(o="*",{force:f}={}){const u=[];f&&t.setFieldState(o,(e=>{"visible"===e.display&&"editable"!==e.pattern&&r(e)&&(u.push({pattern:e.pattern,state:e}),e.pattern="editable")}));const l=t.validate(o).catch((e=>Promise.reject(Array.isArray(e)?e.reduce(p,[]):e)));return f&&u.forEach((({pattern:e,state:t})=>t.pattern=e)),l;function p(t,r){if(!i(r))return t;let o=!1;return a(r.messages)&&r.messages.forEach((r=>{i(r)&&(t.push(...e(r).map(g)),o=!0)})),!o&&t.push(g(r)),t}function g(e){if(e.decoratorElement)return e;const r=t.query(e.path),o=r.get("title"),a=e.messages.map((e=>function(e,t){if(!t||!i(t.fieldItem))return e;const r=t.fieldItem.defined_error_msg;return v(r&&s(r)?r:e,t.fieldItem)}(e,r.get("decoratorProps")))),f=d(e.address,n.value,m);return{...e,messages:a,title:o,decoratorElement:f,...c(f)}}},getFormValues(e=!0){let r=t.getFormState().values;return e&&(r=y(l(),r)),r},setFormValues(e,i=!0,n=!0){i&&(e=h(l(),e)),t.setFieldState("*",(t=>{r(t)&&(n||o.existIn(e,t.path))&&(t.value=o.getIn(e,t.path))}))},setFieldState(e,r){t.setFieldState(e,r)},resetFields:(e="*")=>t.reset(e),queryWidget:async e=>n.value?await async function(e,t,r){if(!n.value)return a();const o=p(e,t,m);if(o)return a(o);const i=x(e,r);return i?(g.trigger(u+i,!0),await f(),a(p(e,t,m))):a();function a(e){return{decoratorElement:e,...c(e)}}}(e,n.value,l()):null}}function F({props:e,formRenderRef:r,formModel:o}){return{onKeydown:async function i(a){var s;if(e.enterToNextWidget&&a.target){if("TEXTAREA"===a.target.tagName&&!a.ctrlKey)return;a.preventDefault()}if(await n(0),Reflect.get(a,"stopCapture")||!e.enterToNextWidget||!r.value)return;const f=t(a.target,(e=>e.classList.contains("form-render__formItem")));if(!f)return;const u=`.form-render__formItem${l.map((e=>`:not([widget-type=${e}])`)).join("")}`,d=Array.from(r.value.querySelectorAll(u)),c=d.findIndex((e=>e.id===f.id));if(!~c)return;const{widget:p,field:v}=g(d,c,a.target);if(p)if(m(e.enterToNextWidget)){const t=v&&o.query(v).take();!t||e.enterToNextWidget(null==(s=t.decoratorProps)?void 0:s.fieldItem)?y():i({target:p})}else y();async function y(){await n(0),p.focus()}}}}export{F as useFormDomEvent,I as useFormExposeEvent};
@@ -2,6 +2,11 @@ import { AnyObject, Func } from '../../../../../es/shared/types';
2
2
  import { Ref } from 'vue';
3
3
  import { FormWordbook, RecommendIds, UrlConfig } from '../../../../../es/components/form-render';
4
4
  import { RecommendItem } from '../../../../../es/components/recommend-search/src/types';
5
+ declare type UseOptionHooks = Partial<Record<'onRequestConfigChange' | 'onDepsChange', (payload: {
6
+ fetchData: (content?: string | null, otherParams?: AnyObject) => any;
7
+ labelKey: string;
8
+ valueKey: string;
9
+ }) => any>>;
5
10
  export declare const searchContentMatcher: (searchContent: string, label: string) => RegExpMatchArray | null;
6
11
  export declare function useRecommendOptions(props: {
7
12
  recommend: boolean;
@@ -16,15 +21,15 @@ export declare function useRecommendOptions(props: {
16
21
  getRecommend: (content?: string) => Promise<void>;
17
22
  sortedOptions: import("vue").ComputedRef<AnyObject[]>;
18
23
  };
19
- export declare function useUrlConfigOptions(props: {
20
- labelField?: string;
21
- valueField?: string;
22
- showField?: string;
23
- urlConfig?: UrlConfig;
24
- options?: AnyObject[];
24
+ export declare function useUrlConfigOptions(props: Partial<{
25
+ labelField: string;
26
+ valueField: string;
27
+ showField: string;
28
+ urlConfig: UrlConfig;
29
+ options: AnyObject[];
25
30
  requestCache: boolean;
26
31
  lazyRequest: boolean;
27
- }, valueRef: Ref): {
32
+ }>, valueRef: Ref, hooks?: UseOptionHooks): {
28
33
  labelKey: import("vue").ComputedRef<string>;
29
34
  loading: Ref<boolean>;
30
35
  showKey: import("vue").ComputedRef<string | undefined>;
@@ -32,7 +37,7 @@ export declare function useUrlConfigOptions(props: {
32
37
  remoteOptions: Ref<AnyObject[] | null>;
33
38
  filterOptions: import("vue").ComputedRef<AnyObject[]>;
34
39
  fullOptions: import("vue").ComputedRef<AnyObject[]>;
35
- fetchData: (content?: string) => Promise<null | undefined>;
40
+ fetchData: (content?: string | null, otherParams?: AnyObject) => Promise<null | undefined>;
36
41
  searchContent: Ref<string | undefined>;
37
42
  };
38
43
  export declare function useAutographOptions(props: Partial<{
@@ -44,7 +49,7 @@ export declare function useAutographOptions(props: Partial<{
44
49
  autograph: string;
45
50
  lazyRequest: boolean;
46
51
  options: AnyObject[];
47
- }>, valueRef: Ref): {
52
+ }>, valueRef: Ref, hooks?: UseOptionHooks): {
48
53
  labelKey: import("vue").ComputedRef<string>;
49
54
  showKey: import("vue").ComputedRef<string | undefined>;
50
55
  loading: Ref<boolean>;
@@ -52,6 +57,7 @@ export declare function useAutographOptions(props: Partial<{
52
57
  valueKey: import("vue").ComputedRef<string>;
53
58
  filterOptions: import("vue").ComputedRef<AnyObject[]>;
54
59
  fullOptions: import("vue").ComputedRef<AnyObject[]>;
55
- fetchData: (content?: string) => Promise<null | undefined>;
60
+ fetchData: (content?: string | null, otherParams?: AnyObject) => Promise<null | undefined>;
56
61
  searchContent: Ref<string | undefined>;
57
62
  };
63
+ export {};
@@ -1 +1 @@
1
- import{checkInSetupEnv as e,arrayed as l,jsonParse as n,keywordMatcher as u}from"../../../../shared/utils/index.js";import{useForm as t}from"@formily/vue";import{useMemoize as a}from"@vueuse/core";import{identity as o,uniqBy as r,isEqual as i,isString as v,omit as c,isArray as s,isFunction as m}from"lodash-es";import{computed as d,inject as f,ref as y,watch as p,toRaw as h}from"vue";import"../../index.js";import{InjectionAsyncQueue as g,InjectionFormLifeCycleCaller as w,InjectionFormItemDepsCollector as K}from"../constants/index.js";import{useFormField as k}from"./useFormField.js";import{createUrlConfigParams as b,formRenderLog as C}from"../utils/index.js";import{useFormRequest as F}from"./useFormRequest.js";function R(e,l){const n=y();return d({get:()=>n.value?n.value:e[l],set(e){n.value=e}})}const O=(()=>{const e=a((e=>new RegExp(`(.*)${e.split("").map((e=>`(${function(e){return e.match(/[()\[\]{}$^\/]/)?"\\"+e:e}(e)})`)).join("(.*)")}(.*)`)),{getKey:o});return(l,n)=>n.match(e(l))})();function q(){const e=y();return{searchContent:e,optionSearchFilter:function(l,n,t){if(!e.value)return l;const a=s(t)?t.filter((e=>e&&v(e))):[];return l.filter((l=>function(l,n,t){if(!e.value)return!0;const a=l?l[n]:"";return!!v(a)&&(!!O(e.value,a)||!!u(e.value,l.keyword)||!!t.length&&t.some((n=>v(l[n])&&l[n].includes(e.value))))}(l,n,a)))}}}function j(e,l,u,t,a){const o=R(e,"commonList"),i=R(e,"recentList"),{searchContent:v,optionSearchFilter:s}=q();function y(e){return n(e.itemObj)}const p=d((()=>{var e,l;return null!=(l=null==(e=o.value)?void 0:e.map(y))?l:[]})),h=d((()=>{var e,l;return null!=(l=null==(e=i.value)?void 0:e.map(y))?l:[]})),w=d((()=>{if(!e.recommend||!p.value.length&&!h.value.length)return l.value;const n=r(p.value.concat(h.value),(e=>e[a.value])),u=l.value.filter((e=>n.every((function(l){return l[a.value]!==e[a.value]}))));return[...s(n,t.value),...u]})),{getRecommendRequestInfo:K,getHttpInstance:b}=F();function C(l){const{url:n,getRecommendIds:u}=K(),t=m(u)?u():{},a=m(e.getRecommendInfo)?e.getRecommendInfo():{};return{url:n[l],info:Object.assign({},t,a)}}const{fieldKey:O,field:j}=k(),I=f(g);return{postRecommend:async function(l){if(!e.recommend)return;const n=b();if(!n)return;const{url:t,info:o}=C("post"),r=w.value.find((e=>e[a.value]===l));r&&u("postRecommend",await n.post(t,{...o,keyword:"",itemId:a.value,itemObj:JSON.stringify(r)}))},getRecommend:async function(l){if(!e.recommend)return;if(v.value=l,o.value&&i.value&&e.recommendCache)return;const n=await I.addAsync(function(l,n){const{url:u,info:o}=C("get");return{url:u,method:"get",key:l,cache:n,params:{...o,recNum:Math.max(e.commonNum,e.recentNum),keyword:""},payload:{field:j.value,labelKey:t.value,valueKey:a.value}}}(O.value,e.recommendCache)),{commonly:u,recently:r}=n.reduce(((e,l)=>("commonly"===l.type?e.commonly.push(c(l,["type"])):"recently"===l.type&&e.recently.push(c(l,["type"])),e)),{commonly:[],recently:[]});o.value=u.slice(0,e.commonNum),i.value=r.slice(0,e.recentNum)},sortedOptions:w}}function I(l,n){e();const u=f(g),t=f(w),a=d((()=>{var e,n,u;return null!=(u=null!=(n=null==(e=l.urlConfig)?void 0:e.nameKey)?n:l.labelField)?u:"text"})),o=d((()=>{var e,n,u;return null!=(u=null!=(n=null==(e=l.urlConfig)?void 0:e.valueKey)?n:l.valueField)?u:"value"})),r=d((()=>{var e,n;return null!=(n=null==(e=l.urlConfig)?void 0:e.showKey)?n:l.showField})),{searchContent:c,optionSearchFilter:s}=q(),m=y(null),{field:F,fieldKey:R}=k(),O=y(!1),j=async function(e){if(c.value=e||"",!l.urlConfig)return m.value=null;try{O.value=!0;const e={field:F.value,labelKey:a.value,valueKey:o.value},n=await u.addAsync(await b({config:{...l.urlConfig,payload:e},cache:l.requestCache,field:F.value}));h(m.value)!==n&&(m.value=n,t("afterOptionInit",[R.value,m.value,e]))}catch(e){v(e)&&C(e)}finally{O.value=!1}},I=d((()=>m.value?s(m.value,a.value):Array.isArray(l.options)?s(l.options,a.value):[])),x=d((()=>m.value||l.options||[])),A=f(K);return p((()=>l.urlConfig),((e,u)=>{if(!i(e,u)){if(m.value=null,!e)return m.value=null;A.setDeps(R.value,e.dependKey||[],(async()=>{m.value=null,n.value=null,!l.lazyRequest&&await j()})),(n.value||!l.lazyRequest)&&j()}}),{immediate:!0}),{labelKey:a,loading:O,showKey:r,valueKey:o,remoteOptions:m,filterOptions:I,fullOptions:x,fetchData:j,searchContent:c}}function x(n,u){e();const a=f(g),o=f(w),r=t(),c=d((()=>{var e;const u=l(null==(e=n.wordbook)?void 0:e.show_key)[0];return v(u)?u:null})),s=d((()=>{var e,l,u,t;const a=null==(l=null==(e=n.wordbook)?void 0:e.render_key)?void 0:l[0];return v(a)?a:null!=(t=null!=(u=c.value)?u:n.labelField)?t:"text"})),m=d((()=>{var e,l,u;return null!=(u=null!=(l=null==(e=n.wordbook)?void 0:e.value_key)?l:n.valueField)?u:"value"})),b=d((()=>{var e;return(null==(e=n.wordbook)?void 0:e.search_key)||[]})),R=d((()=>{var e;return null!=(e=c.value)?e:n.showField})),{searchContent:O,optionSearchFilter:j}=q(),I=y(null),{fieldKey:x,field:A}=k(),{getSearchRequestInfo:S}=F(),N=y(!1),_=async function(e){if(O.value=e||"",!n.autograph||!n.wordbook)return I.value=null;try{N.value=!0;const e={field:A.value,labelKey:s.value,valueKey:m.value},l=await a.addAsync(function(e,l,u,t){var a,o,i;const v={autograph:l,wordbookId:e.id,wordbookType:e.type,fieldKeys:e.search_key,keyword:"",page:1};if(null==(a=e.queryParams)?void 0:a.length){const l=null!=(i=null==(o=r.value)?void 0:o.getFormState().values)?i:{};e.queryParams.forEach((e=>{v[e]=l[e]}))}return{...S(),params:v,key:u,cache:n.requestCache,payload:t}}(n.wordbook,n.autograph,x.value,e));h(I.value)!==l&&(I.value=l,o("afterOptionInit",[x.value,I.value,e]))}catch(e){v(e)&&C(e)}finally{N.value=!1}},D=d((()=>I.value?j(I.value,s.value,b.value):Array.isArray(n.options)?j(n.options,s.value):[])),z=d((()=>I.value||n.options||[])),P=f(K);return p((()=>n.wordbook),((e,l)=>{if(!i(e,l)){if(I.value=null,!e)return I.value=null;P.setDeps(x.value,e.queryParams||[],(async()=>{I.value=null,_()})),(u.value||!n.lazyRequest)&&_()}}),{immediate:!0}),{labelKey:s,showKey:R,loading:N,remoteOptions:I,valueKey:m,filterOptions:D,fullOptions:z,fetchData:_,searchContent:O}}export{O as searchContentMatcher,x as useAutographOptions,j as useRecommendOptions,I as useUrlConfigOptions};
1
+ import{checkInSetupEnv as e,arrayed as l,jsonParse as n,keywordMatcher as u}from"../../../../shared/utils/index.js";import{useForm as t}from"@formily/vue";import{useMemoize as a}from"@vueuse/core";import{identity as o,uniqBy as r,isEqual as i,isString as v,omit as s,isArray as c,isFunction as m}from"lodash-es";import{computed as f,inject as d,ref as y,watch as p,toRaw as h}from"vue";import"../../index.js";import{InjectionAsyncQueue as g,InjectionFormLifeCycleCaller as w,InjectionFormItemDepsCollector as K}from"../constants/index.js";import{createUrlConfigParams as C,formRenderLog as b}from"../utils/index.js";import{useFormField as k}from"./useFormField.js";import{useFormRequest as R}from"./useFormRequest.js";function F(e,l){const n=y();return f({get:()=>n.value?n.value:e[l],set(e){n.value=e}})}const q=(()=>{const e=a((e=>new RegExp(`(.*)${e.split("").map((e=>`(${function(e){return e.match(/[()\[\]{}$^\/]/)?"\\"+e:e}(e)})`)).join("(.*)")}(.*)`)),{getKey:o});return(l,n)=>n.match(e(l))})();function O(){const e=y();return{searchContent:e,optionSearchFilter:function(l,n,t){if(!e.value)return l;const a=c(t)?t.filter((e=>e&&v(e))):[];return l.filter((l=>function(l,n,t){if(!e.value)return!0;const a=l?l[n]:"";return!!v(a)&&(!!q(e.value,a)||!!u(e.value,l.keyword)||!!t.length&&t.some((n=>v(l[n])&&l[n].includes(e.value))))}(l,n,a)))}}}function j(e,l,u,t,a){const o=F(e,"commonList"),i=F(e,"recentList"),{searchContent:v,optionSearchFilter:c}=O();function y(e){return n(e.itemObj)}const p=f((()=>{var e,l;return null!=(l=null==(e=o.value)?void 0:e.map(y))?l:[]})),h=f((()=>{var e,l;return null!=(l=null==(e=i.value)?void 0:e.map(y))?l:[]})),w=f((()=>{if(!e.recommend||!p.value.length&&!h.value.length)return l.value;const n=r(p.value.concat(h.value),(e=>e[a.value])),u=l.value.filter((e=>n.every((function(l){return l[a.value]!==e[a.value]}))));return[...c(n,t.value),...u]})),{getRecommendRequestInfo:K,getHttpInstance:C}=R();function b(l){const{url:n,getRecommendIds:u}=K(),t=m(u)?u():{},a=m(e.getRecommendInfo)?e.getRecommendInfo():{};return{url:n[l],info:Object.assign({},t,a)}}const{fieldKey:q,field:j}=k(),I=d(g);return{postRecommend:async function(l){if(!e.recommend)return;const n=C();if(!n)return;const{url:t,info:o}=b("post"),r=w.value.find((e=>e[a.value]===l));r&&u("postRecommend",await n.post(t,{...o,keyword:"",itemId:a.value,itemObj:JSON.stringify(r)}))},getRecommend:async function(l){if(!e.recommend)return;if(v.value=l,o.value&&i.value&&e.recommendCache)return;const n=await I.addAsync(function(l,n){const{url:u,info:o}=b("get");return{url:u,method:"get",key:l,cache:n,params:{...o,recNum:Math.max(e.commonNum,e.recentNum),keyword:""},payload:{field:j.value,labelKey:t.value,valueKey:a.value}}}(q.value,e.recommendCache)),{commonly:u,recently:r}=n.reduce(((e,l)=>("commonly"===l.type?e.commonly.push(s(l,["type"])):"recently"===l.type&&e.recently.push(s(l,["type"])),e)),{commonly:[],recently:[]});o.value=u.slice(0,e.commonNum),i.value=r.slice(0,e.recentNum)},sortedOptions:w}}function I(l,n,u){e();const t=d(g),a=d(w),o=f((()=>{var e,n,u;return null!=(u=null!=(n=null==(e=l.urlConfig)?void 0:e.nameKey)?n:l.labelField)?u:"text"})),r=f((()=>{var e,n,u;return null!=(u=null!=(n=null==(e=l.urlConfig)?void 0:e.valueKey)?n:l.valueField)?u:"value"})),s=f((()=>{var e,n;return null!=(n=null==(e=l.urlConfig)?void 0:e.showKey)?n:l.showField})),{searchContent:c,optionSearchFilter:m}=O(),R=y(null),{field:F,fieldKey:q}=k(),j=y(!1),I=async function(e,n){if(c.value=e||"",!l.urlConfig)return R.value=null;try{j.value=!0;const e={field:F.value,labelKey:o.value,valueKey:r.value},u=await t.addAsync(await C({config:{...l.urlConfig,payload:e,params:{...l.urlConfig.params,...n}},cache:l.requestCache,field:F.value}));h(R.value)!==u&&(R.value=u,a("afterOptionInit",[q.value,R.value,e]))}catch(e){v(e)&&b(e)}finally{j.value=!1}},x=f((()=>R.value?m(R.value,o.value):Array.isArray(l.options)?m(l.options,o.value):[])),D=f((()=>R.value||l.options||[])),A=d(K);return p((()=>l.urlConfig),((e,t)=>{if(i(e,t))return;if(R.value=null,!e)return R.value=null;const a={fetchData:I,labelKey:o.value,valueKey:r.value},{onRequestConfigChange:v,onDepsChange:s}=u||{};A.setDeps(q.value,e.dependKey||[],(async()=>{R.value=null,n.value=null,l.lazyRequest||(s?s(a):I())})),!n.value&&l.lazyRequest||(v?v(a):I())}),{immediate:!0}),{labelKey:o,loading:j,showKey:s,valueKey:r,remoteOptions:R,filterOptions:x,fullOptions:D,fetchData:I,searchContent:c}}function x(n,u,a){e();const o=d(g),r=d(w),s=t(),c=f((()=>{var e;const u=l(null==(e=n.wordbook)?void 0:e.show_key)[0];return v(u)?u:null})),m=f((()=>{var e,l,u,t;const a=null==(l=null==(e=n.wordbook)?void 0:e.render_key)?void 0:l[0];return v(a)?a:null!=(t=null!=(u=c.value)?u:n.labelField)?t:"text"})),C=f((()=>{var e,l,u;return null!=(u=null!=(l=null==(e=n.wordbook)?void 0:e.value_key)?l:n.valueField)?u:"value"})),F=f((()=>{var e;return(null==(e=n.wordbook)?void 0:e.search_key)||[]})),q=f((()=>{var e;return null!=(e=c.value)?e:n.showField})),{searchContent:j,optionSearchFilter:I}=O(),x=y(null),{fieldKey:D,field:A}=k(),{getSearchRequestInfo:S}=R(),N=y(!1),_=async function(e,l){if(j.value=e||"",!n.autograph||!n.wordbook)return x.value=null;try{N.value=!0;const e={field:A.value,labelKey:m.value,valueKey:C.value},u=await o.addAsync(function(e,l,u,t,a){var o,r,i;const v={autograph:l,wordbookId:e.id,wordbookType:e.type,fieldKeys:e.search_key,keyword:"",page:1,...a};if(null==(o=e.queryParams)?void 0:o.length){const l=null!=(i=null==(r=s.value)?void 0:r.getFormState().values)?i:{};e.queryParams.forEach((e=>{v[e]=l[e]}))}return{...S(),params:v,key:u,cache:n.requestCache,payload:t}}(n.wordbook,n.autograph,D.value,e,l));h(x.value)!==u&&(x.value=u,r("afterOptionInit",[D.value,x.value,e]))}catch(e){v(e)&&b(e)}finally{N.value=!1}},z=f((()=>x.value?I(x.value,m.value,F.value):Array.isArray(n.options)?I(n.options,m.value):[])),P=f((()=>x.value||n.options||[])),$=d(K);return p((()=>n.wordbook),((e,l)=>{if(i(e,l))return;if(x.value=null,!e)return x.value=null;const t={fetchData:_,labelKey:m.value,valueKey:C.value},{onRequestConfigChange:o,onDepsChange:r}=a||{};$.setDeps(D.value,e.queryParams||[],(async()=>{x.value=null,r?r(t):_()})),!u.value&&n.lazyRequest||(o?o(t):_())}),{immediate:!0}),{labelKey:m,showKey:q,loading:N,remoteOptions:x,valueKey:C,filterOptions:z,fullOptions:P,fetchData:_,searchContent:j}}export{q as searchContentMatcher,x as useAutographOptions,j as useRecommendOptions,I as useUrlConfigOptions};
@@ -32,9 +32,12 @@ export declare type FormRenderExpose = {
32
32
  /**
33
33
  * @desc 触发表单校验
34
34
  * @param {string} path 目标路径, 支持Path语法
35
+ * @param {{force?:boolean}} options 校验选项, force代表强制校验不可编辑项
35
36
  * @return {void | Promise<Object[]>}
36
37
  */
37
- validate(path?: string): Promise<unknown>;
38
+ validate(path?: string, options?: {
39
+ force?: boolean;
40
+ }): Promise<unknown>;
38
41
  /**
39
42
  * @desc 获取表单当前所有数据
40
43
  * @param {boolean} needCombineExtendKey 是否合并extendKey
@@ -1 +1 @@
1
- import{unref as e}from"vue";import{promiseTimeout as t}from"@vueuse/shared";import"../../../index.js";import{useSessionStorage as n}from"@vueuse/core";import{isString as o,trim as l,isEmpty as i,isEqual as r,isFunction as u}from"lodash-es";import{selectOptionsMap as d}from"../rendererPlugins/editableWidgets/hooks/useSelectOption.js";import{IhoTableUtils as a}from"../../utils/index.js";import{EDITABLE_WIDGET_TYPE as s}from"../../constants/index.js";import{parse as c,isValid as p,compareDesc as f}from"date-fns";import{defineTablePlugin as m}from"../../hooks/useTablePlugin.js";function v(){const v="keyboardEventPlugin",g=n("ihoTableClipData","");return m({name:v,apply(n){function m(t,n,m,v,w){var b,C;if(!(null==(b=null==m?void 0:m.keyboardConfig)?void 0:b.isClip))return;if("paste"===t&&!n.getSelectedCell())return;const{row:y,column:R}=n.getSelectedCell()||n.getEditRecord()||{};if(!y||!R||!E(R,s.SELECT)&&e(g)===y[R.field])return;const x=m.uuid&&E(R,s.SELECT)&&d.get(m.uuid)[R.field],T=y[R.field];if("copy"===t){const e=(null==(C=(x||[]).filter((e=>T.includes(e.value))))?void 0:C.map((e=>e.label)).join(","))||T;g.value=e}else{if(o(e(g))&&(g.value=l(e(g)||"")),!e(g)||!function(e){var t;const n=null==(t=e.editRender)?void 0:t.props;return n&&Object.keys(s).includes(a.getCellType(n))}(R)||y.$__SEPARATE||!function(e,t,n,o){var l,i;const{beforeEditMethod:r}=t.editConfig||{},d={rowIndex:null!=(l=e.getRowIndex(n))?l:0,columnIndex:null!=(i=e.getColumnIndex(o))?i:0};return!r||u(r)&&r({row:n,column:o,...d,$table:e,$grid:void 0})}(n,m,y,R))return;if(E(R,s.DATE)&&function(t,n){var l;const i=null==(l=t.editRender)?void 0:l.props,r=e(g)||"";return!p(new Date(r))||o(i.connectField)&&n[i.connectField]&&(i.isStartDate&&f(new Date(r),new Date(n[i.connectField]))<0||i.isEndDate&&f(new Date(r),new Date(n[i.connectField]))>0)}(R,y))return;if(E(R,s.NUMBER)&&!/^-?\d*\.?\d+$/.test((e(g)||"").toString()))return;if(E(R,s.TIME)&&function(t){var n,o;const l=e(g)||"",i=null==(n=t.editRender)?void 0:n.props,r=c(l,(null==(o=null==i?void 0:i.componentProps)?void 0:o.valueFormat)||"HH:mm",new Date);return!p(r)}(R))return;let t=e(g)||"";if(x&&!i(x)){const e=x.filter((e=>t.split(",").includes(e.label))).map((e=>e.value));if(i(e))return;if(function(e){var t,n;const o=null==(t=e.editRender)?void 0:t.props;return E(e,s.SELECT)&&(null==(n=o.componentProps)?void 0:n.multiple)}(R)){if(r(T,e))return;t=e}else{if(e.includes(T))return;t=e[0]}}y[R.field]=t,v("formChange",{column:R,row:y,oldValue:T,value:t,index:n.getRowIndex(y)}),E(R,s.SEPARATE)&&(null==w||w())}}function E(e,t){var n;const o=null==(n=e.editRender)?void 0:n.props;return o&&a.getCellType(o)===t}n.eventHooks.onCopy.tap(v,(({$table:e},t,{emits:n})=>m("copy",e,t,n))),n.eventHooks.onPaste.tap(v,(({$table:e},t,{emits:n,updateTableDataRef:o})=>m("paste",e,t,n,o))),n.eventHooks.onKeydown.tap(v,(async({$event:e,$table:n},o,{emits:l})=>{await t(0);const{row:i,column:r}=n.getSelectedCell()||n.getEditRecord()||{};if(!i||!r)return;l("keyboard",{$table:n,key:e.key,index:n.getRowIndex(i),value:i[r.field],row:i,column:r})}))}})}export{v as keyboardEventPlugin};
1
+ import{unref as e}from"vue";import{promiseTimeout as t}from"@vueuse/shared";import"../../../index.js";import{useSessionStorage as n}from"@vueuse/core";import{selectOptionsMap as o}from"../rendererPlugins/editableWidgets/hooks/useSelectOption.js";import{IhoTableUtils as l}from"../../utils/index.js";import{EDITABLE_WIDGET_TYPE as i}from"../../constants/index.js";import{isString as r,trim as u,isEmpty as d,isEqual as a,isFunction as s}from"lodash-es";import{parse as c,isValid as p,compareDesc as f}from"date-fns";import{defineTablePlugin as m}from"../../hooks/useTablePlugin.js";function v(){const v="keyboardEventPlugin",g=n("ihoTableClipData","");return m({name:v,apply(n){function m(t,n,m,v,w){var b,C;if(!(null==(b=null==m?void 0:m.keyboardConfig)?void 0:b.isClip))return;if("paste"===t&&!n.getSelectedCell())return;const{row:y,column:R}=n.getSelectedCell()||n.getEditRecord()||{};if(!y||!R||!E(R,i.SELECT)&&e(g)===y[R.field])return;const x=m.uuid&&E(R,i.SELECT)&&o.get(m.uuid)[R.field],T=y[R.field];if("copy"===t){const e=(null==(C=(x||[]).filter((e=>T.includes(e.value))))?void 0:C.map((e=>e.label)).join(","))||T;g.value=e}else{if(r(e(g))&&(g.value=u(e(g)||"")),!e(g)||!function(e){var t;const n=null==(t=e.editRender)?void 0:t.props;return n&&Object.keys(i).includes(l.getCellType(n))}(R)||y.$__SEPARATE||!function(e,t,n,o){var l,i;const{beforeEditMethod:r}=t.editConfig||{},u={rowIndex:null!=(l=e.getRowIndex(n))?l:0,columnIndex:null!=(i=e.getColumnIndex(o))?i:0};return!r||s(r)&&r({row:n,column:o,...u,$table:e,$grid:void 0})}(n,m,y,R))return;if(E(R,i.DATE)&&function(t,n){var o;const l=null==(o=t.editRender)?void 0:o.props,i=e(g)||"";return!p(new Date(i))||r(l.connectField)&&n[l.connectField]&&(l.isStartDate&&f(new Date(i),new Date(n[l.connectField]))<0||l.isEndDate&&f(new Date(i),new Date(n[l.connectField]))>0)}(R,y))return;if(E(R,i.NUMBER)&&!/^-?\d*\.?\d+$/.test((e(g)||"").toString()))return;if(E(R,i.TIME)&&function(t){var n,o;const l=e(g)||"",i=null==(n=t.editRender)?void 0:n.props,r=c(l,(null==(o=null==i?void 0:i.componentProps)?void 0:o.valueFormat)||"HH:mm",new Date);return!p(r)}(R))return;let t=e(g)||"";if(x&&!d(x)){const e=x.filter((e=>t.split(",").includes(e.label))).map((e=>e.value));if(d(e))return;if(function(e){var t,n;const o=null==(t=e.editRender)?void 0:t.props;return E(e,i.SELECT)&&(null==(n=o.componentProps)?void 0:n.multiple)}(R)){if(a(T,e))return;t=e}else{if(e.includes(T))return;t=e[0]}}y[R.field]=t,v("formChange",{column:R,row:y,oldValue:T,value:t,index:n.getRowIndex(y)}),E(R,i.SEPARATE)&&(null==w||w())}}function E(e,t){var n;const o=null==(n=e.editRender)?void 0:n.props;return o&&l.getCellType(o)===t}n.eventHooks.onCopy.tap(v,(({$table:e},t,{emits:n})=>m("copy",e,t,n))),n.eventHooks.onPaste.tap(v,(({$table:e},t,{emits:n,updateTableDataRef:o})=>m("paste",e,t,n,o))),n.eventHooks.onKeydown.tap(v,(async({$event:e,$table:n},o,{emits:l})=>{await t(0);const{row:i,column:r}=n.getSelectedCell()||n.getEditRecord()||{};if(!i||!r)return;l("keyboard",{$table:n,key:e.key,index:n.getRowIndex(i),value:i[r.field],row:i,column:r})}))}})}export{v as keyboardEventPlugin};
@@ -1,2 +1,4 @@
1
1
  import { AnyObject } from '../../../../../../../../es/shared/types';
2
+ import { VxeTableConstructor } from 'vxe-table';
2
3
  export declare const selectOptionsMap: Map<string, Record<string, AnyObject[]>>;
4
+ export declare function getSelectOptions(uuid: string, row: AnyObject, field: string, $table: VxeTableConstructor): AnyObject[];
@@ -1 +1 @@
1
- import{reactive as o}from"vue";const e=o(new Map);export{e as selectOptionsMap};
1
+ import{reactive as e}from"vue";const n=e(new Map);function t(e,t,i,l){if(!e||!i||!l)return[];const{tableColumn:o}=l.reactData,r=o.find((e=>{var n,t;const l=null==(t=(null==(n=e.editRender)?void 0:n.props).connectField||"")?void 0:t.split(",");return null==l?void 0:l.includes(i)}));return r&&t[r.field]?n.get(e)[`${i}__${r.field}-${t[r.field]}`]:n.get(e)[i]}export{t as getSelectOptions,n as selectOptionsMap};
@@ -55,6 +55,18 @@ declare const _default: import("vue").DefineComponent<{
55
55
  menuProps: {
56
56
  type: PropType<AnyObject>;
57
57
  };
58
+ multiple: {
59
+ type: BooleanConstructor;
60
+ default: boolean;
61
+ };
62
+ deletable: {
63
+ type: BooleanConstructor;
64
+ default: boolean;
65
+ };
66
+ selectAll: {
67
+ type: BooleanConstructor;
68
+ default: boolean;
69
+ };
58
70
  }, () => JSX.Element, unknown, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, "update:value"[], "update:value", import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, Readonly<import("vue").ExtractPropTypes<{
59
71
  value: {
60
72
  type: PropType<string | number | (string | number)[]>;
@@ -108,15 +120,30 @@ declare const _default: import("vue").DefineComponent<{
108
120
  menuProps: {
109
121
  type: PropType<AnyObject>;
110
122
  };
123
+ multiple: {
124
+ type: BooleanConstructor;
125
+ default: boolean;
126
+ };
127
+ deletable: {
128
+ type: BooleanConstructor;
129
+ default: boolean;
130
+ };
131
+ selectAll: {
132
+ type: BooleanConstructor;
133
+ default: boolean;
134
+ };
111
135
  }>> & {
112
136
  "onUpdate:value"?: ((...args: any[]) => any) | undefined;
113
137
  }, {
114
138
  options: AnyObject[];
139
+ multiple: boolean;
115
140
  labelField: string;
116
141
  valueField: string;
117
142
  placeholder: string;
143
+ deletable: boolean;
118
144
  shouldSave: boolean;
119
145
  consistentMenuWidth: boolean;
120
146
  allowCreate: boolean;
147
+ selectAll: boolean;
121
148
  }>;
122
149
  export default _default;
@@ -1 +1 @@
1
- import{defineComponent as e,inject as l,ref as o,computed as t,createVNode as a,toRaw as n,Fragment as u}from"vue";import{keywordMatcher as r,arrayed as i}from"../../../../../../../shared/utils/index.js";import{NSelect as s,NTooltip as d,NIcon as p,NTag as c}from"naive-ui";import{HelpCircleSharp as v}from"@vicons/ionicons5";import{InjectionIhoTableUUID as m}from"../../../../constants/index.js";import{selectOptionsMap as f}from"../hooks/useSelectOption.js";import{useIhoTableFormEvent as h}from"../../../../utils/index.js";import{useDebounceFn as y}from"@vueuse/core";import{isEmpty as b,isFunction as F,isArray as w,isObject as S,omit as g,cloneDeep as O}from"lodash-es";var x=e({name:"EditSelect",props:{value:{type:[Array,String,Number]},column:{type:Object,required:!0},row:{type:Object,required:!0},rowIndex:{type:Number,required:!0},options:{type:Array,default:()=>[]},queryOptions:{type:Function},placeholder:{type:String,default:"请选择"},allowCreate:{type:Boolean,default:!1},shouldSave:{type:Boolean,default:!1},consistentMenuWidth:{type:Boolean,default:!0},labelField:{type:String,default:"label"},valueField:{type:String,default:"value"},aliasField:{type:String},menuProps:{type:Object}},emits:["update:value"],setup(e,{emit:x}){const j=l("$xetable"),P=o(null);function q(e){P.value=e}const _=o(!1),{emitFormChangeWithParams:k}=h({...e,$table:j}),C=o("");function W(){return E()}const M=o([]),$=t((()=>{let l=b(M.value)?e.options:M.value;return C.value?(l=l.filter((l=>l[e.labelField]&&l[e.labelField].includes(C.value)||r(C.value,l.keyword))),!e.allowCreate||l.some((l=>l[e.labelField]===C.value))?l:[...l,{[e.labelField]:C.value,[e.valueField]:C.value,created:!0,shouldSave:e.shouldSave}]):l})),B=o(!1),E=y((async function(l=""){C.value=l;try{if(B.value=!0,!F(e.queryOptions)||!b(e.options))return;M.value=await e.queryOptions({keyword:l,row:e.row,column:e.column,rowIndex:e.rowIndex})}catch(l){console.log(`获取${e.column.field}options错误`)}finally{B.value=!1}}),400),I=l(m);function U(l,o){const t=e.value;x("update:value",l);const a=f.get(I);a&&w(a[e.column.field])&&i(o).forEach((l=>{if(!S(l))return;const o=l;o.created&&o.shouldSave&&a[e.column.field].push(g(n(o),["created","shouldSave"]))})),k({oldValue:t,option:O(o)})}function A(e){var l,o;"Tab"===e.key&&P.value&&(null==(o=(l=P.value).handleKeydown)||o.call(l,{...e,key:"Enter",preventDefault:e.preventDefault.bind(e)}))}function D({node:e,option:l}){return l.desc?a("div",{class:"iho-table__selectOptionWrapper"},[[e,a(d,null,{trigger:()=>a(p,{component:v},null),default:()=>l.desc})]]):e}function K({option:l,handleClose:o}){var t;const n=null!=(t=e.aliasField&&l[e.aliasField])?t:l[e.labelField];return w(e.value)?a(c,{closable:!0,onClose:e=>{e.stopPropagation(),o()}},{default:()=>n}):a(u,null,[n])}const N=()=>({class:"iho-table__selectOption"}),T=t((()=>{var l,o;return{...e.menuProps,class:`iho-table__selectMenu ${null!=(o=null==(l=e.menuProps)?void 0:l.class)?o:""}`}}));return()=>a(s,{ref:q,show:_.value,"onUpdate:show":e=>_.value=e,consistentMenuWidth:e.consistentMenuWidth,placeholder:e.placeholder,labelField:e.labelField,valueField:e.valueField,loading:B.value,options:$.value,value:e.value,remote:!0,onSearch:E,clearable:!0,filterable:!0,nodeProps:N,menuProps:T.value,renderTag:K,renderOption:D,onUpdateShow:W,onUpdateValue:U,onKeydown:A},null)}});export{x as default};
1
+ import{defineComponent as e,inject as l,ref as t,computed as o,createVNode as n,toRaw as a,Fragment as u,createTextVNode as i}from"vue";import{keywordMatcher as r,arrayed as d}from"../../../../../../../shared/utils/index.js";import{NSelect as s,NTooltip as p,NIcon as c,NTag as v,NButton as f}from"naive-ui";import{HelpCircleSharp as m}from"@vicons/ionicons5";import{InjectionIhoTableUUID as y}from"../../../../constants/index.js";import{getSelectOptions as h,selectOptionsMap as b}from"../hooks/useSelectOption.js";import{useIhoTableFormEvent as F}from"../../../../utils/index.js";import{useDebounceFn as w}from"@vueuse/core";import{isEmpty as g,isFunction as S,isArray as O,isObject as q,omit as x,cloneDeep as C}from"lodash-es";var $=e({name:"EditSelect",props:{value:{type:[Array,String,Number]},column:{type:Object,required:!0},row:{type:Object,required:!0},rowIndex:{type:Number,required:!0},options:{type:Array,default:()=>[]},queryOptions:{type:Function},placeholder:{type:String,default:"请选择"},allowCreate:{type:Boolean,default:!1},shouldSave:{type:Boolean,default:!1},consistentMenuWidth:{type:Boolean,default:!0},labelField:{type:String,default:"label"},valueField:{type:String,default:"value"},aliasField:{type:String},menuProps:{type:Object},multiple:{type:Boolean,default:!1},deletable:{type:Boolean,default:!0},selectAll:{type:Boolean,default:!0}},emits:["update:value"],setup(e,{emit:$}){const _=l("$xetable"),j=t(null);function k(e){j.value=e}const P=t(!1),{emitFormChangeWithParams:B}=F({...e,$table:_}),W=t("");function A(){return I()}const D=t([]),E=o((()=>{let l=g(D.value)?e.options:D.value;return W.value?(l=l.filter((l=>l[e.labelField]&&l[e.labelField].includes(W.value)||r(W.value,l.keyword))),!e.allowCreate||l.some((l=>l[e.labelField]===W.value))?l:[...l,{[e.labelField]:W.value,[e.valueField]:W.value,created:!0,shouldSave:e.shouldSave}]):l})),M=t(!1),I=w((async function(l=""){W.value=l;try{if(M.value=!0,!S(e.queryOptions)||!g(e.options))return;D.value=await e.queryOptions({keyword:l,row:e.row,column:e.column,rowIndex:e.rowIndex})}catch(l){console.log(`获取${e.column.field}options错误`)}finally{M.value=!1}}),400),U=l(y);function V(l,t){var o,n;const u=e.value;$("update:value",l);const i=h(U,e.row,e.column.field,_);U&&O(i)&&d(t).forEach((e=>{if(!q(e))return;const l=e;l.created&&l.shouldSave&&i.push(x(a(l),["created","shouldSave"]))}));const r=null==(o=e.column.editRender)?void 0:o.props;if(U&&r.connectField){const t=null==(n=r.connectField)?void 0:n.split(","),o=b.get(U);t.forEach((async t=>{var n;const{tableColumn:a}=_.reactData,u=a.find((e=>e.field===t)),i=null==(n=null==u?void 0:u.editRender)?void 0:n.props;if(null==i?void 0:i.queryOptions){const n=l?`${t}__${e.column.field}-${l}`:t;if(o[n])return;const a=await i.queryOptions({row:e.row,column:u,isFullData:!0});o[n]=a}}))}B({oldValue:u,option:C(t)})}function z(e){var l,t;"Tab"===e.key&&j.value&&(null==(t=(l=j.value).handleKeydown)||t.call(l,{...e,key:"Enter",preventDefault:e.preventDefault.bind(e)}))}function K(l){const t=l?E.value.map((l=>l[e.valueField])):[],o=e.value,n=O(o)?o.length:0;t.length!==n&&($("update:value",t),B({oldValue:o,option:l?C(E.value):[]}))}function N({node:e,option:l}){return l.desc?n("div",{class:"iho-table__selectOptionWrapper"},[[e,n(p,null,{trigger:()=>n(c,{component:m},null),default:()=>l.desc})]]):e}function R({option:l,handleClose:t}){var o;const a=null!=(o=e.aliasField&&l[e.aliasField])?o:l[e.labelField];return O(e.value)?e.deletable?n(v,{closable:!0,onClose:e=>{e.stopPropagation(),t()}},{default:()=>a}):`${a} ;`:n(u,null,[a])}function T(){return n(u,null,[n(f,{quaternary:!0,type:"primary",size:"tiny",onClick:()=>K(!0)},{default:()=>[i("全选")]}),n(f,{quaternary:!0,type:"primary",size:"tiny",onClick:()=>K(!1)},{default:()=>[i("清空")]})])}const G=()=>({class:"iho-table__selectOption"}),H=o((()=>{var l,t;return{...e.menuProps,class:`iho-table__selectMenu ${null!=(t=null==(l=e.menuProps)?void 0:l.class)?t:""}`}}));return()=>{const l={};return e.multiple&&e.selectAll&&(l.action=T),n(s,{ref:k,show:P.value,"onUpdate:show":e=>P.value=e,consistentMenuWidth:e.consistentMenuWidth,placeholder:e.placeholder,labelField:e.labelField,valueField:e.valueField,loading:M.value,options:E.value,multiple:e.multiple,value:e.value,remote:!0,onSearch:I,clearable:!0,filterable:!0,nodeProps:G,menuProps:H.value,renderTag:R,renderOption:N,onUpdateShow:A,onUpdateValue:V,onKeydown:z},l)}}});export{$ as default};