vxe-design
Version:
A PC-based visual designer based on Vxe UI, used for building zero-code and low-code platforms
1 lines • 3.86 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports.useWidgetPropDataSource=useWidgetPropDataSource;var _vue=require("vue"),_core=require("@vxe-ui/core");function useWidgetPropDataSource(s,e){const t=_core.VxeUI.getComponent("vxe-form-item"),u=_core.VxeUI.getComponent("vxe-button"),r=_core.VxeUI.getComponent("vxe-textarea"),n=_core.VxeUI.getComponent("vxe-tip");const a=Object.assign({},e).isSubOption,d=(0,_vue.ref)(""),c=(0,_vue.ref)([]),o=()=>{var e=s["renderParams"],e=e["widget"],t=e.options.options||[];t.push({value:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.defValue",[t.length+1])}),e.options.options=[...t]},i=/^(\s|\t)+/,p=e=>i.test(e),v=()=>{var e=s["renderParams"],e=e["widget"],e=e.options.options||[];const o=[];e.forEach((e,t)=>{e=e.options;e&&e.length&&o.push(t)}),c.value=o},l=()=>{var e=s["renderParams"],e=e["widget"];const r=[],n=d.value.split("\n");let i=null;a?n.forEach((e,t)=>{var t=n[t+1],o=e.trim();if(o){o={value:o};if(i){if(p(e))return void i.options.push(o);i=null}r.push(o),t&&p(t)&&(i=Object.assign(o,{options:[]}))}}):n.forEach(e=>{r.push({value:e.trim()})}),e.options.options=r,v()},g=()=>{var e,t=s["renderParams"],t=t["widget"];const o=[];null!=(e=t.options.options)&&e.forEach(e=>{o.push(e.value),null!=(e=e.options)&&e.forEach(e=>{o.push(` `+e.value)})}),d.value=o.join("\n"),_core.VxeUI.modal.open({title:t.title+" - "+(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.batchEditOption"),width:500,height:"50vh ",resize:!0,showFooter:!0,showCancelButton:!0,showConfirmButton:!0,confirmButtonText:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.buildOption"),onConfirm:l,slots:{default(){return(0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-popup"},[(0,_vue.h)(n,{status:"primary",title:"",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource."+(a?"batchEditSubTip":"batchEditTip"))}),(0,_vue.h)(r,{resize:"none",modelValue:d.value,"onUpdate:modelValue"(e){d.value=e}})])}}})},m=(r,n,e,o,t,i,a)=>{return(0,_vue.h)("div",{class:["vxe-form-design--widget-form-item-data-source-option",{"is--first":i,"is--last":a}]},[(0,_vue.h)("div",{class:"vxe-form-design--widget-expand-btn"},!n&&t?[(0,_vue.h)("i",{class:e?(0,_core.getIcon)().FORM_DESIGN_WIDGET_OPTION_EXPAND_CLOSE:(0,_core.getIcon)().FORM_DESIGN_WIDGET_OPTION_EXPAND_OPEN,onClick(){var t;t=o,c.value.includes(t)?c.value=c.value.filter(e=>e!==t):c.value.push(t)}})]:[]),(0,_vue.h)("input",{class:"vxe-default-input",value:r.value,onInput(e){r.value=e.target.value}}),(0,_vue.h)(u,{status:"danger",mode:"text",icon:(0,_core.getIcon)().FORM_DESIGN_WIDGET_DELETE,onClick(){var t,e,o;t=r,e=n,o=(o=(o=s.renderParams).widget).options,e?e.options&&(e.options=e.options.filter(e=>e!==t)):o.options=o.options.filter(e=>e!==t)}})])},_=((0,_vue.watch)(()=>s.renderParams.widget,()=>{v()}),(0,_vue.onMounted)(()=>{v()}),()=>[(0,_vue.h)("div",{},[(0,_vue.h)(u,{status:"primary",mode:"text",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.addOption"),onClick:o}),(0,_vue.h)(u,{status:"primary",mode:"text",content:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.batchEditOption"),onClick:g})]),(0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-wrapper"},(()=>{var e=s["renderParams"],e=e["widget"],e=e["options"];const n=e.options,i=[];return n&&n.forEach((t,e)=>{var o=t["options"];const r=c.value.includes(e);o&&o.length?(i.push(m(t,null,r,e,!0,0===e,e===n.length-1)),r&&i.push((0,_vue.h)("div",{class:"vxe-form-design--widget-form-item-data-source-sub-option"},o.map(e=>m(e,t,r,0,!1,!1,!1))))):i.push(m(t,null,r,e,!1,0===e,e===n.length-1))}),i})())]);return{renderDataSourceFormItem(){return(0,_vue.h)(t,{title:(0,_core.getI18n)("vxe.formDesign.widgetProp.dataSource.name"),field:"options"},{default(){return _()}})},renderDataSourceFormItemContent:_}}